diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index bea122558e458..adb5e6514e89f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -454,7 +454,25 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { void FlutterPlatformViewsController::CompositeWithParams(int view_id, const EmbeddedViewParams& params) { CGRect frame = CGRectMake(0, 0, params.sizePoints().width(), params.sizePoints().height()); - UIView* touchInterceptor = touch_interceptors_[view_id].get(); + FlutterTouchInterceptingView* touchInterceptor = touch_interceptors_[view_id].get(); +#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG + FML_DCHECK(CGPointEqualToPoint([touchInterceptor embeddedView].frame.origin, CGPointZero)); + if (non_zero_origin_views_.find(view_id) == non_zero_origin_views_.end() && + !CGPointEqualToPoint([touchInterceptor embeddedView].frame.origin, CGPointZero)) { + non_zero_origin_views_.insert(view_id); + NSLog( + @"A Embedded PlatformView's origin is not CGPointZero.\n" + " View id: %@\n" + " View info: \n %@ \n" + "A non-zero origin might cause undefined behavior.\n" + "See https://github.com/flutter/flutter/issues/109700 for more details.\n" + "If you are the author of the PlatformView, please update the implementation of the " + "PlatformView to have a (0, 0) origin.\n" + "If you have a valid case of using a non-zero origin, " + "please leave a comment at https://github.com/flutter/flutter/issues/109700 with details.", + @(view_id), [touchInterceptor embeddedView]); + } +#endif touchInterceptor.layer.transform = CATransform3DIdentity; touchInterceptor.frame = frame; touchInterceptor.alpha = 1; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 0a2e134f876dd..096cf8cf51052 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -307,6 +307,14 @@ class FlutterPlatformViewsController { // WeakPtrFactory must be the last member. std::unique_ptr> weak_factory_; + +#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG + // A set to keep track of embedded views that does not have (0, 0) origin. + // An insertion triggers a warning message about non-zero origin logged on the debug console. + // See https://github.com/flutter/flutter/issues/109700 for details. + std::unordered_set non_zero_origin_views_; +#endif + FML_DISALLOW_COPY_AND_ASSIGN(FlutterPlatformViewsController); }; diff --git a/testing/scenario_app/ios/Scenarios/Scenarios/TextPlatformView.m b/testing/scenario_app/ios/Scenarios/Scenarios/TextPlatformView.m index 84c6a1691d931..de7e5f09669de 100644 --- a/testing/scenario_app/ios/Scenarios/Scenarios/TextPlatformView.m +++ b/testing/scenario_app/ios/Scenarios/Scenarios/TextPlatformView.m @@ -65,6 +65,7 @@ @interface TextPlatformView () @end @implementation TextPlatformView { + UIView* _containerView; UITextView* _textView; FlutterMethodChannel* _channel; BOOL _viewCreated; @@ -75,18 +76,26 @@ - (instancetype)initWithFrame:(CGRect)frame arguments:(id _Nullable)args binaryMessenger:(NSObject*)messenger { if ([super init]) { - _textView = [[UITextView alloc] initWithFrame:CGRectMake(50.0, 50.0, 250.0, 100.0)]; - _textView.textColor = UIColor.blueColor; + _containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 250, 100)]; + _containerView.backgroundColor = UIColor.lightGrayColor; + _containerView.clipsToBounds = YES; + _containerView.accessibilityIdentifier = @"platform_view"; + + _textView = [[UITextView alloc] initWithFrame:CGRectMake(50.0, 50.0, 250, 100)]; _textView.backgroundColor = UIColor.lightGrayColor; + _textView.textColor = UIColor.blueColor; [_textView setFont:[UIFont systemFontOfSize:52]]; _textView.text = args; - _textView.accessibilityIdentifier = @"platform_view"; + _textView.autoresizingMask = + (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); + [_containerView addSubview:_textView]; TestTapGestureRecognizer* gestureRecognizer = [[TestTapGestureRecognizer alloc] initWithTarget:self action:@selector(platformViewTapped)]; [_textView addGestureRecognizer:gestureRecognizer]; gestureRecognizer.testTapGestureRecognizerDelegate = self; + _textView.accessibilityLabel = @""; _viewCreated = NO; @@ -100,7 +109,7 @@ - (UIView*)view { abort(); } _viewCreated = YES; - return _textView; + return _containerView; } - (void)platformViewTapped { diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGestureRecognizerTests.m b/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGestureRecognizerTests.m index a840d98124826..0479b071de933 100644 --- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGestureRecognizerTests.m +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGestureRecognizerTests.m @@ -28,24 +28,25 @@ - (void)testRejectPolicyUtilTouchesEnded { XCUIElement* element = evaluatedObject; return [element.identifier hasPrefix:@"platform_view"]; }]; - XCUIElement* platformView = [app.textViews elementMatchingPredicate:predicateToFindPlatformView]; - if (![platformView waitForExistenceWithTimeout:kSecondsToWaitForPlatformView]) { + XCUIElement* textView = + [app.otherElements elementMatchingPredicate:predicateToFindPlatformView].textViews.firstMatch; + if (![textView waitForExistenceWithTimeout:kSecondsToWaitForPlatformView]) { NSLog(@"%@", app.debugDescription); - XCTFail(@"Failed due to not able to find any platformView with %@ seconds", + XCTFail(@"Failed due to not able to find any textView with %@ seconds", @(kSecondsToWaitForPlatformView)); } - XCTAssertNotNil(platformView); - XCTAssertEqualObjects(platformView.label, @""); + XCTAssertNotNil(textView); + XCTAssertEqualObjects(textView.label, @""); NSPredicate* predicate = [NSPredicate predicateWithFormat:@"label == %@", @"-gestureTouchesBegan-gestureTouchesEnded"]; XCTNSPredicateExpectation* exception = - [[XCTNSPredicateExpectation alloc] initWithPredicate:predicate object:platformView]; + [[XCTNSPredicateExpectation alloc] initWithPredicate:predicate object:textView]; - [platformView tap]; + [textView tap]; [self waitForExpectations:@[ exception ] timeout:kSecondsToWaitForPlatformView]; - XCTAssertEqualObjects(platformView.label, @"-gestureTouchesBegan-gestureTouchesEnded"); + XCTAssertEqualObjects(textView.label, @"-gestureTouchesBegan-gestureTouchesEnded"); } - (void)testRejectPolicyEager { @@ -59,15 +60,16 @@ - (void)testRejectPolicyEager { XCUIElement* element = evaluatedObject; return [element.identifier hasPrefix:@"platform_view"]; }]; - XCUIElement* platformView = [app.textViews elementMatchingPredicate:predicateToFindPlatformView]; - if (![platformView waitForExistenceWithTimeout:kSecondsToWaitForPlatformView]) { + XCUIElement* textView = + [app.otherElements elementMatchingPredicate:predicateToFindPlatformView].textViews.firstMatch; + if (![textView waitForExistenceWithTimeout:kSecondsToWaitForPlatformView]) { NSLog(@"%@", app.debugDescription); - XCTFail(@"Failed due to not able to find any platformView with %@ seconds", + XCTFail(@"Failed due to not able to find any textView with %@ seconds", @(kSecondsToWaitForPlatformView)); } - XCTAssertNotNil(platformView); - XCTAssertEqualObjects(platformView.label, @""); + XCTAssertNotNil(textView); + XCTAssertEqualObjects(textView.label, @""); NSPredicate* predicate = [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, @@ -76,11 +78,11 @@ - (void)testRejectPolicyEager { return [view.label containsString:@"-gestureTouchesBegan"]; }]; XCTNSPredicateExpectation* exception = - [[XCTNSPredicateExpectation alloc] initWithPredicate:predicate object:platformView]; + [[XCTNSPredicateExpectation alloc] initWithPredicate:predicate object:textView]; - [platformView tap]; + [textView tap]; [self waitForExpectations:@[ exception ] timeout:kSecondsToWaitForPlatformView]; - XCTAssertTrue([platformView.label containsString:@"-gestureTouchesBegan"]); + XCTAssertTrue([textView.label containsString:@"-gestureTouchesBegan"]); } - (void)testAccept { @@ -94,26 +96,27 @@ - (void)testAccept { XCUIElement* element = evaluatedObject; return [element.identifier hasPrefix:@"platform_view"]; }]; - XCUIElement* platformView = [app.textViews elementMatchingPredicate:predicateToFindPlatformView]; - if (![platformView waitForExistenceWithTimeout:kSecondsToWaitForPlatformView]) { + XCUIElement* textView = + [app.otherElements elementMatchingPredicate:predicateToFindPlatformView].textViews.firstMatch; + if (![textView waitForExistenceWithTimeout:kSecondsToWaitForPlatformView]) { NSLog(@"%@", app.debugDescription); - XCTFail(@"Failed due to not able to find any platformView with %@ seconds", + XCTFail(@"Failed due to not able to find any textView with %@ seconds", @(kSecondsToWaitForPlatformView)); } - XCTAssertNotNil(platformView); - XCTAssertEqualObjects(platformView.label, @""); + XCTAssertNotNil(textView); + XCTAssertEqualObjects(textView.label, @""); NSPredicate* predicate = [NSPredicate predicateWithFormat:@"label == %@", @"-gestureTouchesBegan-gestureTouchesEnded-platformViewTapped"]; XCTNSPredicateExpectation* exception = - [[XCTNSPredicateExpectation alloc] initWithPredicate:predicate object:platformView]; + [[XCTNSPredicateExpectation alloc] initWithPredicate:predicate object:textView]; - [platformView tap]; + [textView tap]; [self waitForExpectations:@[ exception ] timeout:kSecondsToWaitForPlatformView]; - XCTAssertEqualObjects(platformView.label, + XCTAssertEqualObjects(textView.label, @"-gestureTouchesBegan-gestureTouchesEnded-platformViewTapped"); } @@ -128,30 +131,31 @@ - (void)testGestureWithMaskViewBlockingPlatformView { XCUIElement* element = evaluatedObject; return [element.identifier hasPrefix:@"platform_view"]; }]; - XCUIElement* platformView = [app.textViews elementMatchingPredicate:predicateToFindPlatformView]; - if (![platformView waitForExistenceWithTimeout:kSecondsToWaitForPlatformView]) { + XCUIElement* textView = + [app.otherElements elementMatchingPredicate:predicateToFindPlatformView].textViews.firstMatch; + if (![textView waitForExistenceWithTimeout:kSecondsToWaitForPlatformView]) { NSLog(@"%@", app.debugDescription); XCTFail(@"Failed due to not able to find any platformView with %@ seconds", @(kSecondsToWaitForPlatformView)); } - XCTAssertNotNil(platformView); - XCTAssertEqualObjects(platformView.label, @""); + XCTAssertNotNil(textView); + XCTAssertEqualObjects(textView.label, @""); NSPredicate* predicate = [NSPredicate predicateWithFormat:@"label == %@", @"-gestureTouchesBegan-gestureTouchesEnded-platformViewTapped"]; XCTNSPredicateExpectation* exception = - [[XCTNSPredicateExpectation alloc] initWithPredicate:predicate object:platformView]; + [[XCTNSPredicateExpectation alloc] initWithPredicate:predicate object:textView]; XCUICoordinate* coordinate = [self getNormalizedCoordinate:app - point:CGVectorMake(platformView.frame.origin.x + 10, - platformView.frame.origin.y + 10)]; + point:CGVectorMake(textView.frame.origin.x + 10, + textView.frame.origin.y + 10)]; [coordinate tap]; [self waitForExpectations:@[ exception ] timeout:kSecondsToWaitForPlatformView]; - XCTAssertEqualObjects(platformView.label, + XCTAssertEqualObjects(textView.label, @"-gestureTouchesBegan-gestureTouchesEnded-platformViewTapped"); } diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/UnobstructedPlatformViewTests.m b/testing/scenario_app/ios/Scenarios/ScenariosUITests/UnobstructedPlatformViewTests.m index 51ab28fadeaae..746fd3ed88c1f 100644 --- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/UnobstructedPlatformViewTests.m +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/UnobstructedPlatformViewTests.m @@ -27,10 +27,10 @@ - (void)testNoOverlay { @[ @"--platform-view-no-overlay-intersection", @"--enable-software-rendering" ]; [app launch]; - XCUIElement* platform_view = app.textViews[@"platform_view[0]"]; + XCUIElement* platform_view = app.otherElements[@"platform_view[0]"]; XCTAssertTrue([platform_view waitForExistenceWithTimeout:1.0]); - XCTAssertEqual(platform_view.frame.origin.x, 25); - XCTAssertEqual(platform_view.frame.origin.y, 25); + XCTAssertEqual(platform_view.frame.origin.x, 0); + XCTAssertEqual(platform_view.frame.origin.y, 0); XCTAssertEqual(platform_view.frame.size.width, 250); XCTAssertEqual(platform_view.frame.size.height, 250); @@ -49,10 +49,10 @@ - (void)testOneOverlay { app.launchArguments = @[ @"--platform-view" ]; [app launch]; - XCUIElement* platform_view = app.textViews[@"platform_view[0]"]; + XCUIElement* platform_view = app.otherElements[@"platform_view[0]"]; XCTAssertTrue([platform_view waitForExistenceWithTimeout:1.0]); - XCTAssertEqual(platform_view.frame.origin.x, 25); - XCTAssertEqual(platform_view.frame.origin.y, 25); + XCTAssertEqual(platform_view.frame.origin.x, 0); + XCTAssertEqual(platform_view.frame.origin.y, 0); XCTAssertEqual(platform_view.frame.size.width, 250); XCTAssertEqual(platform_view.frame.size.height, 250); @@ -83,20 +83,20 @@ - (void)testOneOverlayPartialIntersection { app.launchArguments = @[ @"--platform-view-partial-intersection" ]; [app launch]; - XCUIElement* platform_view = app.textViews[@"platform_view[0]"]; + XCUIElement* platform_view = app.otherElements[@"platform_view[0]"]; XCTAssertTrue([platform_view waitForExistenceWithTimeout:1.0]); - XCTAssertEqual(platform_view.frame.origin.x, 25); - XCTAssertEqual(platform_view.frame.origin.y, 25); + XCTAssertEqual(platform_view.frame.origin.x, 0); + XCTAssertEqual(platform_view.frame.origin.y, 0); XCTAssertEqual(platform_view.frame.size.width, 250); XCTAssertEqual(platform_view.frame.size.height, 250); XCUIElement* overlay = app.otherElements[@"platform_view[0].overlay[0]"]; XCTAssertTrue(overlay.exists); XCTAssertEqual(overlay.frame.origin.x, 200); - XCTAssertEqual(overlay.frame.origin.y, 250); + XCTAssertEqual(overlay.frame.origin.y, 245); XCTAssertEqual(overlay.frame.size.width, 50); // Half the height of the overlay. - XCTAssertEqual(overlay.frame.size.height, 25); + XCTAssertEqual(overlay.frame.size.height, 5); XCUIElement* overlayView = app.otherElements[@"platform_view[0].overlay_view[0]"]; XCTAssertTrue(overlayView.exists); @@ -120,10 +120,10 @@ - (void)testTwoIntersectingOverlays { app.launchArguments = @[ @"--platform-view-two-intersecting-overlays" ]; [app launch]; - XCUIElement* platform_view = app.textViews[@"platform_view[0]"]; + XCUIElement* platform_view = app.otherElements[@"platform_view[0]"]; XCTAssertTrue([platform_view waitForExistenceWithTimeout:1.0]); - XCTAssertEqual(platform_view.frame.origin.x, 25); - XCTAssertEqual(platform_view.frame.origin.y, 25); + XCTAssertEqual(platform_view.frame.origin.x, 0); + XCTAssertEqual(platform_view.frame.origin.y, 0); XCTAssertEqual(platform_view.frame.size.width, 250); XCTAssertEqual(platform_view.frame.size.height, 250); @@ -149,10 +149,10 @@ - (void)testOneOverlayAndTwoIntersectingOverlays { app.launchArguments = @[ @"--platform-view-one-overlay-two-intersecting-overlays" ]; [app launch]; - XCUIElement* platform_view = app.textViews[@"platform_view[0]"]; + XCUIElement* platform_view = app.otherElements[@"platform_view[0]"]; XCTAssertTrue([platform_view waitForExistenceWithTimeout:1.0]); - XCTAssertEqual(platform_view.frame.origin.x, 25); - XCTAssertEqual(platform_view.frame.origin.y, 25); + XCTAssertEqual(platform_view.frame.origin.x, 0); + XCTAssertEqual(platform_view.frame.origin.y, 0); XCTAssertEqual(platform_view.frame.size.width, 250); XCTAssertEqual(platform_view.frame.size.height, 250); @@ -168,7 +168,7 @@ - (void)testOneOverlayAndTwoIntersectingOverlays { XCTAssertEqual(overlay2.frame.origin.x, 75); XCTAssertEqual(overlay2.frame.origin.y, 225); XCTAssertEqual(overlay2.frame.size.width, 50); - XCTAssertEqual(overlay2.frame.size.height, 50); + XCTAssertEqual(overlay2.frame.size.height, 25); XCUIElement* overlayView0 = app.otherElements[@"platform_view[0].overlay_view[0]"]; XCTAssertTrue(overlayView0.exists); @@ -201,17 +201,17 @@ - (void)testMultiplePlatformViewsWithoutOverlays { app.launchArguments = @[ @"--platform-view-multiple-without-overlays" ]; [app launch]; - XCUIElement* platform_view1 = app.textViews[@"platform_view[0]"]; + XCUIElement* platform_view1 = app.otherElements[@"platform_view[0]"]; XCTAssertTrue([platform_view1 waitForExistenceWithTimeout:1.0]); - XCTAssertEqual(platform_view1.frame.origin.x, 25); - XCTAssertEqual(platform_view1.frame.origin.y, 325); + XCTAssertEqual(platform_view1.frame.origin.x, 0); + XCTAssertEqual(platform_view1.frame.origin.y, 300); XCTAssertEqual(platform_view1.frame.size.width, 250); XCTAssertEqual(platform_view1.frame.size.height, 250); - XCUIElement* platform_view2 = app.textViews[@"platform_view[1]"]; + XCUIElement* platform_view2 = app.otherElements[@"platform_view[1]"]; XCTAssertTrue(platform_view2.exists); - XCTAssertEqual(platform_view2.frame.origin.x, 25); - XCTAssertEqual(platform_view2.frame.origin.y, 25); + XCTAssertEqual(platform_view2.frame.origin.x, 0); + XCTAssertEqual(platform_view2.frame.origin.y, 0); XCTAssertEqual(platform_view2.frame.size.width, 250); XCTAssertEqual(platform_view2.frame.size.height, 250); @@ -233,32 +233,32 @@ - (void)testMultiplePlatformViewsWithOverlays { app.launchArguments = @[ @"--platform-view-multiple-background-foreground" ]; [app launch]; - XCUIElement* platform_view1 = app.textViews[@"platform_view[0]"]; + XCUIElement* platform_view1 = app.otherElements[@"platform_view[0]"]; XCTAssertTrue([platform_view1 waitForExistenceWithTimeout:1.0]); - XCTAssertEqual(platform_view1.frame.origin.x, 50); - XCTAssertEqual(platform_view1.frame.origin.y, 325); + XCTAssertEqual(platform_view1.frame.origin.x, 25); + XCTAssertEqual(platform_view1.frame.origin.y, 300); XCTAssertEqual(platform_view1.frame.size.width, 250); XCTAssertEqual(platform_view1.frame.size.height, 250); - XCUIElement* platform_view2 = app.textViews[@"platform_view[1]"]; + XCUIElement* platform_view2 = app.otherElements[@"platform_view[1]"]; XCTAssertTrue(platform_view2.exists); - XCTAssertEqual(platform_view2.frame.origin.x, 50); - XCTAssertEqual(platform_view2.frame.origin.y, 25); + XCTAssertEqual(platform_view2.frame.origin.x, 25); + XCTAssertEqual(platform_view2.frame.origin.y, 0); XCTAssertEqual(platform_view2.frame.size.width, 250); XCTAssertEqual(platform_view2.frame.size.height, 250); XCUIElement* overlay1 = app.otherElements[@"platform_view[0].overlay[0]"]; XCTAssertTrue(overlay1.exists); - XCTAssertEqual(overlay1.frame.origin.x, 50); - XCTAssertEqual(overlay1.frame.origin.y, 325); - XCTAssertEqual(overlay1.frame.size.width, 200); - XCTAssertEqual(overlay1.frame.size.height, 175); + XCTAssertEqual(overlay1.frame.origin.x, 25); + XCTAssertEqual(overlay1.frame.origin.y, 300); + XCTAssertEqual(overlay1.frame.size.width, 225); + XCTAssertEqual(overlay1.frame.size.height, 200); XCUIElement* overlay2 = app.otherElements[@"platform_view[1].overlay[0]"]; XCTAssertTrue(overlay2.exists); - XCTAssertEqual(overlay2.frame.origin.x, 50); - XCTAssertEqual(overlay2.frame.origin.y, 25); - XCTAssertEqual(overlay2.frame.size.width, 200); + XCTAssertEqual(overlay2.frame.origin.x, 25); + XCTAssertEqual(overlay2.frame.origin.y, 0); + XCTAssertEqual(overlay2.frame.size.width, 225); XCTAssertEqual(overlay2.frame.size.height, 250); XCUIElement* overlayView0 = app.otherElements[@"platform_view[0].overlay_view[0]"]; @@ -293,10 +293,10 @@ - (void)testPlatformViewsMaxOverlays { app.launchArguments = @[ @"--platform-view-max-overlays" ]; [app launch]; - XCUIElement* platform_view = app.textViews[@"platform_view[0]"]; + XCUIElement* platform_view = app.otherElements[@"platform_view[0]"]; XCTAssertTrue([platform_view waitForExistenceWithTimeout:1.0]); - XCTAssertEqual(platform_view.frame.origin.x, 25); - XCTAssertEqual(platform_view.frame.origin.y, 25); + XCTAssertEqual(platform_view.frame.origin.x, 0); + XCTAssertEqual(platform_view.frame.origin.y, 0); XCTAssertEqual(platform_view.frame.size.width, 250); XCTAssertEqual(platform_view.frame.size.height, 250); diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_non_full_screen_flutter_view_platform_view_iPhone 8_13.0_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_non_full_screen_flutter_view_platform_view_iPhone 8_13.0_simulator.png index e0b47938d81e6..4f78b50741f7a 100644 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_non_full_screen_flutter_view_platform_view_iPhone 8_13.0_simulator.png and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_non_full_screen_flutter_view_platform_view_iPhone 8_13.0_simulator.png differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone 8_13.0_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone 8_13.0_simulator.png index 94fdf8971cbdf..17ea126942965 100644 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone 8_13.0_simulator.png and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone 8_13.0_simulator.png differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone 8_13.0_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone 8_13.0_simulator.png index f881d8cfb260a..a193619c27c60 100644 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone 8_13.0_simulator.png and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone 8_13.0_simulator.png differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone 8_13.0_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone 8_13.0_simulator.png index fd64f97f33638..49fa549a55a46 100644 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone 8_13.0_simulator.png and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone 8_13.0_simulator.png differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone 8_13.0_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone 8_13.0_simulator.png index eedbca75223a4..f13339ebb3fc1 100644 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone 8_13.0_simulator.png and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone 8_13.0_simulator.png differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone 8_13.0_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone 8_13.0_simulator.png index 517330b8dbd17..7b8b037b42635 100644 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone 8_13.0_simulator.png and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone 8_13.0_simulator.png differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone 8_13.0_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone 8_13.0_simulator.png index 0fd4774537618..0be72bad80238 100644 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone 8_13.0_simulator.png and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone 8_13.0_simulator.png differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_other_backdrop_filter_iPhone 8_13.0_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_other_backdrop_filter_iPhone 8_13.0_simulator.png index 6ea69adb6d0a6..1065e3b42742d 100644 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_other_backdrop_filter_iPhone 8_13.0_simulator.png and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_other_backdrop_filter_iPhone 8_13.0_simulator.png differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_views_with_other_backdrop_filter_iPhone 8_13.0_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_views_with_other_backdrop_filter_iPhone 8_13.0_simulator.png index 2b5dff4f9c03f..fdba44db11fcf 100644 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_views_with_other_backdrop_filter_iPhone 8_13.0_simulator.png and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_views_with_other_backdrop_filter_iPhone 8_13.0_simulator.png differ diff --git a/testing/scenario_app/lib/src/platform_view.dart b/testing/scenario_app/lib/src/platform_view.dart index 9443f23aa77f8..1422029a9a461 100644 --- a/testing/scenario_app/lib/src/platform_view.dart +++ b/testing/scenario_app/lib/src/platform_view.dart @@ -177,7 +177,7 @@ class PlatformViewPartialIntersectionScenario extends Scenario finishBuilder( builder, - overlayOffset: const Offset(150, 250), + overlayOffset: const Offset(150, 240), ); } }