Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
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 HitTestResponse OnPlatformViewHitTest(int64_t view_id, const flutter::PointData offset) override {
34 return {.has_platform_view = false};
35 }
36 void OnPlatformViewSendViewFocusEvent(const ViewFocusEvent& event) override {}
37 void OnPlatformViewDispatchSemanticsAction(int64_t view_id,
38 int32_t node_id,
40 fml::MallocMapping args) override {}
41 void OnPlatformViewSetSemanticsEnabled(bool enabled) override {}
42 void OnPlatformViewSetAccessibilityFeatures(int32_t flags) override {}
43 void OnPlatformViewRegisterTexture(std::shared_ptr<Texture> texture) override {}
44 void OnPlatformViewUnregisterTexture(int64_t texture_id) override {}
45 void OnPlatformViewMarkTextureFrameAvailable(int64_t texture_id) override {}
46
47 void LoadDartDeferredLibrary(intptr_t loading_unit_id,
48 std::unique_ptr<const fml::Mapping> snapshot_data,
49 std::unique_ptr<const fml::Mapping> snapshot_instructions) override {
50 }
51 void LoadDartDeferredLibraryError(intptr_t loading_unit_id,
52 const std::string error_message,
53 bool transient) override {}
54 void UpdateAssetResolverByType(std::unique_ptr<flutter::AssetResolver> updated_asset_resolver,
56
58};
59
60} // namespace
61} // namespace flutter
62
63@interface PlatformViewIOSTest : XCTestCase
64@end
65
66@implementation PlatformViewIOSTest
67
68- (void)testSetSemanticsTreeEnabled {
69 flutter::MockDelegate mock_delegate;
70 auto thread = std::make_unique<fml::Thread>("PlatformViewIOSTest");
71 auto thread_task_runner = thread->GetTaskRunner();
72 flutter::TaskRunners runners(/*label=*/self.name.UTF8String,
73 /*platform=*/thread_task_runner,
74 /*raster=*/thread_task_runner,
75 /*ui=*/thread_task_runner,
76 /*io=*/thread_task_runner);
77 id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger));
78 id engine = OCMClassMock([FlutterEngine class]);
79
80 id flutterViewController = OCMClassMock([FlutterViewController class]);
81
82 OCMStub([flutterViewController isViewLoaded]).andReturn(NO);
83 OCMStub([flutterViewController engine]).andReturn(engine);
84 OCMStub([engine binaryMessenger]).andReturn(messenger);
85
86 auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
87 /*delegate=*/mock_delegate,
88 /*rendering_api=*/flutter::IOSRenderingAPI::kMetal,
89 /*platform_views_controller=*/nil,
90 /*task_runners=*/runners,
91 /*worker_task_runner=*/nil,
92 /*is_gpu_disabled_sync_switch=*/std::make_shared<fml::SyncSwitch>());
94 thread_task_runner->PostTask([&] {
95 platform_view->SetOwnerViewController(flutterViewController);
96 XCTAssertFalse(platform_view->GetAccessibilityBridge());
97 platform_view->SetSemanticsTreeEnabled(true);
98 XCTAssertTrue(platform_view->GetAccessibilityBridge());
99 platform_view->SetSemanticsTreeEnabled(false);
100 XCTAssertFalse(platform_view->GetAccessibilityBridge());
101 latch.Signal();
102 });
103 latch.Wait();
104
105 [engine stopMocking];
106}
107
108- (void)testLocaleCanBeSetWithoutViewController {
109 flutter::MockDelegate mock_delegate;
110 auto thread = std::make_unique<fml::Thread>("PlatformViewIOSTest");
111 auto thread_task_runner = thread->GetTaskRunner();
112 flutter::TaskRunners runners(/*label=*/self.name.UTF8String,
113 /*platform=*/thread_task_runner,
114 /*raster=*/thread_task_runner,
115 /*ui=*/thread_task_runner,
116 /*io=*/thread_task_runner);
117 id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger));
118 id engine = OCMClassMock([FlutterEngine class]);
119
120 id flutterViewController = OCMClassMock([FlutterViewController class]);
121
122 OCMStub([flutterViewController isViewLoaded]).andReturn(NO);
123 OCMStub([flutterViewController engine]).andReturn(engine);
124 OCMStub([engine binaryMessenger]).andReturn(messenger);
125
126 auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
127 /*delegate=*/mock_delegate,
128 /*rendering_api=*/flutter::IOSRenderingAPI::kMetal,
129 /*platform_views_controller=*/nil,
130 /*task_runners=*/runners,
131 /*worker_task_runner=*/nil,
132 /*is_gpu_disabled_sync_switch=*/std::make_shared<fml::SyncSwitch>());
134 thread_task_runner->PostTask([&] {
135 std::string locale = "en-US";
136 platform_view->SetApplicationLocale(locale);
137 platform_view->SetOwnerViewController(flutterViewController);
138 OCMVerify([flutterViewController setApplicationLocale:@"en-US"]);
139 latch.Signal();
140 });
141 latch.Wait();
142
143 [engine stopMocking];
144}
145
146@end
std::unique_ptr< flutter::PlatformViewIOS > platform_view
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
const char * message
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
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
impeller::ShaderType type
int64_t texture_id