From b5b3407c39deb25177ca8591bf36014c15c4479e Mon Sep 17 00:00:00 2001 From: Chun-Heng Tai Date: Thu, 5 Nov 2020 15:06:29 -0800 Subject: [PATCH] Revert "Added the ability to set the initial route via launch urls. (#21336)" This reverts commit 25bb31ef68b0078b2c79aba0040ab2e84621f4f2. --- ci/licenses_golden/licenses_flutter | 2 - shell/platform/darwin/ios/BUILD.gn | 1 - .../framework/Source/FlutterAppDelegate.mm | 63 +++++-------------- .../Source/FlutterAppDelegateTest.mm | 41 ------------ .../Source/FlutterAppDelegate_Test.h | 9 --- .../ios/framework/Source/FlutterEngine.mm | 13 ---- .../ios/framework/Source/FlutterEngineTest.mm | 14 ----- .../framework/Source/FlutterEngine_Internal.h | 1 - .../ios/framework/Source/FlutterEngine_Test.h | 3 - 9 files changed, 17 insertions(+), 130 deletions(-) delete mode 100644 shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm delete mode 100644 shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Test.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 520eca83268b9..245980e77e921 100755 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -942,8 +942,6 @@ FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlugin FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Info.plist FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Test.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelayTest.mm diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index 99acf3960c825..e06275c3cfa59 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -208,7 +208,6 @@ shared_library("ios_test_flutter") { "//build/config:symbol_visibility_hidden", ] sources = [ - "framework/Source/FlutterAppDelegateTest.mm", "framework/Source/FlutterBinaryMessengerRelayTest.mm", "framework/Source/FlutterDartProjectTest.mm", "framework/Source/FlutterEngineTest.mm", diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm index 37ab9c46c6f38..d1834c3a41d4a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm @@ -4,21 +4,15 @@ #import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h" -#import "flutter/fml/logging.h" +#include "flutter/fml/logging.h" #import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h" #import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h" -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Test.h" -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate_internal.h" static NSString* kUIBackgroundMode = @"UIBackgroundModes"; static NSString* kRemoteNotificationCapabitiliy = @"remote-notification"; static NSString* kBackgroundFetchCapatibility = @"fetch"; -@interface FlutterAppDelegate () -@property(nonatomic, copy) FlutterViewController* (^rootFlutterViewControllerGetter)(void); -@end - @implementation FlutterAppDelegate { FlutterPluginAppLifeCycleDelegate* _lifeCycleDelegate; } @@ -32,7 +26,6 @@ - (instancetype)init { - (void)dealloc { [_lifeCycleDelegate release]; - [_rootFlutterViewControllerGetter release]; [super dealloc]; } @@ -48,13 +41,10 @@ - (BOOL)application:(UIApplication*)application // Returns the key window's rootViewController, if it's a FlutterViewController. // Otherwise, returns nil. -- (FlutterViewController*)rootFlutterViewController { - if (_rootFlutterViewControllerGetter != nil) { - return _rootFlutterViewControllerGetter(); - } - UIViewController* rootViewController = _window.rootViewController; - if ([rootViewController isKindOfClass:[FlutterViewController class]]) { - return (FlutterViewController*)rootViewController; ++ (FlutterViewController*)rootFlutterViewController { + UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController; + if ([viewController isKindOfClass:[FlutterViewController class]]) { + return (FlutterViewController*)viewController; } return nil; } @@ -134,28 +124,7 @@ - (void)userNotificationCenter:(UNUserNotificationCenter*)center - (BOOL)application:(UIApplication*)application openURL:(NSURL*)url options:(NSDictionary*)options { - if ([_lifeCycleDelegate application:application openURL:url options:options]) { - return YES; - } else { - FlutterViewController* flutterViewController = [self rootFlutterViewController]; - if (flutterViewController) { - [flutterViewController.engine - waitForFirstFrame:3.0 - callback:^(BOOL didTimeout) { - if (didTimeout) { - FML_LOG(ERROR) - << "Timeout waiting for the first frame when launching an URL."; - } else { - [flutterViewController.engine.navigationChannel invokeMethod:@"pushRoute" - arguments:url.path]; - } - }]; - return YES; - } else { - FML_LOG(ERROR) << "Attempting to open an URL without a Flutter RootViewController."; - return NO; - } - } + return [_lifeCycleDelegate application:application openURL:url options:options]; } - (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url { @@ -206,25 +175,27 @@ - (BOOL)application:(UIApplication*)application #pragma mark - FlutterPluginRegistry methods. All delegating to the rootViewController - (NSObject*)registrarForPlugin:(NSString*)pluginKey { - FlutterViewController* flutterRootViewController = [self rootFlutterViewController]; - if (flutterRootViewController) { - return [[flutterRootViewController pluginRegistry] registrarForPlugin:pluginKey]; + UIViewController* rootViewController = _window.rootViewController; + if ([rootViewController isKindOfClass:[FlutterViewController class]]) { + return + [[(FlutterViewController*)rootViewController pluginRegistry] registrarForPlugin:pluginKey]; } return nil; } - (BOOL)hasPlugin:(NSString*)pluginKey { - FlutterViewController* flutterRootViewController = [self rootFlutterViewController]; - if (flutterRootViewController) { - return [[flutterRootViewController pluginRegistry] hasPlugin:pluginKey]; + UIViewController* rootViewController = _window.rootViewController; + if ([rootViewController isKindOfClass:[FlutterViewController class]]) { + return [[(FlutterViewController*)rootViewController pluginRegistry] hasPlugin:pluginKey]; } return false; } - (NSObject*)valuePublishedByPlugin:(NSString*)pluginKey { - FlutterViewController* flutterRootViewController = [self rootFlutterViewController]; - if (flutterRootViewController) { - return [[flutterRootViewController pluginRegistry] valuePublishedByPlugin:pluginKey]; + UIViewController* rootViewController = _window.rootViewController; + if ([rootViewController isKindOfClass:[FlutterViewController class]]) { + return [[(FlutterViewController*)rootViewController pluginRegistry] + valuePublishedByPlugin:pluginKey]; } return nil; } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm deleted file mode 100644 index 69dc0e016a2ac..0000000000000 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import -#import - -#import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h" -#import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h" -#import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h" -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Test.h" -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Test.h" - -FLUTTER_ASSERT_ARC - -@interface FlutterAppDelegateTest : XCTestCase -@end - -@implementation FlutterAppDelegateTest - -- (void)testLaunchUrl { - FlutterAppDelegate* appDelegate = [[FlutterAppDelegate alloc] init]; - FlutterViewController* viewController = OCMClassMock([FlutterViewController class]); - FlutterEngine* engine = OCMClassMock([FlutterEngine class]); - FlutterMethodChannel* navigationChannel = OCMClassMock([FlutterMethodChannel class]); - OCMStub([engine navigationChannel]).andReturn(navigationChannel); - OCMStub([viewController engine]).andReturn(engine); - OCMStub([engine waitForFirstFrame:3.0 callback:([OCMArg invokeBlockWithArgs:@(NO), nil])]); - appDelegate.rootFlutterViewControllerGetter = ^{ - return viewController; - }; - NSURL* url = [NSURL URLWithString:@"http://example.com"]; - NSDictionary* options = @{}; - BOOL result = [appDelegate application:[UIApplication sharedApplication] - openURL:url - options:options]; - XCTAssertTrue(result); - OCMVerify([navigationChannel invokeMethod:@"pushRoute" arguments:url.path]); -} - -@end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Test.h b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Test.h deleted file mode 100644 index 1b10384058db5..0000000000000 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Test.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -@class FlutterViewController; - -@interface FlutterAppDelegate (Test) -@property(nonatomic, copy) FlutterViewController* (^rootFlutterViewControllerGetter)(void); -@end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index 9c26b05081ccc..d19c696f07ec3 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -914,19 +914,6 @@ - (void)onLocaleUpdated:(NSNotification*)notification { [self.localizationChannel invokeMethod:@"setLocale" arguments:localeData]; } -- (void)waitForFirstFrame:(NSTimeInterval)timeout - callback:(void (^_Nonnull)(BOOL didTimeout))callback { - dispatch_queue_t queue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0); - dispatch_async(queue, ^{ - fml::TimeDelta waitTime = fml::TimeDelta::FromMilliseconds(timeout * 1000); - BOOL didTimeout = - self.shell.WaitForFirstFrame(waitTime).code() == fml::StatusCode::kDeadlineExceeded; - dispatch_async(dispatch_get_main_queue(), ^{ - callback(didTimeout); - }); - }); -} - @end @implementation FlutterEngineRegistrar { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngineTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngineTest.mm index 9e56ca45a753d..e51bb06162a77 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngineTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngineTest.mm @@ -102,19 +102,6 @@ - (void)testRunningInitialRouteSendsNavigationMessage { message:encodedSetInitialRouteMethod]); } -- (void)testWaitForFirstFrameTimeout { - FlutterEngine* engine = [[FlutterEngine alloc] initWithName:@"foobar"]; - [engine run]; - XCTestExpectation* timeoutFirstFrame = [self expectationWithDescription:@"timeoutFirstFrame"]; - [engine waitForFirstFrame:0.1 - callback:^(BOOL didTimeout) { - if (timeoutFirstFrame) { - [timeoutFirstFrame fulfill]; - } - }]; - [self waitForExpectationsWithTimeout:1 handler:nil]; -} - - (void)testPlatformViewsControllerRenderingMetalBackend { FlutterEngine* engine = [[FlutterEngine alloc] init]; [engine run]; @@ -133,5 +120,4 @@ - (void)testPlatformViewsControllerRenderingSoftware { XCTAssertEqual(renderingApi, flutter::IOSRenderingAPI::kSoftware); } - @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h index 85a82f3891530..739138dcf0099 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h @@ -48,7 +48,6 @@ - (void)notifyLowMemory; - (flutter::PlatformViewIOS*)iosPlatformView; -- (void)waitForFirstFrame:(NSTimeInterval)timeout callback:(void (^)(BOOL didTimeout))callback; @end #endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERENGINE_INTERNAL_H_ diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Test.h b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Test.h index f81cbe68856f8..82516b1e77389 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Test.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Test.h @@ -5,11 +5,8 @@ #import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h" #import "flutter/shell/platform/darwin/ios/rendering_api_selection.h" -@class FlutterBinaryMessengerRelay; - // Category to add test-only visibility. @interface FlutterEngine (Test) - (void)setBinaryMessenger:(FlutterBinaryMessengerRelay*)binaryMessenger; -- (void)waitForFirstFrame:(NSTimeInterval)timeout callback:(void (^)(BOOL didTimeout))callback; - (flutter::IOSRenderingAPI)platformViewsRenderingAPI; @end