Flutter Engine
 
Loading...
Searching...
No Matches
platform_view_ios_test.mm
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#import <OCMock/OCMock.h>
6#import <XCTest/XCTest.h>
7
11
13
14namespace flutter {
15
16namespace {
17
18class MockDelegate : public PlatformView::Delegate {
19 public:
20 void OnPlatformViewCreated(std::unique_ptr<Surface> surface) override {}
21 void OnPlatformViewDestroyed() override {}
22 void OnPlatformViewScheduleFrame() override {}
23 void OnPlatformViewAddView(int64_t view_id,
24 const ViewportMetrics& viewport_metrics,
25 AddViewCallback callback) override {}
26 void OnPlatformViewRemoveView(int64_t view_id, RemoveViewCallback callback) override {}
27 void OnPlatformViewSetNextFrameCallback(const fml::closure& closure) override {}
28 void OnPlatformViewSetViewportMetrics(int64_t view_id, const ViewportMetrics& metrics) override {}
29 const flutter::Settings& OnPlatformViewGetSettings() const override { return settings_; }
30 void OnPlatformViewDispatchPlatformMessage(std::unique_ptr<PlatformMessage> message) override {}
31 void OnPlatformViewDispatchPointerDataPacket(std::unique_ptr<PointerDataPacket> packet) override {
32 }
33 void OnPlatformViewSendViewFocusEvent(const ViewFocusEvent& event) override {}
34 void OnPlatformViewDispatchSemanticsAction(int64_t view_id,
35 int32_t node_id,
37 fml::MallocMapping args) override {}
38 void OnPlatformViewSetSemanticsEnabled(bool enabled) override {}
39 void OnPlatformViewSetAccessibilityFeatures(int32_t flags) override {}
40 void OnPlatformViewRegisterTexture(std::shared_ptr<Texture> texture) override {}
41 void OnPlatformViewUnregisterTexture(int64_t texture_id) override {}
42 void OnPlatformViewMarkTextureFrameAvailable(int64_t texture_id) override {}
43
44 void LoadDartDeferredLibrary(intptr_t loading_unit_id,
45 std::unique_ptr<const fml::Mapping> snapshot_data,
46 std::unique_ptr<const fml::Mapping> snapshot_instructions) override {
47 }
48 void LoadDartDeferredLibraryError(intptr_t loading_unit_id,
49 const std::string error_message,
50 bool transient) override {}
51 void UpdateAssetResolverByType(std::unique_ptr<flutter::AssetResolver> updated_asset_resolver,
53
55};
56
57} // namespace
58} // namespace flutter
59
60@interface PlatformViewIOSTest : XCTestCase
61@end
62
63@implementation PlatformViewIOSTest
64
65- (void)testSetSemanticsTreeEnabled {
66 flutter::MockDelegate mock_delegate;
67 auto thread = std::make_unique<fml::Thread>("PlatformViewIOSTest");
68 auto thread_task_runner = thread->GetTaskRunner();
69 flutter::TaskRunners runners(/*label=*/self.name.UTF8String,
70 /*platform=*/thread_task_runner,
71 /*raster=*/thread_task_runner,
72 /*ui=*/thread_task_runner,
73 /*io=*/thread_task_runner);
74 id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger));
75 id engine = OCMClassMock([FlutterEngine class]);
76
77 id flutterViewController = OCMClassMock([FlutterViewController class]);
78
79 OCMStub([flutterViewController isViewLoaded]).andReturn(NO);
80 OCMStub([flutterViewController engine]).andReturn(engine);
81 OCMStub([engine binaryMessenger]).andReturn(messenger);
82
83 auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
84 /*delegate=*/mock_delegate,
85 /*rendering_api=*/flutter::IOSRenderingAPI::kMetal,
86 /*platform_views_controller=*/nil,
87 /*task_runners=*/runners,
88 /*worker_task_runner=*/nil,
89 /*is_gpu_disabled_sync_switch=*/std::make_shared<fml::SyncSwitch>());
91 thread_task_runner->PostTask([&] {
92 platform_view->SetOwnerViewController(flutterViewController);
93 XCTAssertFalse(platform_view->GetAccessibilityBridge());
94 platform_view->SetSemanticsTreeEnabled(true);
95 XCTAssertTrue(platform_view->GetAccessibilityBridge());
96 platform_view->SetSemanticsTreeEnabled(false);
97 XCTAssertFalse(platform_view->GetAccessibilityBridge());
98 latch.Signal();
99 });
100 latch.Wait();
101
102 [engine stopMocking];
103}
104
105- (void)testLocaleCanBeSetWithoutViewController {
106 flutter::MockDelegate mock_delegate;
107 auto thread = std::make_unique<fml::Thread>("PlatformViewIOSTest");
108 auto thread_task_runner = thread->GetTaskRunner();
109 flutter::TaskRunners runners(/*label=*/self.name.UTF8String,
110 /*platform=*/thread_task_runner,
111 /*raster=*/thread_task_runner,
112 /*ui=*/thread_task_runner,
113 /*io=*/thread_task_runner);
114 id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger));
115 id engine = OCMClassMock([FlutterEngine class]);
116
117 id flutterViewController = OCMClassMock([FlutterViewController class]);
118
119 OCMStub([flutterViewController isViewLoaded]).andReturn(NO);
120 OCMStub([flutterViewController engine]).andReturn(engine);
121 OCMStub([engine binaryMessenger]).andReturn(messenger);
122
123 auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
124 /*delegate=*/mock_delegate,
125 /*rendering_api=*/flutter::IOSRenderingAPI::kMetal,
126 /*platform_views_controller=*/nil,
127 /*task_runners=*/runners,
128 /*worker_task_runner=*/nil,
129 /*is_gpu_disabled_sync_switch=*/std::make_shared<fml::SyncSwitch>());
131 thread_task_runner->PostTask([&] {
132 std::string locale = "en-US";
133 platform_view->SetApplicationLocale(locale);
134 platform_view->SetOwnerViewController(flutterViewController);
135 OCMVerify([flutterViewController setApplicationLocale:@"en-US"]);
136 latch.Signal();
137 });
138 latch.Wait();
139
140 [engine stopMocking];
141}
142
143@end
std::unique_ptr< flutter::PlatformViewIOS > platform_view
GLenum type
AssetResolverType
Identifies the type of AssetResolver an instance is.
A Mapping like NonOwnedMapping, but uses Free as its release proc.
Definition mapping.h:144
Settings settings_
FlutterEngine engine
Definition main.cc:84
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
G_BEGIN_DECLS GBytes * message
G_BEGIN_DECLS FlutterViewId view_id
FlutterDesktopBinaryReply callback
FlTexture * texture
static void LoadDartDeferredLibrary(JNIEnv *env, jobject obj, jlong shell_holder, jint jLoadingUnitId, jobjectArray jSearchPaths)
std::function< void()> closure
Definition closure.h:14
int64_t texture_id