-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathSafariExtensionHandler.swift
52 lines (39 loc) · 1.94 KB
/
SafariExtensionHandler.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//
// SafariExtensionHandler.swift
// TabSaver Extension
//
// Created by Matias Morsa on 28/03/2020.
// Copyright © 2020 Matias Morsa. All rights reserved.
//
import SafariServices
class SafariExtensionHandler: SFSafariExtensionHandler {
var safari = SafariExtensionViewController.shared
override func messageReceived(withName messageName: String, from page: SFSafariPage, userInfo: [String : Any]?) {
// This method will be called when a content script provided by your extension calls safari.extension.dispatchMessage("message").
Persistance.shared.setActualPage(page: page)
}
override func toolbarItemClicked(in window: SFSafariWindow) {
// Este metodo no hace nada
SafariExtensionViewController.shared.toolbarItemClicked(sender: window)
}
override func validateToolbarItem(in window: SFSafariWindow, validationHandler: @escaping ((Bool, String) -> Void)) {
// This is called when Safari's state changed in some way that would require the extension's toolbar item to be validated again.
validationHandler(true, "")
}
override func popoverViewController() -> SFSafariExtensionViewController {
SafariExtensionViewController.shared.flag(bool: true)
return safari
}
func applicationWillTerminate(){
}
override func contextMenuItemSelected(withCommand command: String, in page: SFSafariPage, userInfo: [String : Any]? = nil) {
if (command.elementsEqual("Save All tabs")){
SafariExtensionViewController.shared.saveAll(sender: SFSafariPage.self)
} else if (command.elementsEqual("Get All tabs")){
SafariExtensionViewController.shared.getAll(sender: SFSafariPage.self)
} else {
SafariExtensionViewController.shared.saveThis(sender: SFSafariPage.self)
SafariExtensionViewController.shared.getAll(sender: SFSafariPage.self)
}
}
}