aboutsummaryrefslogtreecommitdiff
path: root/safari/Junction Extension
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
parent06b7617a863d00dbcc91d1e46f09942c6aad366e (diff)
Add safari code
Diffstat (limited to 'safari/Junction Extension')
-rw-r--r--safari/Junction Extension/Info.plist13
-rw-r--r--safari/Junction Extension/Junction_Extension.entitlements10
-rw-r--r--safari/Junction Extension/SafariWebExtensionHandler.swift38
3 files changed, 61 insertions, 0 deletions
diff --git a/safari/Junction Extension/Info.plist b/safari/Junction Extension/Info.plist
new file mode 100644
index 0000000..9ee504d
--- /dev/null
+++ b/safari/Junction Extension/Info.plist
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>NSExtension</key>
+ <dict>
+ <key>NSExtensionPointIdentifier</key>
+ <string>com.apple.Safari.web-extension</string>
+ <key>NSExtensionPrincipalClass</key>
+ <string>$(PRODUCT_MODULE_NAME).SafariWebExtensionHandler</string>
+ </dict>
+</dict>
+</plist>
diff --git a/safari/Junction Extension/Junction_Extension.entitlements b/safari/Junction Extension/Junction_Extension.entitlements
new file mode 100644
index 0000000..f2ef3ae
--- /dev/null
+++ b/safari/Junction Extension/Junction_Extension.entitlements
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.security.app-sandbox</key>
+ <true/>
+ <key>com.apple.security.files.user-selected.read-only</key>
+ <true/>
+</dict>
+</plist>
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)
+ }
+
+}