diff --git a/src/background/runtime.background.ts b/src/background/runtime.background.ts index 22e3ff485678..5a25828aa257 100755 --- a/src/background/runtime.background.ts +++ b/src/background/runtime.background.ts @@ -138,6 +138,7 @@ export default class RuntimeBackground { await this.main.collectPageDetailsForContentScript(sender.tab, msg.sender, sender.frameId); break; case 'bgAnswerMenuRequest': + console.log('received bgAnswerMenuRequest') switch (msg.subcommand) { case 'getCiphersForTab': const logins = await this.cipherService.getAllDecryptedForUrl(sender.tab.url, null); @@ -881,6 +882,7 @@ export default class RuntimeBackground { } private async loggedinAndUnlocked(command: string) { + console.log('loggedinAndUnlocked') await this.main.setIcon(); await this.main.refreshBadgeAndMenu(false); this.notificationsService.init(this.environmentService); diff --git a/src/browser/browserApi.ts b/src/browser/browserApi.ts index 48ee5fa4b50b..ae38b790cac7 100644 --- a/src/browser/browserApi.ts +++ b/src/browser/browserApi.ts @@ -14,7 +14,7 @@ export class BrowserApi { static async getTabFromCurrentWindowId(): Promise { return await BrowserApi.tabsQueryFirst({ active: true, - windowId: chrome.windows.WINDOW_ID_CURRENT, + windowId: browser.windows.WINDOW_ID_CURRENT, }); } @@ -37,7 +37,7 @@ export class BrowserApi { static async tabsQuery(options: any): Promise { return new Promise(resolve => { - chrome.tabs.query(options, (tabs: any[]) => { + browser.tabs.query(options).then((tabs: any[]) => { resolve(tabs); }); }); @@ -65,13 +65,15 @@ export class BrowserApi { } static async tabSendMessage(tab: any, obj: any, options: any = null): Promise { + console.log('tabSendMessage') if (!tab || !tab.id) { return; } + console.log('tabSendMessage',tab.id, obj, options) return new Promise(resolve => { - chrome.tabs.sendMessage(tab.id, obj, options, () => { - if (chrome.runtime.lastError) { + browser.tabs.sendMessage(tab.id, obj, options).then(() => { + if (browser.runtime.lastError) { // Some error happened } resolve(); @@ -80,23 +82,24 @@ export class BrowserApi { } static getBackgroundPage(): any { - return chrome.extension.getBackgroundPage(); + return browser.extension.getBackgroundPage(); } static getApplicationVersion(): string { - return chrome.runtime.getManifest().version; + return browser.runtime.getManifest().version; } static async isPopupOpen(): Promise { - return Promise.resolve(chrome.extension.getViews({ type: 'popup' }).length > 0); + return Promise.resolve(browser.extension.getViews({ type: 'popup' }).length > 0); } static createNewTab(url: string, extensionPage: boolean = false, active: boolean = true) { - chrome.tabs.create({ url: url, active: active }); + browser.tabs.create({ url: url, active: active }); } static messageListener(name: string, callback: (message: any, sender: any, response: any) => void) { - chrome.runtime.onMessage.addListener((msg: any, sender: any, response: any) => { + browser.runtime.onMessage.addListener((msg: any, sender: any, response: any) => { + console.log('messageListenerFrombrowserApi', msg) callback(msg, sender, response); }); } @@ -146,19 +149,19 @@ export class BrowserApi { } static getUILanguage(win: Window) { - return chrome.i18n.getUILanguage(); + return browser.i18n.getUILanguage(); } static reloadExtension(win: Window) { if (win != null) { return win.location.reload(true); } else { - return chrome.runtime.reload(); + return browser.runtime.reload(); } } static reloadOpenWindows() { - const views = chrome.extension.getViews() as Window[]; + const views = browser.extension.getViews() as Window[]; views.filter(w => w.location.href != null).forEach(w => { w.location.reload(); }); diff --git a/src/browser/safariApp.ts b/src/browser/safariApp.ts index 80930a3d5728..4382f11f1032 100644 --- a/src/browser/safariApp.ts +++ b/src/browser/safariApp.ts @@ -2,20 +2,18 @@ import { BrowserApi } from './browserApi'; export class SafariApp { static sendMessageToApp(command: string, data: any = null, resolveNow = false): Promise { + console.log('sendMessageToApp',command, data) if (!BrowserApi.isSafariApi) { + console.log('resolbe null') return Promise.resolve(null); } - return new Promise(resolve => { - const now = new Date(); - const messageId = now.getTime().toString() + '_' + Math.floor(Math.random() * Number.MAX_SAFE_INTEGER); - (browser as any).runtime.sendNativeMessage('com.bitwarden.desktop', { - id: messageId, - command: command, - data: data, - responseData: null, - }, (response: any) => { - resolve(response); - }); + const now = new Date(); + const messageId = now.getTime().toString() + '_' + Math.floor(Math.random() * Number.MAX_SAFE_INTEGER); + return browser.runtime.sendNativeMessage('io.cozy.pass.desktop', { + id: messageId, + command: command, + data: data, + responseData: null, }); } } diff --git a/src/content/menuCtrler.js b/src/content/menuCtrler.js index 5210c15e7983..bb2349fa3bb5 100755 --- a/src/content/menuCtrler.js +++ b/src/content/menuCtrler.js @@ -239,6 +239,7 @@ function _onClick(event) { } else { show(this) } + console.log('end _onCliek') } function _onKeyDown(event) { @@ -291,6 +292,7 @@ function _onKeyDown(event) { // function show(targetEl) { // console.log('menuCtrler.show() '); + console.log('SHOW()') if (state.isFrozen) return if (!state.isHidden && (state.lastFocusedEl === targetEl)) return state.lastFocusedEl = targetEl @@ -431,7 +433,7 @@ function moveSelection(n) { } state.selectedCipher = newCipherNode - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', subcommand : 'menuMoveSelection', targetCipher : newCipherNode.data.id, @@ -457,7 +459,7 @@ function getPossibleTypesForField(fieldEl) { /* --------------------------------------------------------------------- */ // Submit the currently selected cypher for autofill function submit() { - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', subcommand : 'fillFormWithCipher', sender : 'menuCtrler', @@ -470,7 +472,7 @@ menuCtrler.submit = submit /* --------------------------------------------------------------------- */ // autofill the focused field with the detail of the currently selected cypher function submitDetail() { - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', subcommand : 'askMenuTofillFieldWithData', sender : 'menuCtrler', @@ -520,6 +522,7 @@ menuCtrler.setCiphers = setCiphers // Run this function so that menuCtrler.state.selectedCipher corresponds // to the initial selection within the menu function selectFirstCipherToSuggestFor(fieldEl) { + console.log('selectFirstCipherToSuggestFor') if (state.isHidden) return if (!ciphers || ciphers._length == 0) return if (!fieldEl) return @@ -576,13 +579,13 @@ function _setIframeURLforMenuType(menuType, isPinLocked, isLocked) { const hash = '#' + encodeURIComponent(JSON.stringify(state.iFrameHash)); const rand = '?' + Math.floor((Math.random()*1000000)+1) if (menuType === 'autofillMenu') { - menuEl.src = chrome.runtime.getURL('inPageMenu/menu.html' + rand) + hash + menuEl.src = browser.runtime.getURL('inPageMenu/menu.html' + rand) + hash } else if (menuType === 'loginMenu') { let searchParams = '' if (isPinLocked) searchParams = 'isPinLocked=true' if (isLocked) searchParams += 'isLocked=true' - if (searchParams) searchParams = '?' + searchParams - menuEl.src = chrome.runtime.getURL('inPageMenu/loginMenu.html' + searchParams + rand) + hash + if (searchParams) searchParams = '&' + searchParams + menuEl.src = browser.runtime.getURL('inPageMenu/loginMenu.html' + rand + searchParams) + hash } } @@ -594,7 +597,7 @@ function _forceIframeRefresh() { if (!menuEl || !menuEl.src) return const url = new URL(menuEl.src) const rand = '?' + Math.floor((Math.random()*1000000)+1) - menuEl.src = url.origin + url.pathname + url.search + rand + url.hash + menuEl.src = url.origin + url.pathname + rand + url.search + url.hash } @@ -630,17 +633,21 @@ function _updateHash() { // send informations to the iframe through the url's hash (no reload) // the hash is a Json string function _setApplyFadeInUrl(doApply, fieldTypes) { + console.log('_setApplyFadeInUrl', doApply, fieldTypes) if (!menuEl || !menuEl.src) return const url = new URL(menuEl.src) + console.log('url', url) if (doApply) { fieldTypes = {...{login: false, identity: false, card: false, fieldFormat:false},...fieldTypes} + console.log('setHash') state.iFrameHash = {...state.iFrameHash, ...fieldTypes, applyFadeIn: true} - menuEl.src = url.origin + url.pathname + url.search + '#' + - encodeURIComponent(JSON.stringify(state.iFrameHash)) + console.log('end setHash') + menuEl.src = url.origin + url.pathname + url.search + '#' +'%7B%22arrowD%22%3A0%2C%22hostFrameId%22%3A0%7D' + // encodeURIComponent(JSON.stringify(state.iFrameHash)) } else { state.iFrameHash.applyFadeIn = false - menuEl.src = url.origin + url.pathname + url.search + '#' + - encodeURIComponent(JSON.stringify(state.iFrameHash)) + menuEl.src = url.origin + url.pathname + url.search + '#' + '%7B%22arrowD%22%3A0%2C%22hostFrameId%22%3A0%7D' + // encodeURIComponent(JSON.stringify(state.iFrameHash)) } } diff --git a/src/inPageMenu/loginMenu.js b/src/inPageMenu/loginMenu.js index 2db67e1c00fc..7760ccb80aa6 100755 --- a/src/inPageMenu/loginMenu.js +++ b/src/inPageMenu/loginMenu.js @@ -36,7 +36,7 @@ var panel , document.addEventListener('DOMContentLoaded', () => { // 0- ask rememberedCozyUrl - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', subcommand: 'getRememberedCozyUrl', sender : 'loginMenu.js', @@ -84,20 +84,21 @@ document.addEventListener('DOMContentLoaded', () => { }, false); } else { // retrieve i18n values and set elements textcontent - const i18nGetMessage = chrome.i18n.getMessage - urlLabelTxt = i18nGetMessage('cozyUrl' ) - twoFaLabelTxt = i18nGetMessage('verificationCode' ) - visiPwdBtn.title = i18nGetMessage('toggleVisibility' ) - visi2faBtn.title = i18nGetMessage('toggleVisibility' ) - submitBtn.textContent = i18nGetMessage('login' ) + urlLabelTxt = browser.i18n.getMessage('cozyUrl' ) + twoFaLabelTxt = browser.i18n.getMessage('verificationCode' ) + visiPwdBtn.title = browser.i18n.getMessage('toggleVisibility' ) + visi2faBtn.title = browser.i18n.getMessage('toggleVisibility' ) + submitBtn.textContent = browser.i18n.getMessage('login' ) if (isPinLocked) { - title.textContent = i18nGetMessage('unlockWithPin' ) - pwdLabelTxt = i18nGetMessage('pin' ) + title.textContent = browser.i18n.getMessage('unlockWithPin' ) + pwdLabelTxt = browser.i18n.getMessage('pin' ) urlInput.disabled = true document.getElementById('url-row').classList.add('disabled') } else { - title.textContent = i18nGetMessage('loginInPageMenuTitle') - pwdLabelTxt = i18nGetMessage('masterPass' ) + title.textContent = browser.i18n.getMessage('loginInPageMenuTitle') + pwdLabelTxt = browser.i18n.getMessage('masterPass' ) + + console.log('title.textContent', browser.i18n.getMessage('loginInPageMenuTitle')) } } @@ -115,17 +116,19 @@ document.addEventListener('DOMContentLoaded', () => { }); // 8- listen to the commands sent by the addon - chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) { + console.log('addListener') + browser.runtime.onMessage.addListener(function (msg, sender, sendResponse) { + console.log('Received message ', msg) // console.log('loginMenu heared msg', msg); if (msg.command !== 'menuAnswerRequest') return switch (msg.subcommand) { case 'loginNOK': // console.log("loginNOK heard in loginInPageMenu"); - setError(chrome.i18n.getMessage('inPageMenuLoginError')) + setError(browser.i18n.getMessage('inPageMenuLoginError')) break; case '2faCheckNOK': // console.log("2faCheckNOK heard in loginInPageMenu"); - setError(chrome.i18n.getMessage('inPageMenuLogin2FACheckError')) + setError(browser.i18n.getMessage('inPageMenuLogin2FACheckError')) adjustMenuHeight() break; case 'setRememberedCozyUrl': @@ -189,7 +192,7 @@ document.addEventListener('DOMContentLoaded', () => { function adjustMenuHeight() { if (lastSentHeight === panel.offsetHeight) return lastSentHeight = panel.offsetHeight - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest' , subcommand: 'setMenuHeight' , height : lastSentHeight , @@ -227,7 +230,7 @@ async function submit() { subcommand = 'unlock' } - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', subcommand: subcommand , sender : 'loginMenu.js' , @@ -243,9 +246,9 @@ async function submit() { ] if (translatableMessages.includes(e.message)) { - setError(chrome.i18n.getMessage(e.message)) + setError(browser.i18n.getMessage(e.message)) } else { - setError(chrome.i18n.getMessage('errorOccurred')) + setError(browser.i18n.getMessage('errorOccurred')) } } } @@ -262,7 +265,7 @@ async function submit2fa() { return; } - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', subcommand: '2faCheck' , sender : 'loginMenu.js' , @@ -391,7 +394,7 @@ function setFocusOnEmptyField(){ /* --------------------------------------------------------------------- */ // Request the menu controler to close the iframe of the menu function close(force) { - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', force : force, subcommand: 'closeMenu' , diff --git a/src/inPageMenu/menu.js b/src/inPageMenu/menu.js index 1f484f3fe695..97d29c156427 100755 --- a/src/inPageMenu/menu.js +++ b/src/inPageMenu/menu.js @@ -71,13 +71,13 @@ document.addEventListener('DOMContentLoaded', () => { // }, false); } else { // retrieve i18n values and set elements textcontent - lang = chrome.i18n.getUILanguage(); - i18nGetMessage = chrome.i18n.getMessage - titleEl.textContent = i18nGetMessage('inPageMenuSelectAnAccount') + lang = browser.i18n.getUILanguage(); + titleEl.textContent = browser.i18n.getMessage('inPageMenuSelectAnAccount') } // 3- listen to the commands and ciphers sent by the addon - chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) { + browser.runtime.onMessage.addListener(function (msg, sender, sendResponse) { + console.log('messageListenerFromMenu', msg) /* @override by Cozy : this log is very useful for reverse engineering the code, keep it for tests console.log('menu.js HEARD : ', { @@ -134,7 +134,7 @@ document.addEventListener('DOMContentLoaded', () => { }) // 4- request ciphers to the background scripts - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', subcommand: 'getCiphersForTab' , sender : 'menu.js' , @@ -143,7 +143,7 @@ document.addEventListener('DOMContentLoaded', () => { // 5- listen to click on the close menu button const closeIcon = document.querySelector('.close-icon') closeIcon.addEventListener('click',()=>{ - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', subcommand: 'closeMenu' , force : true , @@ -174,7 +174,7 @@ document.addEventListener('DOMContentLoaded', () => { /* --------------------------------------------------------------------- */ // Request the background to autofill the page with a cipher function requestFormFillingWithCipher(cipherId) { - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest', subcommand: 'fillFormWithCipher' , cipherId : cipherId , @@ -186,7 +186,7 @@ function requestFormFillingWithCipher(cipherId) { /* --------------------------------------------------------------------- */ // Request the background to autofill the page with a cipher function requestFieldFillingWithData(dataTxt) { - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest' , subcommand: 'fieldFillingWithData' , frameId : hostFrameId , @@ -328,7 +328,7 @@ function selectFirstVisibleRow() { function adjustMenuHeight() { if (lastSentHeight === panel.offsetHeight) return lastSentHeight = panel.offsetHeight - chrome.runtime.sendMessage({ + browser.runtime.sendMessage({ command : 'bgAnswerMenuRequest' , subcommand: 'setMenuHeight' , height : lastSentHeight , diff --git a/src/manifest.json b/src/manifest.json index c384606d2ef9..c5cb0fdfb4c1 100755 --- a/src/manifest.json +++ b/src/manifest.json @@ -82,6 +82,7 @@ }, "permissions": [ "tabs", + "activeTab", "contextMenus", "storage", "unlimitedStorage", diff --git a/src/safari/desktop.xcodeproj/project.pbxproj b/src/safari/desktop.xcodeproj/project.pbxproj index fc05760fc99b..4cf862125079 100644 --- a/src/safari/desktop.xcodeproj/project.pbxproj +++ b/src/safari/desktop.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 2C24FE7E2757BFA5003CB360 /* inPageMenu in Resources */ = {isa = PBXBuildFile; fileRef = 2C24FE7D2757BFA5003CB360 /* inPageMenu */; }; 55E0374D2577FA6B00979016 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E0374C2577FA6B00979016 /* AppDelegate.swift */; }; 55E037502577FA6B00979016 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 55E0374E2577FA6B00979016 /* Main.storyboard */; }; 55E037522577FA6B00979016 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E037512577FA6B00979016 /* ViewController.swift */; }; @@ -50,6 +51,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2C24FE7D2757BFA5003CB360 /* inPageMenu */ = {isa = PBXFileReference; lastKnownFileType = folder; name = inPageMenu; path = ../../../build/inPageMenu; sourceTree = ""; }; 5508DD7926051B5900A85C58 /* libswiftAppKit.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libswiftAppKit.tbd; path = usr/lib/swift/libswiftAppKit.tbd; sourceTree = SDKROOT; }; 55E037482577FA6B00979016 /* desktop.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = desktop.app; sourceTree = BUILT_PRODUCTS_DIR; }; 55E0374B2577FA6B00979016 /* desktop.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = desktop.entitlements; sourceTree = ""; }; @@ -148,6 +150,7 @@ 55E0376F2577FA6F00979016 /* Resources */ = { isa = PBXGroup; children = ( + 2C24FE7D2757BFA5003CB360 /* inPageMenu */, 55E037702577FA6F00979016 /* popup */, 55E037712577FA6F00979016 /* background.js */, 55E037722577FA6F00979016 /* images */, @@ -258,6 +261,7 @@ buildActionMask = 2147483647; files = ( 55E037812577FA6F00979016 /* _locales in Resources */, + 2C24FE7E2757BFA5003CB360 /* inPageMenu in Resources */, 55E0377B2577FA6F00979016 /* images in Resources */, 55E0377F2577FA6F00979016 /* manifest.json in Resources */, 55E037802577FA6F00979016 /* background.html in Resources */, @@ -435,7 +439,7 @@ CODE_SIGN_ENTITLEMENTS = safari/safari.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = LTZ2PFU5D6; + DEVELOPMENT_TEAM = 3AKXFMV43J; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = safari/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -444,7 +448,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - PRODUCT_BUNDLE_IDENTIFIER = com.bitwarden.desktop.safari; + PRODUCT_BUNDLE_IDENTIFIER = io.cozy.pass.desktop.safari; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; @@ -459,7 +463,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = LTZ2PFU5D6; + DEVELOPMENT_TEAM = 3AKXFMV43J; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = safari/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -468,7 +472,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - PRODUCT_BUNDLE_IDENTIFIER = com.bitwarden.desktop.safari; + PRODUCT_BUNDLE_IDENTIFIER = io.cozy.pass.desktop.safari; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; @@ -484,7 +488,7 @@ CODE_SIGN_ENTITLEMENTS = desktop/desktop.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = LTZ2PFU5D6; + DEVELOPMENT_TEAM = 3AKXFMV43J; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = desktop/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -492,7 +496,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - PRODUCT_BUNDLE_IDENTIFIER = com.bitwarden.desktop; + PRODUCT_BUNDLE_IDENTIFIER = io.cozy.pass.desktop; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; @@ -508,7 +512,7 @@ CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = LTZ2PFU5D6; + DEVELOPMENT_TEAM = 3AKXFMV43J; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = desktop/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -516,7 +520,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - PRODUCT_BUNDLE_IDENTIFIER = com.bitwarden.desktop; + PRODUCT_BUNDLE_IDENTIFIER = io.cozy.pass.desktop; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; diff --git a/src/safari/desktop/ViewController.swift b/src/safari/desktop/ViewController.swift index fbda5decf85a..f626d7e6d74c 100644 --- a/src/safari/desktop/ViewController.swift +++ b/src/safari/desktop/ViewController.swift @@ -3,7 +3,7 @@ import SafariServices.SFSafariApplication import SafariServices.SFSafariExtensionManager let appName = "desktop" -let extensionBundleIdentifier = "com.bitwarden.desktop.Extension" +let extensionBundleIdentifier = "io.cozy.pass.desktop.Extension" class ViewController: NSViewController { diff --git a/src/safari/safari/Info.plist b/src/safari/safari/Info.plist index fa42edeccca7..c357ac621824 100755 --- a/src/safari/safari/Info.plist +++ b/src/safari/safari/Info.plist @@ -35,7 +35,7 @@ A secure and free password manager for all of your devices. SFSafariAppExtensionBundleIdentifiersToReplace - com.bitwarden.desktop.safari + io.cozy.pass.desktop.safari diff --git a/src/safari/safari/safari.entitlements b/src/safari/safari/safari.entitlements index a0463869a929..85c03d7b48aa 100644 --- a/src/safari/safari/safari.entitlements +++ b/src/safari/safari/safari.entitlements @@ -8,5 +8,7 @@ com.apple.security.network.client + com.apple.security.network.server +