[flutter roll] Revert "ios: remove shared_application and support app extension build" (#45250)
Reverts flutter/engine#44732
context: b/297654739
Synced with Chris and the error message is related to the PR
diff --git a/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.h b/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.h
index 4f4735f..569b551 100644
--- a/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.h
+++ b/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.h
@@ -9,12 +9,12 @@
NS_ASSUME_NONNULL_BEGIN
-// Finds a bundle with the named `flutterFrameworkBundleID` within `searchURL`.
+// Finds a bundle with the named `bundleID` within `searchURL`.
//
// Returns `nil` if the bundle cannot be found or if errors are encountered.
-NSBundle* FLTFrameworkBundleInternal(NSString* flutterFrameworkBundleID, NSURL* searchURL);
+NSBundle* FLTFrameworkBundleInternal(NSString* bundleID, NSURL* searchURL);
-// Finds a bundle with the named `flutterFrameworkBundleID`.
+// Finds a bundle with the named `bundleID`.
//
// `+[NSBundle bundleWithIdentifier:]` is slow, and can take in the order of
// tens of milliseconds in a minimal flutter app, and closer to 100 milliseconds
@@ -28,20 +28,7 @@
// frameworks used by this file are placed. If the desired bundle cannot be
// found here, the implementation falls back to
// `+[NSBundle bundleWithIdentifier:]`.
-NSBundle* FLTFrameworkBundleWithIdentifier(NSString* flutterFrameworkBundleID);
-
-// Finds the bundle of the application.
-//
-// Returns [NSBundle mainBundle] if the current running process is the application.
-NSBundle* FLTGetApplicationBundle();
-
-// Finds the Flutter asset directory from `bundle`.
-//
-// The raw path can be set by the application via info.plist's `FLTAssetsPath` key.
-// If the key is not set, `flutter_assets` is used as the raw path value.
-//
-// If no valid asset is found under the raw path, returns nil.
-NSURL* FLTAssetsURLFromBundle(NSBundle* bundle);
+NSBundle* FLTFrameworkBundleWithIdentifier(NSString* bundleID);
NS_ASSUME_NONNULL_END
diff --git a/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.mm b/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.mm
index b2c718a..ab403f9 100644
--- a/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.mm
+++ b/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.mm
@@ -8,7 +8,7 @@
FLUTTER_ASSERT_ARC
-NSBundle* FLTFrameworkBundleInternal(NSString* flutterFrameworkBundleID, NSURL* searchURL) {
+NSBundle* FLTFrameworkBundleInternal(NSString* bundleID, NSURL* searchURL) {
NSDirectoryEnumerator<NSURL*>* frameworkEnumerator = [NSFileManager.defaultManager
enumeratorAtURL:searchURL
includingPropertiesForKeys:nil
@@ -18,46 +18,19 @@
errorHandler:nil];
for (NSURL* candidate in frameworkEnumerator) {
- NSBundle* flutterFrameworkBundle = [NSBundle bundleWithURL:candidate];
- if ([flutterFrameworkBundle.bundleIdentifier isEqualToString:flutterFrameworkBundleID]) {
- return flutterFrameworkBundle;
+ NSBundle* bundle = [NSBundle bundleWithURL:candidate];
+ if ([bundle.bundleIdentifier isEqualToString:bundleID]) {
+ return bundle;
}
}
return nil;
}
-NSBundle* FLTGetApplicationBundle() {
- NSBundle* mainBundle = [NSBundle mainBundle];
- // App extension bundle is in <AppName>.app/PlugIns/Extension.appex.
- if ([mainBundle.bundleURL.pathExtension isEqualToString:@"appex"]) {
- // Up two levels.
- return [NSBundle bundleWithURL:mainBundle.bundleURL.URLByDeletingLastPathComponent
- .URLByDeletingLastPathComponent];
+NSBundle* FLTFrameworkBundleWithIdentifier(NSString* bundleID) {
+ NSBundle* bundle = FLTFrameworkBundleInternal(bundleID, NSBundle.mainBundle.privateFrameworksURL);
+ if (bundle != nil) {
+ return bundle;
}
- return mainBundle;
-}
-
-NSBundle* FLTFrameworkBundleWithIdentifier(NSString* flutterFrameworkBundleID) {
- NSBundle* appBundle = FLTGetApplicationBundle();
- NSBundle* flutterFrameworkBundle =
- FLTFrameworkBundleInternal(flutterFrameworkBundleID, appBundle.privateFrameworksURL);
- if (flutterFrameworkBundle == nil) {
- // Fallback to slow implementation.
- flutterFrameworkBundle = [NSBundle bundleWithIdentifier:flutterFrameworkBundleID];
- }
- if (flutterFrameworkBundle == nil) {
- flutterFrameworkBundle = [NSBundle mainBundle];
- }
- return flutterFrameworkBundle;
-}
-
-NSURL* FLTAssetsURLFromBundle(NSBundle* bundle) {
- NSString* assetsPathFromInfoPlist = [bundle objectForInfoDictionaryKey:@"FLTAssetsPath"];
- NSString* flutterAssetsPath = assetsPathFromInfoPlist ?: @"flutter_assets";
- NSURL* assets = [bundle URLForResource:flutterAssetsPath withExtension:nil];
-
- if ([assets checkResourceIsReachableAndReturnError:NULL]) {
- return assets;
- }
- return nil;
+ // Fallback to slow implementation.
+ return [NSBundle bundleWithIdentifier:bundleID];
}
diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn
index f726f41..8aa967a 100644
--- a/shell/platform/darwin/ios/BUILD.gn
+++ b/shell/platform/darwin/ios/BUILD.gn
@@ -348,10 +348,6 @@
ldflags = [ "-Wl,-install_name,@rpath/Flutter.framework/Flutter" ]
- if (darwin_extension_safe) {
- ldflags += [ "-fapplication-extension" ]
- }
-
public = _flutter_framework_headers
deps = [
@@ -442,10 +438,7 @@
shared_library("copy_and_verify_framework_module") {
framework_search_path = rebase_path("$root_out_dir")
visibility = [ ":*" ]
- cflags_objc = [
- "-F$framework_search_path",
- "-fapplication-extension",
- ]
+ cflags_objc = [ "-F$framework_search_path" ]
sources = [ "framework/Source/FlutterUmbrellaImport.m" ]
deps = [
@@ -453,17 +446,6 @@
":copy_framework_info_plist",
":copy_framework_module_map",
]
-
- if (darwin_extension_safe) {
- ldflags = [
- "-F$framework_search_path",
- "-fapplication-extension",
- "-Xlinker",
- "-fatal_warnings",
- ]
- deps += [ ":copy_dylib" ]
- frameworks = [ "Flutter.framework" ]
- }
}
group("universal_flutter_framework") {
diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h
index 524e682..b270414 100644
--- a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h
+++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h
@@ -353,8 +353,7 @@
*
* @param delegate The receiving object, such as the plugin's main class.
*/
-- (void)addApplicationDelegate:(NSObject<FlutterPlugin>*)delegate
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in plugins used in app extensions");
+- (void)addApplicationDelegate:(NSObject<FlutterPlugin>*)delegate;
/**
* Returns the file name for the given asset.
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm
index 56bca60..4873102 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm
@@ -41,13 +41,16 @@
// 3. Settings from the NSBundle with the default bundle ID.
// 4. Settings from the main NSBundle and default values.
- NSBundle* mainBundle = FLTGetApplicationBundle();
+ NSBundle* mainBundle = [NSBundle mainBundle];
NSBundle* engineBundle = [NSBundle bundleForClass:[FlutterViewController class]];
bool hasExplicitBundle = bundle != nil;
if (bundle == nil) {
bundle = FLTFrameworkBundleWithIdentifier([FlutterDartProject defaultBundleIdentifier]);
}
+ if (bundle == nil) {
+ bundle = mainBundle;
+ }
auto settings = flutter::SettingsFromCommandLine(command_line);
@@ -119,24 +122,29 @@
// Checks to see if the flutter assets directory is already present.
if (settings.assets_path.empty()) {
- NSURL* assetsURL = FLTAssetsURLFromBundle(bundle);
+ NSString* assetsName = [FlutterDartProject flutterAssetsName:bundle];
+ NSString* assetsPath = [bundle pathForResource:assetsName ofType:@""];
- if (!assetsURL) {
- NSLog(@"Failed to find assets path for 1\"%@\"", bundle);
+ if (assetsPath.length == 0) {
+ assetsPath = [mainBundle pathForResource:assetsName ofType:@""];
+ }
+
+ if (assetsPath.length == 0) {
+ NSLog(@"Failed to find assets path for \"%@\"", assetsName);
} else {
- settings.assets_path = assetsURL.path.UTF8String;
+ settings.assets_path = assetsPath.UTF8String;
// Check if there is an application kernel snapshot in the assets directory we could
// potentially use. Looking for the snapshot makes sense only if we have a VM that can use
// it.
if (!flutter::DartVM::IsRunningPrecompiledCode()) {
NSURL* applicationKernelSnapshotURL =
- [assetsURL URLByAppendingPathComponent:@(kApplicationKernelSnapshotFileName)];
- NSError* error;
- if ([applicationKernelSnapshotURL checkResourceIsReachableAndReturnError:&error]) {
+ [NSURL URLWithString:@(kApplicationKernelSnapshotFileName)
+ relativeToURL:[NSURL fileURLWithPath:assetsPath]];
+ if ([[NSFileManager defaultManager] fileExistsAtPath:applicationKernelSnapshotURL.path]) {
settings.application_kernel_asset = applicationKernelSnapshotURL.path.UTF8String;
} else {
- NSLog(@"Failed to find snapshot at %@: %@", applicationKernelSnapshotURL.path, error);
+ NSLog(@"Failed to find snapshot: %@", applicationKernelSnapshotURL.path);
}
}
}
@@ -331,7 +339,9 @@
if (bundle == nil) {
bundle = FLTFrameworkBundleWithIdentifier([FlutterDartProject defaultBundleIdentifier]);
}
-
+ if (bundle == nil) {
+ bundle = [NSBundle mainBundle];
+ }
NSString* flutterAssetsName = [bundle objectForInfoDictionaryKey:@"FLTAssetsPath"];
if (flutterAssetsName == nil) {
flutterAssetsName = @"Frameworks/App.framework/flutter_assets";
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProjectTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterDartProjectTest.mm
index ab9061a..7e18060 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterDartProjectTest.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProjectTest.mm
@@ -73,20 +73,6 @@
XCTAssertNotNil(found);
}
-- (void)testFLTGetApplicationBundleWhenCurrentTargetIsNotExtension {
- NSBundle* bundle = FLTGetApplicationBundle();
- XCTAssertEqual(bundle, [NSBundle mainBundle]);
-}
-
-- (void)testFLTGetApplicationBundleWhenCurrentTargetIsExtension {
- id mockMainBundle = OCMPartialMock([NSBundle mainBundle]);
- NSURL* url = [[NSBundle mainBundle].bundleURL URLByAppendingPathComponent:@"foo/ext.appex"];
- OCMStub([mockMainBundle bundleURL]).andReturn(url);
- NSBundle* bundle = FLTGetApplicationBundle();
- [mockMainBundle stopMocking];
- XCTAssertEqualObjects(bundle.bundleURL, [NSBundle mainBundle].bundleURL);
-}
-
- (void)testDisableImpellerSettingIsCorrectlyParsed {
id mockMainBundle = OCMPartialMock([NSBundle mainBundle]);
OCMStub([mockMainBundle objectForInfoDictionaryKey:@"FLTEnableImpeller"]).andReturn(@"NO");
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm
index df4bd03..b300714 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm
@@ -1515,8 +1515,7 @@
}];
}
-- (void)addApplicationDelegate:(NSObject<FlutterPlugin>*)delegate
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in plugins used in app extensions") {
+- (void)addApplicationDelegate:(NSObject<FlutterPlugin>*)delegate {
id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate];
if ([appDelegate conformsToProtocol:@protocol(FlutterAppLifeCycleProvider)]) {
id<FlutterAppLifeCycleProvider> lifeCycleProvider =
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm
index 722571b..ef454d0 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm
@@ -17,10 +17,7 @@
constexpr char kTextPlainFormat[] = "text/plain";
const UInt32 kKeyPressClickSoundId = 1306;
-
-#if not APPLICATION_EXTENSION_API_ONLY
const NSString* searchURLPrefix = @"x-web-search://?";
-#endif
} // namespace
@@ -40,24 +37,6 @@
using namespace flutter;
-static void SetStatusBarHiddenForSharedApplication(BOOL hidden) {
-#if APPLICATION_EXTENSION_API_ONLY
- [UIApplication sharedApplication].statusBarHidden = hidden;
-#else
- FML_LOG(WARNING) << "Application based status bar styling is not available in app extension.";
-#endif
-}
-
-static void SetStatusBarStyleForSharedApplication(UIStatusBarStyle style) {
-#if APPLICATION_EXTENSION_API_ONLY
- // Note: -[UIApplication setStatusBarStyle] is deprecated in iOS9
- // in favor of delegating to the view controller.
- [[UIApplication sharedApplication] setStatusBarStyle:style];
-#else
- FML_LOG(WARNING) << "Application based status bar styling is not available in app extension.";
-#endif
-}
-
@interface FlutterPlatformPlugin ()
/**
@@ -162,9 +141,6 @@
}
- (void)searchWeb:(NSString*)searchTerm {
-#if APPLICATION_EXTENSION_API_ONLY
- FML_LOG(WARNING) << "SearchWeb.invoke is not availabe in app extension.";
-#else
NSString* escapedText = [searchTerm
stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet
URLHostAllowedCharacterSet]];
@@ -173,7 +149,6 @@
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:searchURL]
options:@{}
completionHandler:nil];
-#endif
}
- (void)playSystemSound:(NSString*)soundType {
@@ -256,7 +231,7 @@
// We opt out of view controller based status bar visibility since we want
// to be able to modify this on the fly. The key used is
// UIViewControllerBasedStatusBarAppearance.
- SetStatusBarHiddenForSharedApplication(statusBarShouldBeHidden);
+ [UIApplication sharedApplication].statusBarHidden = statusBarShouldBeHidden;
}
}
@@ -271,7 +246,7 @@
// We opt out of view controller based status bar visibility since we want
// to be able to modify this on the fly. The key used is
// UIViewControllerBasedStatusBarAppearance.
- SetStatusBarHiddenForSharedApplication(!edgeToEdge);
+ [UIApplication sharedApplication].statusBarHidden = !edgeToEdge;
}
[[NSNotificationCenter defaultCenter]
postNotificationName:edgeToEdge ? FlutterViewControllerShowHomeIndicator
@@ -309,7 +284,9 @@
object:nil
userInfo:@{@(kOverlayStyleUpdateNotificationKey) : @(statusBarStyle)}];
} else {
- SetStatusBarStyleForSharedApplication(statusBarStyle);
+ // Note: -[UIApplication setStatusBarStyle] is deprecated in iOS9
+ // in favor of delegating to the view controller.
+ [[UIApplication sharedApplication] setStatusBarStyle:statusBarStyle];
}
}
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPluginTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPluginTest.mm
index 0576410..3e19665 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPluginTest.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPluginTest.mm
@@ -50,11 +50,9 @@
FlutterResult result = ^(id result) {
OCMVerify([mockPlugin searchWeb:@"Testing Word!"]);
-#if not APPLICATION_EXTENSION_API_ONLY
OCMVerify([mockApplication openURL:[NSURL URLWithString:@"x-web-search://?Testing%20Word!"]
options:@{}
completionHandler:nil]);
-#endif
[invokeExpectation fulfill];
};
@@ -84,11 +82,9 @@
FlutterResult result = ^(id result) {
OCMVerify([mockPlugin searchWeb:@"Test"]);
-#if not APPLICATION_EXTENSION_API_ONLY
OCMVerify([mockApplication openURL:[NSURL URLWithString:@"x-web-search://?Test"]
options:@{}
completionHandler:nil]);
-#endif
[invokeExpectation fulfill];
};
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm
index def41bb..d493f30 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm
@@ -17,16 +17,11 @@
@selector(application:performFetchWithCompletionHandler:)};
@interface FlutterPluginAppLifeCycleDelegate ()
-- (void)handleDidEnterBackground:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions");
-- (void)handleWillEnterForeground:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions");
-- (void)handleWillResignActive:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions");
-- (void)handleDidBecomeActive:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions");
-- (void)handleWillTerminate:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions");
+- (void)handleDidEnterBackground:(NSNotification*)notification;
+- (void)handleWillEnterForeground:(NSNotification*)notification;
+- (void)handleWillResignActive:(NSNotification*)notification;
+- (void)handleDidBecomeActive:(NSNotification*)notification;
+- (void)handleWillTerminate:(NSNotification*)notification;
@end
@implementation FlutterPluginAppLifeCycleDelegate {
@@ -51,7 +46,6 @@
_notificationUnsubscribers = [[NSMutableArray alloc] init];
std::string cachePath = fml::paths::JoinPaths({getenv("HOME"), kCallbackCacheSubDir});
[FlutterCallbackCache setCachePath:[NSString stringWithUTF8String:cachePath.c_str()]];
-#if not APPLICATION_EXTENSION_API_ONLY
[self addObserverFor:UIApplicationDidEnterBackgroundNotification
selector:@selector(handleDidEnterBackground:)];
[self addObserverFor:UIApplicationWillEnterForegroundNotification
@@ -62,7 +56,6 @@
selector:@selector(handleDidBecomeActive:)];
[self addObserverFor:UIApplicationWillTerminateNotification
selector:@selector(handleWillTerminate:)];
-#endif
_delegates = [[NSPointerArray weakObjectsPointerArray] retain];
_debugBackgroundTask = UIBackgroundTaskInvalid;
}
@@ -141,8 +134,7 @@
return YES;
}
-- (void)handleDidEnterBackground:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions") {
+- (void)handleDidEnterBackground:(NSNotification*)notification {
UIApplication* application = [UIApplication sharedApplication];
#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG
// The following keeps the Flutter session alive when the device screen locks
@@ -174,8 +166,7 @@
}
}
-- (void)handleWillEnterForeground:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions") {
+- (void)handleWillEnterForeground:(NSNotification*)notification {
UIApplication* application = [UIApplication sharedApplication];
#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG
if (_debugBackgroundTask != UIBackgroundTaskInvalid) {
@@ -193,8 +184,7 @@
}
}
-- (void)handleWillResignActive:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions") {
+- (void)handleWillResignActive:(NSNotification*)notification {
UIApplication* application = [UIApplication sharedApplication];
for (NSObject<FlutterApplicationLifeCycleDelegate>* delegate in _delegates) {
if (!delegate) {
@@ -206,8 +196,7 @@
}
}
-- (void)handleDidBecomeActive:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions") {
+- (void)handleDidBecomeActive:(NSNotification*)notification {
UIApplication* application = [UIApplication sharedApplication];
for (NSObject<FlutterApplicationLifeCycleDelegate>* delegate in _delegates) {
if (!delegate) {
@@ -219,8 +208,7 @@
}
}
-- (void)handleWillTerminate:(NSNotification*)notification
- NS_EXTENSION_UNAVAILABLE_IOS("Disallowed in app extensions") {
+- (void)handleWillTerminate:(NSNotification*)notification {
UIApplication* application = [UIApplication sharedApplication];
for (NSObject<FlutterApplicationLifeCycleDelegate>* delegate in _delegates) {
if (!delegate) {
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegateTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegateTest.mm
index 9fcc645..9891f52 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegateTest.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegateTest.mm
@@ -20,7 +20,6 @@
XCTAssertNotNil(delegate);
}
-#if not APPLICATION_EXTENSION_API_ONLY
- (void)testDidEnterBackground {
XCTNSNotificationExpectation* expectation = [[XCTNSNotificationExpectation alloc]
initWithName:UIApplicationDidEnterBackgroundNotification];
@@ -89,6 +88,5 @@
[self waitForExpectations:@[ expectation ] timeout:5.0];
OCMVerify([plugin applicationWillTerminate:[UIApplication sharedApplication]]);
}
-#endif
@end
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm
index f78ca85..f5a6471 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm
@@ -1973,7 +1973,7 @@
#endif
[self requestGeometryUpdateForWindowScenes:scenes];
} else {
- UIInterfaceOrientationMask currentInterfaceOrientation = 0;
+ UIInterfaceOrientationMask currentInterfaceOrientation;
if (@available(iOS 13.0, *)) {
UIWindowScene* windowScene = [self flutterWindowSceneIfViewLoaded];
if (!windowScene) {
@@ -1983,13 +1983,7 @@
}
currentInterfaceOrientation = 1 << windowScene.interfaceOrientation;
} else {
-#if APPLICATION_EXTENSION_API_ONLY
- FML_LOG(ERROR) << "Application based status bar orentiation update is not supported in "
- "app extension. Orientation: "
- << currentInterfaceOrientation;
-#else
currentInterfaceOrientation = 1 << [[UIApplication sharedApplication] statusBarOrientation];
-#endif
}
if (!(_orientationPreferences & currentInterfaceOrientation)) {
[UIViewController attemptRotationToDeviceOrientation];
@@ -2114,10 +2108,6 @@
}
- (CGFloat)textScaleFactor {
-#if APPLICATION_EXTENSION_API_ONLY
- FML_LOG(WARNING) << "Dynamic content size update is not supported in app extension.";
- return 1.0;
-#else
UIContentSizeCategory category = [UIApplication sharedApplication].preferredContentSizeCategory;
// The delta is computed by approximating Apple's typography guidelines:
// https://developer.apple.com/ios/human-interface-guidelines/visual-design/typography/
@@ -2168,7 +2158,6 @@
} else {
return 1.0;
}
-#endif
}
- (BOOL)isAlwaysUse24HourFormat {