From 73485e8be4f1143a8ef861dce95bd1d4e6ac8757 Mon Sep 17 00:00:00 2001 From: ilyaigpetrov Date: Sat, 17 Oct 2020 10:25:16 +0000 Subject: [PATCH] Open howto when extension needs access to private windows --- .../src/extension-common/00-init-apis.js | 9 +++++++++ .../src/extension-common/11-error-handlers-api.js | 13 ++----------- ...37-sync-pac-script-with-pac-provider-api.tmpl.js | 8 ++++++++ .../extension-common/_locales/en/messages.tmpl.json | 3 +++ .../extension-common/_locales/ru/messages.tmpl.json | 3 +++ 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/00-init-apis.js b/extensions/chromium/runet-censorship-bypass/src/extension-common/00-init-apis.js index e0f4881..f4529d7 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/00-init-apis.js +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/00-init-apis.js @@ -232,6 +232,15 @@ console.log('Extension started.'); }, + openAndFocus(url) { + + chrome.tabs.create( + {url: url}, + (tab) => chrome.windows.update(tab.windowId, {focused: true}) + ); + + }, + }; const max = 2**16; diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/11-error-handlers-api.js b/extensions/chromium/runet-censorship-bypass/src/extension-common/11-error-handlers-api.js index 86b9ab4..a0a55dc 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/11-error-handlers-api.js +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/11-error-handlers-api.js @@ -53,15 +53,6 @@ }; - const openAndFocus = function openAndFocus(url) { - - chrome.tabs.create( - {url: url}, - (tab) => chrome.windows.update(tab.windowId, {focused: true}) - ); - - }; - const ifPrefix = 'if-on-'; const extName = chrome.runtime.getManifest().name; const extVersion = window.apis.version.build; @@ -75,7 +66,7 @@ const errors = err ? {[type]: err} : this.idToError; const json = JSON.stringify(errors, errorJsonReplacer, 0); - openAndFocus( + window.utils.openAndFocus( 'https://rebrand.ly/ac-error/?json=' + encodeURIComponent(json) + (type ? '&type=' + encodeURIComponent(type) : '') + '&version=' + chrome.runtime.getManifest().version + @@ -242,7 +233,7 @@ chrome.notifications.clear(notId); if(notId === 'no-control') { - return openAndFocus( + return window.utils.openAndFocus( window.utils.messages.searchSettingsForUrl('proxy') ); } diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/37-sync-pac-script-with-pac-provider-api.tmpl.js b/extensions/chromium/runet-censorship-bypass/src/extension-common/37-sync-pac-script-with-pac-provider-api.tmpl.js index 9896770..e78519e 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/37-sync-pac-script-with-pac-provider-api.tmpl.js +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/37-sync-pac-script-with-pac-provider-api.tmpl.js @@ -105,6 +105,14 @@ chrome.proxy.settings.set( { value: config }, chromified((err) => { if (err) { + if (err.message === 'proxy.settings requires private browsing permission.') { + window.utils.openAndFocus('https://rebrand.ly/ac-allow-private-windows'); + clarifyThen( + chrome.i18n.getMessage('AllowExtensionToRunInPrivateWindows'), + cb, + )(err); + return; + } return cb(err); } handlers.updateControlState( () => { diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/_locales/en/messages.tmpl.json b/extensions/chromium/runet-censorship-bypass/src/extension-common/_locales/en/messages.tmpl.json index c2951a1..890dd8d 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/_locales/en/messages.tmpl.json +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/_locales/en/messages.tmpl.json @@ -136,5 +136,8 @@ }, "noOwnProxiesError": { "message": "Proxying of OWN sites is possible only via OWN proxies. No own proxies found that satisfy your requirements." + }, + "AllowExtensionToRunInPrivateWindows": { + "message": "For the extension to work it is required to allow it to run in private windows, see howto." } } diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/_locales/ru/messages.tmpl.json b/extensions/chromium/runet-censorship-bypass/src/extension-common/_locales/ru/messages.tmpl.json index 15f8bb3..df185f4 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/_locales/ru/messages.tmpl.json +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/_locales/ru/messages.tmpl.json @@ -136,5 +136,8 @@ }, "noOwnProxiesError": { "message": "Проксировать СВОИ сайты можно только при наличии СВОИХ прокси. Нет своих прокси, удовлетворяющих вашим требованиям." + }, + "AllowExtensionToRunInPrivateWindows": { + "message": "Для работы расширения необходимо разрешить запуск в приватных окнах, см. инструкции." } }