diff --git a/shell/platform/darwin/macos/framework/Headers/FlutterDartProject.h b/shell/platform/darwin/macos/framework/Headers/FlutterDartProject.h index 4a83e4d3e6062..a31d733631840 100644 --- a/shell/platform/darwin/macos/framework/Headers/FlutterDartProject.h +++ b/shell/platform/darwin/macos/framework/Headers/FlutterDartProject.h @@ -29,13 +29,6 @@ FLUTTER_DARWIN_EXPORT - (nonnull instancetype)initWithPrecompiledDartBundle:(nullable NSBundle*)bundle NS_DESIGNATED_INITIALIZER; -/** - * If set, allows the Flutter project to use the dart:mirrors library. - * - * Deprecated: This function is temporary and will be removed in a future release. - */ -@property(nonatomic) bool enableMirrors; - /** * An NSArray of NSStrings to be passed as command line arguments to the Dart entrypoint. * diff --git a/shell/platform/darwin/macos/framework/Source/FlutterDartProject.mm b/shell/platform/darwin/macos/framework/Source/FlutterDartProject.mm index a18690772cf2b..80bed03f072b4 100644 --- a/shell/platform/darwin/macos/framework/Source/FlutterDartProject.mm +++ b/shell/platform/darwin/macos/framework/Source/FlutterDartProject.mm @@ -81,12 +81,4 @@ - (NSString*)ICUDataPath { return path; } -- (std::vector)switches { - std::vector arguments = flutter::GetSwitchesFromEnvironment(); - if (self.enableMirrors) { - arguments.push_back("--dart-flags=--enable_mirrors=true"); - } - return arguments; -} - @end diff --git a/shell/platform/darwin/macos/framework/Source/FlutterDartProject_Internal.h b/shell/platform/darwin/macos/framework/Source/FlutterDartProject_Internal.h index d19589b6ce60a..214933669b039 100644 --- a/shell/platform/darwin/macos/framework/Source/FlutterDartProject_Internal.h +++ b/shell/platform/darwin/macos/framework/Source/FlutterDartProject_Internal.h @@ -25,11 +25,6 @@ */ @property(nonatomic, readonly, nullable) NSString* ICUDataPath; -/** - * The command line arguments array for the engine. - */ -@property(nonatomic, readonly) std::vector switches; - /** * The callback invoked by the engine in root isolate scope. */ diff --git a/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm b/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm index 2c5aef3a262fb..46a12265b4114 100644 --- a/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm @@ -9,6 +9,7 @@ #include #include +#include "flutter/shell/platform/common/engine_switches.h" #import "flutter/shell/platform/darwin/macos/framework/Source/FlutterCompositor.h" #import "flutter/shell/platform/darwin/macos/framework/Source/FlutterDartProject_Internal.h" #import "flutter/shell/platform/darwin/macos/framework/Source/FlutterMenuPlugin.h" @@ -337,7 +338,7 @@ - (BOOL)runWithEntrypoint:(NSString*)entrypoint { // The first argument of argv is required to be the executable name. std::vector argv = {[self.executableName UTF8String]}; - std::vector switches = _project.switches; + std::vector switches = self.switches; std::transform(switches.begin(), switches.end(), std::back_inserter(argv), [](const std::string& arg) -> const char* { return arg.c_str(); }); @@ -917,6 +918,10 @@ - (NSPasteboard*)pasteboard { return [NSPasteboard generalPasteboard]; } +- (std::vector)switches { + return flutter::GetSwitchesFromEnvironment(); +} + #pragma mark - FlutterBinaryMessenger - (void)sendOnChannel:(nonnull NSString*)channel message:(nullable NSData*)message { diff --git a/shell/platform/darwin/macos/framework/Source/FlutterEngineTest.mm b/shell/platform/darwin/macos/framework/Source/FlutterEngineTest.mm index d3b2be0406001..fd5f27d1f5c34 100644 --- a/shell/platform/darwin/macos/framework/Source/FlutterEngineTest.mm +++ b/shell/platform/darwin/macos/framework/Source/FlutterEngineTest.mm @@ -69,6 +69,24 @@ - (nonnull NSView*)createWithViewIdentifier:(int64_t)viewId arguments:(nullable latch.Wait(); } +#ifndef FLUTTER_RELEASE +TEST_F(FlutterEngineTest, Switches) { + setenv("FLUTTER_ENGINE_SWITCHES", "2", 1); + setenv("FLUTTER_ENGINE_SWITCH_1", "abc", 1); + setenv("FLUTTER_ENGINE_SWITCH_2", "foo=\"bar, baz\"", 1); + + FlutterEngine* engine = GetFlutterEngine(); + std::vector switches = engine.switches; + ASSERT_EQ(switches.size(), 2UL); + EXPECT_EQ(switches[0], "--abc"); + EXPECT_EQ(switches[1], "--foo=\"bar, baz\""); + + unsetenv("FLUTTER_ENGINE_SWITCHES"); + unsetenv("FLUTTER_ENGINE_SWITCH_1"); + unsetenv("FLUTTER_ENGINE_SWITCH_2"); +} +#endif // !FLUTTER_RELEASE + TEST_F(FlutterEngineTest, MessengerSend) { FlutterEngine* engine = GetFlutterEngine(); EXPECT_TRUE([engine runWithEntrypoint:@"main"]); diff --git a/shell/platform/darwin/macos/framework/Source/FlutterEngine_Internal.h b/shell/platform/darwin/macos/framework/Source/FlutterEngine_Internal.h index 1879cb92dbdab..c617363c66eb8 100644 --- a/shell/platform/darwin/macos/framework/Source/FlutterEngine_Internal.h +++ b/shell/platform/darwin/macos/framework/Source/FlutterEngine_Internal.h @@ -47,6 +47,11 @@ */ @property(nonatomic, readonly, nonnull) NSPasteboard* pasteboard; +/** + * The command line arguments array for the engine. + */ +@property(nonatomic, readonly) std::vector switches; + /** * Attach a view controller to the engine as its default controller. *