From 4a191e8036581893bf5f4cfb284770d1bfe9a807 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Wed, 13 Sep 2023 18:39:01 +0200 Subject: Add safari code --- safari/Junction Extension/Info.plist | 13 ++++++++ .../Junction_Extension.entitlements | 10 ++++++ .../SafariWebExtensionHandler.swift | 38 ++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 safari/Junction Extension/Info.plist create mode 100644 safari/Junction Extension/Junction_Extension.entitlements create mode 100644 safari/Junction Extension/SafariWebExtensionHandler.swift (limited to 'safari/Junction Extension') 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 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.Safari.web-extension + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).SafariWebExtensionHandler + + + 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 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + 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) + } + +} -- cgit