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

Commit 89cbf74

Browse files
authored
[quick_actions]Migrates all remaining components to Swift, and deprecate OCMock (#6597)
* [quick_actions]migrate shortcut state manager, deprecate OCMock and use POP * remove objc proj settings * rename shortcut state manager * bump version * run swift-format * nit * remove public_header_files * use shortcut item parser instead of shortcut state manager * some nit * rename AppShortcutControlling to ShortcutItemProviding * nit * do not crash if no type or title * update license
1 parent 2ba4c0a commit 89cbf74

18 files changed

+526
-345
lines changed

packages/quick_actions/quick_actions_ios/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
## NEXT
1+
## 1.0.2
22

3+
* Migrates remaining components to Swift and removes all Objective-C settings.
34
* Migrates `RunnerUITests` to Swift.
45

56
## 1.0.1

packages/quick_actions/quick_actions_ios/example/ios/Podfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ target 'Runner' do
3131
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
3232
target 'RunnerTests' do
3333
inherit! :search_paths
34-
pod 'OCMock', '~> 3.9.1'
3534
end
3635
end
3736

packages/quick_actions/quick_actions_ios/example/ios/Runner.xcodeproj/project.pbxproj

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
1717
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
1818
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
19+
E092A7ED28D10802005C7F67 /* MockMethodChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7EA28D10801005C7F67 /* MockMethodChannel.swift */; };
20+
E092A7EE28D10802005C7F67 /* QuickActionsPluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7EB28D10802005C7F67 /* QuickActionsPluginTests.swift */; };
21+
E092A7F128D10890005C7F67 /* MockShortcutItemProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7F028D10890005C7F67 /* MockShortcutItemProvider.swift */; };
22+
E092A7F428D110B3005C7F67 /* DefaultShortcutItemParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7F328D110B3005C7F67 /* DefaultShortcutItemParserTests.swift */; };
1923
E092A7F628D128EB005C7F67 /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7F528D128EB005C7F67 /* RunnerUITests.swift */; };
20-
E0C09C29289C729D00E6977E /* FLTQuickActionsPluginTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C09C28289C729D00E6977E /* FLTQuickActionsPluginTests.m */; };
21-
E0C09C32289DBFCA00E6977E /* FLTShortcutStateManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C09C31289DBFCA00E6977E /* FLTShortcutStateManagerTests.m */; };
24+
E0A075D529147FE200329BAE /* MockShortcutItemParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0A075D429147FE200329BAE /* MockShortcutItemParser.swift */; };
2225
/* End PBXBuildFile section */
2326

2427
/* Begin PBXContainerItemProxy section */
@@ -75,9 +78,12 @@
7578
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
7679
9D27FE1F0F21D4D47DDA16DE /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
7780
C35AD3650AB6BF850E016715 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
81+
E092A7EA28D10801005C7F67 /* MockMethodChannel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockMethodChannel.swift; sourceTree = "<group>"; };
82+
E092A7EB28D10802005C7F67 /* QuickActionsPluginTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuickActionsPluginTests.swift; sourceTree = "<group>"; };
83+
E092A7F028D10890005C7F67 /* MockShortcutItemProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockShortcutItemProvider.swift; sourceTree = "<group>"; };
84+
E092A7F328D110B3005C7F67 /* DefaultShortcutItemParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultShortcutItemParserTests.swift; sourceTree = "<group>"; };
7885
E092A7F528D128EB005C7F67 /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = "<group>"; };
79-
E0C09C28289C729D00E6977E /* FLTQuickActionsPluginTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FLTQuickActionsPluginTests.m; sourceTree = "<group>"; };
80-
E0C09C31289DBFCA00E6977E /* FLTShortcutStateManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLTShortcutStateManagerTests.m; sourceTree = "<group>"; };
86+
E0A075D429147FE200329BAE /* MockShortcutItemParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockShortcutItemParser.swift; sourceTree = "<group>"; };
8187
F0609304FBCAEC2289164BD5 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
8288
/* End PBXFileReference section */
8389

@@ -111,9 +117,10 @@
111117
33E20B3326EFCDFC00A4A191 /* RunnerTests */ = {
112118
isa = PBXGroup;
113119
children = (
120+
E092A7F228D10908005C7F67 /* Mocks */,
114121
33E20B3626EFCDFC00A4A191 /* Info.plist */,
115-
E0C09C31289DBFCA00E6977E /* FLTShortcutStateManagerTests.m */,
116-
E0C09C28289C729D00E6977E /* FLTQuickActionsPluginTests.m */,
122+
E092A7EB28D10802005C7F67 /* QuickActionsPluginTests.swift */,
123+
E092A7F328D110B3005C7F67 /* DefaultShortcutItemParserTests.swift */,
117124
);
118125
path = RunnerTests;
119126
sourceTree = "<group>";
@@ -205,6 +212,16 @@
205212
name = Pods;
206213
sourceTree = "<group>";
207214
};
215+
E092A7F228D10908005C7F67 /* Mocks */ = {
216+
isa = PBXGroup;
217+
children = (
218+
E092A7EA28D10801005C7F67 /* MockMethodChannel.swift */,
219+
E092A7F028D10890005C7F67 /* MockShortcutItemProvider.swift */,
220+
E0A075D429147FE200329BAE /* MockShortcutItemParser.swift */,
221+
);
222+
path = Mocks;
223+
sourceTree = "<group>";
224+
};
208225
/* End PBXGroup section */
209226

