diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index e54f19b2d83ea..e5a2f41573889 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -2567,6 +2567,9 @@ ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Headers/FlutterC ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Headers/FlutterDartProject.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Headers/FlutterMacros.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Headers/FlutterTexture.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.mm + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelayTest.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterChannels.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterChannelsTest.m + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterCodecs.mm + ../../../flutter/LICENSE @@ -2576,6 +2579,8 @@ ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterSt ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterStandardCodecHelper.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterStandardCodecHelper.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterStandardCodec_Internal.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterTestUtils.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterTestUtils.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalImpeller.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalImpeller.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalSkia.h + ../../../flutter/LICENSE @@ -2595,9 +2600,6 @@ ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterView ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Test.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.mm + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelayTest.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterChannelKeyResponder.h + ../../../flutter/LICENSE @@ -5296,6 +5298,9 @@ FILE: ../../../flutter/shell/platform/darwin/common/framework/Headers/FlutterCod FILE: ../../../flutter/shell/platform/darwin/common/framework/Headers/FlutterDartProject.h FILE: ../../../flutter/shell/platform/darwin/common/framework/Headers/FlutterMacros.h FILE: ../../../flutter/shell/platform/darwin/common/framework/Headers/FlutterTexture.h +FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h +FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.mm +FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelayTest.mm FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterChannels.mm FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterChannelsTest.m FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterCodecs.mm @@ -5305,6 +5310,8 @@ FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterStan FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterStandardCodecHelper.cc FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterStandardCodecHelper.h FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterStandardCodec_Internal.h +FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterTestUtils.h +FILE: ../../../flutter/shell/platform/darwin/common/framework/Source/FlutterTestUtils.mm FILE: ../../../flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalImpeller.h FILE: ../../../flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalImpeller.mm FILE: ../../../flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalSkia.h @@ -5325,9 +5332,6 @@ 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 FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterChannelKeyResponder.h diff --git a/shell/platform/darwin/common/BUILD.gn b/shell/platform/darwin/common/BUILD.gn index 31eca1c8f2070..2a59b824c2d09 100644 --- a/shell/platform/darwin/common/BUILD.gn +++ b/shell/platform/darwin/common/BUILD.gn @@ -37,6 +37,7 @@ source_set("framework_common") { cflags_objcc = flutter_cflags_objcc_arc sources = [ + "framework/Source/FlutterBinaryMessengerRelay.mm", "framework/Source/FlutterChannels.mm", "framework/Source/FlutterCodecs.mm", "framework/Source/FlutterNSBundleUtils.h", @@ -69,6 +70,8 @@ executable("framework_common_unittests") { testonly = true sources = [ + "framework/Source/FlutterBinaryMessengerRelayTest.mm", + "framework/Source/FlutterTestUtils.mm", "framework/Source/flutter_codecs_unittest.mm", "framework/Source/flutter_standard_codec_unittest.mm", ] @@ -82,6 +85,7 @@ executable("framework_common_unittests") { ":framework_common_fixtures", "//flutter/testing", "//third_party/dart/runtime:libdart_jit", + "//third_party/ocmock:ocmock", ] public_configs = [ "//flutter:config" ] diff --git a/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h b/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h similarity index 71% rename from shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h rename to shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h index 79d098f95a8c5..1c17329498873 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h +++ b/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef SHELL_PLATFORM_DARWIN_COMMON_FRAMEWORK_SOURCE_FLUTTERBINARYMESSENGERRELAY_H_ +#define SHELL_PLATFORM_DARWIN_COMMON_FRAMEWORK_SOURCE_FLUTTERBINARYMESSENGERRELAY_H_ + #import "flutter/shell/platform/darwin/common/framework/Headers/FlutterBinaryMessenger.h" #import "flutter/shell/platform/darwin/common/framework/Headers/FlutterMacros.h" @@ -12,3 +15,5 @@ FLUTTER_DARWIN_EXPORT @property(nonatomic, assign) NSObject* parent; - (instancetype)initWithParent:(NSObject*)parent; @end + +#endif // SHELL_PLATFORM_DARWIN_COMMON_FRAMEWORK_SOURCE_FLUTTERBINARYMESSENGERRELAY_H_ diff --git a/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.mm b/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.mm similarity index 95% rename from shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.mm rename to shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.mm index 22d364b5e957c..2b75609c022cf 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.mm +++ b/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.mm @@ -2,10 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h" +#import "flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h" #include "flutter/fml/logging.h" +FLUTTER_ASSERT_ARC + @implementation FlutterBinaryMessengerRelay #pragma mark - FlutterBinaryMessenger diff --git a/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelayTest.mm b/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelayTest.mm similarity index 67% rename from shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelayTest.mm rename to shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelayTest.mm index e50097f6d6dc0..525b8a297582e 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelayTest.mm +++ b/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelayTest.mm @@ -2,35 +2,31 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h" +#import "flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h" #import -#import #import "flutter/shell/platform/darwin/common/framework/Headers/FlutterMacros.h" +#import "flutter/shell/platform/darwin/common/framework/Source/FlutterTestUtils.h" +#import "flutter/testing/testing.h" +#include "gtest/gtest.h" FLUTTER_ASSERT_ARC @protocol FlutterTaskQueue @end -@interface FlutterBinaryMessengerRelayTest : XCTestCase +@interface FlutterBinaryMessengerRelayTest : NSObject @end @implementation FlutterBinaryMessengerRelayTest -- (void)setUp { -} - -- (void)tearDown { -} - - (void)testCreate { id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger)); FlutterBinaryMessengerRelay* relay = [[FlutterBinaryMessengerRelay alloc] initWithParent:messenger]; - XCTAssertNotNil(relay); - XCTAssertEqual(messenger, relay.parent); + EXPECT_NE(relay, nil); + EXPECT_EQ(messenger, relay.parent); } - (void)testPassesCallOn { @@ -78,3 +74,33 @@ - (void)testMakeBackgroundTaskQueue { } @end + +TEST(FlutterBinaryMessengerRelayTest, Create) { + ASSERT_FALSE(FLTThrowsObjcException(^{ + [[FlutterBinaryMessengerRelayTest alloc] testCreate]; + })); +} + +TEST(FlutterBinaryMessengerRelayTest, PassesCallOn) { + ASSERT_FALSE(FLTThrowsObjcException(^{ + [[FlutterBinaryMessengerRelayTest alloc] testPassesCallOn]; + })); +} + +TEST(FlutterBinaryMessengerRelayTest, DoesntPassCallOn) { + ASSERT_FALSE(FLTThrowsObjcException(^{ + [[FlutterBinaryMessengerRelayTest alloc] testDoesntPassCallOn]; + })); +} + +TEST(FlutterBinaryMessengerRelayTest, SetMessageHandlerWithTaskQueue) { + ASSERT_FALSE(FLTThrowsObjcException(^{ + [[FlutterBinaryMessengerRelayTest alloc] testSetMessageHandlerWithTaskQueue]; + })); +} + +TEST(FlutterBinaryMessengerRelayTest, SetMakeBackgroundTaskQueue) { + ASSERT_FALSE(FLTThrowsObjcException(^{ + [[FlutterBinaryMessengerRelayTest alloc] testMakeBackgroundTaskQueue]; + })); +} diff --git a/shell/platform/darwin/common/framework/Source/FlutterTestUtils.h b/shell/platform/darwin/common/framework/Source/FlutterTestUtils.h new file mode 100644 index 0000000000000..292eb080993df --- /dev/null +++ b/shell/platform/darwin/common/framework/Source/FlutterTestUtils.h @@ -0,0 +1,13 @@ +// 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. + +#ifndef SHELL_PLATFORM_DARWIN_COMMON_FRAMEWORK_SOURCE_FLUTTERTESTUTILS_H_ +#define SHELL_PLATFORM_DARWIN_COMMON_FRAMEWORK_SOURCE_FLUTTERTESTUTILS_H_ + +#import + +/// Returns YES if the block throws an exception. +BOOL FLTThrowsObjcException(dispatch_block_t block); + +#endif // SHELL_PLATFORM_DARWIN_COMMON_FRAMEWORK_SOURCE_FLUTTERTESTUTILS_H_ diff --git a/shell/platform/darwin/common/framework/Source/FlutterTestUtils.mm b/shell/platform/darwin/common/framework/Source/FlutterTestUtils.mm new file mode 100644 index 0000000000000..3a562ccb6ce8a --- /dev/null +++ b/shell/platform/darwin/common/framework/Source/FlutterTestUtils.mm @@ -0,0 +1,18 @@ +// 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 "flutter/shell/platform/darwin/common/framework/Source/FlutterTestUtils.h" + +#import "flutter/shell/platform/darwin/common/framework/Headers/FlutterMacros.h" + +FLUTTER_ASSERT_ARC + +BOOL FLTThrowsObjcException(dispatch_block_t block) { + @try { + block(); + } @catch (...) { + return YES; + } + return NO; +} diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index dbff86b9bf27e..b6b1799365585 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -75,7 +75,6 @@ source_set("flutter_framework_source") { sources = [ "framework/Source/FlutterAppDelegate.mm", - "framework/Source/FlutterBinaryMessengerRelay.mm", "framework/Source/FlutterCallbackCache.mm", "framework/Source/FlutterCallbackCache_Internal.h", "framework/Source/FlutterChannelKeyResponder.h", @@ -283,7 +282,6 @@ shared_library("ios_test_flutter") { ] sources = [ "framework/Source/FlutterAppDelegateTest.mm", - "framework/Source/FlutterBinaryMessengerRelayTest.mm", "framework/Source/FlutterChannelKeyResponderTest.mm", "framework/Source/FlutterDartProjectTest.mm", "framework/Source/FlutterEmbedderKeyResponderTest.mm", diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index 2680567f79be0..6759626b39eff 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -19,7 +19,7 @@ #include "flutter/shell/common/thread_host.h" #include "flutter/shell/common/variable_refresh_rate_display.h" #import "flutter/shell/platform/darwin/common/command_line.h" -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h" +#import "flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterDartVMServicePublisher.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterIndirectScribbleDelegate.h" diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngineTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngineTest.mm index 64167b7496c45..2971c23f906b6 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngineTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngineTest.mm @@ -11,7 +11,7 @@ #import "flutter/common/settings.h" #include "flutter/fml/synchronization/sync_switch.h" #import "flutter/shell/platform/darwin/common/framework/Headers/FlutterMacros.h" -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h" +#import "flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Test.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h" diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPluginTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPluginTest.mm index 00302678a136d..50716fa9745a7 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPluginTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPluginTest.mm @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h" +#import "flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Test.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h" diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 47f6481fe98fb..d4dc95cf7c26a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -15,7 +15,7 @@ #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/runtime/ptrace_check.h" #include "flutter/shell/common/thread_host.h" -#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h" +#import "flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterChannelKeyResponder.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterEmbedderKeyResponder.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h"