Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Prev Previous commit
Next Next commit
rename AppShortcutControlling to ShortcutItemProviding
  • Loading branch information
hellohuanlin committed Nov 15, 2022
commit d30e077d31b30456fef8505c88c7f12009c7c394
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
E092A7ED28D10802005C7F67 /* MockMethodChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7EA28D10801005C7F67 /* MockMethodChannel.swift */; };
E092A7EE28D10802005C7F67 /* QuickActionsPluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7EB28D10802005C7F67 /* QuickActionsPluginTests.swift */; };
E092A7F128D10890005C7F67 /* MockAppShortcutController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7F028D10890005C7F67 /* MockAppShortcutController.swift */; };
E092A7F128D10890005C7F67 /* MockShortcutItemProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7F028D10890005C7F67 /* MockShortcutItemProvider.swift */; };
E092A7F428D110B3005C7F67 /* DefaultShortcutItemParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7F328D110B3005C7F67 /* DefaultShortcutItemParserTests.swift */; };
E092A7F628D128EB005C7F67 /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7F528D128EB005C7F67 /* RunnerUITests.swift */; };
E0A075D529147FE200329BAE /* MockShortcutItemParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0A075D429147FE200329BAE /* MockShortcutItemParser.swift */; };
Expand Down Expand Up @@ -80,7 +80,7 @@
C35AD3650AB6BF850E016715 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
E092A7EA28D10801005C7F67 /* MockMethodChannel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockMethodChannel.swift; sourceTree = "<group>"; };
E092A7EB28D10802005C7F67 /* QuickActionsPluginTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuickActionsPluginTests.swift; sourceTree = "<group>"; };
E092A7F028D10890005C7F67 /* MockAppShortcutController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAppShortcutController.swift; sourceTree = "<group>"; };
E092A7F028D10890005C7F67 /* MockShortcutItemProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockShortcutItemProvider.swift; sourceTree = "<group>"; };
E092A7F328D110B3005C7F67 /* DefaultShortcutItemParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultShortcutItemParserTests.swift; sourceTree = "<group>"; };
E092A7F528D128EB005C7F67 /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = "<group>"; };
E0A075D429147FE200329BAE /* MockShortcutItemParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockShortcutItemParser.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -216,7 +216,7 @@
isa = PBXGroup;
children = (
E092A7EA28D10801005C7F67 /* MockMethodChannel.swift */,
E092A7F028D10890005C7F67 /* MockAppShortcutController.swift */,
E092A7F028D10890005C7F67 /* MockShortcutItemProvider.swift */,
E0A075D429147FE200329BAE /* MockShortcutItemParser.swift */,
);
path = Mocks;
Expand Down Expand Up @@ -436,7 +436,7 @@
files = (
E092A7EE28D10802005C7F67 /* QuickActionsPluginTests.swift in Sources */,
E092A7ED28D10802005C7F67 /* MockMethodChannel.swift in Sources */,
E092A7F128D10890005C7F67 /* MockAppShortcutController.swift in Sources */,
E092A7F128D10890005C7F67 /* MockShortcutItemProvider.swift in Sources */,
E0A075D529147FE200329BAE /* MockShortcutItemParser.swift in Sources */,
E092A7F428D110B3005C7F67 /* DefaultShortcutItemParserTests.swift in Sources */,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@

@testable import quick_actions_ios

final class MockAppShortcutController: AppShortcutControlling {
final class MockShortcutItemProvider: ShortcutItemProviding {
var shortcutItems: [UIApplicationShortcutItem]? = nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ class QuickActionsPluginTests: XCTestCase {
let call = FlutterMethodCall(methodName: "setShortcutItems", arguments: [rawItem])

let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

let parseShortcutItemsExpectation = expectation(
Expand All @@ -46,7 +46,7 @@ class QuickActionsPluginTests: XCTestCase {
XCTAssertNil(result, "result block must be called with nil.")
resultExpectation.fulfill()
}
XCTAssertEqual(mockAppShortcutController.shortcutItems, [item], "Must set shortcut items.")
XCTAssertEqual(mockShortcutItemProvider.shortcutItems, [item], "Must set shortcut items.")
waitForExpectations(timeout: 1)
}

Expand All @@ -60,14 +60,14 @@ class QuickActionsPluginTests: XCTestCase {

let call = FlutterMethodCall(methodName: "clearShortcutItems", arguments: nil)
let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

mockAppShortcutController.shortcutItems = [item]
mockShortcutItemProvider.shortcutItems = [item]

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

let resultExpectation = expectation(description: "result block must be called.")
Expand All @@ -76,20 +76,20 @@ class QuickActionsPluginTests: XCTestCase {
resultExpectation.fulfill()
}

XCTAssertEqual(mockAppShortcutController.shortcutItems, [], "Must clear shortcut items.")
XCTAssertEqual(mockShortcutItemProvider.shortcutItems, [], "Must clear shortcut items.")
waitForExpectations(timeout: 1)
}

func testHandleMethodCall_getLaunchAction() {
let call = FlutterMethodCall(methodName: "getLaunchAction", arguments: nil)

let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

let resultExpectation = expectation(description: "result block must be called.")
Expand All @@ -105,12 +105,12 @@ class QuickActionsPluginTests: XCTestCase {
let call = FlutterMethodCall(methodName: "nonExist", arguments: nil)

let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

let resultExpectation = expectation(description: "result block must be called.")
Expand All @@ -127,12 +127,12 @@ class QuickActionsPluginTests: XCTestCase {

func testApplicationPerformActionForShortcutItem() {
let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

let item = UIApplicationShortcutItem(
Expand Down Expand Up @@ -160,12 +160,12 @@ class QuickActionsPluginTests: XCTestCase {

func testApplicationDidFinishLaunchingWithOptions_launchWithShortcut() {
let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

let item = UIApplicationShortcutItem(
Expand All @@ -184,12 +184,12 @@ class QuickActionsPluginTests: XCTestCase {

func testApplicationDidFinishLaunchingWithOptions_launchWithoutShortcut() {
let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

let launchResult = plugin.application(UIApplication.shared, didFinishLaunchingWithOptions: [:])
Expand All @@ -199,12 +199,12 @@ class QuickActionsPluginTests: XCTestCase {

func testApplicationDidBecomeActive_launchWithoutShortcut() {
let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

mockChannel.invokeMethodStub = { _, _ in
Expand All @@ -227,12 +227,12 @@ class QuickActionsPluginTests: XCTestCase {
userInfo: nil)

let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

let invokeMethodExpectation = expectation(description: "invokeMethod must be called.")
Expand Down Expand Up @@ -262,12 +262,12 @@ class QuickActionsPluginTests: XCTestCase {
userInfo: nil)

let mockChannel = MockMethodChannel()
let mockAppShortcutController = MockAppShortcutController()
let mockShortcutItemProvider = MockShortcutItemProvider()
let mockShortcutItemParser = MockShortcutItemParser()

let plugin = QuickActionsPlugin(
channel: mockChannel,
appShortcutController: mockAppShortcutController,
shortcutItemProvider: mockShortcutItemProvider,
shortcutItemParser: mockShortcutItemParser)

let invokeMethodExpectation = expectation(description: "invokeMethod must be called.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ public final class QuickActionsPlugin: NSObject, FlutterPlugin {
}

private let channel: MethodChannel
private let appShortcutController: AppShortcutControlling
private let shortcutItemProvider: ShortcutItemProviding
private let shortcutItemParser: ShortcutItemParser
/// The type of the shortcut item selected when launching the app.
private var launchingShortcutType: String? = nil

init(
channel: MethodChannel,
appShortcutController: AppShortcutControlling = UIApplication.shared,
shortcutItemProvider: ShortcutItemProviding = UIApplication.shared,
shortcutItemParser: ShortcutItemParser = DefaultShortcutItemParser()
) {
self.channel = channel
self.appShortcutController = appShortcutController
self.shortcutItemProvider = shortcutItemProvider
self.shortcutItemParser = shortcutItemParser
}

Expand All @@ -36,10 +36,10 @@ public final class QuickActionsPlugin: NSObject, FlutterPlugin {
case "setShortcutItems":
// `arguments` must be an array of dictionaries
let items = call.arguments as! [[String: Any]]
appShortcutController.shortcutItems = shortcutItemParser.parseShortcutItems(items)
shortcutItemProvider.shortcutItems = shortcutItemParser.parseShortcutItems(items)
result(nil)
case "clearShortcutItems":
appShortcutController.shortcutItems = []
shortcutItemProvider.shortcutItems = []
result(nil)
case "getLaunchAction":
result(nil)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

import UIKit

/// Controlls app's shortcut behavior.
protocol AppShortcutControlling: AnyObject {
/// Provides the capability to get and set the app's home screen shortcut items.
protocol ShortcutItemProviding: AnyObject {

/// An array of shortcut items for home screen.
var shortcutItems: [UIApplicationShortcutItem]? { get set }
}

/// A default implementation of the `AppShortcutControlling` protocol.
extension UIApplication: AppShortcutControlling {}
/// A default implementation of the `ShortcutItemProviding` protocol.
extension UIApplication: ShortcutItemProviding {}