210227
/* Begin PBXNativeTarget section */
@@ -277,6 +294,7 @@
277294
TargetAttributes = {
278295
33E20B3126EFCDFC00A4A191 = {
279296
CreatedOnToolsVersion = 12.5;
297+
LastSwiftMigration = 1330;
280298
TestTargetID = 97C146ED1CF9000F007C117D;
281299
};
282300
686BE82C25E58CCF00862533 = {
@@ -416,8 +434,11 @@
416434
isa = PBXSourcesBuildPhase;
417435
buildActionMask = 2147483647;
418436
files = (
419-
E0C09C32289DBFCA00E6977E /* FLTShortcutStateManagerTests.m in Sources */,
420-
E0C09C29289C729D00E6977E /* FLTQuickActionsPluginTests.m in Sources */,
437+
E092A7EE28D10802005C7F67 /* QuickActionsPluginTests.swift in Sources */,
438+
E092A7ED28D10802005C7F67 /* MockMethodChannel.swift in Sources */,
439+
E092A7F128D10890005C7F67 /* MockShortcutItemProvider.swift in Sources */,
440+
E0A075D529147FE200329BAE /* MockShortcutItemParser.swift in Sources */,
441+
E092A7F428D110B3005C7F67 /* DefaultShortcutItemParserTests.swift in Sources */,
421442
);
422443
runOnlyForDeploymentPostprocessing = 0;
423444
};
@@ -479,6 +500,7 @@
479500
baseConfigurationReference = 9D27FE1F0F21D4D47DDA16DE /* Pods-RunnerTests.debug.xcconfig */;
480501
buildSettings = {
481502
BUNDLE_LOADER = "$(TEST_HOST)";
503+
CLANG_ENABLE_MODULES = YES;
482504
INFOPLIST_FILE = RunnerTests/Info.plist;
483505
LD_RUNPATH_SEARCH_PATHS = (
484506
"$(inherited)",
@@ -487,6 +509,8 @@
487509
);
488510
PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerTests;
489511
PRODUCT_NAME = "$(TARGET_NAME)";
512+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
513+
SWIFT_VERSION = 5.0;
490514
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/Runner";
491515
};
492516
name = Debug;
@@ -496,6 +520,7 @@
496520
baseConfigurationReference = 96F949A6B78E2DC62B93C4F8 /* Pods-RunnerTests.release.xcconfig */;
497521
buildSettings = {
498522
BUNDLE_LOADER = "$(TEST_HOST)";
523+
CLANG_ENABLE_MODULES = YES;
499524
INFOPLIST_FILE = RunnerTests/Info.plist;
500525
LD_RUNPATH_SEARCH_PATHS = (
501526
"$(inherited)",
@@ -504,6 +529,7 @@
504529
);
505530
PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerTests;
506531
PRODUCT_NAME = "$(TARGET_NAME)";
532+
SWIFT_VERSION = 5.0;
507533
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/Runner";
508534
};
509535
name = Release;
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import Flutter
6+
import XCTest
7+
8+
@testable import quick_actions_ios
9+
10+
class DefaultShortcutItemParserTests: XCTestCase {
11+
12+
func testParseShortcutItems() {
13+
let rawItem = [
14+
"type": "SearchTheThing",
15+
"localizedTitle": "Search the thing",
16+
"icon": "search_the_thing.png",
17+
]
18+
19+
let expectedItem = UIApplicationShortcutItem(
20+
type: "SearchTheThing",
21+
localizedTitle: "Search the thing",
22+
localizedSubtitle: nil,
23+
icon: UIApplicationShortcutIcon(templateImageName: "search_the_thing.png"),
24+
userInfo: nil)
25+
26+
let parser = DefaultShortcutItemParser()
27+
XCTAssertEqual(parser.parseShortcutItems([rawItem]), [expectedItem])
28+
}
29+
30+
func testParseShortcutItems_noIcon() {
31+
let rawItem: [String: Any] = [
32+
"type": "SearchTheThing",
33+
"localizedTitle": "Search the thing",
34+
"icon": NSNull(),
35+
]
36+
37+
let expectedItem = UIApplicationShortcutItem(
38+
type: "SearchTheThing",
39+
localizedTitle: "Search the thing",
40+
localizedSubtitle: nil,
41+
icon: nil,
42+
userInfo: nil)
43+
44+
let parser = DefaultShortcutItemParser()
45+
XCTAssertEqual(parser.parseShortcutItems([rawItem]), [expectedItem])
46+
}
47+
48+
func testParseShortcutItems_noType() {
49+
let rawItem = [
50+
"localizedTitle": "Search the thing",
51+
"icon": "search_the_thing.png",
52+
]
53+
54+
let parser = DefaultShortcutItemParser()
55+
XCTAssertEqual(parser.parseShortcutItems([rawItem]), [])
56+
}
57+
58+
func testParseShortcutItems_noLocalizedTitle() {
59+
let rawItem = [
60+
"type": "SearchTheThing",
61+
"icon": "search_the_thing.png",
62+
]
63+
64+
let parser = DefaultShortcutItemParser()
65+
XCTAssertEqual(parser.parseShortcutItems([rawItem]), [])
66+
}
67+
}

0 commit comments

Comments
 (0)