Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Conversation

cyanglaz
Copy link
Contributor

@cyanglaz cyanglaz commented Jan 23, 2020

Set up the iOS platform view gesture blocking policy. The previous behavior is named as FlutterPlatformViewGestureRecognizersBlockingPolicyEager which is still the default behavior.
I also added a new policy named FlutterPlatformViewGestureRecognizersBlockingPolicyWaitUntilTouchesEnded.
While using the FlutterPlatformViewGestureRecognizersBlockingPolicyWaitUntilTouchesEnded, gestures will not blocked until receiving touchesEnded call.

By introducing the new policy, we have a chance to fix the google map gesture recognizer issue mentioned in flutter/flutter#33988 when the google_map_flutter plugin adapts the new policy.

We don't have an infra setup to set iOS gestures. EarlGray might help once we have it set up.

All the gesture recognizers behavior on iOS platform view should be not effected unless the plugin updates to use the FlutterPlatformViewGestureRecognizersBlockingPolicyWaitUntilTouchesEnded policy.

@auto-assign auto-assign bot requested a review from liyuqian January 23, 2020 19:03
@cyanglaz cyanglaz requested review from amirh and removed request for liyuqian January 23, 2020 19:04
Copy link
Contributor

@amirh amirh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, looks promising!

Left a few comments, also - what's the testing plan?

