aboutsummaryrefslogtreecommitdiff
path: root/safari/Junction Extension/SafariWebExtensionHandler.swift
diff options
context:
space:
mode:
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)
+ }
+
+}