passbolt-browser-extension 5.9.0 → 5.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Gruntfile.js +13 -3
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/AppDelegate.swift +37 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-128@1x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-128@2x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-16@1x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-16@2x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-256@1x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-256@2x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-32@1x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-32@2x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-512@1x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/AppIcon.appiconset/mac-icon-512@2x.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/Contents.json +6 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Assets.xcassets/LargeIcon.imageset/Contents.json +20 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Base.lproj/Main.storyboard +125 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/File.txt +1 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Info.plist +10 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Passbolt - password manager.entitlements +12 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Resources/Base.lproj/Main.html +19 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Resources/Icon.png +0 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Resources/Script.js +22 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Resources/Style.css +45 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/ViewController.swift +73 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/Info.plist +20 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/Passbolt - password manager Extension.entitlements +12 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/SafariWebExtensionHandler.swift +97 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/controllers/AbstractController.swift +69 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/controllers/ErrorController.swift +47 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/controllers/FetchController.swift +57 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/controllers/OpenSafariSettingsController.swift +46 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/controllers/SaveFileController.swift +33 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/routes/Routes.swift +26 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/services/fetch/SecureProfileSessionManager.swift +195 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/services/fetch/fetchService.swift +94 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/services/file/SaveFileService.swift +120 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/utils/ErrorSerializer.swift +116 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/utils/LocatedError.swift +97 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/SafariWebExtensionHandlerTests.swift +51 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/controllers/AbstractControllerTests.swift +39 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/controllers/ErrorControllerTests.swift +34 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/controllers/FetchControllerTests.swift +34 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/controllers/OpenSafariSettingsControllerTests.swift +34 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/controllers/SaveFileControllerTests.swift +34 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/services/fetch/FetchServiceTests.swift +37 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/services/fetch/SecureProfileSessionManagerTests.swift +97 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/services/file/SaveFileServiceTests.swift +71 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/utils/ErrorSerializerTests.swift +155 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Tests/utils/LocatedErrorTests.swift +92 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager.xcodeproj/project.pbxproj +795 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager.xcodeproj/xcshareddata/xcschemes/Passbolt-Safari-Extension.xcscheme +100 -0
- package/package.json +8 -15
- package/src/all/background_page/controller/InformMenuController/InformMenuController.js +4 -7
- package/src/all/background_page/controller/autofill/AutofillController.js +4 -4
- package/src/all/background_page/controller/exportPolicies/findExportPoliciesSettingsController.js +53 -0
- package/src/all/background_page/controller/exportPolicies/findExportPoliciesSettingsController.test.js +48 -0
- package/src/all/background_page/controller/extension/isExtensionAllowedOnEveryWebsiteController.js +49 -0
- package/src/all/background_page/controller/extension/isExtensionAllowedOnEveryWebsiteController.test.js +57 -0
- package/src/all/background_page/controller/extension/openSafariExtensionSettingsController.js +49 -0
- package/src/all/background_page/controller/extension/openSafariExtensionSettingsController.test.js +46 -0
- package/src/all/background_page/controller/extension/startCheckingForPermissionUpdateController.js +49 -0
- package/src/all/background_page/controller/extension/startCheckingForPermissionUpdateController.test.js +50 -0
- package/src/all/background_page/controller/extension/stopCheckingForPermissionUpdateController.js +49 -0
- package/src/all/background_page/controller/extension/stopCheckingForPermissionUpdateController.test.js +48 -0
- package/src/all/background_page/controller/import/importResourcesFileController.test.js +2 -2
- package/src/all/background_page/controller/informCallToActionController/informCallToActionController.js +5 -7
- package/src/all/background_page/controller/mfaSetup/GetStartedWithDuoController.js +53 -0
- package/src/all/background_page/controller/mfaSetup/GetStartedWithDuoController.test.js +33 -0
- package/src/all/background_page/controller/sso/ssoAuthenticationController.js +1 -2
- package/src/all/background_page/controller/sso/ssoAuthenticationController.test.js +3 -4
- package/src/all/background_page/controller/tab/closeActiveTabController.js +48 -0
- package/src/all/background_page/controller/tab/closeActiveTabController.test.js +28 -0
- package/src/all/background_page/controller/tab/openAdministrationPageController.js +51 -0
- package/src/all/background_page/controller/tab/openAdministrationPageController.test.js +49 -0
- package/src/all/background_page/controller/tab/openTabController.js +51 -0
- package/src/all/background_page/controller/tab/openTabController.test.js +52 -0
- package/src/all/background_page/controller/tab/openTrustedDomainTabController.js +50 -0
- package/src/all/background_page/controller/tab/openTrustedDomainTabController.test.js +46 -0
- package/src/all/background_page/controller/tab/openWebsiteGettingStartedPageController.js +50 -0
- package/src/all/background_page/controller/tab/openWebsiteGettingStartedPageController.test.js +46 -0
- package/src/all/background_page/controller/tag/addTagsToResourcesController.js +111 -0
- package/src/all/background_page/controller/tag/addTagsToResourcesController.test.js +158 -0
- package/src/all/background_page/controller/tag/deleteTagController.js +59 -0
- package/src/all/background_page/controller/tag/deleteTagController.test.js +63 -0
- package/src/all/background_page/controller/tag/findTagsController.js +54 -0
- package/src/all/background_page/controller/tag/findTagsController.test.js +53 -0
- package/src/all/background_page/controller/tag/tagController.js +9 -11
- package/src/all/background_page/controller/tag/updateResourceTagsController.js +68 -0
- package/src/all/background_page/controller/tag/updateResourceTagsController.test.js +94 -0
- package/src/all/background_page/controller/tag/updateTagController.js +59 -0
- package/src/all/background_page/controller/tag/updateTagController.test.js +73 -0
- package/src/all/background_page/controller/webIntegration/webIntegrationController.js +2 -5
- package/src/all/background_page/event/appEvents.js +118 -1
- package/src/all/background_page/event/mfaEvents.js +6 -0
- package/src/all/background_page/event/recoverEvents.js +44 -0
- package/src/all/background_page/event/setupEvents.js +44 -0
- package/src/all/background_page/event/tabEvents.js +34 -0
- package/src/all/background_page/model/entity/tag/tagsCollection.js +25 -0
- package/src/all/background_page/model/entity/tag/tagsCollection.test.data.js +41 -0
- package/src/all/background_page/model/entity/tag/tagsCollection.test.js +105 -51
- package/src/all/background_page/model/resource/resourceModel.js +0 -70
- package/src/all/background_page/pagemod/appPagemod.js +0 -2
- package/src/all/background_page/pagemod/appPagemod.test.js +1 -5
- package/src/all/background_page/pagemod/quickAccessPagemod.js +0 -2
- package/src/all/background_page/pagemod/quickAccessPagemod.test.js +1 -5
- package/src/all/background_page/sdk/port/portManager.js +4 -4
- package/src/all/background_page/sdk/port/portManager.test.js +4 -4
- package/src/all/background_page/service/accountRecovery/parseAccountRecoveryUrlService.js +1 -2
- package/src/all/background_page/service/api/exportPolicies/exportPoliciesSettingsApiService.js +48 -0
- package/src/all/background_page/service/api/exportPolicies/exportPoliciesSettingsApiService.test.js +65 -0
- package/src/all/background_page/service/api/mfa/duoApiService.js +59 -0
- package/src/all/background_page/service/api/mfa/duoApiService.test.js +62 -0
- package/src/all/background_page/service/api/tag/{tagService.js → tagApiService.js} +36 -22
- package/src/all/background_page/service/api/tag/tagApiService.test.js +164 -0
- package/src/all/background_page/service/app/parseAppUrlService.js +1 -2
- package/src/all/background_page/service/authenticationStatusService.js +3 -2
- package/src/all/background_page/service/browser/browserService.js +7 -0
- package/src/all/background_page/service/browser/browserService.test.js +76 -0
- package/src/all/background_page/service/crypto/getGpgKeyInfoService.js +4 -4
- package/src/all/background_page/service/exportPolicies/findExportPoliciesSettingsService.js +45 -0
- package/src/all/background_page/service/exportPolicies/findExportPoliciesSettingsService.test.js +70 -0
- package/src/all/background_page/service/extension/checkForPermissionUpdateService.js +63 -0
- package/src/all/background_page/service/extension/checkForPermissionUpdateService.test.js +90 -0
- package/src/all/background_page/service/extension/extensionPermissionsService.js +24 -0
- package/src/all/background_page/service/extension/extensionPermissionsService.test.js +82 -0
- package/src/all/background_page/service/extension/openSafariExtensionSettingsService.js +28 -0
- package/src/all/background_page/service/extension/openSafariExtensionSettingsService.test.js +57 -0
- package/src/all/background_page/service/file/fileService.js +5 -4
- package/src/all/background_page/service/metadata/generateMetadataKeyService.js +1 -1
- package/src/all/background_page/service/mfa/duoUserSettingsService.js +67 -0
- package/src/all/background_page/service/mfa/duoUserSettingsService.test.js +69 -0
- package/src/all/background_page/service/passphrase/getPassphraseService.js +67 -19
- package/src/all/background_page/service/passphrase/getPassphraseService.test.js +1 -2
- package/src/all/background_page/service/recover/parseRecoverUrlService.js +1 -2
- package/src/all/background_page/service/resource/import/ImportResourcesService.js +7 -8
- package/src/all/background_page/service/resource/import/ImportResourcesService.test.js +4 -3
- package/src/all/background_page/service/setup/parseSetupUrlService.js +1 -2
- package/src/all/background_page/service/tab/tabService.js +53 -27
- package/src/all/background_page/service/tab/tabService.test.js +58 -0
- package/src/all/background_page/service/tag/deleteTagService.js +76 -0
- package/src/all/background_page/service/tag/deleteTagService.test.js +215 -0
- package/src/all/background_page/service/tag/findTagsService.js +47 -0
- package/src/all/background_page/service/tag/findTagsService.test.js +76 -0
- package/src/all/background_page/service/tag/updateResourceTagsService.js +273 -0
- package/src/all/background_page/service/tag/updateResourceTagsService.test.js +665 -0
- package/src/all/background_page/service/tag/updateTagService.js +91 -0
- package/src/all/background_page/service/tag/updateTagService.test.js +243 -0
- package/src/all/background_page/service/toolbar/toolbarService.js +49 -9
- package/src/all/background_page/service/toolbar/toolbarService.test.js +31 -0
- package/src/all/background_page/service/ui/browserTab.service.js +62 -1
- package/src/all/background_page/service/ui/browserTab.service.test.js +91 -0
- package/src/all/background_page/service/ui/openAdministrationApiPageService.js +60 -0
- package/src/all/background_page/service/ui/openAdministrationApiPageService.test.js +141 -0
- package/src/all/background_page/service/ui/openTrustedDomainTabService.js +29 -0
- package/src/all/background_page/service/ui/openTrustedDomainTabService.test.js +76 -0
- package/src/all/background_page/{model/entity/tag/tagCollection.test.data.js → service/ui/openWebsiteGettingStartedPageService.js} +12 -14
- package/src/all/background_page/service/ui/openWebsiteGettingStartedPageService.test.js +46 -0
- package/src/all/background_page/service/ui/quickAccess.service.js +53 -4
- package/src/all/background_page/service/webIntegration/parseWebIntegrationUrlService.js +1 -2
- package/src/all/background_page/utils/format/formDataUtils.js +16 -0
- package/src/all/background_page/utils/format/formDataUtils.test.data.js +7 -0
- package/src/all/background_page/utils/format/formDataUtils.test.js +33 -1
- package/src/all/background_page/utils/format/gpgUserIdParser.js +136 -0
- package/src/all/background_page/utils/format/{emailaddress.test.data.js → gpgUserIdParser.test.data.js} +107 -22
- package/src/all/background_page/utils/format/gpgUserIdParser.test.js +65 -0
- package/src/all/webAccessibleResources/js/app/QuickAccess.js +12 -5
- package/src/all/webAccessibleResources/js/lib/port.js +17 -0
- package/src/all/webAccessibleResources/js/themes/stylesheet.js +1 -2
- package/src/chrome/manifest.json +2 -2
- package/src/chrome-mv3/manifest.json +2 -2
- package/src/firefox/manifest.json +2 -2
- package/src/safari/background_page/index.js +124 -0
- package/src/safari/background_page/service/cookies/cookiesService.js +191 -0
- package/src/safari/background_page/service/cookies/cookiesService.test.data.js +82 -0
- package/src/safari/background_page/service/cookies/cookiesService.test.js +390 -0
- package/src/safari/background_page/service/file/fileService.js +63 -0
- package/src/safari/background_page/service/file/fileService.test.js +46 -0
- package/src/safari/background_page/service/nativeMessage/sendNativeMessageService.js +84 -0
- package/src/safari/background_page/service/nativeMessage/sendNativeMessageService.test.js +167 -0
- package/src/safari/common/polyfill/fetchPolyfill.js +120 -0
- package/src/safari/common/polyfill/fetchPolyfill.test.data.js +104 -0
- package/src/safari/common/polyfill/fetchPolyfill.test.js +172 -0
- package/src/safari/common/polyfill/onInstalledReasonPolyfill.js +37 -0
- package/src/safari/common/polyfill/safariBrowserPolyfill.js +37 -0
- package/src/safari/manifest.json +18 -21
- package/test/jest.setup.js +7 -7
- package/test/mocks/mockWebExtensionPolyfill.js +12 -1
- package/webpack.safari-background-page.config.js +65 -0
- package/src/all/background_page/controller/tabsController.js +0 -50
- package/src/all/background_page/event/tagEvents.js +0 -106
- package/src/all/background_page/model/tag/tagModel.js +0 -148
- package/src/all/background_page/model/toolbar.js +0 -32
- package/src/all/background_page/utils/format/emailaddress.js +0 -170
- package/src/all/background_page/utils/format/emailaddress.test.js +0 -51
- package/src/all/background_page/utils/format/string.js +0 -65
package/Gruntfile.js
CHANGED
|
@@ -55,7 +55,7 @@ module.exports = function (grunt) {
|
|
|
55
55
|
grunt.registerTask('bundle-firefox', ['copy:manifest_firefox', 'bundle']);
|
|
56
56
|
grunt.registerTask('bundle-chromium-mv2', ['copy:manifest_chromium_mv2', 'bundle']);
|
|
57
57
|
grunt.registerTask('bundle-chromium-mv3', ['copy:manifest_chromium_mv3', 'bundle-mv3']);
|
|
58
|
-
grunt.registerTask('bundle-safari', ['copy:manifest_safari', 'bundle
|
|
58
|
+
grunt.registerTask('bundle-safari', ['copy:manifest_safari', 'bundle']);
|
|
59
59
|
|
|
60
60
|
grunt.registerTask('build', ['build-firefox-prod', 'build-chromium-mv2-prod', 'build-chromium-mv3-prod']);
|
|
61
61
|
|
|
@@ -72,8 +72,8 @@ module.exports = function (grunt) {
|
|
|
72
72
|
grunt.registerTask('build-chromium-mv3-prod', ['clean:build', 'pre-dist', 'copy:config_default', 'bundle-chromium-mv3', 'shell:build_service_worker_prod', 'shell:build_content_script_prod', 'shell:build_web_accessible_resources_prod', 'shell:build_chromium_mv3_prod']);
|
|
73
73
|
|
|
74
74
|
grunt.registerTask('build-safari', ['build-safari-debug', 'build-safari-prod']);
|
|
75
|
-
grunt.registerTask('build-safari-debug', ['clean:build', 'pre-dist', 'copy:config_debug', 'bundle-safari', 'shell:
|
|
76
|
-
grunt.registerTask('build-safari-prod', ['clean:build', 'pre-dist', 'copy:config_default', 'bundle-safari', 'shell:
|
|
75
|
+
grunt.registerTask('build-safari-debug', ['clean:build', 'pre-dist', 'copy:config_debug', 'bundle-safari', 'shell:build_background_page_safari_debug', 'shell:build_content_script_debug', 'shell:build_web_accessible_resources_debug']);
|
|
76
|
+
grunt.registerTask('build-safari-prod', ['clean:build', 'pre-dist', 'copy:config_default', 'bundle-safari', 'shell:build_background_page_safari_prod', 'shell:build_content_script_prod', 'shell:build_web_accessible_resources_prod']);
|
|
77
77
|
|
|
78
78
|
grunt.registerTask('externalize-locale-strings', ['shell:externalize']);
|
|
79
79
|
|
|
@@ -287,11 +287,21 @@ module.exports = function (grunt) {
|
|
|
287
287
|
'npm run build:background-page'
|
|
288
288
|
].join(' && ')
|
|
289
289
|
},
|
|
290
|
+
build_background_page_safari_prod: {
|
|
291
|
+
command: [
|
|
292
|
+
'npm run build:safari:background-page'
|
|
293
|
+
].join(' && ')
|
|
294
|
+
},
|
|
290
295
|
build_background_page_debug: {
|
|
291
296
|
command: [
|
|
292
297
|
'npm run dev:build:background-page'
|
|
293
298
|
].join(' && ')
|
|
294
299
|
},
|
|
300
|
+
build_background_page_safari_debug: {
|
|
301
|
+
command: [
|
|
302
|
+
'npm run dev:build:safari:background-page'
|
|
303
|
+
].join(' && ')
|
|
304
|
+
},
|
|
295
305
|
/**
|
|
296
306
|
* Build service worker.
|
|
297
307
|
*/
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Passbolt - Open source password manager for teams
|
|
3
|
+
// Copyright (c) Passbolt SA
|
|
4
|
+
//
|
|
5
|
+
// This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
|
|
6
|
+
// Public License (AGPL) as published by the Free Software Foundation version 3.
|
|
7
|
+
//
|
|
8
|
+
// The name "Passbolt" is a registered trademark of Passbolt SA, and Passbolt SA hereby declines to grant a trademark
|
|
9
|
+
// license to "Passbolt" pursuant to the GNU Affero General Public License version 3 Section 7(e), without a separate
|
|
10
|
+
// agreement with Passbolt SA.
|
|
11
|
+
//
|
|
12
|
+
// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
13
|
+
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See GNU Affero General Public License for more details.
|
|
14
|
+
//
|
|
15
|
+
// You should have received a copy of the GNU Affero General Public License along with this program. If not,
|
|
16
|
+
// see GNU Affero General Public License v3 (http://www.gnu.org/licenses/agpl-3.0.html).
|
|
17
|
+
//
|
|
18
|
+
// @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
19
|
+
// @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
20
|
+
// @link https://www.passbolt.com Passbolt (tm)
|
|
21
|
+
// @since v1.0
|
|
22
|
+
//
|
|
23
|
+
|
|
24
|
+
import Cocoa
|
|
25
|
+
|
|
26
|
+
@main
|
|
27
|
+
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
28
|
+
|
|
29
|
+
func applicationDidFinishLaunching(_ notification: Notification) {
|
|
30
|
+
// Override point for customization after application launch.
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
|
|
34
|
+
return true
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"images" : [
|
|
3
|
+
{
|
|
4
|
+
"size" : "16x16",
|
|
5
|
+
"idiom" : "mac",
|
|
6
|
+
"filename" : "mac-icon-16@1x.png",
|
|
7
|
+
"scale" : "1x"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"size" : "16x16",
|
|
11
|
+
"idiom" : "mac",
|
|
12
|
+
"filename" : "mac-icon-16@2x.png",
|
|
13
|
+
"scale" : "2x"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"size" : "32x32",
|
|
17
|
+
"idiom" : "mac",
|
|
18
|
+
"filename" : "mac-icon-32@1x.png",
|
|
19
|
+
"scale" : "1x"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"size" : "32x32",
|
|
23
|
+
"idiom" : "mac",
|
|
24
|
+
"filename" : "mac-icon-32@2x.png",
|
|
25
|
+
"scale" : "2x"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"size" : "128x128",
|
|
29
|
+
"idiom" : "mac",
|
|
30
|
+
"filename" : "mac-icon-128@1x.png",
|
|
31
|
+
"scale" : "1x"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"size" : "128x128",
|
|
35
|
+
"idiom" : "mac",
|
|
36
|
+
"filename" : "mac-icon-128@2x.png",
|
|
37
|
+
"scale" : "2x"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"size" : "256x256",
|
|
41
|
+
"idiom" : "mac",
|
|
42
|
+
"filename" : "mac-icon-256@1x.png",
|
|
43
|
+
"scale" : "1x"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"size" : "256x256",
|
|
47
|
+
"idiom" : "mac",
|
|
48
|
+
"filename" : "mac-icon-256@2x.png",
|
|
49
|
+
"scale" : "2x"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"size" : "512x512",
|
|
53
|
+
"idiom" : "mac",
|
|
54
|
+
"filename" : "mac-icon-512@1x.png",
|
|
55
|
+
"scale" : "1x"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"size" : "512x512",
|
|
59
|
+
"idiom" : "mac",
|
|
60
|
+
"filename" : "mac-icon-512@2x.png",
|
|
61
|
+
"scale" : "2x"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"info" : {
|
|
65
|
+
"version" : 1,
|
|
66
|
+
"author" : "xcode"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"images" : [
|
|
3
|
+
{
|
|
4
|
+
"idiom" : "universal",
|
|
5
|
+
"scale" : "1x"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"idiom" : "universal",
|
|
9
|
+
"scale" : "2x"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"idiom" : "universal",
|
|
13
|
+
"scale" : "3x"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"info" : {
|
|
17
|
+
"author" : "xcode",
|
|
18
|
+
"version" : 1
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="24127" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
|
|
3
|
+
<dependencies>
|
|
4
|
+
<deployment identifier="macosx"/>
|
|
5
|
+
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="24127"/>
|
|
6
|
+
<plugIn identifier="com.apple.WebKit2IBPlugin" version="24127"/>
|
|
7
|
+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
8
|
+
</dependencies>
|
|
9
|
+
<scenes>
|
|
10
|
+
<!--Application-->
|
|
11
|
+
<scene sceneID="JPo-4y-FX3">
|
|
12
|
+
<objects>
|
|
13
|
+
<application id="hnw-xV-0zn" sceneMemberID="viewController">
|
|
14
|
+
<menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
|
15
|
+
<items>
|
|
16
|
+
<menuItem title="Passbolt-Safari-Extension" id="1Xt-HY-uBw">
|
|
17
|
+
<modifierMask key="keyEquivalentModifierMask"/>
|
|
18
|
+
<menu key="submenu" title="Passbolt-Safari-Extension" systemMenu="apple" id="uQy-DD-JDr">
|
|
19
|
+
<items>
|
|
20
|
+
<menuItem title="About Passbolt-Safari-Extension" id="5kV-Vb-QxS">
|
|
21
|
+
<modifierMask key="keyEquivalentModifierMask"/>
|
|
22
|
+
<connections>
|
|
23
|
+
<action selector="orderFrontStandardAboutPanel:" target="Ady-hI-5gd" id="Exp-CZ-Vem"/>
|
|
24
|
+
</connections>
|
|
25
|
+
</menuItem>
|
|
26
|
+
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
|
|
27
|
+
<menuItem title="Hide Passbolt-Safari-Extension" keyEquivalent="h" id="Olw-nP-bQN">
|
|
28
|
+
<connections>
|
|
29
|
+
<action selector="hide:" target="Ady-hI-5gd" id="PnN-Uc-m68"/>
|
|
30
|
+
</connections>
|
|
31
|
+
</menuItem>
|
|
32
|
+
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
|
|
33
|
+
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
|
34
|
+
<connections>
|
|
35
|
+
<action selector="hideOtherApplications:" target="Ady-hI-5gd" id="VT4-aY-XCT"/>
|
|
36
|
+
</connections>
|
|
37
|
+
</menuItem>
|
|
38
|
+
<menuItem title="Show All" id="Kd2-mp-pUS">
|
|
39
|
+
<modifierMask key="keyEquivalentModifierMask"/>
|
|
40
|
+
<connections>
|
|
41
|
+
<action selector="unhideAllApplications:" target="Ady-hI-5gd" id="Dhg-Le-xox"/>
|
|
42
|
+
</connections>
|
|
43
|
+
</menuItem>
|
|
44
|
+
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
|
|
45
|
+
<menuItem title="Quit Passbolt-Safari-Extension" keyEquivalent="q" id="4sb-4s-VLi">
|
|
46
|
+
<connections>
|
|
47
|
+
<action selector="terminate:" target="Ady-hI-5gd" id="Te7-pn-YzF"/>
|
|
48
|
+
</connections>
|
|
49
|
+
</menuItem>
|
|
50
|
+
</items>
|
|
51
|
+
</menu>
|
|
52
|
+
</menuItem>
|
|
53
|
+
<menuItem title="Help" id="wpr-3q-Mcd">
|
|
54
|
+
<modifierMask key="keyEquivalentModifierMask"/>
|
|
55
|
+
<menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
|
|
56
|
+
<items>
|
|
57
|
+
<menuItem title="Passbolt-Safari-Extension Help" keyEquivalent="?" id="FKE-Sm-Kum">
|
|
58
|
+
<connections>
|
|
59
|
+
<action selector="showHelp:" target="Ady-hI-5gd" id="y7X-2Q-9no"/>
|
|
60
|
+
</connections>
|
|
61
|
+
</menuItem>
|
|
62
|
+
</items>
|
|
63
|
+
</menu>
|
|
64
|
+
</menuItem>
|
|
65
|
+
</items>
|
|
66
|
+
</menu>
|
|
67
|
+
<connections>
|
|
68
|
+
<outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
|
|
69
|
+
</connections>
|
|
70
|
+
</application>
|
|
71
|
+
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Passbolt___password_manager" customModuleProvider="target"/>
|
|
72
|
+
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
|
73
|
+
<customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
|
74
|
+
</objects>
|
|
75
|
+
<point key="canvasLocation" x="76" y="-134"/>
|
|
76
|
+
</scene>
|
|
77
|
+
<!--Window Controller-->
|
|
78
|
+
<scene sceneID="R2V-B0-nI4">
|
|
79
|
+
<objects>
|
|
80
|
+
<windowController showSeguePresentationStyle="single" id="B8D-0N-5wS" sceneMemberID="viewController">
|
|
81
|
+
<window key="window" title="Passbolt-Safari-Extension" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" animationBehavior="default" id="IQv-IB-iLA">
|
|
82
|
+
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
|
|
83
|
+
<windowCollectionBehavior key="collectionBehavior" fullScreenNone="YES"/>
|
|
84
|
+
<rect key="contentRect" x="196" y="240" width="425" height="325"/>
|
|
85
|
+
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
|
|
86
|
+
<connections>
|
|
87
|
+
<outlet property="delegate" destination="B8D-0N-5wS" id="98r-iN-zZc"/>
|
|
88
|
+
</connections>
|
|
89
|
+
</window>
|
|
90
|
+
<connections>
|
|
91
|
+
<segue destination="XfG-lQ-9wD" kind="relationship" relationship="window.shadowedContentViewController" id="cq2-FE-JQM"/>
|
|
92
|
+
</connections>
|
|
93
|
+
</windowController>
|
|
94
|
+
<customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
|
95
|
+
</objects>
|
|
96
|
+
<point key="canvasLocation" x="75" y="250"/>
|
|
97
|
+
</scene>
|
|
98
|
+
<!--View Controller-->
|
|
99
|
+
<scene sceneID="hIz-AP-VOD">
|
|
100
|
+
<objects>
|
|
101
|
+
<viewController id="XfG-lQ-9wD" customClass="ViewController" customModule="Passbolt___password_manager" customModuleProvider="target" sceneMemberID="viewController">
|
|
102
|
+
<view key="view" id="m2S-Jp-Qdl">
|
|
103
|
+
<rect key="frame" x="0.0" y="0.0" width="425" height="325"/>
|
|
104
|
+
<autoresizingMask key="autoresizingMask"/>
|
|
105
|
+
<subviews>
|
|
106
|
+
<wkWebView wantsLayer="YES" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="eOr-cG-IQY">
|
|
107
|
+
<rect key="frame" x="0.0" y="0.0" width="425" height="325"/>
|
|
108
|
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
109
|
+
<wkWebViewConfiguration key="configuration">
|
|
110
|
+
<audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
|
|
111
|
+
<wkPreferences key="preferences"/>
|
|
112
|
+
</wkWebViewConfiguration>
|
|
113
|
+
</wkWebView>
|
|
114
|
+
</subviews>
|
|
115
|
+
</view>
|
|
116
|
+
<connections>
|
|
117
|
+
<outlet property="webView" destination="eOr-cG-IQY" id="GFe-mU-dBY"/>
|
|
118
|
+
</connections>
|
|
119
|
+
</viewController>
|
|
120
|
+
<customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
|
121
|
+
</objects>
|
|
122
|
+
<point key="canvasLocation" x="75" y="655"/>
|
|
123
|
+
</scene>
|
|
124
|
+
</scenes>
|
|
125
|
+
</document>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Passbolt - Open source password manager
|
package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Info.plist
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>SFSafariWebExtensionConverterVersion</key>
|
|
6
|
+
<string>16.1</string>
|
|
7
|
+
<key>ITSAppUsesNonExemptEncryption</key>
|
|
8
|
+
<false/>
|
|
9
|
+
</dict>
|
|
10
|
+
</plist>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>com.apple.security.app-sandbox</key>
|
|
6
|
+
<true/>
|
|
7
|
+
<key>com.apple.security.files.user-selected.read-only</key>
|
|
8
|
+
<true/>
|
|
9
|
+
<key>com.apple.security.network.client</key>
|
|
10
|
+
<true/>
|
|
11
|
+
</dict>
|
|
12
|
+
</plist>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
5
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
|
|
6
|
+
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
|
8
|
+
|
|
9
|
+
<link rel="stylesheet" href="../Style.css">
|
|
10
|
+
<script src="../Script.js" defer></script>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<img src="../Icon.png" width="128" height="128" alt="Passbolt-Safari-Extension Icon">
|
|
14
|
+
<p class="state-unknown">You can turn on Passbolt-Safari-Extension’s extension in Safari Extensions preferences.</p>
|
|
15
|
+
<p class="state-on">Passbolt-Safari-Extension’s extension is currently on. You can turn it off in Safari Extensions preferences.</p>
|
|
16
|
+
<p class="state-off">Passbolt-Safari-Extension’s extension is currently off. You can turn it on in Safari Extensions preferences.</p>
|
|
17
|
+
<button class="open-preferences">Quit and Open Safari Extensions Preferences…</button>
|
|
18
|
+
</body>
|
|
19
|
+
</html>
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
function show(enabled, useSettingsInsteadOfPreferences) {
|
|
2
|
+
if (useSettingsInsteadOfPreferences) {
|
|
3
|
+
document.getElementsByClassName('state-on')[0].innerText = "Passbolt-Safari-Extension’s extension is currently on. You can turn it off in the Extensions section of Safari Settings.";
|
|
4
|
+
document.getElementsByClassName('state-off')[0].innerText = "Passbolt-Safari-Extension’s extension is currently off. You can turn it on in the Extensions section of Safari Settings.";
|
|
5
|
+
document.getElementsByClassName('state-unknown')[0].innerText = "You can turn on Passbolt-Safari-Extension’s extension in the Extensions section of Safari Settings.";
|
|
6
|
+
document.getElementsByClassName('open-preferences')[0].innerText = "Quit and Open Safari Settings…";
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
if (typeof enabled === "boolean") {
|
|
10
|
+
document.body.classList.toggle(`state-on`, enabled);
|
|
11
|
+
document.body.classList.toggle(`state-off`, !enabled);
|
|
12
|
+
} else {
|
|
13
|
+
document.body.classList.remove(`state-on`);
|
|
14
|
+
document.body.classList.remove(`state-off`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function openPreferences() {
|
|
19
|
+
webkit.messageHandlers.controller.postMessage("open-preferences");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
document.querySelector("button.open-preferences").addEventListener("click", openPreferences);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
* {
|
|
2
|
+
-webkit-user-select: none;
|
|
3
|
+
-webkit-user-drag: none;
|
|
4
|
+
cursor: default;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
color-scheme: light dark;
|
|
9
|
+
|
|
10
|
+
--spacing: 20px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
html {
|
|
14
|
+
height: 100%;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
body {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
|
|
23
|
+
gap: var(--spacing);
|
|
24
|
+
margin: 0 calc(var(--spacing) * 2);
|
|
25
|
+
height: 100%;
|
|
26
|
+
|
|
27
|
+
font: -apple-system-short-body;
|
|
28
|
+
text-align: center;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
body:not(.state-on, .state-off) :is(.state-on, .state-off) {
|
|
32
|
+
display: none;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
body.state-on :is(.state-off, .state-unknown) {
|
|
36
|
+
display: none;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
body.state-off :is(.state-on, .state-unknown) {
|
|
40
|
+
display: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
button {
|
|
44
|
+
font-size: 1em;
|
|
45
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Passbolt - Open source password manager for teams
|
|
3
|
+
// Copyright (c) Passbolt SA
|
|
4
|
+
//
|
|
5
|
+
// This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
|
|
6
|
+
// Public License (AGPL) as published by the Free Software Foundation version 3.
|
|
7
|
+
//
|
|
8
|
+
// The name "Passbolt" is a registered trademark of Passbolt SA, and Passbolt SA hereby declines to grant a trademark
|
|
9
|
+
// license to "Passbolt" pursuant to the GNU Affero General Public License version 3 Section 7(e), without a separate
|
|
10
|
+
// agreement with Passbolt SA.
|
|
11
|
+
//
|
|
12
|
+
// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
13
|
+
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See GNU Affero General Public License for more details.
|
|
14
|
+
//
|
|
15
|
+
// You should have received a copy of the GNU Affero General Public License along with this program. If not,
|
|
16
|
+
// see GNU Affero General Public License v3 (http://www.gnu.org/licenses/agpl-3.0.html).
|
|
17
|
+
//
|
|
18
|
+
// @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
19
|
+
// @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
20
|
+
// @link https://www.passbolt.com Passbolt (tm)
|
|
21
|
+
// @since v1.0
|
|
22
|
+
//
|
|
23
|
+
|
|
24
|
+
import Cocoa
|
|
25
|
+
import SafariServices
|
|
26
|
+
import WebKit
|
|
27
|
+
|
|
28
|
+
let extensionBundleIdentifier = "com.passbolt.safari.Extension"
|
|
29
|
+
|
|
30
|
+
class ViewController: NSViewController, WKNavigationDelegate, WKScriptMessageHandler {
|
|
31
|
+
|
|
32
|
+
@IBOutlet var webView: WKWebView!
|
|
33
|
+
|
|
34
|
+
override func viewDidLoad() {
|
|
35
|
+
super.viewDidLoad()
|
|
36
|
+
|
|
37
|
+
self.webView.navigationDelegate = self
|
|
38
|
+
|
|
39
|
+
self.webView.configuration.userContentController.add(self, name: "controller")
|
|
40
|
+
|
|
41
|
+
self.webView.loadFileURL(Bundle.main.url(forResource: "Main", withExtension: "html")!, allowingReadAccessTo: Bundle.main.resourceURL!)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
|
|
45
|
+
SFSafariExtensionManager.getStateOfSafariExtension(withIdentifier: extensionBundleIdentifier) { (state, error) in
|
|
46
|
+
guard let state = state, error == nil else {
|
|
47
|
+
// Insert code to inform the user that something went wrong.
|
|
48
|
+
return
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
DispatchQueue.main.async {
|
|
52
|
+
if #available(macOS 13, *) {
|
|
53
|
+
webView.evaluateJavaScript("show(\(state.isEnabled), true)")
|
|
54
|
+
} else {
|
|
55
|
+
webView.evaluateJavaScript("show(\(state.isEnabled), false)")
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
|
|
62
|
+
guard let body = message.body as? String, body == "open-preferences" else {
|
|
63
|
+
return
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
SFSafariApplication.showPreferencesForExtension(withIdentifier: extensionBundleIdentifier) { error in
|
|
67
|
+
DispatchQueue.main.async {
|
|
68
|
+
NSApplication.shared.terminate(nil)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>ITSAppUsesNonExemptEncryption</key>
|
|
6
|
+
<false/>
|
|
7
|
+
<key>NSAppTransportSecurity</key>
|
|
8
|
+
<dict>
|
|
9
|
+
<key>NSAllowsArbitraryLoads</key>
|
|
10
|
+
<true/>
|
|
11
|
+
</dict>
|
|
12
|
+
<key>NSExtension</key>
|
|
13
|
+
<dict>
|
|
14
|
+
<key>NSExtensionPointIdentifier</key>
|
|
15
|
+
<string>com.apple.Safari.web-extension</string>
|
|
16
|
+
<key>NSExtensionPrincipalClass</key>
|
|
17
|
+
<string>$(PRODUCT_MODULE_NAME).SafariWebExtensionHandler</string>
|
|
18
|
+
</dict>
|
|
19
|
+
</dict>
|
|
20
|
+
</plist>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>com.apple.security.app-sandbox</key>
|
|
6
|
+
<true/>
|
|
7
|
+
<key>com.apple.security.files.downloads.read-write</key>
|
|
8
|
+
<true/>
|
|
9
|
+
<key>com.apple.security.files.user-selected.read-only</key>
|
|
10
|
+
<true/>
|
|
11
|
+
</dict>
|
|
12
|
+
</plist>
|