Created
August 14, 2017 21:08
-
-
Save ianb/586620fb218b9f0b4aa1e0899f19770e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/browser/extensions/screenshots/bootstrap.js b/browser/extensions/screenshots/bootstrap.js | |
index d252588..800ad66 100644 | |
--- a/browser/extensions/screenshots/bootstrap.js | |
+++ b/browser/extensions/screenshots/bootstrap.js | |
@@ -11,12 +11,18 @@ const { interfaces: Ci, utils: Cu } = Components; | |
Cu.import("resource://gre/modules/XPCOMUtils.jsm"); | |
XPCOMUtils.defineLazyModuleGetter(this, "AddonManager", | |
"resource://gre/modules/AddonManager.jsm"); | |
+XPCOMUtils.defineLazyModuleGetter(this, "AppConstants", | |
+ "resource://gre/modules/AppConstants.jsm"); | |
XPCOMUtils.defineLazyModuleGetter(this, "Console", | |
"resource://gre/modules/Console.jsm"); | |
-XPCOMUtils.defineLazyModuleGetter(this, "Services", | |
- "resource://gre/modules/Services.jsm"); | |
+XPCOMUtils.defineLazyModuleGetter(this, "CustomizableUI", | |
+ "resource:///modules/CustomizableUI.jsm"); | |
XPCOMUtils.defineLazyModuleGetter(this, "LegacyExtensionsUtils", | |
"resource://gre/modules/LegacyExtensionsUtils.jsm"); | |
+XPCOMUtils.defineLazyModuleGetter(this, "PageActions", | |
+ "resource:///modules/PageActions.jsm"); | |
+XPCOMUtils.defineLazyModuleGetter(this, "Services", | |
+ "resource://gre/modules/Services.jsm"); | |
let addonResourceURI; | |
let appStartupDone; | |
@@ -59,7 +65,59 @@ const appStartupObserver = { | |
} | |
} | |
+const LibraryButton = { | |
+ ITEM_ID: "appMenu-library-screenshots", | |
+ | |
+ init(webExtension) { | |
+ this._initialized = true; | |
+ let permissionPages = [...webExtension.extension.permissions].filter(p => (/^https?:\/\//i).test(p)); | |
+ this.PAGE_TO_OPEN = permissionPages.length ? permissionPages[0].replace(/\*$/, "") : "https://screenshots.firefox.com/"; | |
+ this.PAGE_TO_OPEN += "shots"; | |
+ this.ICON_URL = webExtension.extension.getURL("icons/icon-16-v2.svg"); | |
+ this.ICON_URL_2X = webExtension.extension.getURL("icons/icon-32-v2.svg"); | |
+ this.LABEL = webExtension.extension.localizeMessage("libraryLabel"); | |
+ CustomizableUI.addListener(this); | |
+ for (let win of CustomizableUI.windows) { | |
+ this.onWindowOpened(win); | |
+ } | |
+ }, | |
+ | |
+ uninit() { | |
+ if (!this._initialized) { | |
+ return; | |
+ } | |
+ for (let win of CustomizableUI.windows) { | |
+ let item = win.document.getElementById(this.ITEM_ID); | |
+ if (item) { | |
+ item.remove(); | |
+ } | |
+ } | |
+ CustomizableUI.removeListener(this); | |
+ }, | |
+ | |
+ onWindowOpened(win) { | |
+ let libraryViewInsertionPoint = win.document.getElementById("appMenu-library-remotetabs-button"); | |
+ // If the library view doesn't exist (on non-photon builds, for instance), | |
+ // this will be null, and we bail out early. | |
+ if (!libraryViewInsertionPoint) { | |
+ return; | |
+ } | |
+ let parent = libraryViewInsertionPoint.parentNode; | |
+ let {nextSibling} = libraryViewInsertionPoint; | |
+ let item = win.document.createElement("toolbarbutton"); | |
+ item.className = "subviewbutton subviewbutton-iconic"; | |
+ item.addEventListener("command", () => win.openUILinkIn(this.PAGE_TO_OPEN, "tab")); | |
+ item.id = this.ITEM_ID; | |
+ let iconURL = win.devicePixelRatio >= 1.1 ? this.ICON_URL_2X : this.ICON_URL; | |
+ item.setAttribute("image", iconURL); | |
+ item.setAttribute("label", this.LABEL); | |
+ | |
+ parent.insertBefore(item, nextSibling); | |
+ }, | |
+}; | |
+ | |
const APP_STARTUP = 1; | |
+const APP_SHUTDOWN = 2; | |
let startupReason; | |
function startup(data, reason) { // eslint-disable-line no-unused-vars | |
@@ -81,6 +139,11 @@ function shutdown(data, reason) { // eslint-disable-line no-unused-vars | |
id: ADDON_ID, | |
resourceURI: addonResourceURI | |
}); | |
+ // Immediately exit if Firefox is exiting, #3323 | |
+ if (reason === APP_SHUTDOWN) { | |
+ stop(webExtension, reason); | |
+ return; | |
+ } | |
// Because the prefObserver is unregistered above, this _should_ terminate the promise chain. | |
appStartupPromise = appStartupPromise.then(() => { stop(webExtension, reason); }); | |
} | |
@@ -113,7 +176,8 @@ function handleStartup() { | |
function start(webExtension) { | |
return webExtension.startup(startupReason).then((api) => { | |
api.browser.runtime.onMessage.addListener(handleMessage); | |
- return Promise.resolve(null); | |
+ LibraryButton.init(webExtension); | |
+ initPhotonPageAction(api); | |
}).catch((err) => { | |
// The startup() promise will be rejected if the webExtension was | |
// already started (a harmless error), or if initializing the | |
@@ -126,6 +190,13 @@ function start(webExtension) { | |
} | |
function stop(webExtension, reason) { | |
+ if (reason != APP_SHUTDOWN) { | |
+ LibraryButton.uninit(); | |
+ if (photonPageAction) { | |
+ photonPageAction.remove(); | |
+ photonPageAction = null; | |
+ } | |
+ } | |
return Promise.resolve(webExtension.shutdown(reason)); | |
} | |
@@ -151,3 +222,86 @@ function handleMessage(msg, sender, sendReply) { | |
return true; | |
} | |
} | |
+ | |
+let photonPageAction; | |
+ | |
+// If the current Firefox version supports Photon (57 and later), this sets up | |
+// a Photon page action and removes the UI for the WebExtension browser action. | |
+// Does nothing otherwise. Ideally, in the future, WebExtension page actions | |
+// and Photon page actions would be one in the same, but they aren't right now. | |
+function initPhotonPageAction(api) { | |
+ // The MOZ_PHOTON_THEME ifdef got removed, but we need to support 55 and 56 as well, | |
+ // so check if the property exists *and* is false before bailing. | |
+ if (typeof AppConstants.MOZ_PHOTON_THEME != "undefined" && !AppConstants.MOZ_PHOTON_THEME) { | |
+ // Photon not supported. Use the WebExtension's browser action. | |
+ return; | |
+ } | |
+ | |
+ let id = "screenshots"; | |
+ let port = null; | |
+ let baseIconPath = addonResourceURI.spec + "webextension/"; | |
+ | |
+ let {Management: {global: {tabTracker}}} = Cu.import("resource://gre/modules/Extension.jsm", {}); | |
+ | |
+ // Make the page action. | |
+ photonPageAction = PageActions.actionForID(id) || PageActions.addAction(new PageActions.Action({ | |
+ id, | |
+ title: "Take a Screenshot", | |
+ iconURL: baseIconPath + "icons/icon-32-v2.svg", | |
+ _insertBeforeActionID: null, | |
+ onCommand(event, buttonNode) { | |
+ if (port) { | |
+ let browserWin = buttonNode.ownerGlobal; | |
+ port.postMessage({ | |
+ type: "click", | |
+ tab: { | |
+ url: browserWin.gBrowser.selectedBrowser.currentURI.spec, | |
+ id: tabTracker.getId(browserWin.gBrowser.selectedTab), | |
+ }, | |
+ }); | |
+ } | |
+ }, | |
+ })); | |
+ | |
+ // Remove the navbar button of the WebExtension's browser action. | |
+ let cuiWidgetID = "screenshots_mozilla_org-browser-action"; | |
+ CustomizableUI.addListener({ | |
+ onWidgetAfterCreation(wid, aArea) { | |
+ if (wid == cuiWidgetID) { | |
+ CustomizableUI.destroyWidget(cuiWidgetID); | |
+ CustomizableUI.removeListener(this); | |
+ } | |
+ }, | |
+ }); | |
+ | |
+ // Establish a port to the WebExtension side. | |
+ api.browser.runtime.onConnect.addListener((listenerPort) => { | |
+ if (listenerPort.name != "photonPageActionPort") { | |
+ return; | |
+ } | |
+ port = listenerPort; | |
+ port.onMessage.addListener((message) => { | |
+ switch (message.type) { | |
+ case "setProperties": | |
+ if (message.title) { | |
+ photonPageAction.title = message.title; | |
+ } | |
+ if (message.iconPath) { | |
+ photonPageAction.iconURL = baseIconPath + message.iconPath; | |
+ } | |
+ break; | |
+ default: | |
+ console.error("Unrecognized message:", message); | |
+ break; | |
+ } | |
+ }); | |
+ | |
+ // It's necessary to tell the WebExtension not to use its browser action, | |
+ // due to the CUI widget's removal. Otherwise Firefox's WebExtension | |
+ // machinery throws exceptions. | |
+ port.postMessage({ | |
+ type: "setUsePhotonPageAction", | |
+ value: true | |
+ }); | |
+ }); | |
+} | |
diff --git a/browser/extensions/screenshots/install.rdf b/browser/extensions/screenshots/install.rdf | |
index 15be526..b133814 100644 | |
--- a/browser/extensions/screenshots/install.rdf | |
+++ b/browser/extensions/screenshots/install.rdf | |
@@ -12,9 +12,9 @@ | |
</Description> | |
</em:targetApplication> | |
<em:type>2</em:type> | |
- <em:version>10.11.0</em:version> | |
+ <em:version>16.0.0</em:version> | |
<em:bootstrap>true</em:bootstrap> | |
- <em:homepageURL>https://pageshot.net/</em:homepageURL> | |
+ <em:homepageURL>https://screenshots.firefox.com/</em:homepageURL> | |
<em:multiprocessCompatible>true</em:multiprocessCompatible> | |
</Description> | |
</RDF> | |
diff --git a/browser/extensions/screenshots/moz.build b/browser/extensions/screenshots/moz.build | |
index 2e864b4..496c3ef 100644 | |
--- a/browser/extensions/screenshots/moz.build | |
+++ b/browser/extensions/screenshots/moz.build | |
@@ -360,6 +360,7 @@ FINAL_TARGET_FILES.features['[email protected]']["webextension"]["icons"] | |
'webextension/icons/icon-starred-32-v2.svg', | |
'webextension/icons/icon-welcome-face-without-eyes.svg', | |
'webextension/icons/menu-fullpage.svg', | |
+ 'webextension/icons/menu-myshot-white.svg', | |
'webextension/icons/menu-myshot.svg', | |
'webextension/icons/menu-visible.svg', | |
'webextension/icons/onboarding-1.png', | |
diff --git a/browser/extensions/screenshots/test/browser/browser_screenshots_ui_check.js b/browser/extensions/screenshots/test/browser/browser_screenshots_ui_check.js | |
index c5b2e4c..66710ea 100644 | |
--- a/browser/extensions/screenshots/test/browser/browser_screenshots_ui_check.js | |
+++ b/browser/extensions/screenshots/test/browser/browser_screenshots_ui_check.js | |
@@ -13,9 +13,12 @@ add_task(async function() { | |
await promiseScreenshotsReset(); | |
}); | |
+ let id = AppConstants.MOZ_PHOTON_THEME ? "pageAction-panel-screenshots" | |
+ : "screenshots_mozilla_org-browser-action"; | |
+ | |
await BrowserTestUtils.waitForCondition( | |
- () => document.getElementById("screenshots_mozilla_org-browser-action"), | |
+ () => document.getElementById(id), | |
"Screenshots button should be present", 100, 100); | |
- checkElements(true, ["screenshots_mozilla_org-browser-action"]); | |
+ checkElements(true, [id]); | |
}); | |
diff --git a/browser/extensions/screenshots/test/browser/head.js b/browser/extensions/screenshots/test/browser/head.js | |
index 2c3fa2f..8c99bea 100644 | |
--- a/browser/extensions/screenshots/test/browser/head.js | |
+++ b/browser/extensions/screenshots/test/browser/head.js | |
@@ -1,3 +1,5 @@ | |
+/* globals PageActions */ | |
+ | |
// Currently Screenshots is disabled in tests. We want these tests to work under | |
// either case that Screenshots is disabled or enabled on startup of the browser, | |
// and that at the end we're reset to the correct state. | |
@@ -13,16 +15,27 @@ function promiseScreenshotsEnabled() { | |
} | |
info("Screenshots is not enabled"); | |
return new Promise((resolve, reject) => { | |
- let listener = { | |
- onWidgetAfterCreation(widgetid) { | |
- if (widgetid == "screenshots_mozilla_org-browser-action") { | |
- info("screenshots_mozilla_org-browser-action button created"); | |
- CustomizableUI.removeListener(listener); | |
- resolve(false); | |
+ if (!AppConstants.MOZ_PHOTON_THEME) { | |
+ let listener = { | |
+ onWidgetAfterCreation(widgetid) { | |
+ if (widgetid == "screenshots_mozilla_org-browser-action") { | |
+ info("screenshots_mozilla_org-browser-action button created"); | |
+ CustomizableUI.removeListener(listener); | |
+ resolve(false); | |
+ } | |
} | |
} | |
+ CustomizableUI.addListener(listener); | |
+ } else { | |
+ let interval = setInterval(() => { | |
+ let action = PageActions.actionForID("screenshots"); | |
+ if (action) { | |
+ info("screenshots page action created"); | |
+ clearInterval(interval); | |
+ resolve(false); | |
+ } | |
+ }, 100); | |
} | |
- CustomizableUI.addListener(listener); | |
info("Set Screenshots disabled pref to false."); | |
Services.prefs.setBoolPref("extensions.screenshots.system-disabled", false); | |
}); | |
@@ -34,16 +47,27 @@ function promiseScreenshotsDisabled() { | |
return Promise.resolve(true); | |
} | |
return new Promise((resolve, reject) => { | |
- let listener = { | |
- onWidgetDestroyed(widgetid) { | |
- if (widgetid == "screenshots_mozilla_org-browser-action") { | |
- CustomizableUI.removeListener(listener); | |
- info("screenshots_mozilla_org-browser-action destroyed"); | |
- resolve(false); | |
+ if (!AppConstants.MOZ_PHOTON_THEME) { | |
+ let listener = { | |
+ onWidgetDestroyed(widgetid) { | |
+ if (widgetid == "screenshots_mozilla_org-browser-action") { | |
+ CustomizableUI.removeListener(listener); | |
+ info("screenshots_mozilla_org-browser-action destroyed"); | |
+ resolve(false); | |
+ } | |
} | |
} | |
+ CustomizableUI.addListener(listener); | |
+ } else { | |
+ let interval = setInterval(() => { | |
+ let action = PageActions.actionForID("screenshots"); | |
+ if (!action) { | |
+ info("screenshots page action removed"); | |
+ clearInterval(interval); | |
+ resolve(false); | |
+ } | |
+ }, 100); | |
} | |
- CustomizableUI.addListener(listener); | |
info("Set Screenshots disabled pref to true."); | |
Services.prefs.setBoolPref("extensions.screenshots.system-disabled", true); | |
}); | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ach/messages.json b/browser/extensions/screenshots/webextension/_locales/ach/messages.json | |
index 72bdf4b..d4510de 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ach/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ach/messages.json | |
@@ -106,8 +106,8 @@ | |
"tourDone": { | |
"message": "Otum" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Tic ki Firefox Screenshots nyuto, ni i yee $TERMSANDPRIVACYNOTICETERMSLINK$ ki $TERMSANDPRIVACYNOTICEPRIVACYLINK$ me tic me Cloud pa Firefox.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Tic ki Firefox Screenshots nyuto ni, i yee $TERMSANDPRIVACYNOTICETERMSLINK$ ki $TERMSANDPRIVACYNOTICEPRIVACYLINK$ wa.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ar/messages.json b/browser/extensions/screenshots/webextension/_locales/ar/messages.json | |
index 74b01a6..98ccdae 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ar/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ar/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "تمّ" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "استخدامك لخدمات «لقطات شاشة فَيَرفُكس» يعني موافقتك على $TERMSANDPRIVACYNOTICETERMSLINK$ و $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "استخدامك للقطات شاشة فَيَرفُكس يُعد موافقة على $TERMSANDPRIVACYNOTICETERMSLINK$ و $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "تنويه الخصوصية" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "لقطات الشاشة" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/az/messages.json b/browser/extensions/screenshots/webextension/_locales/az/messages.json | |
index afd71fb..f79dcfe 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/az/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/az/messages.json | |
@@ -112,7 +112,7 @@ | |
"tourDone": { | |
"message": "Tamamlandı" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
+ "termsAndPrivacyNotice2": { | |
"message": "Firefox Screenshots işlədərək $TERMSANDPRIVACYNOTICETERMSLINK$ və $TERMSANDPRIVACYNOTICEPRIVACYLINK$ ilə razılaşmış olursunuz.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Məxfilik Bildirişi" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Ekran Görüntüləri" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/be/messages.json b/browser/extensions/screenshots/webextension/_locales/be/messages.json | |
index 5d598f8..e7c51e6 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/be/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/be/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Гатова" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Выкарыстоўваючы Firefox Screenshots, вы згаджаецеся з $TERMSANDPRIVACYNOTICETERMSLINK$ і $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Выкарыстоўваючы Firefox Screenshots, вы згаджаецеся з нашымі $TERMSANDPRIVACYNOTICETERMSLINK$ і $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Паведамленнем аб прыватнасці" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Скрыншоты" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/bg/messages.json b/browser/extensions/screenshots/webextension/_locales/bg/messages.json | |
index 5720c1c..b4e1828 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/bg/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/bg/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Готово" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Използвайки Firefox Screenshots вие се съгласявате с $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$ на облачните услуги на Firefox.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Използвайки Firefox Screenshots вие се съгласявате с $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Политиката на поверителност" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Снимки" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/bn_BD/messages.json b/browser/extensions/screenshots/webextension/_locales/bn_BD/messages.json | |
index a7f7c58..8e1ccdd 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/bn_BD/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/bn_BD/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "সম্পন্ন" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Firefox Screenshots ব্যবহারে, আপনি Firefox Cloud Services এর $TERMSANDPRIVACYNOTICETERMSLINK$ এবং $TERMSANDPRIVACYNOTICEPRIVACYLINK$ নীতিতে সম্মত হয়েছেন।", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Firefox Screenshots ব্যবহারের জন্য, আপনি আমাদের $TERMSANDPRIVACYNOTICETERMSLINK$ এবং $TERMSANDPRIVACYNOTICEPRIVACYLINK$ নীতিতে সম্মত হয়েছেন।", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "গোপনীয়তা নীতি" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "স্ক্রীনশট" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ca/messages.json b/browser/extensions/screenshots/webextension/_locales/ca/messages.json | |
index 875cc49..0650785 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ca/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ca/messages.json | |
@@ -112,7 +112,7 @@ | |
"tourDone": { | |
"message": "Fet" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
+ "termsAndPrivacyNotice2": { | |
"message": "Si utilitzeu el Firefox Screenshots, esteu acceptant les nostres $TERMSANDPRIVACYNOTICETERMSLINK$ i l'$TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "avís de privadesa" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Captures de pantalla" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/cak/messages.json b/browser/extensions/screenshots/webextension/_locales/cak/messages.json | |
index 1ac0f12..ab93f3c 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/cak/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/cak/messages.json | |
@@ -112,7 +112,7 @@ | |
"tourDone": { | |
"message": "Xb'an" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
+ "termsAndPrivacyNotice2": { | |
"message": "Rik'in rokisaxik ri Firefox Chapoj Wachib'äl, nawoqaj $TERMSANDPRIVACYNOTICETERMSLINK$ chuqa' $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Rutzijol Ichinanem" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Chapoj taq wachib'äl" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/cs/messages.json b/browser/extensions/screenshots/webextension/_locales/cs/messages.json | |
index 5a559dd..e1054bf 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/cs/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/cs/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Hotovo" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Používáním služby Firefox Screenshots souhlasíte s $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Používáním služby Firefox Screenshots souhlasíte s našimi $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "zásadami ochrany osobních údajů" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Screenshots" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/cy/messages.json b/browser/extensions/screenshots/webextension/_locales/cy/messages.json | |
index 9361041..541d22f 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/cy/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/cy/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Gorffen" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Drwy ddefnyddio Firefox Screenshots, rydych yn cytuno i Firefox Cloud Services $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Drwy ddefnyddio Firefox Screenshots, rydych yn cytuno i'n $TERMSANDPRIVACYNOTICETERMSLINK$ a'n $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Hysbysiad Preifatrwydd" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Rhannu ar Pinterest" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/da/messages.json b/browser/extensions/screenshots/webextension/_locales/da/messages.json | |
index 49e066f..ea796ca 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/da/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/da/messages.json | |
@@ -33,7 +33,7 @@ | |
"message": "Link kopieret" | |
}, | |
"notificationLinkCopiedDetails": { | |
- "message": "Linket til dit skærmbillede er blevet gemt i udklipsholderen. Tryk på $META_KEY$-V for at sætte ind.", | |
+ "message": "Linket til dit skærmbillede er blevet gemt i udklipsholderen. Tryk på $META_KEY$-V for at sætte ind. ", | |
"placeholders": { | |
"meta_key": { | |
"content": "$1" | |
@@ -50,16 +50,16 @@ | |
"message": "Vi kan ikke oprette forbindelse til dine skærmbilleder." | |
}, | |
"connectionErrorDetails": { | |
- "message": "Kontroller din internet-forbindelse. Hvis du ikke kan oprette forbindelse til internettet, kan der være et midlertidigt teknisk problem med Firefox Screenshots." | |
+ "message": "Kontroller din internet-forbindelse. Hvis du ikke kan oprette forbindelse til internettet, kan der være et midlertidigt teknisk problem med Firefox Screenshots. " | |
}, | |
"loginErrorDetails": { | |
- "message": "Vi kunne ikke gemme dit skærmbillede, fordi der er et teknisk problem med Firefox Screenshots. Prøv igen senere." | |
+ "message": "Vi kunne ikke gemme dit skærmbillede, fordi der er et teknisk problem med Firefox Screenshots. Prøv igen senere. " | |
}, | |
"unshootablePageErrorTitle": { | |
- "message": "Vi kan ikke tage et skærmbillede af denne side." | |
+ "message": "Vi kan ikke tage et skærmbillede af denne side. " | |
}, | |
"unshootablePageErrorDetails": { | |
- "message": "Dette er ikke en almindelig webside, så du kan ikke tage skærmbilleder af den." | |
+ "message": "Dette er ikke en almindelig webside, så du kan ikke tage skærmbilleder af den. " | |
}, | |
"selfScreenshotErrorTitle": { | |
"message": "Du kan ikke tage skærmbilleder af en side i Firefox Screenshots." | |
@@ -80,7 +80,7 @@ | |
"message": "Vi er ikke sikre på, hvad der lige skete. Vil du prøve igen - eller vil du tage et skærmbillede af en anden side?" | |
}, | |
"tourBodyOne": { | |
- "message": "Tag, gem og del skærmbilleder uden at forlade Firefox." | |
+ "message": "Tag, gem og del skærmbilleder uden at forlade Firefox. " | |
}, | |
"tourHeaderTwo": { | |
"message": "Gem lige hvad du vil." | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Færdig" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Ved at anvende Firefox Screenshots godkender du $TERMSANDPRIVACYNOTICETERMSLINK$ og $TERMSANDPRIVACYNOTICEPRIVACYLINK$ for Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Ved at anvende Firefox Screenshots godkender du vores $TERMSANDPRIVACYNOTICETERMSLINK$ og $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "privatlivspolitik" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Skærmbilleder" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/de/messages.json b/browser/extensions/screenshots/webextension/_locales/de/messages.json | |
index c400f36..3f80814 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/de/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/de/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Fertig" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Durch die Verwendung von Firefox Screenshots stimmen Sie den $TERMSANDPRIVACYNOTICETERMSLINK$ und dem $TERMSANDPRIVACYNOTICEPRIVACYLINK$ von Firefox Cloud Services zu.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Durch die Verwendung von Firefox Screenshots stimmen Sie unseren $TERMSANDPRIVACYNOTICETERMSLINK$ und $TERMSANDPRIVACYNOTICEPRIVACYLINK$ zu.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Datenschutzhinweis" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Bildschirmfotos" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/dsb/messages.json b/browser/extensions/screenshots/webextension/_locales/dsb/messages.json | |
index e9caee3..3f4a5ae 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/dsb/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/dsb/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Gótowo" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Pśez wužywanje Firefox ScreenShots, zwolijośo do $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Pśez wužywanje Firefox ScreenShots, zwolijośo do našych $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Screenshots.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Powěźeńka priwatnosći" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Fota wobrazowki" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/el/messages.json b/browser/extensions/screenshots/webextension/_locales/el/messages.json | |
index e322c9b..cde1648 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/el/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/el/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Τέλος" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Χρησιμοποιώντας το Firefox Screenshots, συμφωνείτε με τους $TERMSANDPRIVACYNOTICETERMSLINK$ και την $TERMSANDPRIVACYNOTICEPRIVACYLINK$ των Υπηρεσιών Cloud του Firefox.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Χρησιμοποιώντας το Firefox Screenshots, συμφωνείτε με τους $TERMSANDPRIVACYNOTICETERMSLINK$ και την $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Σημείωση απορρήτου" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Στιγμιότυπα" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/en_US/messages.json b/browser/extensions/screenshots/webextension/_locales/en_US/messages.json | |
index 22ebfbe..0f4c3d4 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/en_US/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/en_US/messages.json | |
@@ -112,7 +112,7 @@ | |
"tourDone": { | |
"message": "Done" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
+ "termsAndPrivacyNotice2": { | |
"message": "By using Firefox Screenshots, you agree to our $TERMSANDPRIVACYNOTICETERMSLINK$ and $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Privacy Notice" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Screenshots" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/eo/messages.json b/browser/extensions/screenshots/webextension/_locales/eo/messages.json | |
index 337e629..86da12b 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/eo/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/eo/messages.json | |
@@ -112,7 +112,7 @@ | |
"tourDone": { | |
"message": "Farita" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
+ "termsAndPrivacyNotice2": { | |
"message": "Se vi uzas Firefox Screenshots, vi akceptas nian $TERMSANDPRIVACYNOTICETERMSLINK$ kaj $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "rimarkon pri privateco" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Ekrankopioj" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/es_AR/messages.json b/browser/extensions/screenshots/webextension/_locales/es_AR/messages.json | |
index 180b85e..fefc5dd 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/es_AR/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/es_AR/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Listo" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Al usar Firefox Screenshots, aceptás los $TERMSANDPRIVACYNOTICETERMSLINK$ y $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de los servicios en la nube de Firefox.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Al usar Firefox Screenshots, aceptás los $TERMSANDPRIVACYNOTICETERMSLINK$ y $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Nota de privacidad" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Capturas" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/es_CL/messages.json b/browser/extensions/screenshots/webextension/_locales/es_CL/messages.json | |
index eba0a7a..7aab98b 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/es_CL/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/es_CL/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Hecho" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Al usar Firefox Screenshots, aceptas los $TERMSANDPRIVACYNOTICETERMSLINK$ y el $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Al usar Firefox Screenshots, aceptas nuestros $TERMSANDPRIVACYNOTICETERMSLINK$ y el $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Aviso de privacidad" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Capturas de pantalla" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/es_ES/messages.json b/browser/extensions/screenshots/webextension/_locales/es_ES/messages.json | |
index 88f2c00..eab5d51 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/es_ES/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/es_ES/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Hecho" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Al usar Firefox Screenshots, aceptas los $TERMSANDPRIVACYNOTICETERMSLINK$ y el $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Al usar Firefox Screenshots, estás de acuerdo con nuestros $TERMSANDPRIVACYNOTICETERMSLINK$ y $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Aviso de privacidad" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Screenshots" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/es_MX/messages.json b/browser/extensions/screenshots/webextension/_locales/es_MX/messages.json | |
index 0c37e393..81943aa 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/es_MX/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/es_MX/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Terminado" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Al usar Firefox Screenshots, estás de acuerdo con los servicios de Firefox Cloud $TERMSANDPRIVACYNOTICETERMSLINK$ y $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Al usar Firefox Screenshots, estás de acuerdo con nuestros $TERMSANDPRIVACYNOTICETERMSLINK$ y $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Aviso de privacidad" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Screenshots" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/et/messages.json b/browser/extensions/screenshots/webextension/_locales/et/messages.json | |
index d3a8b14..41166b4 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/et/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/et/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Valmis" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Firefox Screenshots kasutamisel nõustud Firefox Cloud Services $TERMSANDPRIVACYNOTICETERMSLINK$ ja $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Firefox Screenshots'i kasutades nõustud meie $TERMSANDPRIVACYNOTICETERMSLINK$ ja $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/fa/messages.json b/browser/extensions/screenshots/webextension/_locales/fa/messages.json | |
index c088a9c..30e1c76 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/fa/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/fa/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "انجام شد" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "با استفاده از سرویس تصاویرِ صفحه فایرفاکس، شما با شرایط سرویسهای ابری فایرفاکس $TERMSANDPRIVACYNOTICETERMSLINK$ و $TERMSANDPRIVACYNOTICEPRIVACYLINK$ موافقت میکنید.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "با استفاده از سرویس تصاویر صفحه فایرفاکس، شما با $TERMSANDPRIVACYNOTICETERMSLINK$ ما و $TERMSANDPRIVACYNOTICEPRIVACYLINK$ موافقت میکنید.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "نکات حریمخصوصی" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "تصاویر صفحه" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/fi/messages.json b/browser/extensions/screenshots/webextension/_locales/fi/messages.json | |
index d12f67b..4bea241 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/fi/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/fi/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Valmis" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Käyttämällä Firefox Screenshots –ominaisuutta hyväksyt Firefoxin pilvipalveluiden $TERMSANDPRIVACYNOTICETERMSLINK$ ja $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Käyttämällä Firefox Screenshots -ominaisuutta hyväksyt meidän $TERMSANDPRIVACYNOTICETERMSLINK$ ja $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "tietosuojakäytännön" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Kuvakaappaukset" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/fr/messages.json b/browser/extensions/screenshots/webextension/_locales/fr/messages.json | |
index d2af062..959be107 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/fr/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/fr/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Terminé" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "En utilisant Firefox Screenshots, vous acceptez les $TERMSANDPRIVACYNOTICETERMSLINK$ et la $TERMSANDPRIVACYNOTICEPRIVACYLINK$ des services en ligne de Firefox.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "En utilisant Firefox Screenshots, vous acceptez nos $TERMSANDPRIVACYNOTICETERMSLINK$ et notre $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "politique de confidentialité" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Captures d’écran" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/fy_NL/messages.json b/browser/extensions/screenshots/webextension/_locales/fy_NL/messages.json | |
index 6b95e63..ed438a2 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/fy_NL/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/fy_NL/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Dien" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Troch Firefox Screenshots te brûken, geane jo akkoard mei de $TERMSANDPRIVACYNOTICETERMSLINK$ en $TERMSANDPRIVACYNOTICEPRIVACYLINK$ fan Firefox-cloudtsjinsten.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Troch Firefox Screenshots te brûken, gean jo akkoard mei ús $TERMSANDPRIVACYNOTICETERMSLINK$ en $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Privacyferklearring" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Skermôfbyldingen" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ga_IE/messages.json b/browser/extensions/screenshots/webextension/_locales/ga_IE/messages.json | |
index 43055cc..fe46185 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ga_IE/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ga_IE/messages.json | |
@@ -107,7 +107,15 @@ | |
"message": "Críochnaithe" | |
}, | |
"termsAndPrivacyNotice2": { | |
- "message": "Má úsáideann tú Gabhálacha Scáileáin Firefox, glacann tú leis na {termsAndPrivacyNoticeTermsLink} agus leis an {termsAndPrivacyNoticePrivacyLink}." | |
+ "message": "Má úsáideann tú Gabhálacha Scáileáin Firefox, glacann tú leis na $TERMSANDPRIVACYNOTICETERMSLINK$ agus leis an $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "placeholders": { | |
+ "termsandprivacynoticetermslink": { | |
+ "content": "$1" | |
+ }, | |
+ "termsandprivacynoticeprivacylink": { | |
+ "content": "$2" | |
+ } | |
+ } | |
}, | |
"termsAndPrivacyNoticeTermsLink": { | |
"message": "Téarmaí" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/gu_IN/messages.json b/browser/extensions/screenshots/webextension/_locales/gu_IN/messages.json | |
index 5371283..8abe50c 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/gu_IN/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/gu_IN/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "થઈ ગયું" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Firefox સ્ક્રીનશોટ્સ વાપરીને, તમે Firefox Cloud સેવાઓ સાથે સંમત થાઓ છો $TERMSANDPRIVACYNOTICETERMSLINK$ અને $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Firefox સ્ક્રિનશોટનો ઉપયોગ કરીને, તમે અમારી સાથે સંમત થાઓ છો $TERMSANDPRIVACYNOTICETERMSLINK$ અને $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "ખાનગી સૂચના" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "સ્ક્રીનશૉટ્સ" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/he/messages.json b/browser/extensions/screenshots/webextension/_locales/he/messages.json | |
index 756e4b9..8fa8ff4 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/he/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/he/messages.json | |
@@ -107,15 +107,7 @@ | |
"message": "סיום" | |
}, | |
"termsAndPrivacyNoticeCloudServices": { | |
- "message": "מעצם השימוש ב־Firefox Screenshots הכללים של שירותי הענן של Firefox $TERMSANDPRIVACYNOTICETERMSLINK$ ו$TERMSANDPRIVACYNOTICEPRIVACYLINK$ מוסכמים עליך.", | |
- "placeholders": { | |
- "termsandprivacynoticetermslink": { | |
- "content": "$1" | |
- }, | |
- "termsandprivacynoticeprivacylink": { | |
- "content": "$2" | |
- } | |
- } | |
+ "message": "מעצם השימוש ב־Firefox Screenshots הכללים של שירותי הענן של Firefox {termsAndPrivacyNoticeTermsLink} ו{termsAndPrivacyNoticePrivacyLink} מוסכמים עליך." | |
}, | |
"termsAndPrivacyNoticeTermsLink": { | |
"message": "תנאים" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/hi_IN/messages.json b/browser/extensions/screenshots/webextension/_locales/hi_IN/messages.json | |
index 4230e49..89305b2 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/hi_IN/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/hi_IN/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "पूर्ण" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Firefox स्क्रीनशॉट का उपयोग करके, आप Firefox क्लाउड सेवाओं $TERMSANDPRIVACYNOTICETERMSLINK$ और $TERMSANDPRIVACYNOTICEPRIVACYLINK$ के लिए सहमत हैं.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Firefox स्क्रीनशॉट्स का उपयोग करके, आप हमारी $TERMSANDPRIVACYNOTICETERMSLINK$ और $TERMSANDPRIVACYNOTICEPRIVACYLINK$ से सहमत हैं.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "गोपनीयता सूचना" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "स्क्रीनशॉट" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/hr/messages.json b/browser/extensions/screenshots/webextension/_locales/hr/messages.json | |
index a120c8e..7d42ba1 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/hr/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/hr/messages.json | |
@@ -67,6 +67,12 @@ | |
"emptySelectionErrorTitle": { | |
"message": "Vaš odabir je premalen" | |
}, | |
+ "privateWindowErrorTitle": { | |
+ "message": "Snimke ekrana su onemogućene u načinu privatnog pretraživanja" | |
+ }, | |
+ "privateWindowErrorDetails": { | |
+ "message": "Žao nam je na neugodnosti. Radimo na ovoj mogućnosti za buduća izdanja." | |
+ }, | |
"genericErrorTitle": { | |
"message": "Uf! Firefox Screenshots se zbrkao." | |
}, | |
@@ -106,10 +112,24 @@ | |
"tourDone": { | |
"message": "Gotovo" | |
}, | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Koristeći Firefox Screenshots slažete se s našim $TERMSANDPRIVACYNOTICETERMSLINK$ i $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "placeholders": { | |
+ "termsandprivacynoticetermslink": { | |
+ "content": "$1" | |
+ }, | |
+ "termsandprivacynoticeprivacylink": { | |
+ "content": "$2" | |
+ } | |
+ } | |
+ }, | |
"termsAndPrivacyNoticeTermsLink": { | |
"message": "Uvjeti" | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Pravila o privatnosti" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Snimke ekrana" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/hsb/messages.json b/browser/extensions/screenshots/webextension/_locales/hsb/messages.json | |
index e6b3bb3..d3a29f0 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/hsb/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/hsb/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Hotowo" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Přez wužiwanje Firefox ScreenShots, zwoliće do $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Přez wužiwanje Firefox ScreenShots, zwoliće do našich $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Screenshots.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Pokaz priwatnosće" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Fota wobrazowki" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/hu/messages.json b/browser/extensions/screenshots/webextension/_locales/hu/messages.json | |
index 953a413..ef3c0ab 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/hu/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/hu/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Kész" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "A Firefox képernyőképek használatával beleegyezik a Firefox felhőszolgáltatások $TERMSANDPRIVACYNOTICETERMSLINK$ és $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "A Firefox képernyőképek használatával, Ön beleegyezik a $TERMSANDPRIVACYNOTICETERMSLINK$ és $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Adatvédelmi nyilatkozatba" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Képernyőképek" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/hy_AM/messages.json b/browser/extensions/screenshots/webextension/_locales/hy_AM/messages.json | |
index 93539d9..2533430 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/hy_AM/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/hy_AM/messages.json | |
@@ -106,8 +106,8 @@ | |
"tourDone": { | |
"message": "Պատրաստ է" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Օգտագործելով Firefox Screenshots-ը՝ դուք ընդունում եք Firefox Cloud ծառայությունների $TERMSANDPRIVACYNOTICETERMSLINK$ը և $TERMSANDPRIVACYNOTICEPRIVACYLINK$ը:", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Firefox Screenshots-ը օգտագործելով՝ դուք ընդունեւմ եք $TERMSANDPRIVACYNOTICETERMSLINK$ը և $TERMSANDPRIVACYNOTICEPRIVACYLINK$ը:", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/id/messages.json b/browser/extensions/screenshots/webextension/_locales/id/messages.json | |
index 813e352..eed6ae08 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/id/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/id/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Selesai" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Dengan menggunakan Firefox Screenshots, Anda setuju dengan $TERMSANDPRIVACYNOTICETERMSLINK$ dan $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Dengan menggunakan Firefox Screenshots, Anda setuju dengan $TERMSANDPRIVACYNOTICETERMSLINK$ dan $TERMSANDPRIVACYNOTICEPRIVACYLINK$ kami.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Kebijakan Privasi" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Tangkapan Layar" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/it/messages.json b/browser/extensions/screenshots/webextension/_locales/it/messages.json | |
index f59a547..f39bc59 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/it/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/it/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Fine" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Utilizzando Firefox Screenshots si accettano le $TERMSANDPRIVACYNOTICETERMSLINK$ e l’$TERMSANDPRIVACYNOTICEPRIVACYLINK$ di Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Utilizzando Firefox Screenshots si accettano le $TERMSANDPRIVACYNOTICETERMSLINK$ e l’$TERMSANDPRIVACYNOTICEPRIVACYLINK$ del servizio.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "informativa sulla privacy" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Screenshot" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ja/messages.json b/browser/extensions/screenshots/webextension/_locales/ja/messages.json | |
index ad83d05..a3521c7 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ja/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ja/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "完了" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Firefox Screenshots を使うことで、あなたは Firefox Cloud Services の $TERMSANDPRIVACYNOTICETERMSLINK$ と $TERMSANDPRIVACYNOTICEPRIVACYLINK$ に同意したことになります。", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Firefox Screenshots を使うことで、あなたは $TERMSANDPRIVACYNOTICETERMSLINK$ と $TERMSANDPRIVACYNOTICEPRIVACYLINK$ に同意したことになります。", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "プライバシー通知" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "スクリーンショット" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ka/messages.json b/browser/extensions/screenshots/webextension/_locales/ka/messages.json | |
index 80acebf..5da474f 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ka/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ka/messages.json | |
@@ -112,7 +112,7 @@ | |
"tourDone": { | |
"message": "მზადაა" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
+ "termsAndPrivacyNotice2": { | |
"message": "Firefox Screenshots-ის გამოყენებით, თქვენ ეთანხმებით $TERMSANDPRIVACYNOTICETERMSLINK$ და $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "პირადი მონაცემების შესახებ განცხადებას" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Screenshots" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/kab/messages.json b/browser/extensions/screenshots/webextension/_locales/kab/messages.json | |
index 550f474..b6f0ad6 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/kab/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/kab/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Immed" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "S useqdec n Firefox Screenshots, ad tqebleḍ tiwuriwin n usigna Firefox $TERMSANDPRIVACYNOTICETERMSLINK$ akked $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "S useqdec Firefox Screenshots, ad tqebleḍ $TERMSANDPRIVACYNOTICETERMSLINK$ akked $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Tasertit n tbaḍnit" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Tuṭṭfiwin n ugdil" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/kk/messages.json b/browser/extensions/screenshots/webextension/_locales/kk/messages.json | |
index 9b64273..380bb9d 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/kk/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/kk/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Дайын" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Firefox скриншоттарын қолдану арқылы, сіз Firefox бұлттық қызметтерінің $TERMSANDPRIVACYNOTICETERMSLINK$ және $TERMSANDPRIVACYNOTICEPRIVACYLINK$ келісесіз.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Firefox скриншоттарын қолдану арқылы, сіз біздің $TERMSANDPRIVACYNOTICETERMSLINK$ және $TERMSANDPRIVACYNOTICEPRIVACYLINK$ келісесіз.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ko/messages.json b/browser/extensions/screenshots/webextension/_locales/ko/messages.json | |
index 48c5898..63d4f94 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ko/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ko/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "완료" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Firefox Screenshots을 사용함으로써, Firefox Cloud Services $TERMSANDPRIVACYNOTICETERMSLINK$과 $TERMSANDPRIVACYNOTICEPRIVACYLINK$에 동의하게 됩니다.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Firefox Screenshots을 사용함으로써, $TERMSANDPRIVACYNOTICETERMSLINK$과 $TERMSANDPRIVACYNOTICEPRIVACYLINK$에 동의하게 됩니다.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "개인 정보 취급 방침" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Screenshots" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/lij/messages.json b/browser/extensions/screenshots/webextension/_locales/lij/messages.json | |
index 23d8fb9..b6ecd41 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/lij/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/lij/messages.json | |
@@ -104,15 +104,7 @@ | |
"message": "Fæto" | |
}, | |
"termsAndPrivacyNoticeCloudServices": { | |
- "message": "Se ti deuvi Firefox Screenshots, ti e d'acordio con $TERMSANDPRIVACYNOTICETERMSLINK$ e $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de Firefox Cloud Services.", | |
- "placeholders": { | |
- "termsandprivacynoticetermslink": { | |
- "content": "$1" | |
- }, | |
- "termsandprivacynoticeprivacylink": { | |
- "content": "$2" | |
- } | |
- } | |
+ "message": "Se ti deuvi Firefox Screenshots, ti e d'acordio con {termsAndPrivacyNoticeTermsLink} e {termsAndPrivacyNoticePrivacyLink} de Firefox Cloud Services." | |
}, | |
"termsAndPrivacyNoticeTermsLink": { | |
"message": "Termini" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/lo/messages.json b/browser/extensions/screenshots/webextension/_locales/lo/messages.json | |
index d211986..9807543 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/lo/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/lo/messages.json | |
@@ -106,8 +106,8 @@ | |
"tourDone": { | |
"message": "ສຳເລັດ" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "ການນຳໃຊ້ Firefox Screenshots ແມ່ນທ່ານໄດ້ຍອມຮັບເງືອນໄຂການໃຫ້ບໍລິການຂອງ Firefox Cloud Services $TERMSANDPRIVACYNOTICETERMSLINK$ ແລະ $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "ເພື່ອນຳໃຊ້ Firefox Screenshots ທ່ານໄດ້ຍອມຮັບ $TERMSANDPRIVACYNOTICETERMSLINK$ ແລະ $TERMSANDPRIVACYNOTICEPRIVACYLINK$ ຂອງພວກເຮົາ.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/lt/messages.json b/browser/extensions/screenshots/webextension/_locales/lt/messages.json | |
index ea3cccb..7e09a8dd 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/lt/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/lt/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Baigta" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Naudodami „Firefox Screenshots“ sutinkate su „Firefox“ tinklo paslaugų $TERMSANDPRIVACYNOTICETERMSLINK$ bei $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Naudodamiesi „Firefox“ ekrano nuotraukomis, sutinkate su mūsų $TERMSANDPRIVACYNOTICETERMSLINK$ bei $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "privatumo nuostatais" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Ekrano nuotraukos" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/mk/messages.json b/browser/extensions/screenshots/webextension/_locales/mk/messages.json | |
index deec732..f7bae8b 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/mk/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/mk/messages.json | |
@@ -112,7 +112,7 @@ | |
"tourDone": { | |
"message": "Готово" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
+ "termsAndPrivacyNotice2": { | |
"message": "Со користење на Firefox Screenshots, се согласувате со нашите $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Известување за приватност" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Слики од екран" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/mr/messages.json b/browser/extensions/screenshots/webextension/_locales/mr/messages.json | |
index f190db2..390a4b6 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/mr/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/mr/messages.json | |
@@ -112,7 +112,7 @@ | |
"tourDone": { | |
"message": "झाले" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
+ "termsAndPrivacyNotice2": { | |
"message": "Firefox Screenshots वापरून, आपण आमच्या $TERMSANDPRIVACYNOTICETERMSLINK$आणि $TERMSANDPRIVACYNOTICEPRIVACYLINK$ शी सहमत आहात.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "गोपनीयता सूचना" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "स्क्रीनशॉट" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ms/messages.json b/browser/extensions/screenshots/webextension/_locales/ms/messages.json | |
index 318b49a..624a9de 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ms/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ms/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Selesai" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Dengan menggunakan Firefox Screenshots, anda bersetuju dengan $TERMSANDPRIVACYNOTICETERMSLINK$ dan $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Apabila menggunakan Firefox Screenshots, anda bersetuju dengan $TERMSANDPRIVACYNOTICETERMSLINK$ dan $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Notis Privasi" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Screenshots" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/nb_NO/messages.json b/browser/extensions/screenshots/webextension/_locales/nb_NO/messages.json | |
index ebb29d5..9dcaa63 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/nb_NO/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/nb_NO/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Ferdig" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Ved å bruke Firefox Screenshots, godtar du $TERMSANDPRIVACYNOTICETERMSLINK$ og $TERMSANDPRIVACYNOTICEPRIVACYLINK$ for Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Ved å bruke Firefox Screenshots, godtar du vår $TERMSANDPRIVACYNOTICETERMSLINK$ og $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "personvernbestemmelser" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Skjermbilder" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/nl/messages.json b/browser/extensions/screenshots/webextension/_locales/nl/messages.json | |
index 0513d76..b8df8ea 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/nl/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/nl/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Gereed" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Door Firefox Screenshots te gebruiken, gaat u akkoord met de $TERMSANDPRIVACYNOTICETERMSLINK$ en $TERMSANDPRIVACYNOTICEPRIVACYLINK$ van Firefox-cloudservices.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Door Firefox Screenshots te gebruiken, gaat u akkoord met onze $TERMSANDPRIVACYNOTICETERMSLINK$ en $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Privacyverklaring" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Schermafbeeldingen" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/nn_NO/messages.json b/browser/extensions/screenshots/webextension/_locales/nn_NO/messages.json | |
index 89c963f..f1bd7b6 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/nn_NO/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/nn_NO/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Ferdig" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Ved å bruke Firefox Screenshots, godtar du $TERMSANDPRIVACYNOTICETERMSLINK$ og $TERMSANDPRIVACYNOTICEPRIVACYLINK$ for Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Ved å bruke Firefox Screenshots, seier du deg samd i $TERMSANDPRIVACYNOTICETERMSLINK$ og $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Personvernmerknad" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Skjermbilde" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/pl/messages.json b/browser/extensions/screenshots/webextension/_locales/pl/messages.json | |
index d91d9d3..e122833 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/pl/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/pl/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Zamknij" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Używając Firefox Screenshots, zgadzasz się na $TERMSANDPRIVACYNOTICETERMSLINK$ i $TERMSANDPRIVACYNOTICEPRIVACYLINK$ usług Firefox Cloud.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Używając Firefox Screenshots, zgadzasz się na $TERMSANDPRIVACYNOTICETERMSLINK$ i $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "zasady ochrony prywatności" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Zrzuty ekranu" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/pt_BR/messages.json b/browser/extensions/screenshots/webextension/_locales/pt_BR/messages.json | |
index add2eca..869e08c 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/pt_BR/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/pt_BR/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Concluído" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Usando o Firefox Screenshots, você concorda com os $TERMSANDPRIVACYNOTICETERMSLINK$ e $TERMSANDPRIVACYNOTICEPRIVACYLINK$ dos serviços na nuvem do Firefox.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Ao usar o Firefox Screenshots, você concorda com os $TERMSANDPRIVACYNOTICETERMSLINK$ e $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Política de privacidade" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Screenshots" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/pt_PT/messages.json b/browser/extensions/screenshots/webextension/_locales/pt_PT/messages.json | |
index 102af1b..df6ea80 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/pt_PT/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/pt_PT/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Feito" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Ao utilizar o Firefox Screenshots, você concorda com os $TERMSANDPRIVACYNOTICETERMSLINK$ e com o $TERMSANDPRIVACYNOTICEPRIVACYLINK$ do Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Ao utilizar o Firefox Screenshots, concorda com os nossos $TERMSANDPRIVACYNOTICETERMSLINK$ e com o $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Aviso de privacidade" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Capturas de ecrã" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/rm/messages.json b/browser/extensions/screenshots/webextension/_locales/rm/messages.json | |
index 2f3aaa9..bb344d6 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/rm/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/rm/messages.json | |
@@ -67,6 +67,12 @@ | |
"emptySelectionErrorTitle": { | |
"message": "La zona selecziunada è memia pitschna" | |
}, | |
+ "privateWindowErrorTitle": { | |
+ "message": "Screenshots è deactivà en il modus privat" | |
+ }, | |
+ "privateWindowErrorDetails": { | |
+ "message": "Perstgisa las malempernaivladads. Nus furnin questa funcziun en ina da las proximas versiuns." | |
+ }, | |
"genericErrorTitle": { | |
"message": "Oh dieu! Firefox Screenshots ha il singlut." | |
}, | |
@@ -106,8 +112,8 @@ | |
"tourDone": { | |
"message": "Finì" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Cun utilisar Firefox Screenshots accepteschas ti $TERMSANDPRIVACYNOTICETERMSLINK$ e $TERMSANDPRIVACYNOTICEPRIVACYLINK$ da Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Cun utilisar Firefox Screenshots acceptas ti $TERMSANDPRIVACYNOTICETERMSLINK$ e $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -122,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "la decleraziun da protecziun da datas" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Maletgs dal visur" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ru/messages.json b/browser/extensions/screenshots/webextension/_locales/ru/messages.json | |
index 8ca51dc..0073c6e 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ru/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ru/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Готово" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Используя Скриншоты Firefox, вы соглашаетесь с $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$ облачных сервисов Firefox.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Используя Firefox Screenshots, вы соглашаетесь с нашими $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Уведомлением о приватности" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Скриншоты" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/sk/messages.json b/browser/extensions/screenshots/webextension/_locales/sk/messages.json | |
index 6b1b491..b49f0f4 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/sk/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/sk/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Hotovo" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Používaním služby Firefox Screenshots súhlasíte s $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Cloud Services.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Používaním služby Firefox Screenshots súhlasíte s našimi $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "zásadami ochrany súkromia" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Snímky obrazovky" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/sl/messages.json b/browser/extensions/screenshots/webextension/_locales/sl/messages.json | |
index d36c352..4395059 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/sl/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/sl/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Končano" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Z uporabo Firefox Screenshots se strinjate s $TERMSANDPRIVACYNOTICETERMSLINK$ Firefoxovih storitev v oblaku in $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Z uporabo razširitve Firefox Screenshots se strinjate z našimi $TERMSANDPRIVACYNOTICETERMSLINK$ in $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "obvestilom o zasebnosti" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Posnetki zaslona" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/sr/messages.json b/browser/extensions/screenshots/webextension/_locales/sr/messages.json | |
index 6c5d372..bc258f8 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/sr/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/sr/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Готово" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Коришћењем Firefox Screenshots-а, прихватате Firefox Cloud Services $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Коришћењем Firefox Screenshots прихватате наше $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/sv_SE/messages.json b/browser/extensions/screenshots/webextension/_locales/sv_SE/messages.json | |
index f0b0db6..bf15f33 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/sv_SE/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/sv_SE/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Färdig" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Genom att använda Firefox Screenshots, godkänner du $TERMSANDPRIVACYNOTICETERMSLINK$ och $TERMSANDPRIVACYNOTICEPRIVACYLINK$ för Firefox molntjänster.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Genom att använda Firefox Screenshots, godkänner du $TERMSANDPRIVACYNOTICETERMSLINK$ och $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Sekretesspolicy" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Skärmbilder" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ta/messages.json b/browser/extensions/screenshots/webextension/_locales/ta/messages.json | |
index c8aba78..d0e8e07 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ta/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ta/messages.json | |
@@ -74,7 +74,7 @@ | |
"message": "சிரமத்திற்கு வருந்துகிறோம். எதிர்கால வெளியீடுகளில் நாங்கள் இந்த வசதியைச் செய்து தருகிறோம்." | |
}, | |
"genericErrorTitle": { | |
- "message": "அய் அய்யோ! பயர்பாஃசு திரைப்பிடிப்பு வீணாய் போனது." | |
+ "message": "அய் அய்யோ! பயர்பாஃசு திரைப்பிடிப்பு வீணாய் போனது. " | |
}, | |
"genericErrorDetails": { | |
"message": "என்ன நடந்தது என எங்களுக்குத் தெரியவில்லை. முடிந்தால் மீண்டும் முயற்சியுங்கள் (அ) வேறொரு பக்கத்தில் முயற்சியுங்கள்?" | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "முடிந்தது" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "பயர்பாஃசு திரைப்பிடிப்பைப் பயன்படுத்துவதன் மூலம் எங்களின் முகில் கணிமச் சேவைகளுக்கான பின்வரும் $TERMSANDPRIVACYNOTICETERMSLINK$ $TERMSANDPRIVACYNOTICEPRIVACYLINK$ நிபந்தனைகளை ஏற்றுக் கொள்கிறீர்கள்.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "பயர்பாஃசு திரைப்பிடிப்புகளைப் பயன்படுத்துவதன் மூலம் $TERMSANDPRIVACYNOTICETERMSLINK$ மற்றும் $TERMSANDPRIVACYNOTICEPRIVACYLINK$ சேவை நிபற்தனைகளை ஏற்கிறீர்கள்.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "தனியுரிம கொள்கை" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "திரைபிடிப்புகள்" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/te/messages.json b/browser/extensions/screenshots/webextension/_locales/te/messages.json | |
index d4c9a9e..29cd142 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/te/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/te/messages.json | |
@@ -76,5 +76,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "గోప్యతా నోటీసు" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "తెరపట్లు" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/th/messages.json b/browser/extensions/screenshots/webextension/_locales/th/messages.json | |
index 660300b..bcdea49 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/th/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/th/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "เสร็จสิ้น" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "เพื่อใช้ Firefox Screenshots คุณยอมรับ $TERMSANDPRIVACYNOTICETERMSLINK$ และ $TERMSANDPRIVACYNOTICEPRIVACYLINK$ ของบริการกลุ่มเมฆ Firefox", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "เพื่อใช้ Firefox Screenshots คุณยอมรับ $TERMSANDPRIVACYNOTICETERMSLINK$ และ $TERMSANDPRIVACYNOTICEPRIVACYLINK$ ของเรา", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "ประกาศความเป็นส่วนตัว" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "ภาพหน้าจอ" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/tl/messages.json b/browser/extensions/screenshots/webextension/_locales/tl/messages.json | |
index a4e0033..2eb82ba 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/tl/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/tl/messages.json | |
@@ -104,15 +104,7 @@ | |
"message": "Tapos" | |
}, | |
"termsAndPrivacyNoticeCloudServices": { | |
- "message": "Sa paggamit ng Firefox Screenshots, tinatanggap mo ang Firefox Cloud Services $TERMSANDPRIVACYNOTICETERMSLINK$ at $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
- "placeholders": { | |
- "termsandprivacynoticetermslink": { | |
- "content": "$1" | |
- }, | |
- "termsandprivacynoticeprivacylink": { | |
- "content": "$2" | |
- } | |
- } | |
+ "message": "Sa paggamit ng Firefox Screenshots, tinatanggap mo ang Firefox Cloud Services {termsAndPrivacyNoticeTermsLink} at {termsAndPrivacyNoticePrivacyLink}." | |
}, | |
"termsAndPrivacyNoticeTermsLink": { | |
"message": "Mga tuntunin" | |
diff --git a/browser/extensions/screenshots/webextension/_locales/tr/messages.json b/browser/extensions/screenshots/webextension/_locales/tr/messages.json | |
index 519f80d..54c2d31 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/tr/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/tr/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Tamam" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Firefox Screenshots'ı kullandığınızda Firefox Bulut Hizmetleri'nin $TERMSANDPRIVACYNOTICETERMSLINK$ ve $TERMSANDPRIVACYNOTICEPRIVACYLINK$ kabul etmiş sayılırsınız.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Firefox Screenshots'ı kullandığınızda $TERMSANDPRIVACYNOTICETERMSLINK$ ve $TERMSANDPRIVACYNOTICEPRIVACYLINK$ kabul etmiş sayılırsınız.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Gizlilik Bildirimimizi" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Ekran görüntüleri" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/uk/messages.json b/browser/extensions/screenshots/webextension/_locales/uk/messages.json | |
index a01ac49..703445f 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/uk/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/uk/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "Готово" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "Використовуючи Firefox Screenshots, ви погоджуєтеся з умовами хмарних послуг Firefox: $TERMSANDPRIVACYNOTICETERMSLINK$ та $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "Використовуючи Firefox Screenshots, ви погоджуєтеся з нашими $TERMSANDPRIVACYNOTICETERMSLINK$ та $TERMSANDPRIVACYNOTICEPRIVACYLINK$.", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Повідомленням про приватність" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Знімки екрану" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/ur/messages.json b/browser/extensions/screenshots/webextension/_locales/ur/messages.json | |
index 4a1ec9e..24f6040 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/ur/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/ur/messages.json | |
@@ -106,17 +106,6 @@ | |
"tourDone": { | |
"message": "ہوگیا" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "۔Firefox Screenshots کے استعمال کے ساتھ آپ Firefox Cloud Services کے $TERMSANDPRIVACYNOTICETERMSLINK$ اور $TERMSANDPRIVACYNOTICEPRIVACYLINK$ کے ساتھ متفق ہیں۔", | |
- "placeholders": { | |
- "termsandprivacynoticetermslink": { | |
- "content": "$1" | |
- }, | |
- "termsandprivacynoticeprivacylink": { | |
- "content": "$2" | |
- } | |
- } | |
- }, | |
"termsAndPrivacyNoticeTermsLink": { | |
"message": "شرائط" | |
}, | |
diff --git a/browser/extensions/screenshots/webextension/_locales/vi/messages.json b/browser/extensions/screenshots/webextension/_locales/vi/messages.json | |
index 9733b67..fcb631e 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/vi/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/vi/messages.json | |
@@ -46,5 +46,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "Chính sách riêng tư" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "Các ảnh chụp màn hình" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/zh_CN/messages.json b/browser/extensions/screenshots/webextension/_locales/zh_CN/messages.json | |
index 001df4e..fb5d477 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/zh_CN/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/zh_CN/messages.json | |
@@ -12,7 +12,7 @@ | |
"message": "我的截图" | |
}, | |
"screenshotInstructions": { | |
- "message": "在页面上拖拽或单击即可选择要截图的区域。按 ESC 键可取消。" | |
+ "message": "在此页上拖拽或单击选择截图区域。按 ESC 键取消截图。" | |
}, | |
"saveScreenshotSelectedArea": { | |
"message": "保存" | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "完成" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "使用 Firefox Screenshots 即代表您同意 Firefox 云服务的$TERMSANDPRIVACYNOTICETERMSLINK$和$TERMSANDPRIVACYNOTICEPRIVACYLINK$。", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "使用 Firefox Screenshots 即代表您同意我们的$TERMSANDPRIVACYNOTICETERMSLINK$和$TERMSANDPRIVACYNOTICEPRIVACYLINK$。", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "隐私声明" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "屏幕截图" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/_locales/zh_TW/messages.json b/browser/extensions/screenshots/webextension/_locales/zh_TW/messages.json | |
index 6f75383..e761390 100644 | |
--- a/browser/extensions/screenshots/webextension/_locales/zh_TW/messages.json | |
+++ b/browser/extensions/screenshots/webextension/_locales/zh_TW/messages.json | |
@@ -112,8 +112,8 @@ | |
"tourDone": { | |
"message": "完成" | |
}, | |
- "termsAndPrivacyNoticeCloudServices": { | |
- "message": "繼續使用 Firefox Screenshots,代表您同意 Firefox 雲端服務的 $TERMSANDPRIVACYNOTICETERMSLINK$ 以及 $TERMSANDPRIVACYNOTICEPRIVACYLINK$。", | |
+ "termsAndPrivacyNotice2": { | |
+ "message": "使用 Firefox Screenshots 時,代表您同意我們的 $TERMSANDPRIVACYNOTICETERMSLINK$ 及 $TERMSANDPRIVACYNOTICEPRIVACYLINK$。", | |
"placeholders": { | |
"termsandprivacynoticetermslink": { | |
"content": "$1" | |
@@ -128,5 +128,8 @@ | |
}, | |
"termsAndPrivacyNoticyPrivacyLink": { | |
"message": "隱私權保護政策" | |
+ }, | |
+ "libraryLabel": { | |
+ "message": "擷圖" | |
} | |
} | |
\ No newline at end of file | |
diff --git a/browser/extensions/screenshots/webextension/background/deviceInfo.js b/browser/extensions/screenshots/webextension/background/deviceInfo.js | |
index e665cc2..822143e 100644 | |
--- a/browser/extensions/screenshots/webextension/background/deviceInfo.js | |
+++ b/browser/extensions/screenshots/webextension/background/deviceInfo.js | |
@@ -11,9 +11,9 @@ this.deviceInfo = (function() { | |
})); | |
return function deviceInfo() { | |
- let match = navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9\.]{1,1000})/); | |
+ let match = navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9.]{1,1000})/); | |
let chromeVersion = match ? match[1] : null; | |
- match = navigator.userAgent.match(/Firefox\/([0-9\.]{1,1000})/); | |
+ match = navigator.userAgent.match(/Firefox\/([0-9.]{1,1000})/); | |
let firefoxVersion = match ? match[1] : null; | |
let appName = chromeVersion ? "chrome" : "firefox"; | |
diff --git a/browser/extensions/screenshots/webextension/background/main.js b/browser/extensions/screenshots/webextension/background/main.js | |
index 3af58e5..e12ef6c 100644 | |
--- a/browser/extensions/screenshots/webextension/background/main.js | |
+++ b/browser/extensions/screenshots/webextension/background/main.js | |
@@ -1,4 +1,4 @@ | |
-/* globals selectorLoader, analytics, communication, catcher, log, makeUuid, auth, senderror */ | |
+/* globals selectorLoader, analytics, communication, catcher, log, makeUuid, auth, senderror, startBackground */ | |
"use strict"; | |
@@ -18,9 +18,16 @@ this.main = (function() { | |
if (!hasSeenOnboarding) { | |
setIconActive(false, null); | |
// Note that the branded name 'Firefox Screenshots' is not localized: | |
- browser.browserAction.setTitle({ | |
- title: "Firefox Screenshots" | |
- }); | |
+ if (!startBackground.usePhotonPageAction) { | |
+ browser.browserAction.setTitle({ | |
+ title: "Firefox Screenshots" | |
+ }); | |
+ } else { | |
+ startBackground.photonPageActionPort.postMessage({ | |
+ type: "setProperties", | |
+ title: "Firefox Screenshots" | |
+ }); | |
+ } | |
} | |
}).catch((error) => { | |
log.error("Error getting hasSeenOnboarding:", error); | |
@@ -55,14 +62,21 @@ this.main = (function() { | |
if ((!hasSeenOnboarding) && !active) { | |
path = "icons/icon-starred-32-v2.svg"; | |
} | |
- browser.browserAction.setIcon({path, tabId}).catch((error) => { | |
- // FIXME: use errorCode | |
- if (error.message && /Invalid tab ID/.test(error.message)) { | |
- // This is a normal exception that we can ignore | |
- } else { | |
- catcher.unhandled(error); | |
- } | |
- }); | |
+ if (!startBackground.usePhotonPageAction) { | |
+ browser.browserAction.setIcon({path, tabId}).catch((error) => { | |
+ // FIXME: use errorCode | |
+ if (error.message && /Invalid tab ID/.test(error.message)) { | |
+ // This is a normal exception that we can ignore | |
+ } else { | |
+ catcher.unhandled(error); | |
+ } | |
+ }); | |
+ } else { | |
+ startBackground.photonPageActionPort.postMessage({ | |
+ type: "setProperties", | |
+ iconPath: path | |
+ }); | |
+ } | |
} | |
function toggleSelector(tab) { | |
@@ -94,10 +108,11 @@ this.main = (function() { | |
} | |
function shouldOpenMyShots(url) { | |
- return /^about:(?:newtab|blank)/i.test(url) || /^resource:\/\/activity-streams\//i.test(url); | |
+ return /^about:(?:newtab|blank|home)/i.test(url) || /^resource:\/\/activity-streams\//i.test(url); | |
} | |
// This is called by startBackground.js, directly in response to browser.browserAction.onClicked | |
+ // and clicks on the Photon page action | |
exports.onClicked = catcher.watchFunction((tab) => { | |
if (tab.incognito) { | |
senderror.showError({ | |
@@ -274,9 +289,16 @@ this.main = (function() { | |
hasSeenOnboarding = true; | |
catcher.watchPromise(browser.storage.local.set({hasSeenOnboarding})); | |
setIconActive(false, null); | |
- browser.browserAction.setTitle({ | |
- title: browser.i18n.getMessage("contextMenuLabel") | |
- }); | |
+ if (!startBackground.usePhotonPageAction) { | |
+ browser.browserAction.setTitle({ | |
+ title: browser.i18n.getMessage("contextMenuLabel") | |
+ }); | |
+ } else { | |
+ startBackground.photonPageActionPort.postMessage({ | |
+ type: "setProperties", | |
+ title: browser.i18n.getMessage("contextMenuLabel") | |
+ }); | |
+ } | |
}); | |
communication.register("abortFrameset", () => { | |
diff --git a/browser/extensions/screenshots/webextension/background/startBackground.js b/browser/extensions/screenshots/webextension/background/startBackground.js | |
index 04397ef..29c3064 100644 | |
--- a/browser/extensions/screenshots/webextension/background/startBackground.js | |
+++ b/browser/extensions/screenshots/webextension/background/startBackground.js | |
@@ -1,6 +1,7 @@ | |
/* globals browser, main, communication */ | |
/* This file handles: | |
browser.browserAction.onClicked | |
+ clicks on the Photon page action | |
browser.contextMenus.onClicked | |
browser.runtime.onMessage | |
and loads the rest of the background page in response to those events, forwarding | |
@@ -8,6 +9,8 @@ | |
*/ | |
this.startBackground = (function() { | |
+ let exports = {}; | |
+ | |
const backgroundScripts = [ | |
"log.js", | |
"makeUuid.js", | |
@@ -52,11 +55,22 @@ this.startBackground = (function() { | |
// Note this duplicates functionality in main.js, but we need to change | |
// the onboarding icon before main.js loads up | |
+ let iconPath = null; | |
browser.storage.local.get(["hasSeenOnboarding"]).then((result) => { | |
let hasSeenOnboarding = !!result.hasSeenOnboarding; | |
if (!hasSeenOnboarding) { | |
let path = "icons/icon-starred-32-v2.svg"; | |
- browser.browserAction.setIcon({path}); | |
+ if (!usePhotonPageAction) { | |
+ browser.browserAction.setIcon({path}); | |
+ } else { | |
+ iconPath = path; | |
+ if (photonPageActionPort) { | |
+ photonPageActionPort.postMessage({ | |
+ type: "setProperties", | |
+ iconPath | |
+ }); | |
+ } | |
+ } | |
} | |
}).catch((error) => { | |
console.error("Error loading Screenshots onboarding flag:", error); | |
@@ -71,6 +85,10 @@ this.startBackground = (function() { | |
return true; | |
}); | |
+ let usePhotonPageAction = false; | |
+ let photonPageActionPort = null; | |
+ initPhotonPageAction(); | |
+ | |
// We delay this check (by CHECK_MIGRATION_DELAY) just to avoid piling too | |
// many things onto browser/add-on startup | |
requestIdleCallback(() => { | |
@@ -122,4 +140,50 @@ this.startBackground = (function() { | |
return loadedPromise; | |
} | |
+ function initPhotonPageAction() { | |
+ // Set up this side of the Photon page action port. The other side is in | |
+ // bootstrap.js. Ideally, in the future, WebExtension page actions and | |
+ // Photon page actions would be one in the same, but they aren't right now. | |
+ photonPageActionPort = browser.runtime.connect({ name: "photonPageActionPort" }); | |
+ photonPageActionPort.onMessage.addListener((message) => { | |
+ switch (message.type) { | |
+ case "setUsePhotonPageAction": | |
+ usePhotonPageAction = message.value; | |
+ break; | |
+ case "click": | |
+ loadIfNecessary().then(() => { | |
+ main.onClicked(message.tab); | |
+ }).catch((error) => { | |
+ console.error("Error loading Screenshots:", error); | |
+ }); | |
+ break; | |
+ default: | |
+ console.error("Unrecognized message:", message); | |
+ break; | |
+ } | |
+ }); | |
+ photonPageActionPort.postMessage({ | |
+ type: "setProperties", | |
+ title: browser.i18n.getMessage("contextMenuLabel"), | |
+ iconPath | |
+ }); | |
+ | |
+ // Export these so that main.js can use them. | |
+ Object.defineProperties(exports, { | |
+ "photonPageActionPort": { | |
+ enumerable: true, | |
+ get() { | |
+ return photonPageActionPort; | |
+ } | |
+ }, | |
+ "usePhotonPageAction": { | |
+ enumerable: true, | |
+ get() { | |
+ return usePhotonPageAction; | |
+ } | |
+ } | |
+ }); | |
+ } | |
+ | |
+ return exports; | |
})(); | |
diff --git a/browser/extensions/screenshots/webextension/build/inlineSelectionCss.js b/browser/extensions/screenshots/webextension/build/inlineSelectionCss.js | |
index dc7f616..9e0ac1e 100644 | |
--- a/browser/extensions/screenshots/webextension/build/inlineSelectionCss.js | |
+++ b/browser/extensions/screenshots/webextension/build/inlineSelectionCss.js | |
@@ -1,6 +1,6 @@ | |
/* Created from build/server/static/css/inline-selection.css */ | |
window.inlineSelectionCss = ` | |
-.button, .highlight-button-cancel, .highlight-button-save, .highlight-button-download { | |
+.button, .highlight-button-cancel, .highlight-button-save, .highlight-button-download, .preview-button-save { | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
@@ -19,28 +19,28 @@ window.inlineSelectionCss = ` | |
transition: background 150ms cubic-bezier(0.07, 0.95, 0, 1), border 150ms cubic-bezier(0.07, 0.95, 0, 1); | |
user-select: none; | |
white-space: nowrap; } | |
- .button.small, .small.highlight-button-cancel, .small.highlight-button-save, .small.highlight-button-download { | |
+ .button.small, .small.highlight-button-cancel, .small.highlight-button-save, .small.highlight-button-download, .small.preview-button-save { | |
height: 32px; | |
line-height: 32px; | |
padding: 0 8px; } | |
- .button.tiny, .tiny.highlight-button-cancel, .tiny.highlight-button-save, .tiny.highlight-button-download { | |
+ .button.tiny, .tiny.highlight-button-cancel, .tiny.highlight-button-save, .tiny.highlight-button-download, .tiny.preview-button-save { | |
font-size: 14px; | |
height: 26px; | |
border: 1px solid #c7c7c7; } | |
- .button.tiny:hover, .tiny.highlight-button-cancel:hover, .tiny.highlight-button-save:hover, .tiny.highlight-button-download:hover, .button.tiny:focus, .tiny.highlight-button-cancel:focus, .tiny.highlight-button-save:focus, .tiny.highlight-button-download:focus { | |
+ .button.tiny:hover, .tiny.highlight-button-cancel:hover, .tiny.highlight-button-save:hover, .tiny.highlight-button-download:hover, .tiny.preview-button-save:hover, .button.tiny:focus, .tiny.highlight-button-cancel:focus, .tiny.highlight-button-save:focus, .tiny.highlight-button-download:focus, .tiny.preview-button-save:focus { | |
background: #ebebeb; | |
border-color: #989898; } | |
- .button.tiny:active, .tiny.highlight-button-cancel:active, .tiny.highlight-button-save:active, .tiny.highlight-button-download:active { | |
+ .button.tiny:active, .tiny.highlight-button-cancel:active, .tiny.highlight-button-save:active, .tiny.highlight-button-download:active, .tiny.preview-button-save:active { | |
background: #dedede; | |
border-color: #989898; } | |
- .button.block-button, .block-button.highlight-button-cancel, .block-button.highlight-button-save, .block-button.highlight-button-download { | |
+ .button.block-button, .block-button.highlight-button-cancel, .block-button.highlight-button-save, .block-button.highlight-button-download, .block-button.preview-button-save { | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
box-sizing: border-box; | |
- border: none; | |
+ border: 0; | |
border-right: 1px solid #c7c7c7; | |
- box-shadow: none; | |
+ box-shadow: 0; | |
border-radius: 0; | |
flex-shrink: 0; | |
font-size: 20px; | |
@@ -48,25 +48,54 @@ window.inlineSelectionCss = ` | |
line-height: 100%; | |
overflow: hidden; } | |
@media (max-width: 719px) { | |
- .button.block-button, .block-button.highlight-button-cancel, .block-button.highlight-button-save, .block-button.highlight-button-download { | |
+ .button.block-button, .block-button.highlight-button-cancel, .block-button.highlight-button-save, .block-button.highlight-button-download, .block-button.preview-button-save { | |
justify-content: flex-start; | |
font-size: 16px; | |
height: 72px; | |
margin-right: 10px; | |
padding: 0 5px; } } | |
- .button.block-button:hover, .block-button.highlight-button-cancel:hover, .block-button.highlight-button-save:hover, .block-button.highlight-button-download:hover { | |
+ .button.block-button:hover, .block-button.highlight-button-cancel:hover, .block-button.highlight-button-save:hover, .block-button.highlight-button-download:hover, .block-button.preview-button-save:hover { | |
background: #ebebeb; } | |
- .button.block-button:active, .block-button.highlight-button-cancel:active, .block-button.highlight-button-save:active, .block-button.highlight-button-download:active { | |
+ .button.block-button:active, .block-button.highlight-button-cancel:active, .block-button.highlight-button-save:active, .block-button.highlight-button-download:active, .block-button.preview-button-save:active { | |
background: #dedede; } | |
+ .button.download, .download.highlight-button-cancel, .download.highlight-button-save, .download.highlight-button-download, .download.preview-button-save, .button.trash, .trash.highlight-button-cancel, .trash.highlight-button-save, .trash.highlight-button-download, .trash.preview-button-save, .button.share, .share.highlight-button-cancel, .share.highlight-button-save, .share.highlight-button-download, .share.preview-button-save, .button.flag, .flag.highlight-button-cancel, .flag.highlight-button-save, .flag.highlight-button-download, .flag.preview-button-save { | |
+ background-image: url("../img/icon-sprite.svg"); | |
+ background-size: 480px 40px; | |
+ background-repeat: no-repeat; | |
+ background-position: 0 0; | |
+ margin-right: 10px; | |
+ transition: background-color 150ms cubic-bezier(0.07, 0.95, 0, 1); } | |
+ .button.download:hover, .download.highlight-button-cancel:hover, .download.highlight-button-save:hover, .download.highlight-button-download:hover, .download.preview-button-save:hover { | |
+ background-position: -40px 0; } | |
+ .button.download:active, .download.highlight-button-cancel:active, .download.highlight-button-save:active, .download.highlight-button-download:active, .download.preview-button-save:active { | |
+ background-position: -80px 0; } | |
+ .button.share, .share.highlight-button-cancel, .share.highlight-button-save, .share.highlight-button-download, .share.preview-button-save { | |
+ background-position: -120px 0; } | |
+ .button.share:hover, .share.highlight-button-cancel:hover, .share.highlight-button-save:hover, .share.highlight-button-download:hover, .share.preview-button-save:hover { | |
+ background-position: -160px 0; } | |
+ .button.share:active, .share.highlight-button-cancel:active, .share.highlight-button-save:active, .share.highlight-button-download:active, .share.preview-button-save:active, .button.share.active, .share.active.highlight-button-cancel, .share.active.highlight-button-save, .share.active.highlight-button-download, .share.active.preview-button-save { | |
+ background-position: -200px 0; } | |
+ .button.trash, .trash.highlight-button-cancel, .trash.highlight-button-save, .trash.highlight-button-download, .trash.preview-button-save { | |
+ background-position: -240px 0; } | |
+ .button.trash:hover, .trash.highlight-button-cancel:hover, .trash.highlight-button-save:hover, .trash.highlight-button-download:hover, .trash.preview-button-save:hover { | |
+ background-position: -280px 0; } | |
+ .button.trash:active, .trash.highlight-button-cancel:active, .trash.highlight-button-save:active, .trash.highlight-button-download:active, .trash.preview-button-save:active { | |
+ background-position: -320px 0; } | |
+ .button.flag, .flag.highlight-button-cancel, .flag.highlight-button-save, .flag.highlight-button-download, .flag.preview-button-save { | |
+ background-position: -360px 0; } | |
+ .button.flag:hover, .flag.highlight-button-cancel:hover, .flag.highlight-button-save:hover, .flag.highlight-button-download:hover, .flag.preview-button-save:hover { | |
+ background-position: -400px 0; } | |
+ .button.flag:active, .flag.highlight-button-cancel:active, .flag.highlight-button-save:active, .flag.highlight-button-download:active, .flag.preview-button-save:active { | |
+ background-position: -440px 0; } | |
.inverse-color-scheme { | |
background: #3e3d40; | |
- color: #f5f5f7; } | |
+ color: #f6f6f8; } | |
.inverse-color-scheme a { | |
color: #e1e1e6; } | |
.default-color-scheme { | |
- background: #f5f5f7; | |
+ background: #f6f6f8; | |
color: #3e3d40; } | |
.default-color-scheme a { | |
color: #009ec0; } | |
@@ -79,47 +108,71 @@ window.inlineSelectionCss = ` | |
text-decoration: underline; } | |
.alt-color-scheme { | |
- background: #31365A; | |
- color: #f5f5f7; } | |
+ background: #31365a; | |
+ color: #f6f6f8; } | |
.alt-color-scheme h1 { | |
- color: #6F7FB6; } | |
+ color: #6f7fb6; } | |
.alt-color-scheme a { | |
color: #e1e1e6; | |
text-decoration: underline; } | |
-.button.primary, .primary.highlight-button-cancel, .highlight-button-save, .primary.highlight-button-download { | |
+.button.primary, .primary.highlight-button-cancel, .highlight-button-save, .primary.highlight-button-download, .preview-button-save { | |
background-color: #009ec0; | |
color: #fff; } | |
- .button.primary:hover, .primary.highlight-button-cancel:hover, .highlight-button-save:hover, .primary.highlight-button-download:hover, .button.primary:focus, .primary.highlight-button-cancel:focus, .highlight-button-save:focus, .primary.highlight-button-download:focus { | |
+ .button.primary:hover, .primary.highlight-button-cancel:hover, .highlight-button-save:hover, .primary.highlight-button-download:hover, .preview-button-save:hover, .button.primary:focus, .primary.highlight-button-cancel:focus, .highlight-button-save:focus, .primary.highlight-button-download:focus, .preview-button-save:focus { | |
background-color: #00819c; } | |
- .button.primary:active, .primary.highlight-button-cancel:active, .highlight-button-save:active, .primary.highlight-button-download:active { | |
+ .button.primary:active, .primary.highlight-button-cancel:active, .highlight-button-save:active, .primary.highlight-button-download:active, .preview-button-save:active { | |
background-color: #006c83; } | |
-.button.secondary, .highlight-button-cancel, .secondary.highlight-button-save, .highlight-button-download { | |
- background-color: #f5f5f7; | |
+.button.secondary, .highlight-button-cancel, .secondary.highlight-button-save, .highlight-button-download, .secondary.preview-button-save { | |
+ background-color: #f6f6f8; | |
color: #3e3d40; } | |
- .button.secondary:hover, .highlight-button-cancel:hover, .secondary.highlight-button-save:hover, .highlight-button-download:hover { | |
+ .button.secondary:hover, .highlight-button-cancel:hover, .secondary.highlight-button-save:hover, .highlight-button-download:hover, .secondary.preview-button-save:hover { | |
background-color: #ebebeb; } | |
- .button.secondary:hover, .highlight-button-cancel:hover, .secondary.highlight-button-save:hover, .highlight-button-download:hover { | |
+ .button.secondary:active, .highlight-button-cancel:active, .secondary.highlight-button-save:active, .highlight-button-download:active, .secondary.preview-button-save:active { | |
background-color: #dedede; } | |
-.button.transparent, .transparent.highlight-button-cancel, .transparent.highlight-button-save, .transparent.highlight-button-download { | |
+.button.transparent, .transparent.highlight-button-cancel, .transparent.highlight-button-save, .transparent.highlight-button-download, .transparent.preview-button-save { | |
background-color: transparent; | |
color: #3e3d40; } | |
- .button.transparent:hover, .transparent.highlight-button-cancel:hover, .transparent.highlight-button-save:hover, .transparent.highlight-button-download:hover, .button.transparent:focus, .transparent.highlight-button-cancel:focus, .transparent.highlight-button-save:focus, .transparent.highlight-button-download:focus, .button.transparent:active, .transparent.highlight-button-cancel:active, .transparent.highlight-button-save:active, .transparent.highlight-button-download:active { | |
+ .button.transparent:hover, .transparent.highlight-button-cancel:hover, .transparent.highlight-button-save:hover, .transparent.highlight-button-download:hover, .transparent.preview-button-save:hover, .button.transparent:focus, .transparent.highlight-button-cancel:focus, .transparent.highlight-button-save:focus, .transparent.highlight-button-download:focus, .transparent.preview-button-save:focus, .button.transparent:active, .transparent.highlight-button-cancel:active, .transparent.highlight-button-save:active, .transparent.highlight-button-download:active, .transparent.preview-button-save:active { | |
background-color: rgba(0, 0, 0, 0.05); } | |
-.button.warning, .warning.highlight-button-cancel, .warning.highlight-button-save, .warning.highlight-button-download { | |
+.button.warning, .warning.highlight-button-cancel, .warning.highlight-button-save, .warning.highlight-button-download, .warning.preview-button-save { | |
color: #fff; | |
background: #d92215; } | |
- .button.warning:hover, .warning.highlight-button-cancel:hover, .warning.highlight-button-save:hover, .warning.highlight-button-download:hover, .button.warning:focus, .warning.highlight-button-cancel:focus, .warning.highlight-button-save:focus, .warning.highlight-button-download:focus { | |
+ .button.warning:hover, .warning.highlight-button-cancel:hover, .warning.highlight-button-save:hover, .warning.highlight-button-download:hover, .warning.preview-button-save:hover, .button.warning:focus, .warning.highlight-button-cancel:focus, .warning.highlight-button-save:focus, .warning.highlight-button-download:focus, .warning.preview-button-save:focus { | |
background: #b81d12; } | |
- .button.warning:active, .warning.highlight-button-cancel:active, .warning.highlight-button-save:active, .warning.highlight-button-download:active { | |
+ .button.warning:active, .warning.highlight-button-cancel:active, .warning.highlight-button-save:active, .warning.highlight-button-download:active, .warning.preview-button-save:active { | |
background: #a11910; } | |
.subtitle-link { | |
color: #009ec0; } | |
+.loader { | |
+ background: #2e2d30; | |
+ border-radius: 2px; | |
+ height: 4px; | |
+ overflow: hidden; | |
+ position: relative; | |
+ width: 200px; } | |
+ #shot-index .loader { | |
+ background-color: #dedede; } | |
+ | |
+.loader-inner { | |
+ animation: bounce infinite alternate 1250ms cubic-bezier(0.7, 0, 0.3, 1); | |
+ background: #04d1e6; | |
+ border-radius: 2px; | |
+ height: 4px; | |
+ transform: translateX(-40px); | |
+ width: 50px; } | |
+ | |
+@keyframes bounce { | |
+ 0% { | |
+ transform: translateX(-40px); } | |
+ 100% { | |
+ transform: translate(190px); } } | |
+ | |
@keyframes fade-in { | |
0% { | |
opacity: 0; } | |
@@ -136,13 +189,13 @@ window.inlineSelectionCss = ` | |
@keyframes pulse { | |
0% { | |
- opacity: .3; | |
+ opacity: 0.3; | |
transform: scale(1); } | |
70% { | |
- opacity: .25; | |
+ opacity: 0.25; | |
transform: scale(1.04); } | |
100% { | |
- opacity: .3; | |
+ opacity: 0.3; | |
transform: scale(1); } } | |
@keyframes slide-left { | |
@@ -153,6 +206,16 @@ window.inlineSelectionCss = ` | |
opacity: 1; | |
transform: translate3d(0, 0, 0); } } | |
+@keyframes bounce-in { | |
+ 0% { | |
+ opacity: 0; | |
+ transform: scale(1); } | |
+ 60% { | |
+ opacity: 1; | |
+ transform: scale(1.02); } | |
+ 100% { | |
+ transform: scale(1); } } | |
+ | |
.mover-target { | |
display: flex; | |
align-items: center; | |
@@ -177,10 +240,10 @@ window.inlineSelectionCss = ` | |
pointer-events: none; | |
position: absolute; | |
z-index: 10000000000; } | |
- .hover-highlight:before { | |
+ .hover-highlight::before { | |
border: 2px dashed rgba(255, 255, 255, 0.4); | |
bottom: 0; | |
- content: ''; | |
+ content: ""; | |
left: 0; | |
position: absolute; | |
right: 0; | |
@@ -356,11 +419,47 @@ window.inlineSelectionCss = ` | |
position: absolute; | |
pointer-events: none; | |
font-weight: bold; | |
- font-family: sans-serif; | |
+ font-family: -apple-system, BlinkMacSystemFont, "segoe ui", "helvetica neue", helvetica, ubuntu, roboto, noto, arial, sans-serif; | |
font-size: 70%; | |
color: #000; | |
text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff; } | |
+.preview-buttons { | |
+ display: flex; | |
+ align-items: center; | |
+ justify-content: center; | |
+ position: absolute; | |
+ right: 0; | |
+ top: -2px; } | |
+ | |
+.preview-image { | |
+ position: relative; | |
+ height: 80%; | |
+ max-width: 100%; | |
+ margin: auto 2em; | |
+ text-align: center; | |
+ animation-delay: 50ms; | |
+ animation: bounce-in 300ms forwards ease-in-out; } | |
+ | |
+.preview-image img { | |
+ display: block; | |
+ width: auto; | |
+ height: auto; | |
+ max-width: 100%; | |
+ max-height: 90%; | |
+ margin: 50px auto; | |
+ border: 1px solid rgba(255, 255, 255, 0.8); } | |
+ | |
+.preview-button-save { | |
+ background-image: url("MOZ_EXTENSION/icons/cloud.svg"); | |
+ background-position: 8px center; | |
+ background-repeat: no-repeat; | |
+ background-size: 20px 18px; | |
+ font-size: 18px; | |
+ margin: 5px; | |
+ min-width: 80px; | |
+ padding-left: 34px; } | |
+ | |
.fixed-container { | |
align-items: center; | |
display: flex; | |
@@ -418,7 +517,7 @@ window.inlineSelectionCss = ` | |
justify-content: center; | |
animation: pulse 125mm cubic-bezier(0.07, 0.95, 0, 1); | |
color: #fff; | |
- font-family: -apple-system, BlinkMacSystemFont, sans-serif; | |
+ font-family: -apple-system, BlinkMacSystemFont, "segoe ui", "helvetica neue", helvetica, ubuntu, roboto, noto, arial, sans-serif; | |
font-size: 24px; | |
line-height: 32px; | |
text-align: center; | |
diff --git a/browser/extensions/screenshots/webextension/build/onboardingCss.js b/browser/extensions/screenshots/webextension/build/onboardingCss.js | |
index 37e4750..9063da7 100644 | |
--- a/browser/extensions/screenshots/webextension/build/onboardingCss.js | |
+++ b/browser/extensions/screenshots/webextension/build/onboardingCss.js | |
@@ -1,5 +1,29 @@ | |
/* Created from build/server/static/css/onboarding.css */ | |
window.onboardingCss = ` | |
+.loader { | |
+ background: #2e2d30; | |
+ border-radius: 2px; | |
+ height: 4px; | |
+ overflow: hidden; | |
+ position: relative; | |
+ width: 200px; } | |
+ #shot-index .loader { | |
+ background-color: #dedede; } | |
+ | |
+.loader-inner { | |
+ animation: bounce infinite alternate 1250ms cubic-bezier(0.7, 0, 0.3, 1); | |
+ background: #04d1e6; | |
+ border-radius: 2px; | |
+ height: 4px; | |
+ transform: translateX(-40px); | |
+ width: 50px; } | |
+ | |
+@keyframes bounce { | |
+ 0% { | |
+ transform: translateX(-40px); } | |
+ 100% { | |
+ transform: translate(190px); } } | |
+ | |
@keyframes fade-in { | |
0% { | |
opacity: 0; } | |
@@ -16,13 +40,13 @@ window.onboardingCss = ` | |
@keyframes pulse { | |
0% { | |
- opacity: .3; | |
+ opacity: 0.3; | |
transform: scale(1); } | |
70% { | |
- opacity: .25; | |
+ opacity: 0.25; | |
transform: scale(1.04); } | |
100% { | |
- opacity: .3; | |
+ opacity: 0.3; | |
transform: scale(1); } } | |
@keyframes slide-left { | |
@@ -33,10 +57,20 @@ window.onboardingCss = ` | |
opacity: 1; | |
transform: translate3d(0, 0, 0); } } | |
+@keyframes bounce-in { | |
+ 0% { | |
+ opacity: 0; | |
+ transform: scale(1); } | |
+ 60% { | |
+ opacity: 1; | |
+ transform: scale(1.02); } | |
+ 100% { | |
+ transform: scale(1); } } | |
+ | |
html, | |
body { | |
box-sizing: border-box; | |
- font-family: -apple-system, BlinkMacSystemFont, sans-serif; | |
+ font-family: -apple-system, BlinkMacSystemFont, "segoe ui", "helvetica neue", helvetica, ubuntu, roboto, noto, arial, sans-serif; | |
height: 100%; | |
margin: 0; | |
width: 100%; } | |
@@ -62,7 +96,7 @@ body { | |
align-items: center; | |
flex-direction: column; | |
justify-content: center; | |
- background-color: #f5f5f7; | |
+ background-color: #f6f6f8; | |
border-radius: 5px; | |
height: 520px; | |
overflow: hidden; | |
@@ -145,7 +179,7 @@ body { | |
.goto-slide { | |
background: transparent; | |
- background-color: #f5f5f7; | |
+ background-color: #f6f6f8; | |
border-radius: 50%; | |
border: 0; | |
flex: 0 0 9px; | |
@@ -231,14 +265,14 @@ body { | |
opacity: 1; } | |
.active-slide-1 #prev, | |
-.active-slide-3 #next { | |
+.active-slide-4 #next { | |
display: none; } | |
#done { | |
background-image: url("MOZ_EXTENSION/icons/done.svg"); | |
display: none; } | |
-.active-slide-3 #done { | |
+.active-slide-4 #done { | |
display: inline-block; } | |
/* for smaller screen sizes */ | |
diff --git a/browser/extensions/screenshots/webextension/build/onboardingHtml.js b/browser/extensions/screenshots/webextension/build/onboardingHtml.js | |
index 02cb8d4..8683f46 100644 | |
--- a/browser/extensions/screenshots/webextension/build/onboardingHtml.js | |
+++ b/browser/extensions/screenshots/webextension/build/onboardingHtml.js | |
@@ -10,7 +10,7 @@ window.onboardingHtml = ` | |
<body> | |
<div id="slide-overlay"> | |
<!-- The current slide is set by having .active-slide-1, .active-slide-2, etc on #slide element: --> | |
- <div id="slide-container" data-number-of-slides="3" class="active-slide-1"> | |
+ <div id="slide-container" data-number-of-slides="4" class="active-slide-1"> | |
<div class="slide slide-1"> | |
<!-- Note: all images must be listed in manifest.json.template under web_accessible_resources --> | |
<div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-1.png');"></div> | |
@@ -30,6 +30,13 @@ window.onboardingHtml = ` | |
</div> | |
</div> | |
<div class="slide slide-3"> | |
+ <div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-3.png');"></div> | |
+ <div class="slide-content"> | |
+ <h1 data-l10n-id="tourHeaderThree"></h1> | |
+ <p data-l10n-id="tourBodyThree"></p> | |
+ </div> | |
+ </div> | |
+ <div class="slide slide-4"> | |
<div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-4.png');"></div> | |
<div class="slide-content"> | |
<h1 data-l10n-id="tourHeaderFour"></h1> | |
@@ -46,6 +53,7 @@ window.onboardingHtml = ` | |
<button class="goto-slide goto-slide-1" data-number="1" tabindex=4></button> | |
<button class="goto-slide goto-slide-2" data-number="2" tabindex=5></button> | |
<button class="goto-slide goto-slide-3" data-number="3" tabindex=6></button> | |
+ <button class="goto-slide goto-slide-4" data-number="4" tabindex=7></button> | |
</div> | |
<!-- FIXME: Need to put in privacy / etc links --> | |
</div> | |
diff --git a/browser/extensions/screenshots/webextension/build/raven.js b/browser/extensions/screenshots/webextension/build/raven.js | |
index 14e25ec..b453c3e 100644 | |
--- a/browser/extensions/screenshots/webextension/build/raven.js | |
+++ b/browser/extensions/screenshots/webextension/build/raven.js | |
@@ -1,4 +1,4 @@ | |
-/*! Raven.js 3.15.0 (d49a1b8) | github.com/getsentry/raven-js */ | |
+/*! Raven.js 3.17.0 (6384830) | github.com/getsentry/raven-js */ | |
/* | |
* Includes TraceKit | |
@@ -91,6 +91,13 @@ var _window = typeof window !== 'undefined' ? window | |
var _document = _window.document; | |
var _navigator = _window.navigator; | |
+ | |
+function keepOriginalCallback(original, callback) { | |
+ return isFunction(callback) ? | |
+ function (data) { return callback(data, original) } : | |
+ callback; | |
+} | |
+ | |
// First, check for JSON support | |
// If there is no JSON, we no-op the core features of Raven | |
// since JSON is required to encode the payload | |
@@ -156,7 +163,7 @@ Raven.prototype = { | |
// webpack (using a build step causes webpack #1617). Grunt verifies that | |
// this value matches package.json during build. | |
// See: https://github.com/getsentry/raven-js/issues/465 | |
- VERSION: '3.15.0', | |
+ VERSION: '3.17.0', | |
debug: false, | |
@@ -638,10 +645,8 @@ Raven.prototype = { | |
*/ | |
setDataCallback: function(callback) { | |
var original = this._globalOptions.dataCallback; | |
- this._globalOptions.dataCallback = isFunction(callback) | |
- ? function (data) { return callback(data, original); } | |
- : callback; | |
- | |
+ this._globalOptions.dataCallback = | |
+ keepOriginalCallback(original, callback); | |
return this; | |
}, | |
@@ -654,10 +659,8 @@ Raven.prototype = { | |
*/ | |
setBreadcrumbCallback: function(callback) { | |
var original = this._globalOptions.breadcrumbCallback; | |
- this._globalOptions.breadcrumbCallback = isFunction(callback) | |
- ? function (data) { return callback(data, original); } | |
- : callback; | |
- | |
+ this._globalOptions.breadcrumbCallback = | |
+ keepOriginalCallback(original, callback); | |
return this; | |
}, | |
@@ -670,10 +673,8 @@ Raven.prototype = { | |
*/ | |
setShouldSendCallback: function(callback) { | |
var original = this._globalOptions.shouldSendCallback; | |
- this._globalOptions.shouldSendCallback = isFunction(callback) | |
- ? function (data) { return callback(data, original); } | |
- : callback; | |
- | |
+ this._globalOptions.shouldSendCallback = | |
+ keepOriginalCallback(original, callback); | |
return this; | |
}, | |
@@ -1449,16 +1450,17 @@ Raven.prototype = { | |
for (var i = 0; i < breadcrumbs.values.length; ++i) { | |
crumb = breadcrumbs.values[i]; | |
- if (!crumb.hasOwnProperty('data') || !isObject(crumb.data)) | |
+ if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) | |
continue; | |
- data = crumb.data; | |
+ data = objectMerge({}, crumb.data); | |
for (var j = 0; j < urlProps.length; ++j) { | |
urlProp = urlProps[j]; | |
if (data.hasOwnProperty(urlProp)) { | |
data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); | |
} | |
} | |
+ breadcrumbs.values[i].data = data; | |
} | |
}, | |
@@ -1843,6 +1845,21 @@ function objectMerge(obj1, obj2) { | |
return obj1; | |
} | |
+/** | |
+ * This function is only used for react-native. | |
+ * react-native freezes object that have already been sent over the | |
+ * js bridge. We need this function in order to check if the object is frozen. | |
+ * So it's ok that objectFrozen returns false if Object.isFrozen is not | |
+ * supported because it's not relevant for other "platforms". See related issue: | |
+ * https://github.com/getsentry/react-native-sentry/issues/57 | |
+ */ | |
+function objectFrozen(obj) { | |
+ if (!Object.isFrozen) { | |
+ return false; | |
+ } | |
+ return Object.isFrozen(obj); | |
+} | |
+ | |
function truncate(str, max) { | |
return !max || str.length <= max ? str : str.substr(0, max) + '\u2026'; | |
} | |
@@ -2168,9 +2185,22 @@ function isError(value) { | |
} | |
} | |
+function wrappedCallback(callback) { | |
+ function dataCallback(data, original) { | |
+ var normalizedData = callback(data) || data; | |
+ if (original) { | |
+ return original(normalizedData) || normalizedData; | |
+ } | |
+ return normalizedData; | |
+ } | |
+ | |
+ return dataCallback; | |
+} | |
+ | |
module.exports = { | |
isObject: isObject, | |
- isError: isError | |
+ isError: isError, | |
+ wrappedCallback: wrappedCallback | |
}; | |
},{}],6:[function(_dereq_,module,exports){ | |
@@ -2547,7 +2577,7 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { | |
if (typeof ex.stack === 'undefined' || !ex.stack) return; | |
var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, | |
- gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i, | |
+ gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, | |
winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, | |
// Used to additionally parse URL/line/column from eval frames | |
diff --git a/browser/extensions/screenshots/webextension/build/shot.js b/browser/extensions/screenshots/webextension/build/shot.js | |
index 02fbe03..7968b03 100644 | |
--- a/browser/extensions/screenshots/webextension/build/shot.js | |
+++ b/browser/extensions/screenshots/webextension/build/shot.js | |
@@ -29,7 +29,7 @@ function isUrl(url) { | |
if ((/^view-source:/i).test(url)) { | |
return isUrl(url.substr("view-source:".length)); | |
} | |
- return (/^https?:\/\/[a-z0-9\.\-]{1,8000}[a-z0-9](:[0-9]{1,8000})?\/?/i).test(url); | |
+ return (/^https?:\/\/[a-z0-9.-]{1,8000}[a-z0-9](:[0-9]{1,8000})?\/?/i).test(url); | |
} | |
function assertUrl(url) { | |
@@ -121,7 +121,7 @@ function resolveUrl(base, url) { | |
} | |
if (url.indexOf("/") === 0) { | |
// Domain-relative URL | |
- return (/^https?:\/\/[a-z0-9\.\-]{1,4000}/i).exec(base)[0] + url; | |
+ return (/^https?:\/\/[a-z0-9.-]{1,4000}/i).exec(base)[0] + url; | |
} | |
// Otherwise, a full relative URL | |
while (url.indexOf("./") === 0) { | |
@@ -201,7 +201,7 @@ class AbstractShot { | |
constructor(backend, id, attrs) { | |
attrs = attrs || {}; | |
- assert((/^[a-zA-Z0-9]{1,4000}\/[a-z0-9\.-]{1,4000}$/).test(id), "Bad ID (should be alphanumeric):", JSON.stringify(id)); | |
+ assert((/^[a-zA-Z0-9]{1,4000}\/[a-z0-9.-]{1,4000}$/).test(id), "Bad ID (should be alphanumeric):", JSON.stringify(id)); | |
this._backend = backend; | |
this._id = id; | |
this.origin = attrs.origin || null; | |
@@ -351,7 +351,7 @@ class AbstractShot { | |
get filename() { | |
let filenameTitle = this.title; | |
let date = new Date(this.createdDate); | |
- filenameTitle = filenameTitle.replace(/[:\\<>\/!@&*.|\n\r\t]/g, " "); | |
+ filenameTitle = filenameTitle.replace(/[:\\<>/!@&*.|\n\r\t]/g, " "); | |
filenameTitle = filenameTitle.replace(/\s{1,4000}/g, " "); | |
let clipFilename = `Screenshot-${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()} ${filenameTitle}`; | |
const clipFilenameBytesSize = clipFilename.length * 2; // JS STrings are UTF-16 | |
diff --git a/browser/extensions/screenshots/webextension/domainFromUrl.js b/browser/extensions/screenshots/webextension/domainFromUrl.js | |
index ac45684..187412d 100644 | |
--- a/browser/extensions/screenshots/webextension/domainFromUrl.js | |
+++ b/browser/extensions/screenshots/webextension/domainFromUrl.js | |
@@ -14,10 +14,10 @@ this.domainFromUrl = (function() { | |
domain = "unknown"; | |
} | |
} | |
- if (domain.search(/^[a-z0-9.\-]{1,1000}$/i) === -1) { | |
+ if (domain.search(/^[a-z0-9.-]{1,1000}$/i) === -1) { | |
// Probably a unicode domain; we could use punycode but it wouldn't decode | |
// well in the URL anyway. Instead we'll punt. | |
- domain = domain.replace(/[^a-z0-9.\-]/ig, ""); | |
+ domain = domain.replace(/[^a-z0-9.-]/ig, ""); | |
if (!domain) { | |
domain = "site"; | |
} | |
diff --git a/browser/extensions/screenshots/webextension/icons/menu-myshot-white.svg b/browser/extensions/screenshots/webextension/icons/menu-myshot-white.svg | |
new file mode 100644 | |
index 0000000..21566cf | |
--- /dev/null | |
+++ b/browser/extensions/screenshots/webextension/icons/menu-myshot-white.svg | |
@@ -0,0 +1 @@ | |
+<svg width="40" height="40" viewBox="0 0 46 46" xmlns="http://www.w3.org/2000/svg"><title>Screenshots</title><path d="M11 11.995c0-.55.455-.995.995-.995h23.01c.55 0 .995.455.995.995v23.01c0 .55-.455.995-.995.995h-23.01c-.55 0-.995-.455-.995-.995v-23.01zM11 25v-2h7v2h-7zm9-5h7v-2h-7v2zm9 5h7v-2h-7v2zm-9 4h7v-2h-7v2zm-2-18h2v25h-2V11zm9 0h2v25h-2V11z" fill="#FFF" fill-rule="evenodd"/></svg> | |
diff --git a/browser/extensions/screenshots/webextension/manifest.json b/browser/extensions/screenshots/webextension/manifest.json | |
index 8a6f918..eb2b2b7f 100644 | |
--- a/browser/extensions/screenshots/webextension/manifest.json | |
+++ b/browser/extensions/screenshots/webextension/manifest.json | |
@@ -1,7 +1,7 @@ | |
{ | |
"manifest_version": 2, | |
"name": "Firefox Screenshots", | |
- "version": "10.11.0", | |
+ "version": "16.0.0", | |
"description": "__MSG_addonDescription__", | |
"author": "__MSG_addonAuthorsList__", | |
"homepage_url": "https://github.com/mozilla-services/screenshots", | |
diff --git a/browser/extensions/screenshots/webextension/onboarding/slides.html b/browser/extensions/screenshots/webextension/onboarding/slides.html | |
index 2150dac..20cf039 100644 | |
--- a/browser/extensions/screenshots/webextension/onboarding/slides.html | |
+++ b/browser/extensions/screenshots/webextension/onboarding/slides.html | |
@@ -8,7 +8,7 @@ | |
<body> | |
<div id="slide-overlay"> | |
<!-- The current slide is set by having .active-slide-1, .active-slide-2, etc on #slide element: --> | |
- <div id="slide-container" data-number-of-slides="3" class="active-slide-1"> | |
+ <div id="slide-container" data-number-of-slides="4" class="active-slide-1"> | |
<div class="slide slide-1"> | |
<!-- Note: all images must be listed in manifest.json.template under web_accessible_resources --> | |
<div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-1.png');"></div> | |
@@ -28,6 +28,13 @@ | |
</div> | |
</div> | |
<div class="slide slide-3"> | |
+ <div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-3.png');"></div> | |
+ <div class="slide-content"> | |
+ <h1 data-l10n-id="tourHeaderThree"></h1> | |
+ <p data-l10n-id="tourBodyThree"></p> | |
+ </div> | |
+ </div> | |
+ <div class="slide slide-4"> | |
<div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-4.png');"></div> | |
<div class="slide-content"> | |
<h1 data-l10n-id="tourHeaderFour"></h1> | |
@@ -44,6 +51,7 @@ | |
<button class="goto-slide goto-slide-1" data-number="1" tabindex=4></button> | |
<button class="goto-slide goto-slide-2" data-number="2" tabindex=5></button> | |
<button class="goto-slide goto-slide-3" data-number="3" tabindex=6></button> | |
+ <button class="goto-slide goto-slide-4" data-number="4" tabindex=7></button> | |
</div> | |
<!-- FIXME: Need to put in privacy / etc links --> | |
</div> | |
diff --git a/browser/extensions/screenshots/webextension/onboarding/slides.js b/browser/extensions/screenshots/webextension/onboarding/slides.js | |
index 92d38f2..2eab430 100644 | |
--- a/browser/extensions/screenshots/webextension/onboarding/slides.js | |
+++ b/browser/extensions/screenshots/webextension/onboarding/slides.js | |
@@ -32,7 +32,7 @@ this.slides = (function() { | |
iframe.scrolling = "no"; | |
updateIframeSize(); | |
let html = onboardingHtml.replace('<style></style>', `<style>${onboardingCss}</style>`); | |
- html = html.replace(/MOZ_EXTENSION([^\"]+)/g, (match, filename) => { | |
+ html = html.replace(/MOZ_EXTENSION([^"]+)/g, (match, filename) => { | |
return browser.extension.getURL(filename); | |
}); | |
iframe.addEventListener("load", catcher.watchFunction(() => { | |
@@ -99,7 +99,7 @@ this.slides = (function() { | |
[privacySentinel]: "https://www.mozilla.org/privacy/firefox/" | |
}; | |
let text = browser.i18n.getMessage( | |
- "termsAndPrivacyNoticeCloudServices", | |
+ "termsAndPrivacyNotice2", | |
[sentinelSplitter + termsSentinel + sentinelSplitter, | |
sentinelSplitter + privacySentinel + sentinelSplitter]); | |
let parts = text.split(sentinelSplitter); | |
diff --git a/browser/extensions/screenshots/webextension/selector/callBackground.js b/browser/extensions/screenshots/webextension/selector/callBackground.js | |
index fec1843..89e4364 100644 | |
--- a/browser/extensions/screenshots/webextension/selector/callBackground.js | |
+++ b/browser/extensions/screenshots/webextension/selector/callBackground.js | |
@@ -4,10 +4,10 @@ | |
this.callBackground = function callBackground(funcName, ...args) { | |
return browser.runtime.sendMessage({funcName, args}).then((result) => { | |
- if (result.type === "success") { | |
+ if (result && result.type === "success") { | |
return result.value; | |
- } else if (result.type === "error") { | |
- let exc = new Error(result.message); | |
+ } else if (result && result.type === "error") { | |
+ let exc = new Error(result.message || "Unknown error"); | |
exc.name = "BackgroundError"; | |
if ('errorCode' in result) { | |
exc.errorCode = result.errorCode; | |
@@ -18,8 +18,8 @@ this.callBackground = function callBackground(funcName, ...args) { | |
throw exc; | |
} else { | |
log.error("Unexpected background result:", result); | |
- let exc = new Error(`Bad response type from background page: ${result.type || undefined}`); | |
- exc.resultType = result.type || "undefined"; | |
+ let exc = new Error(`Bad response type from background page: ${result && result.type || undefined}`); | |
+ exc.resultType = result ? (result.type || "undefined") : "undefined result"; | |
throw exc; | |
} | |
}); | |
diff --git a/browser/extensions/screenshots/webextension/selector/shooter.js b/browser/extensions/screenshots/webextension/selector/shooter.js | |
index b1c4c5e..612ff06 100644 | |
--- a/browser/extensions/screenshots/webextension/selector/shooter.js | |
+++ b/browser/extensions/screenshots/webextension/selector/shooter.js | |
@@ -21,7 +21,7 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars | |
function sanitizeError(data) { | |
const href = new RegExp(regexpEscape(window.location.href), 'g'); | |
- const origin = new RegExp(`${regexpEscape(window.location.origin)}[^\s",>]*`, 'g'); | |
+ const origin = new RegExp(`${regexpEscape(window.location.origin)}[^ \t\n\r",>]*`, 'g'); | |
const json = JSON.stringify(data) | |
.replace(href, 'REDACTED_HREF') | |
.replace(origin, 'REDACTED_URL'); | |
@@ -39,17 +39,22 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars | |
supportsDrawWindow = !!ctx.drawWindow; | |
})(); | |
- function screenshotPage(selectedPos) { | |
+ let screenshotPage = exports.screenshotPage = function(selectedPos, captureType) { | |
if (!supportsDrawWindow) { | |
return null; | |
} | |
let height = selectedPos.bottom - selectedPos.top; | |
let width = selectedPos.right - selectedPos.left; | |
let canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); | |
- canvas.width = width * window.devicePixelRatio; | |
- canvas.height = height * window.devicePixelRatio; | |
let ctx = canvas.getContext('2d'); | |
- if (window.devicePixelRatio !== 1) { | |
+ if (captureType == 'fullPage') { | |
+ canvas.width = width; | |
+ canvas.height = height; | |
+ } else { | |
+ canvas.width = width * window.devicePixelRatio; | |
+ canvas.height = height * window.devicePixelRatio; | |
+ } | |
+ if (window.devicePixelRatio !== 1 && captureType != 'fullPage') { | |
ctx.scale(window.devicePixelRatio, window.devicePixelRatio); | |
} | |
ui.iframe.hide(); | |
@@ -59,11 +64,11 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars | |
ui.iframe.unhide(); | |
} | |
return canvas.toDataURL(); | |
- } | |
+ }; | |
let isSaving = null; | |
- exports.takeShot = function(captureType, selectedPos) { | |
+ exports.takeShot = function(captureType, selectedPos, url) { | |
// isSaving indicates we're aleady in the middle of saving | |
// we use a timeout so in the case of a failure the button will | |
// still start working again | |
@@ -92,7 +97,7 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars | |
if (buildSettings.captureText) { | |
captureText = util.captureEnclosedText(selectedPos); | |
} | |
- let dataUrl = screenshotPage(selectedPos); | |
+ let dataUrl = url || screenshotPage(selectedPos, captureType); | |
if (dataUrl) { | |
shotObject.delAllClips(); | |
shotObject.addClip({ | |
diff --git a/browser/extensions/screenshots/webextension/selector/ui.js b/browser/extensions/screenshots/webextension/selector/ui.js | |
index d7aff1e..3c41210 100644 | |
--- a/browser/extensions/screenshots/webextension/selector/ui.js | |
+++ b/browser/extensions/screenshots/webextension/selector/ui.js | |
@@ -43,7 +43,7 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
return false; | |
} | |
- let substitutedCss = inlineSelectionCss.replace(/MOZ_EXTENSION([^\"]+)/g, (match, filename) => { | |
+ let substitutedCss = inlineSelectionCss.replace(/MOZ_EXTENSION([^"]+)/g, (match, filename) => { | |
return browser.extension.getURL(filename); | |
}); | |
@@ -67,6 +67,28 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
}), 50); | |
} | |
+ function localizeText(doc) { | |
+ let els = doc.querySelectorAll("[data-l10n-id]"); | |
+ for (let el of els) { | |
+ let id = el.getAttribute("data-l10n-id"); | |
+ let text = browser.i18n.getMessage(id); | |
+ el.textContent = text; | |
+ } | |
+ } | |
+ | |
+ function initializeIframe() { | |
+ let el = document.createElement("iframe"); | |
+ el.src = browser.extension.getURL("blank.html"); | |
+ el.style.zIndex = "99999999999"; | |
+ el.style.border = "none"; | |
+ el.style.top = "0"; | |
+ el.style.left = "0"; | |
+ el.style.margin = "0"; | |
+ el.scrolling = "no"; | |
+ el.style.clip = "auto"; | |
+ return el; | |
+ } | |
+ | |
let iframeSelection = exports.iframeSelection = { | |
element: null, | |
addClassName: "", | |
@@ -80,21 +102,15 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
display(installHandlerOnDocument) { | |
return new Promise((resolve, reject) => { | |
if (!this.element) { | |
- this.element = document.createElement("iframe"); | |
- this.element.src = browser.extension.getURL("blank.html"); | |
+ this.element = initializeIframe(); | |
this.element.id = "firefox-screenshots-selection-iframe"; | |
this.element.style.display = "none"; | |
- this.element.style.zIndex = "99999999999"; | |
- this.element.style.border = "none"; | |
- this.element.style.position = "absolute"; | |
- this.element.style.top = "0"; | |
- this.element.style.left = "0"; | |
- this.element.style.margin = "0"; | |
- this.element.scrolling = "no"; | |
+ this.element.style.setProperty('position', 'absolute', 'important'); | |
this.updateElementSize(); | |
this.element.addEventListener("load", watchFunction(() => { | |
this.document = this.element.contentDocument; | |
assertIsBlankDocument(this.document); | |
+ // eslint-disable-next-line no-unsanitized/property | |
this.document.documentElement.innerHTML = ` | |
<head> | |
<style>${substitutedCss}</style> | |
@@ -203,26 +219,18 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
let iframePreSelection = exports.iframePreSelection = { | |
element: null, | |
document: null, | |
- sizeTracking: { | |
- windowDelayer: null | |
- }, | |
display(installHandlerOnDocument, standardOverlayCallbacks) { | |
return new Promise((resolve, reject) => { | |
if (!this.element) { | |
- this.element = document.createElement("iframe"); | |
- this.element.src = browser.extension.getURL("blank.html"); | |
+ this.element = initializeIframe(); | |
this.element.id = "firefox-screenshots-preselection-iframe"; | |
- this.element.style.zIndex = "99999999999"; | |
- this.element.style.border = "none"; | |
- this.element.style.position = "fixed"; | |
- this.element.style.top = "0"; | |
- this.element.style.left = "0"; | |
- this.element.style.margin = "0"; | |
- this.element.scrolling = "no"; | |
- this.updateElementSize(); | |
+ this.element.style.setProperty('position', 'fixed', 'important'); | |
+ this.element.style.width = "100%"; | |
+ this.element.style.height = "100%"; | |
this.element.addEventListener("load", watchFunction(() => { | |
this.document = this.element.contentDocument; | |
assertIsBlankDocument(this.document) | |
+ // eslint-disable-next-line no-unsanitized/property | |
this.document.documentElement.innerHTML = ` | |
<head> | |
<style>${substitutedCss}</style> | |
@@ -236,9 +244,12 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
<div class="eye right"><div class="eyeball"></div></div> | |
<div class="face"></div> | |
</div> | |
- <div class="preview-instructions"></div> | |
+ <div class="preview-instructions" data-l10n-id="screenshotInstructions"></div> | |
<div class="myshots-all-buttons-container"> | |
- <button class="myshots-button myshots-link" tabindex="1"></button> | |
+ <button class="myshots-button myshots-link" tabindex="1" data-l10n-id="myShotsLink"></button> | |
+ <div class="spacer"></div> | |
+ <button class="myshots-button visible" tabindex="2" data-l10n-id="saveScreenshotVisibleArea"></button> | |
+ <button class="myshots-button full-page" tabindex="3" data-l10n-id="saveScreenshotFullPage"></button> | |
</div> | |
</div> | |
</div> | |
@@ -250,10 +261,13 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
this.document.documentElement.dir = browser.i18n.getMessage("@@bidi_dir"); | |
this.document.documentElement.lang = browser.i18n.getMessage("@@ui_locale"); | |
const overlay = this.document.querySelector(".preview-overlay"); | |
- overlay.querySelector(".preview-instructions").textContent = browser.i18n.getMessage("screenshotInstructions"); | |
- overlay.querySelector(".myshots-link").textContent = browser.i18n.getMessage("myShotsLink"); | |
+ localizeText(this.document); | |
overlay.querySelector(".myshots-button").addEventListener( | |
"click", watchFunction(assertIsTrusted(standardOverlayCallbacks.onOpenMyShots))); | |
+ overlay.querySelector(".visible").addEventListener( | |
+ "click", watchFunction(assertIsTrusted(standardOverlayCallbacks.onClickVisible))); | |
+ overlay.querySelector(".full-page").addEventListener( | |
+ "click", watchFunction(assertIsTrusted(standardOverlayCallbacks.onClickFullPage))); | |
resolve(); | |
}), {once: true}); | |
document.body.appendChild(this.element); | |
@@ -264,16 +278,6 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
}); | |
}, | |
- updateElementSize() { | |
- if (!this.element) { | |
- // This can happen if the selector is unloaded during the resize adjustment | |
- // time-delay | |
- return; | |
- } | |
- this.element.style.height = window.innerHeight + "px"; | |
- this.element.style.width = window.innerWidth + "px"; | |
- }, | |
- | |
hide() { | |
window.removeEventListener("scroll", watchFunction(assertIsTrusted(this.onScroll))); | |
window.removeEventListener("resize", this.onResize, true); | |
@@ -283,7 +287,6 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
}, | |
unhide() { | |
- this.updateElementSize(); | |
window.addEventListener("scroll", watchFunction(assertIsTrusted(this.onScroll))); | |
window.addEventListener("resize", this.onResize, true); | |
this.element.style.display = ""; | |
@@ -313,13 +316,84 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
} | |
}; | |
+ let iframePreview = exports.iframePreview = { | |
+ element: null, | |
+ document: null, | |
+ display(installHandlerOnDocument, standardOverlayCallbacks) { | |
+ return new Promise((resolve, reject) => { | |
+ if (!this.element) { | |
+ this.element = initializeIframe(); | |
+ this.element.id = "firefox-screenshots-preview-iframe"; | |
+ this.element.style.display = "none"; | |
+ this.element.style.setProperty('position', 'fixed', 'important'); | |
+ this.element.style.height = "100%"; | |
+ this.element.style.width = "100%"; | |
+ this.element.onload = watchFunction(() => { | |
+ this.document = this.element.contentDocument; | |
+ // eslint-disable-next-line no-unsanitized/property | |
+ this.document.documentElement.innerHTML = ` | |
+ <head> | |
+ <style>${substitutedCss}</style> | |
+ <title></title> | |
+ </head> | |
+ <body> | |
+ <div class="preview-overlay"> | |
+ <div class="preview-image"> | |
+ <div class="preview-buttons"> | |
+ <button class="highlight-button-cancel"></button> | |
+ <button class="highlight-button-download"></button> | |
+ <button class="preview-button-save" data-l10n-id="saveScreenshotSelectedArea"></button> | |
+ </div> | |
+ </div> | |
+ </div> | |
+ </body>`; | |
+ installHandlerOnDocument(this.document); | |
+ this.document.documentElement.dir = browser.i18n.getMessage("@@bidi_dir"); | |
+ this.document.documentElement.lang = browser.i18n.getMessage("@@ui_locale"); | |
+ localizeText(this.document); | |
+ const overlay = this.document.querySelector(".preview-overlay"); | |
+ overlay.querySelector(".highlight-button-download").addEventListener( | |
+ "click", watchFunction(assertIsTrusted(standardOverlayCallbacks.onDownloadPreview))); | |
+ overlay.querySelector(".preview-button-save").addEventListener( | |
+ "click", watchFunction(assertIsTrusted(standardOverlayCallbacks.onSavePreview))); | |
+ overlay.querySelector(".highlight-button-cancel").addEventListener( | |
+ "click", watchFunction(assertIsTrusted(standardOverlayCallbacks.cancel))); | |
+ resolve(); | |
+ }); | |
+ document.body.appendChild(this.element); | |
+ } else { | |
+ resolve(); | |
+ } | |
+ }); | |
+ }, | |
+ | |
+ hide() { | |
+ if (this.element) { | |
+ this.element.style.display = "none"; | |
+ } | |
+ }, | |
+ | |
+ unhide() { | |
+ this.element.style.display = ""; | |
+ this.element.focus(); | |
+ }, | |
+ | |
+ remove() { | |
+ this.hide(); | |
+ util.removeNode(this.element); | |
+ this.element = null; | |
+ this.document = null; | |
+ } | |
+ }; | |
+ | |
iframePreSelection.onResize = watchFunction(onResize.bind(iframePreSelection), true); | |
let iframe = exports.iframe = { | |
currentIframe: iframePreSelection, | |
display(installHandlerOnDocument, standardOverlayCallbacks) { | |
return iframeSelection.display(installHandlerOnDocument) | |
- .then(() => iframePreSelection.display(installHandlerOnDocument, standardOverlayCallbacks)); | |
+ .then(() => iframePreSelection.display(installHandlerOnDocument, standardOverlayCallbacks)) | |
+ .then(() => iframePreview.display(installHandlerOnDocument, standardOverlayCallbacks)); | |
}, | |
hide() { | |
@@ -337,6 +411,7 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
remove() { | |
iframeSelection.remove(); | |
iframePreSelection.remove(); | |
+ iframePreview.remove(); | |
}, | |
document() { | |
@@ -344,7 +419,7 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
}, | |
useSelection() { | |
- if (this.currentIframe === iframePreSelection) { | |
+ if (this.currentIframe === iframePreSelection || this.currentIframe === iframePreview) { | |
this.hide(); | |
} | |
this.currentIframe = iframeSelection; | |
@@ -352,11 +427,19 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
}, | |
usePreSelection() { | |
- if (this.currentIframe === iframeSelection) { | |
+ if (this.currentIframe === iframeSelection || this.currentIframe === iframePreview) { | |
this.hide(); | |
} | |
this.currentIframe = iframePreSelection; | |
this.unhide(); | |
+ }, | |
+ | |
+ usePreview() { | |
+ if (this.currentIframe === iframeSelection || this.currentIframe === iframePreSelection) { | |
+ this.hide(); | |
+ } | |
+ this.currentIframe = iframePreview; | |
+ this.unhide(); | |
} | |
}; | |
@@ -403,7 +486,6 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
let bodyRect = getBodyRect(); | |
// Note, document.documentElement.scrollHeight is zero on some strange pages (such as the page created when you load an image): | |
let docHeight = Math.max(document.documentElement.scrollHeight || 0, document.body.scrollHeight); | |
- let docWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth); | |
let winBottom = window.innerHeight; | |
let pageYOffset = window.pageYOffset; | |
@@ -434,11 +516,11 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
this.bgTop.style.top = "0px"; | |
this.bgTop.style.height = (pos.top - bodyRect.top) + "px"; | |
this.bgTop.style.left = "0px"; | |
- this.bgTop.style.width = docWidth + "px"; | |
+ this.bgTop.style.width = "100%"; | |
this.bgBottom.style.top = (pos.bottom - bodyRect.top) + "px"; | |
this.bgBottom.style.height = docHeight - (pos.bottom - bodyRect.top) + "px"; | |
this.bgBottom.style.left = "0px"; | |
- this.bgBottom.style.width = docWidth + "px"; | |
+ this.bgBottom.style.width = "100%"; | |
this.bgLeft.style.top = (pos.top - bodyRect.top) + "px"; | |
this.bgLeft.style.height = pos.bottom - pos.top + "px"; | |
this.bgLeft.style.left = "0px"; | |
@@ -446,7 +528,7 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
this.bgRight.style.top = (pos.top - bodyRect.top) + "px"; | |
this.bgRight.style.height = pos.bottom - pos.top + "px"; | |
this.bgRight.style.left = (pos.right - bodyRect.left) + "px"; | |
- this.bgRight.style.width = docWidth - (pos.right - bodyRect.left) + "px"; | |
+ this.bgRight.style.width = "100%"; | |
if (!(this.isElementInViewport(this.buttons))) { | |
this.cancel.style.position = this.download.style.position = this.save.style.position = "fixed"; | |
@@ -557,6 +639,11 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
}, | |
clearSaveDisabled() { | |
+ if (!this.save) { | |
+ // Happens if we try to remove the disabled status after the worker | |
+ // has been shut down | |
+ return; | |
+ } | |
this.save.removeAttribute("disabled"); | |
}, | |
@@ -619,6 +706,14 @@ this.ui = (function() { // eslint-disable-line no-unused-vars | |
} | |
}; | |
+ exports.Preview = { | |
+ display(dataUrl) { | |
+ let img = makeEl("IMG"); | |
+ img.src = dataUrl; | |
+ iframe.document().querySelector(".preview-image").appendChild(img); | |
+ } | |
+ }; | |
+ | |
/** Removes every UI this module creates */ | |
exports.remove = function() { | |
for (let name in exports) { | |
diff --git a/browser/extensions/screenshots/webextension/selector/uicontrol.js b/browser/extensions/screenshots/webextension/selector/uicontrol.js | |
index a9d7fa2..7b2eb07 100644 | |
--- a/browser/extensions/screenshots/webextension/selector/uicontrol.js | |
+++ b/browser/extensions/screenshots/webextension/selector/uicontrol.js | |
@@ -24,6 +24,8 @@ this.uicontrol = (function() { | |
The user is resizing the selection | |
"cancelled": | |
Everything has been cancelled | |
+ "previewing": | |
+ The user is previewing the full-screen/visible image | |
A mousedown goes from crosshairs to dragging. | |
A mouseup goes from dragging to selected | |
@@ -120,6 +122,8 @@ this.uicontrol = (function() { | |
H6: true | |
}; | |
+ let captureType; | |
+ | |
let standardDisplayCallbacks = { | |
cancel: () => { | |
sendEvent("cancel-shot", "overlay-cancel-button"); | |
@@ -134,6 +138,10 @@ this.uicontrol = (function() { | |
}; | |
let standardOverlayCallbacks = { | |
+ cancel: () => { | |
+ sendEvent("cancel-shot", "cancel-preview-button"); | |
+ exports.deactivate(); | |
+ }, | |
onOpenMyShots: () => { | |
sendEvent("goto-myshots", "selection-button"); | |
callBackground("openMyShots") | |
@@ -147,7 +155,8 @@ this.uicontrol = (function() { | |
selectedPos = new Selection( | |
window.scrollX, window.scrollY, | |
window.scrollX + window.innerWidth, window.scrollY + window.innerHeight); | |
- shooter.takeShot("visible", selectedPos); | |
+ captureType = 'visible'; | |
+ setState("previewing"); | |
}, | |
onClickFullPage: () => { | |
sendEvent("capture-full-page", "selection-button"); | |
@@ -166,9 +175,18 @@ this.uicontrol = (function() { | |
selectedPos = new Selection( | |
0, 0, | |
width, height); | |
- shooter.takeShot("fullPage", selectedPos); | |
+ captureType = 'fullPage'; | |
+ setState("previewing"); | |
+ }, | |
+ onSavePreview: () => { | |
+ sendEvent(`save-${captureType.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()}`, "save-preview-button"); | |
+ shooter.takeShot(captureType, selectedPos, dataUrl); | |
+ }, | |
+ onDownloadPreview: () => { | |
+ sendEvent(`download-${captureType.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()}`, "download-preview-button"); | |
+ shooter.downloadShot(selectedPos); | |
} | |
- } | |
+ }; | |
/** Holds all the objects that handle events for each state: */ | |
let stateHandlers = {}; | |
@@ -344,6 +362,16 @@ this.uicontrol = (function() { | |
* all stateHandlers | |
*/ | |
+ let dataUrl; | |
+ | |
+ stateHandlers.previewing = { | |
+ start() { | |
+ dataUrl = shooter.screenshotPage(selectedPos, captureType); | |
+ ui.iframe.usePreview(); | |
+ ui.Preview.display(dataUrl); | |
+ } | |
+ }; | |
+ | |
stateHandlers.onboarding = { | |
start() { | |
if (typeof slides == "undefined") { |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment