diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm index 0b5526a5341a2..516cb8c8c826a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm @@ -72,7 +72,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, @@ -90,8 +92,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 1e6dad56089aa..2d630c870be11 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm @@ -89,6 +89,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 {} @@ -117,7 +118,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_; }; @@ -148,7 +148,9 @@ - (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, @@ -204,7 +206,9 @@ - (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, @@ -258,7 +262,9 @@ - (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, @@ -330,7 +336,9 @@ - (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, @@ -402,7 +410,9 @@ - (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, @@ -475,7 +485,9 @@ - (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, @@ -588,7 +600,9 @@ - (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, @@ -725,7 +739,9 @@ - (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, @@ -1002,7 +1018,9 @@ - (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, @@ -1302,7 +1320,9 @@ - (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, @@ -1358,7 +1378,9 @@ - (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, @@ -1452,7 +1474,9 @@ - (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, @@ -1523,7 +1547,9 @@ - (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, @@ -1590,7 +1616,9 @@ - (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, @@ -1656,7 +1684,9 @@ - (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, @@ -1729,7 +1759,9 @@ - (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, @@ -1802,7 +1834,9 @@ - (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, @@ -1876,7 +1910,9 @@ - (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, @@ -1940,7 +1976,9 @@ - (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, @@ -2061,7 +2099,9 @@ - (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, @@ -2172,7 +2212,9 @@ - (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, @@ -2234,7 +2276,9 @@ - (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, @@ -2296,7 +2340,9 @@ - (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, @@ -2346,7 +2392,9 @@ - (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, @@ -2402,7 +2450,9 @@ - (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, @@ -2500,7 +2550,9 @@ - (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, @@ -2598,7 +2650,9 @@ - (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, @@ -2752,7 +2806,9 @@ - (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, @@ -2834,7 +2890,9 @@ - (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, @@ -2934,7 +2992,9 @@ - (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, @@ -3042,7 +3102,9 @@ - (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, 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 ac44da5370b9d..e9e598be039ba 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,7 +147,9 @@ - (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, @@ -169,7 +171,9 @@ - (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, @@ -198,7 +202,9 @@ - (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, @@ -245,7 +251,9 @@ - (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, @@ -277,7 +285,9 @@ - (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, @@ -336,7 +346,9 @@ - (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, @@ -381,7 +393,9 @@ - (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, @@ -475,7 +489,9 @@ - (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, @@ -547,7 +563,9 @@ - (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, @@ -619,7 +637,9 @@ - (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, @@ -687,7 +707,9 @@ - (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, @@ -734,7 +756,9 @@ - (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, @@ -818,7 +842,9 @@ - (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, @@ -893,7 +919,9 @@ - (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, @@ -967,7 +995,9 @@ - (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, @@ -1024,7 +1054,9 @@ - (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, @@ -1121,7 +1153,9 @@ - (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, @@ -1207,7 +1241,9 @@ - (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, @@ -1299,7 +1335,9 @@ - (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, @@ -1343,7 +1381,9 @@ - (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, @@ -1413,7 +1453,9 @@ - (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, @@ -1482,7 +1524,9 @@ - (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, @@ -1557,7 +1601,9 @@ - (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, @@ -1634,7 +1680,9 @@ - (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, @@ -1707,7 +1755,9 @@ - (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, @@ -1782,7 +1832,9 @@ - (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, @@ -1839,7 +1891,9 @@ - (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, @@ -1901,7 +1955,9 @@ - (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, @@ -1971,7 +2027,9 @@ - (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, @@ -2006,7 +2064,9 @@ - (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, @@ -2056,7 +2116,9 @@ - (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, 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: