diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm index 51c76156b4f98..d63d7c4d898ad 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm @@ -73,7 +73,9 @@ - (void)setUp { /*io=*/thread_task_runner); platform_view = std::make_unique( /*delegate=*/fake_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/fake_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -91,8 +93,13 @@ - (void)tearDown { } - (void)testMsaaSampleCount { - // Default should be 1. - XCTAssertEqual(platform_view->GetIosContext()->GetMsaaSampleCount(), MsaaSampleCount::kNone); + if (fake_delegate.settings_.enable_impeller) { + // Default should be 4 for Impeller. + XCTAssertEqual(platform_view->GetIosContext()->GetMsaaSampleCount(), MsaaSampleCount::kFour); + } else { + // Default should be 1 for Skia. + XCTAssertEqual(platform_view->GetIosContext()->GetMsaaSampleCount(), MsaaSampleCount::kNone); + } // Verify the platform view creates a new context with updated msaa_samples. // Need to use Metal, since this is ignored for Software/GL. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm index c55111136df9b..a149fb422ca8f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm @@ -90,6 +90,7 @@ @implementation FlutterPlatformViewsTestMockFlutterPlatformFactory namespace flutter { namespace { class FlutterPlatformViewsTestMockPlatformViewDelegate : public PlatformView::Delegate { + public: void OnPlatformViewCreated(std::unique_ptr surface) override {} void OnPlatformViewDestroyed() override {} void OnPlatformViewScheduleFrame() override {} @@ -118,7 +119,6 @@ void LoadDartDeferredLibraryError(intptr_t loading_unit_id, void UpdateAssetResolverByType(std::unique_ptr updated_asset_resolver, flutter::AssetResolver::AssetResolverType type) override {} - private: flutter::Settings settings_; }; @@ -149,11 +149,13 @@ - (void)testFlutterViewOnlyCreateOnceInOneFrame { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -205,11 +207,13 @@ - (void)testCanCreatePlatformViewWithoutFlutterView { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -259,11 +263,13 @@ - (void)testApplyBackdropFilter { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -331,11 +337,13 @@ - (void)testApplyBackdropFilterWithCorrectFrame { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -403,11 +411,13 @@ - (void)testApplyMultipleBackdropFilters { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -476,11 +486,13 @@ - (void)testAddBackdropFilters { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -589,11 +601,13 @@ - (void)testRemoveBackdropFilters { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -726,11 +740,13 @@ - (void)testEditBackdropFilters { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1003,11 +1019,13 @@ - (void)testApplyBackdropFilterNotDlBlurImageFilter { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1303,11 +1321,13 @@ - (void)testCompositePlatformView { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1359,11 +1379,13 @@ - (void)testBackdropFilterCorrectlyPushedAndReset { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1453,11 +1475,13 @@ - (void)testChildClippingViewShouldBeTheBoundingRectOfPlatformView { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1524,11 +1548,13 @@ - (void)testClipsDoNotInterceptWithPlatformViewShouldNotAddMaskView { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1591,11 +1617,13 @@ - (void)testClipRRectOnlyHasCornersInterceptWithPlatformViewShouldAddMaskView { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1657,11 +1685,13 @@ - (void)testClipRect { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1730,11 +1760,13 @@ - (void)testClipRRect { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1803,11 +1835,13 @@ - (void)testClipPath { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1877,11 +1911,13 @@ - (void)testSetFlutterViewControllerAfterCreateCanStillDispatchTouchEvents { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -1941,11 +1977,13 @@ - (void)testSetFlutterViewControllerInTheMiddleOfTouchEventShouldStillAllowGestu auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -2062,11 +2100,13 @@ - (void)testSetFlutterViewControllerInTheMiddleOfTouchEventShouldStillAllowGestu auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -2173,11 +2213,13 @@ - (void)testFlutterPlatformViewTouchesCancelledEventAreForcedToBeCancelled { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -2235,11 +2277,13 @@ - (void)testFlutterPlatformViewControllerSubmitFrameWithoutFlutterViewNotCrashin auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -2297,11 +2341,13 @@ - (void)testFlutterPlatformViewControllerSubmitFrameWithoutFlutterViewNotCrashin auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); UIView* mockFlutterView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)] autorelease]; flutterPlatformViewsController->SetFlutterView(mockFlutterView); @@ -2347,11 +2393,13 @@ - (void)testFlutterPlatformViewControllerBeginFrameShouldResetCompisitionOrder { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); UIView* mockFlutterView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)] autorelease]; flutterPlatformViewsController->SetFlutterView(mockFlutterView); @@ -2403,11 +2451,13 @@ - (void)testFlutterPlatformViewControllerBeginFrameShouldResetCompisitionOrder { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); UIView* mockFlutterView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)] autorelease]; flutterPlatformViewsController->SetFlutterView(mockFlutterView); @@ -2501,11 +2551,13 @@ - (void)testFlutterPlatformViewControllerBeginFrameShouldResetCompisitionOrder { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); UIView* mockFlutterView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)] autorelease]; flutterPlatformViewsController->SetFlutterView(mockFlutterView); @@ -2599,11 +2651,13 @@ - (void)testThreadMergeAtEndFrame { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); UIView* mockFlutterView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)] autorelease]; flutterPlatformViewsController->SetFlutterView(mockFlutterView); @@ -2753,11 +2807,13 @@ - (void)testClipMaskViewIsReused { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -2835,11 +2891,13 @@ - (void)testDifferentClipMaskViewIsUsedForEachView { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; @@ -2935,11 +2993,13 @@ - (void)testDisposingViewInCompositionOrderDoNotCrash { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); UIView* mockFlutterView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)] autorelease]; flutterPlatformViewsController->SetFlutterView(mockFlutterView); @@ -3043,11 +3103,13 @@ - (void)testOnlyPlatformViewsAreRemovedWhenReset { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_jsync_switch=*/std::make_shared()); FlutterPlatformViewsTestMockFlutterPlatformFactory* factory = [[[FlutterPlatformViewsTestMockFlutterPlatformFactory alloc] init] autorelease]; diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm index 5b75abf8a4b6b..916153db683f6 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm @@ -73,6 +73,7 @@ @implementation MockFlutterPlatformFactory namespace flutter { namespace { class MockDelegate : public PlatformView::Delegate { + public: void OnPlatformViewCreated(std::unique_ptr surface) override {} void OnPlatformViewDestroyed() override {} void OnPlatformViewScheduleFrame() override {} @@ -101,7 +102,6 @@ void LoadDartDeferredLibraryError(intptr_t loading_unit_id, void UpdateAssetResolverByType(std::unique_ptr updated_asset_resolver, flutter::AssetResolver::AssetResolverType type) override {} - private: flutter::Settings settings_; }; @@ -147,11 +147,13 @@ - (void)testCreate { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); auto bridge = std::make_unique(/*view=*/nil, /*platform_view=*/platform_view.get(), @@ -169,11 +171,13 @@ - (void)testUpdateSemanticsEmpty { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController viewIfLoaded]).andReturn(mockFlutterView); @@ -198,11 +202,13 @@ - (void)testUpdateSemanticsOneNode { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -245,11 +251,13 @@ - (void)testIsVoiceOverRunning { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -277,11 +285,13 @@ - (void)testSemanticsDeallocated { std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -336,11 +346,13 @@ - (void)testSemanticsDeallocatedWithoutLoadingView { std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); MockFlutterPlatformFactory* factory = [[[MockFlutterPlatformFactory alloc] init] autorelease]; flutterPlatformViewsController->RegisterViewFactory( @@ -381,11 +393,13 @@ - (void)testReplacedSemanticsDoesNotCleanupChildren { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id engine = OCMClassMock([FlutterEngine class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); FlutterView* flutterView = [[FlutterView alloc] initWithDelegate:engine @@ -475,11 +489,13 @@ - (void)testScrollableSemanticsDeallocated { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id engine = OCMClassMock([FlutterEngine class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); FlutterView* flutterView = [[FlutterView alloc] initWithDelegate:engine @@ -547,11 +563,13 @@ - (void)testBridgeReplacesSemanticsNode { auto flutterPlatformViewsController = std::make_shared(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id engine = OCMClassMock([FlutterEngine class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); FlutterView* flutterView = [[FlutterView alloc] initWithDelegate:engine @@ -619,11 +637,13 @@ - (void)testAnnouncesRouteChanges { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -687,11 +707,13 @@ - (void)testRadioButtonIsNotSwitchButton { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id engine = OCMClassMock([FlutterEngine class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); FlutterView* flutterView = [[FlutterView alloc] initWithDelegate:engine @@ -734,11 +756,13 @@ - (void)testLayoutChangeWithNonAccessibilityElement { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -818,11 +842,13 @@ - (void)testLayoutChangeDoesCallNativeAccessibility { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -893,11 +919,13 @@ - (void)testLayoutChangeDoesCallNativeAccessibilityWhenFocusChanged { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -967,11 +995,13 @@ - (void)testScrollableSemanticsContainerReturnsCorrectChildren { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1024,11 +1054,13 @@ - (void)testAnnouncesRouteChangesAndLayoutChangeInOneUpdate { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1121,11 +1153,13 @@ - (void)testAnnouncesRouteChangesWhenAddAdditionalRoute { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1207,11 +1241,13 @@ - (void)testAnnouncesRouteChangesRemoveRouteInMiddle { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1299,11 +1335,13 @@ - (void)testHandleEvent { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1343,11 +1381,13 @@ - (void)testAnnouncesRouteChangesWhenNoNamesRoute { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1413,11 +1453,13 @@ - (void)testAnnouncesLayoutChangeWithNilIfLastFocusIsRemoved { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); id mockFlutterView = OCMClassMock([FlutterView class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1482,11 +1524,13 @@ - (void)testAnnouncesLayoutChangeWithTheSameItemFocused { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); id mockFlutterView = OCMClassMock([FlutterView class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1557,11 +1601,13 @@ - (void)testAnnouncesLayoutChangeWhenFocusMovedOutside { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); id mockFlutterView = OCMClassMock([FlutterView class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1634,11 +1680,13 @@ - (void)testAnnouncesScrollChangeWithLastFocused { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); id mockFlutterView = OCMClassMock([FlutterView class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1707,11 +1755,13 @@ - (void)testAnnouncesScrollChangeDoesCallNativeAccessibility { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); id mockFlutterView = OCMClassMock([FlutterView class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1782,11 +1832,13 @@ - (void)testAnnouncesIgnoresRouteChangesWhenModal { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1839,11 +1891,13 @@ - (void)testAnnouncesIgnoresLayoutChangeWhenModal { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1901,11 +1955,13 @@ - (void)testAnnouncesIgnoresScrollChangeWhenModal { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -1971,11 +2027,13 @@ - (void)testAccessibilityMessageAfterDeletion { auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); fml::AutoResetWaitableEvent latch; thread_task_runner->PostTask([&] { auto weakFactory = @@ -2006,11 +2064,13 @@ - (void)testFlutterSemanticsScrollViewManagedObjectLifecycleCorrectly { /*io=*/thread_task_runner); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterView = OCMClassMock([FlutterView class]); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); OCMStub([mockFlutterViewController view]).andReturn(mockFlutterView); @@ -2056,11 +2116,13 @@ - (void)testPlatformViewDestructorDoesNotCallSemanticsAPIs { thread_task_runner->PostTask([&] { auto platform_view = std::make_unique( /*delegate=*/test_delegate, - /*rendering_api=*/flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/test_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, /*platform_views_controller=*/nil, /*task_runners=*/runners, /*worker_task_runner=*/nil, - /*is_gpu_disabled_sync_switch=*/nil); + /*is_gpu_disabled_sync_switch=*/std::make_shared()); id mockFlutterViewController = OCMClassMock([FlutterViewController class]); auto flutterPlatformViewsController = diff --git a/shell/platform/darwin/ios/ios_context.mm b/shell/platform/darwin/ios/ios_context.mm index 007de7a7105fd..2f58ebb7479a0 100644 --- a/shell/platform/darwin/ios/ios_context.mm +++ b/shell/platform/darwin/ios/ios_context.mm @@ -2,14 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "flutter/shell/platform/darwin/ios/ios_context.h" +#include "flutter/shell/platform/darwin/ios/ios_context.h" +#include "flutter/shell/platform/darwin/ios/rendering_api_selection.h" #include "flutter/fml/logging.h" -#import "flutter/shell/platform/darwin/ios/ios_context_software.h" +#include "flutter/shell/platform/darwin/ios/ios_context_software.h" #if SHELL_ENABLE_METAL -#import "flutter/shell/platform/darwin/ios/ios_context_metal_impeller.h" -#import "flutter/shell/platform/darwin/ios/ios_context_metal_skia.h" +#include "flutter/shell/platform/darwin/ios/ios_context_metal_impeller.h" +#include "flutter/shell/platform/darwin/ios/ios_context_metal_skia.h" #endif // SHELL_ENABLE_METAL namespace flutter { @@ -25,6 +26,11 @@ std::shared_ptr is_gpu_disabled_sync_switch) { switch (api) { case IOSRenderingAPI::kSoftware: + FML_CHECK(backend != IOSRenderingBackend::kImpeller) + << "Software rendering is incompatible with Impeller.\n" + "Software rendering may have been automatically selected when running on a simulator " + "in an environment that does not support Metal. Enabling GPU pass through in your " + "environment may fix this. If that is not possible, then disable Impeller."; return std::make_unique(); #if SHELL_ENABLE_METAL case IOSRenderingAPI::kMetal: