aboutsummaryrefslogtreecommitdiff
path: root/safari/Junction Extension/SafariWebExtensionHandler.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2023-09-13 18:39:01 +0200
committerRuben Beltran del Rio <ruben@unlimited.pizza>2023-09-13 18:39:01 +0200
commit4a191e8036581893bf5f4cfb284770d1bfe9a807 (patch)
treeabbf7be12b65b56c9b6a11861fd96ad406ad4590 /safari/Junction Extension/SafariWebExtensionHandler.swift
parent06b7617a863d00dbcc91d1e46f09942c6aad366e (diff)
Add safari code
Diffstat (limited to 'safari/Junction Extension/SafariWebExtensionHandler.swift')
-rw-r--r--safari/Junction Extension/SafariWebExtensionHandler.swift38
1 files changed, 38 insertions, 0 deletions
diff --git a/safari/Junction Extension/SafariWebExtensionHandler.swift b/safari/Junction Extension/SafariWebExtensionHandler.swift
new file mode 100644
index 0000000..58f680c
--- /dev/null
+++ b/safari/Junction Extension/SafariWebExtensionHandler.swift
@@ -0,0 +1,38 @@
+//
+// SafariWebExtensionHandler.swift
+// Junction Extension
+//
+// Created by Ruben Beltran del Rio on 9/13/23.
+//
+
+import SafariServices
+import os.log
+
+class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling {
+
+ func beginRequest(with context: NSExtensionContext) {
+ let request = context.inputItems.first as? NSExtensionItem
+
+ let profile: UUID?
+ if #available(iOS 17.0, macOS 14.0, *) {
+ profile = request?.userInfo?[SFExtensionProfileKey] as? UUID
+ } else {
+ profile = request?.userInfo?["profile"] as? UUID
+ }
+
+ let message: Any?
+ if #available(iOS 17.0, macOS 14.0, *) {
+ message = request?.userInfo?[SFExtensionMessageKey]
+ } else {
+ message = request?.userInfo?["message"]
+ }
+
+ os_log(.default, "Received message from browser.runtime.sendNativeMessage: %@ (profile: %@)", String(describing: message), profile?.uuidString ?? "none")
+
+ let response = NSExtensionItem()
+ response.userInfo = [ SFExtensionMessageKey: [ "echo": message ] ]
+
+ context.completeRequest(returningItems: [ response ], completionHandler: nil)
+ }
+
+}