/***************************************************************************************************
* How the UIGestureRecognizers of a platform view should be blocked.
*
* UIGestureRecognizers of a platform views can be blocked based on the decisin made by the Flutter
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit - typos: decisions, interact-able, implemented

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

*
* This policy describes how the blocking process is implmented.
*/
typedef enum {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typos: framework, policy, implemented,

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

*/
typedef enum {
/**
* The flutter framwork blocks all the UIGestureRecognizers on the platform view as soon as it
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit double space

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

typedef enum {
/**
* The flutter framwork blocks all the UIGestureRecognizers on the platform view as soon as it
* thinks they should be blocked.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: s/thinks/knows/

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how about decides

*/
FlutterPlatformViewGestureRecognizersBlockingPolicyEager,
/**
* The flutter framwork blocks all the UIGestureRecognizers until the `touchesEnded` method is
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

types: framework, policy, implemented

@@ -562,11 +579,33 @@ - (instancetype)initWithEmbeddedView:(UIView*)embeddedView
}

- (void)releaseGesture {
NSLog(@"releaseGesture gesture");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: remove

_delayingRecognizer.get().state = UIGestureRecognizerStateEnded;
switch (_blockingPolicy) {
case FlutterPlatformViewGestureRecognizersBlockingPolicyEager:
NSLog(@"block gesture");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: remove


- (void)touchesEnded:(NSSet<UITouch*>*)touches withEvent:(UIEvent*)event {
if (self.shouldEndInNextTouchesEnded) {
NSLog(@"block gesture in touches ended");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: remove

self.shouldEndInNextTouchesEnded = NO;
return;
}
self.touchedEndedWithoutBlocking = YES;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to set this here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If releaseGesture is called after touchesEnded(very rarely), we need to do self.state = UIGestureRecognizerStateEnded; the in releaseGesture method, since the touchesEnded won't be called again. Setting this kinda let the releaseGesture know touchesEnded has happened already.

NSLog(@"block gesture in touches ended");
self.state = UIGestureRecognizerStateEnded;
self.shouldEndInNextTouchesEnded = NO;
return;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to call super here as well?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link
Contributor Author

@cyanglaz cyanglaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated for review comments. I also left some comments for discussion.
As for testing, we might be able to use earl gray that @collinjackson is working on to test this. I have to spend some time to see how that's feasible and come up with a plan.

/***************************************************************************************************
* How the UIGestureRecognizers of a platform view should be blocked.
*
* UIGestureRecognizers of a platform views can be blocked based on the decisin made by the Flutter
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

*/
typedef enum {
/**
* The flutter framwork blocks all the UIGestureRecognizers on the platform view as soon as it
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

typedef enum {
/**
* The flutter framwork blocks all the UIGestureRecognizers on the platform view as soon as it
* thinks they should be blocked.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how about decides

*/
FlutterPlatformViewGestureRecognizersBlockingPolicyEager,
/**
* The flutter framwork blocks all the UIGestureRecognizers until the `touchesEnded` method is
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i meant until: blocks...until...

/**
* The default behavior is currently set to `FlutterPlatformViewGestureBlockingPolicyEager`
*/
FlutterPlatformViewGestureRecognizersBlockingPolicyDefault =
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought it is easier for us to track what is the default behavior in the feature. Also it is easier to update when we want to switch default behaviors.

NSLog(@"block gesture in touches ended");
self.state = UIGestureRecognizerStateEnded;
self.shouldEndInNextTouchesEnded = NO;
return;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

self.shouldEndInNextTouchesEnded = NO;
return;
}
self.touchedEndedWithoutBlocking = YES;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If releaseGesture is called after touchesEnded(very rarely), we need to do self.state = UIGestureRecognizerStateEnded; the in releaseGesture method, since the touchesEnded won't be called again. Setting this kinda let the releaseGesture know touchesEnded has happened already.

@@ -47,6 +47,7 @@ - (instancetype)initWithFrame:(CGRect)frame
_textView = [[UITextView alloc] initWithFrame:CGRectMake(50.0, 50.0, 250.0, 100.0)];
_textView.textColor = UIColor.blueColor;
_textView.backgroundColor = UIColor.lightGrayColor;
_textView.userInteractionEnabled = YES;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed. This was a code added for an experiment that I try to use scenario app to test this.

*/
FlutterPlatformViewGestureRecognizersBlockingPolicyEager,
/**
* The flutter framework blocks all the UIGestureRecognizers until the `touchesEnded` method is
Copy link
Contributor Author

@cyanglaz cyanglaz Jan 27, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually I was wrong. The behavior is neither block...until nor block...after.
The gesture recognizers are blocked, but the touchesBegan and touchesEnded callbacks are not. I think we might need to be more implicit here.
What do you think about:

The flutter framework waits until the `touchesEneded` method is called
for every UIGestureRecognizer on the platform view before blocking
the "actions" of all the UIGestureRecognizers.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually find your original comment easier to process 😄

Good point about emphasizing that what's being delayed are the actions. Another note is that it's not the "flutter framework" which is blocking the gesture.

How about something like:

Flutter blocks the platform view's UIGestureRecognizers from recognizing only after touchesEnded was invoked. This results in the platform view's UIGestureRecognizers seeing the entire touch sequence, but never recognizing the gesture (and never invoking actions).

/**
* The default behavior is currently set to `FlutterPlatformViewGestureBlockingPolicyEager`
*/
FlutterPlatformViewGestureRecognizersBlockingPolicyDefault =
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case I wouldn't expand a public API to make our implementation a little cleaner.

*/
FlutterPlatformViewGestureRecognizersBlockingPolicyEager,
/**
* The flutter framework blocks all the UIGestureRecognizers until the `touchesEnded` method is
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually find your original comment easier to process 😄

Good point about emphasizing that what's being delayed are the actions. Another note is that it's not the "flutter framework" which is blocking the gesture.

How about something like:

Flutter blocks the platform view's UIGestureRecognizers from recognizing only after touchesEnded was invoked. This results in the platform view's UIGestureRecognizers seeing the entire touch sequence, but never recognizing the gesture (and never invoking actions).

* happened on the widget, The framework may decide to block the UIGestureRecognizers that are
* recognized (via the gesture recognized acton ) on the platform view if any.
*
* This policy describes how the blocking process is implemented.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: This policy determines how Flutter blocks a platform view's UIGestureRecognizers.

*/
typedef enum {
/**
* The flutter framework blocks all the UIGestureRecognizers on the platform view as soon as it
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: s/flutter framework/Flutter/

* The flutter framework blocks all the UIGestureRecognizers on the platform view as soon as it
* decides they should be blocked.
*
* If this policy is implemented, only touchesBegan for all the UIGestureRecognizers is guaranteed
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: s/If this policy is implemented/With this policy/

}
- (instancetype)initWithEmbeddedView:(UIView*)embeddedView
flutterViewController:(UIViewController*)flutterViewController {
flutterViewController:(UIViewController*)flutterViewController
gestureRecognizersBlockingPolicy:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this the auto indentation?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, indented by the formatter

@cyanglaz
Copy link
Contributor Author

cyanglaz commented Feb 7, 2020

@amirh Updated the PR with your suggestions and also added tests. Should be ready for another round of reviews.

/**
* Registers a `FlutterPlatformViewFactory` for creation of platform views.
*
* Plugins expose `UIView` for embedding in Flutter apps by registering a view factory.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: can expose a UIView

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is copied from the method above, should I apply the same fix there in this PR too?

[self
readyContextForPlatformViewTests:goldenTestName
gestureRecognizersBlockingPolicy:FlutterPlatformViewGestureRecognizersBlockingPolicyEager];
} else if ([[[NSProcessInfo processInfo] arguments] containsObject:@"--gesture-reject"]) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find this logic a little hard to follow, what do you think about always registering 2 platform views factories (each with a different blocking policy), and then have the test case themselves determine which one is used?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


@interface TestTapGestureRecognizer : UITapGestureRecognizer

@property(assign, nonatomic) BOOL touchesBegan;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is this used?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed

XCTAssertEqualObjects(platformView.label, @"-gestureTouchesBegan-gestureTouchesEnded");
}

- (void)testRejcectPolicyEager {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: typo

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

} else if ([[[NSProcessInfo processInfo] arguments] containsObject:@"--gesture-reject"]) {
FlutterPlatformViewGestureRecognizersBlockingPolicy policy =
FlutterPlatformViewGestureRecognizersBlockingPolicyEager;
if ([[[NSProcessInfo processInfo] arguments] containsObject:@"--until-touches-ended"]) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we just have a different teat-name for this instead of an additional argument? e.g --reject-gesture-after-touches-ended ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@@ -27,7 +27,8 @@ List<int> _to64(num value) {
}

/// A simple platform view.
class PlatformViewScenario extends Scenario with _BasePlatformViewScenarioMixin {
class PlatformViewScenario extends Scenario
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please avoid unnecessary formats, to keep blame lines cleaner.

Copy link
Contributor Author

@cyanglaz cyanglaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated with the latest review comments.

[self
readyContextForPlatformViewTests:goldenTestName
gestureRecognizersBlockingPolicy:FlutterPlatformViewGestureRecognizersBlockingPolicyEager];
} else if ([[[NSProcessInfo processInfo] arguments] containsObject:@"--gesture-reject"]) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

} else if ([[[NSProcessInfo processInfo] arguments] containsObject:@"--gesture-reject"]) {
FlutterPlatformViewGestureRecognizersBlockingPolicy policy =
FlutterPlatformViewGestureRecognizersBlockingPolicyEager;
if ([[[NSProcessInfo processInfo] arguments] containsObject:@"--until-touches-ended"]) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


@interface TestTapGestureRecognizer : UITapGestureRecognizer

@property(assign, nonatomic) BOOL touchesBegan;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed

XCTAssertEqualObjects(platformView.label, @"-gestureTouchesBegan-gestureTouchesEnded");
}

- (void)testRejcectPolicyEager {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

/**
* Registers a `FlutterPlatformViewFactory` for creation of platform views.
*
* Plugins expose `UIView` for embedding in Flutter apps by registering a view factory.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is copied from the method above, should I apply the same fix there in this PR too?

Copy link
Contributor

@amirh amirh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@cyanglaz cyanglaz merged commit 5fb0116 into flutter:master Feb 11, 2020
@cyanglaz cyanglaz deleted the platform_view_gesture branch February 11, 2020 23:35
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 12, 2020
franciscojma86 pushed a commit to flutter/flutter that referenced this pull request Feb 13, 2020
* f49a8b6 Roll src/third_party/skia c03e6982f96f..465864cad5d2 (14 commits) (flutter/engine#16524)

* c477c06 Enable verbose logging for shell unittests on Fuchsia (flutter/engine#16526)

* a662579 Clear frame references at the end of every CanvasKit frame (flutter/engine#16525)

* 3f31ea3 Roll src/third_party/skia 465864cad5d2..21f382c19d76 (6 commits) (flutter/engine#16528)

* 38fb6b1 Roll fuchsia/sdk/core/linux-amd64 from 8L7NY... to Bmq1m... (flutter/engine#16529)

* 9c0168a Roll fuchsia/sdk/core/mac-amd64 from PMcw3... to 7JkB7... (flutter/engine#16530)

* e8a888d Roll src/third_party/skia 21f382c19d76..f83d0346c06a (2 commits) (flutter/engine#16532)

* 1e8b331 Roll src/third_party/dart 5244d99a5d4e..5fc031ebc1d7 (42 commits) (flutter/engine#16533)

* c4e3ae6 Roll src/third_party/skia f83d0346c06a..88c3793a4eaa (1 commits) (flutter/engine#16534)

* 6cdb14e Roll src/third_party/skia 88c3793a4eaa..abefc9c170c9 (1 commits) (flutter/engine#16535)

* 975acd8 Roll src/third_party/skia abefc9c170c9..4fe89b4d871d (2 commits) (flutter/engine#16536)

* b7424d0 Roll src/third_party/dart 5fc031ebc1d7..30151a654151 (2 commits) (flutter/engine#16537)

* 25e8127 Roll src/third_party/skia 4fe89b4d871d..dc2782c380f6 (1 commits) (flutter/engine#16538)

* 74fa10c Roll src/third_party/dart 30151a654151..76b18c455e2c (1 commits) (flutter/engine#16539)

* 91b8e40 Roll src/third_party/skia dc2782c380f6..cdf2491afa04 (1 commits) (flutter/engine#16540)

* 5acf9b1 Roll src/third_party/skia cdf2491afa04..50a490a1a4fb (2 commits) (flutter/engine#16541)

* 9897777 Roll src/third_party/skia 50a490a1a4fb..c3b67eb988c8 (4 commits) (flutter/engine#16542)

* 78a8909 Use os_log instead of syslog on Apple platforms (flutter/engine#13487)

* ea56ad2 libtxt: use a fixture in the benchmarks (flutter/engine#16531)

* a61dbf2 Revert "Use os_log instead of syslog on Apple platforms (#13487)" (flutter/engine#16546)

* 539f64f [fuchsia] Disable retained layers (flutter/engine#16548)

* c3b5072 Expose DPI helper functions for Runner apps to use (flutter/engine#16313)

* 5041ff1 support endless trace buffer (flutter/engine#16520)

* 6aacf5e Re-land: Use os_log instead of syslog on Apple platforms (flutter/engine#16549)

* a5736b8 Roll src/third_party/skia c3b67eb988c8..b1525c721ea6 (4 commits) (flutter/engine#16543)

* 49a370f Roll src/third_party/dart 76b18c455e2c..e4c39721c473 (6 commits) (flutter/engine#16544)

* 270421c Fix ensureInitializationCompleteAsync callback when already initialized. (#39675) (flutter/engine#16503)

* ca02b91 Prevent long flash when switching to Flutter app. (#47903) (flutter/engine#16527)

* 44e80fd skiping tests in Safari. LUCI recipe for Mac is ready. this is the only step left for stopping us running unit tests in Safari (flutter/engine#16550)

* 5fb0116 iOS platform view gesture blocking policy. (flutter/engine#15940)

* e0ebaea Revert "Re-land: Use os_log instead of syslog on Apple platforms (#16549)" (flutter/engine#16558)
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 14, 2020
dnfield pushed a commit to flutter/flutter that referenced this pull request Feb 14, 2020
* f49a8b6 Roll src/third_party/skia c03e6982f96f..465864cad5d2 (14 commits) (flutter/engine#16524)

* c477c06 Enable verbose logging for shell unittests on Fuchsia (flutter/engine#16526)

* a662579 Clear frame references at the end of every CanvasKit frame (flutter/engine#16525)

* 3f31ea3 Roll src/third_party/skia 465864cad5d2..21f382c19d76 (6 commits) (flutter/engine#16528)

* 38fb6b1 Roll fuchsia/sdk/core/linux-amd64 from 8L7NY... to Bmq1m... (flutter/engine#16529)

* 9c0168a Roll fuchsia/sdk/core/mac-amd64 from PMcw3... to 7JkB7... (flutter/engine#16530)

* e8a888d Roll src/third_party/skia 21f382c19d76..f83d0346c06a (2 commits) (flutter/engine#16532)

* 1e8b331 Roll src/third_party/dart 5244d99a5d4e..5fc031ebc1d7 (42 commits) (flutter/engine#16533)

* c4e3ae6 Roll src/third_party/skia f83d0346c06a..88c3793a4eaa (1 commits) (flutter/engine#16534)

* 6cdb14e Roll src/third_party/skia 88c3793a4eaa..abefc9c170c9 (1 commits) (flutter/engine#16535)

* 975acd8 Roll src/third_party/skia abefc9c170c9..4fe89b4d871d (2 commits) (flutter/engine#16536)

* b7424d0 Roll src/third_party/dart 5fc031ebc1d7..30151a654151 (2 commits) (flutter/engine#16537)

* 25e8127 Roll src/third_party/skia 4fe89b4d871d..dc2782c380f6 (1 commits) (flutter/engine#16538)

* 74fa10c Roll src/third_party/dart 30151a654151..76b18c455e2c (1 commits) (flutter/engine#16539)

* 91b8e40 Roll src/third_party/skia dc2782c380f6..cdf2491afa04 (1 commits) (flutter/engine#16540)

* 5acf9b1 Roll src/third_party/skia cdf2491afa04..50a490a1a4fb (2 commits) (flutter/engine#16541)

* 9897777 Roll src/third_party/skia 50a490a1a4fb..c3b67eb988c8 (4 commits) (flutter/engine#16542)

* 78a8909 Use os_log instead of syslog on Apple platforms (flutter/engine#13487)

* ea56ad2 libtxt: use a fixture in the benchmarks (flutter/engine#16531)

* a61dbf2 Revert "Use os_log instead of syslog on Apple platforms (#13487)" (flutter/engine#16546)

* 539f64f [fuchsia] Disable retained layers (flutter/engine#16548)

* c3b5072 Expose DPI helper functions for Runner apps to use (flutter/engine#16313)

* 5041ff1 support endless trace buffer (flutter/engine#16520)

* 6aacf5e Re-land: Use os_log instead of syslog on Apple platforms (flutter/engine#16549)

* a5736b8 Roll src/third_party/skia c3b67eb988c8..b1525c721ea6 (4 commits) (flutter/engine#16543)

* 49a370f Roll src/third_party/dart 76b18c455e2c..e4c39721c473 (6 commits) (flutter/engine#16544)

* 270421c Fix ensureInitializationCompleteAsync callback when already initialized. (#39675) (flutter/engine#16503)

* ca02b91 Prevent long flash when switching to Flutter app. (#47903) (flutter/engine#16527)

* 44e80fd skiping tests in Safari. LUCI recipe for Mac is ready. this is the only step left for stopping us running unit tests in Safari (flutter/engine#16550)

* 5fb0116 iOS platform view gesture blocking policy. (flutter/engine#15940)

* e0ebaea Revert "Re-land: Use os_log instead of syslog on Apple platforms (#16549)" (flutter/engine#16558)

* 8a6b949 [Fuchsia] Dump syslog output after tests have run (flutter/engine#16561)

* bca879c Roll src/third_party/dart e4c39721c473..0299903f3e78 (31 commits) (flutter/engine#16553)

* cd11d7a Roll fuchsia/sdk/core/mac-amd64 from 7JkB7... to t4kck... (flutter/engine#16555)

* 99a265b [web] Fix edge cases in Paragraph.getPositionForOffset to match Flutter (flutter/engine#16557)

* 8f8af1f Update felt documentation (flutter/engine#16559)

* 13dce50 Roll src/third_party/skia b1525c721ea6..67da665c27ff (32 commits) (flutter/engine#16562)

* 7c67573 Fix multiline Javadoc code blocks (flutter/engine#16565)

* aece5ad Move log_listener call into the reboot trap (flutter/engine#16564)

* 42f18d9 Roll src/third_party/skia 67da665c27ff..886e8500a9f2 (3 commits) (flutter/engine#16566)

* c4c6ef6 Samsung keyboard duplication workaround: updateSelection (flutter/engine#16547)

* 15062ca Revert "Re-arm timer as necessary in MessageLoopFuchsia" (flutter/engine#16568)

* 8802a1d Roll src/third_party/skia 886e8500a9f2..9102c86a81ad (1 commits) (flutter/engine#16570)

* dbdcae4 Roll src/third_party/skia 9102c86a81ad..6029cbd560b7 (2 commits) (flutter/engine#16575)

* f39bc73 Exposes FlutterSurfaceView, and FlutterTextureView to FlutterActivity and FlutterFragment. (#41984, #47557) (flutter/engine#16552)

* db030ec Roll src/third_party/skia 6029cbd560b7..1a733b5b760a (1 commits) (flutter/engine#16577)

* 050d29d Roll src/third_party/skia 1a733b5b760a..1d1333fcedf8 (3 commits) (flutter/engine#16578)

* 97fd898 Roll fuchsia/sdk/core/mac-amd64 from t4kck... to oHa-O... (flutter/engine#16581)

* 2e67866 Roll src/third_party/skia 1d1333fcedf8..3bf3b92dfab0 (1 commits) (flutter/engine#16584)
NoamDev pushed a commit to NoamDev/engine that referenced this pull request Feb 27, 2020
NoamDev added a commit to NoamDev/engine that referenced this pull request Feb 27, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants