SafariWebExtensionHandler.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //
  2. // SafariWebExtensionHandler.swift
  3. // Light Theme for YouTube Music Extension
  4. //
  5. // Created by Murad Jabir on 2026-09-17.
  6. //
  7. import SafariServices
  8. import os.log
  9. class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling {
  10. func beginRequest(with context: NSExtensionContext) {
  11. let request = context.inputItems.first as? NSExtensionItem
  12. let profile: UUID?
  13. if #available(iOS 17.0, macOS 14.0, *) {
  14. profile = request?.userInfo?[SFExtensionProfileKey] as? UUID
  15. } else {
  16. profile = request?.userInfo?["profile"] as? UUID
  17. }
  18. let message: Any?
  19. if #available(iOS 15.0, macOS 11.0, *) {
  20. message = request?.userInfo?[SFExtensionMessageKey]
  21. } else {
  22. message = request?.userInfo?["message"]
  23. }
  24. os_log(.default, "Received message from browser.runtime.sendNativeMessage: %@ (profile: %@)", String(describing: message), profile?.uuidString ?? "none")
  25. let response = NSExtensionItem()
  26. if #available(iOS 15.0, macOS 11.0, *) {
  27. response.userInfo = [ SFExtensionMessageKey: [ "echo": message ] ]
  28. } else {
  29. response.userInfo = [ "message": [ "echo": message ] ]
  30. }
  31. context.completeRequest(returningItems: [ response ], completionHandler: nil)
  32. }
  33. }