Bug 1442542 - Make checkboxes in the clear site data dialog use a label attribute. r=dao,flod
MozReview-Commit-ID: 9yj90NirV9y
--- a/browser/components/preferences/clearSiteData.css
+++ b/browser/components/preferences/clearSiteData.css
@@ -6,14 +6,15 @@
background-color: var(--in-content-box-background);
border: 1px solid var(--in-content-box-border-color);
border-radius: 2px;
color: var(--in-content-text-color);
padding: 0.5em;
}
.option {
- padding-bottom: 16px;
+ padding-bottom: 8px;
}
.option-description {
color: #737373;
+ margin-top: -0.5em !important;
}
--- a/browser/components/preferences/clearSiteData.js
+++ b/browser/components/preferences/clearSiteData.js
@@ -8,37 +8,32 @@ ChromeUtils.import("resource://gre/modul
ChromeUtils.import("resource:///modules/SiteDataManager.jsm");
var gClearSiteDataDialog = {
_clearSiteDataCheckbox: null,
_clearCacheCheckbox: null,
_clearButton: null,
init() {
- this._bundle = Services.strings
- .createBundle("chrome://browser/locale/preferences/clearSiteData.properties");
-
- SiteDataManager.getTotalUsage().then(bytes => {
- // Size is an array of amount and unit, e.g. [20, "MB"].
- let size = DownloadUtils.convertByteUnits(bytes);
- document.getElementById("clearSiteDataLabel").value =
- this._bundle.formatStringFromName("clearSiteDataWithEstimates.label", size, 2);
- });
- SiteDataManager.getCacheSize().then(bytes => {
- // Size is an array of amount and unit, e.g. [20, "MB"].
- let size = DownloadUtils.convertByteUnits(bytes);
- document.getElementById("clearCacheLabel").value =
- this._bundle.formatStringFromName("clearCacheWithEstimates.label", size, 2);
- });
-
this._clearButton = document.getElementById("clearButton");
this._cancelButton = document.getElementById("cancelButton");
this._clearSiteDataCheckbox = document.getElementById("clearSiteData");
this._clearCacheCheckbox = document.getElementById("clearCache");
+ SiteDataManager.getTotalUsage().then(bytes => {
+ let [amount, unit] = DownloadUtils.convertByteUnits(bytes);
+ document.l10n.setAttributes(this._clearSiteDataCheckbox,
+ "clear-site-data-cookies-with-data", { amount, unit });
+ });
+ SiteDataManager.getCacheSize().then(bytes => {
+ let [amount, unit] = DownloadUtils.convertByteUnits(bytes);
+ document.l10n.setAttributes(this._clearCacheCheckbox,
+ "clear-site-data-cache-with-data", { amount, unit });
+ });
+
window.addEventListener("keypress", this.onWindowKeyPress);
this._cancelButton.addEventListener("command", window.close);
this._clearButton.addEventListener("command", () => this.onClear());
this._clearSiteDataCheckbox.addEventListener("command", e => this.onCheckboxCommand(e));
this._clearCacheCheckbox.addEventListener("command", e => this.onCheckboxCommand(e));
},
--- a/browser/components/preferences/clearSiteData.xul
+++ b/browser/components/preferences/clearSiteData.xul
@@ -13,53 +13,37 @@
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
data-l10n-id="clear-site-data-window"
data-l10n-attrs="title, style"
persist="screenX screenY width height">
<link rel="localization" href="branding/brand.ftl"/>
<link rel="localization" href="browser/preferences/clearSiteData.ftl"/>
<script type="application/javascript" src="chrome://global/content/l10n.js"></script>
-
<script src="chrome://browser/content/preferences/clearSiteData.js"/>
- <stringbundle id="bundlePreferences"
- src="chrome://browser/locale/preferences/preferences.properties"/>
-
<keyset>
<key data-l10n-id="clear-site-data-close-key" modifiers="accel" oncommand="window.close();"/>
</keyset>
<vbox class="contentPane largeDialogContainer" flex="1">
<description control="url" data-l10n-id="clear-site-data-description"/>
<separator class="thin"/>
<vbox class="options-container">
- <hbox class="option">
- <checkbox id="clearSiteData" checked="true" />
- <vbox>
- <label for="clearSiteData"
- id="clearSiteDataLabel"
- control="clearSiteData"
- data-l10n-id="clear-site-data-cookies" />
- <description class="option-description" data-l10n-id="clear-site-data-cookies-info" />
- </vbox>
- </hbox>
- <hbox class="option">
- <checkbox id="clearCache" checked="true" />
- <vbox>
- <label for="clearCache"
- id="clearCacheLabel"
- control="clearCache"
- data-l10n-id="clear-site-data-cache" />
- <description class="option-description" data-l10n-id="clear-site-data-cache-info"/>
- </vbox>
- </hbox>
+ <vbox class="option">
+ <checkbox data-l10n-id="clear-site-data-cookies-empty" id="clearSiteData" checked="true"/>
+ <description class="option-description indent" data-l10n-id="clear-site-data-cookies-info"/>
+ </vbox>
+ <vbox class="option">
+ <checkbox data-l10n-id="clear-site-data-cache-empty" id="clearCache" checked="true"/>
+ <description class="option-description indent" data-l10n-id="clear-site-data-cache-info"/>
+ </vbox>
</vbox>
</vbox>
<vbox>
<hbox class="actionButtons" align="right" flex="1">
<button id="cancelButton" icon="close"
- data-l10n-id="clear-site-data-cancel" />
+ data-l10n-id="clear-site-data-cancel"/>
<button id="clearButton" icon="save"
- data-l10n-id="clear-site-data-clear" />
+ data-l10n-id="clear-site-data-clear"/>
</hbox>
</vbox>
</window>
--- a/browser/components/preferences/in-content/tests/siteData/browser_clearSiteData.js
+++ b/browser/components/preferences/in-content/tests/siteData/browser_clearSiteData.js
@@ -50,30 +50,28 @@ async function testClearData(clearSiteDa
// Convert the usage numbers in the same way the UI does it to assert
// that they're displayed in the dialog.
let [convertedTotalUsage] = DownloadUtils.convertByteUnits(totalUsage);
// For cache we just assert that the right unit (KB, probably) is displayed,
// since we've had cache intermittently changing under our feet.
let [, convertedCacheUnit] = DownloadUtils.convertByteUnits(cacheUsage);
- let clearSiteDataLabel = dialogWin.document.getElementById("clearSiteDataLabel");
- let clearCacheLabel = dialogWin.document.getElementById("clearCacheLabel");
+ let clearSiteDataCheckbox = dialogWin.document.getElementById("clearSiteData");
+ let clearCacheCheckbox = dialogWin.document.getElementById("clearCache");
// The usage details are filled asynchronously, so we assert that they're present by
// waiting for them to be filled in.
await Promise.all([
TestUtils.waitForCondition(
- () => clearSiteDataLabel.value && clearSiteDataLabel.value.includes(convertedTotalUsage), "Should show the quota usage"),
+ () => clearSiteDataCheckbox.label && clearSiteDataCheckbox.label.includes(convertedTotalUsage), "Should show the quota usage"),
TestUtils.waitForCondition(
- () => clearCacheLabel.value && clearCacheLabel.value.includes(convertedCacheUnit), "Should show the cache usage")
+ () => clearCacheCheckbox.label && clearCacheCheckbox.label.includes(convertedCacheUnit), "Should show the cache usage")
]);
// Check the boxes according to our test input.
- let clearSiteDataCheckbox = dialogWin.document.getElementById("clearSiteData");
- let clearCacheCheckbox = dialogWin.document.getElementById("clearCache");
clearSiteDataCheckbox.checked = clearSiteData;
clearCacheCheckbox.checked = clearCache;
// Some additional promises/assertions to wait for
// when deleting site data.
let acceptPromise;
let updatePromise;
let cookiesClearedPromise;
--- a/browser/locales/en-US/browser/preferences/clearSiteData.ftl
+++ b/browser/locales/en-US/browser/preferences/clearSiteData.ftl
@@ -6,22 +6,52 @@ clear-site-data-window =
.title = Clear Data
.style = width: 35em
clear-site-data-description = Clearing all cookies and site data stored by { -brand-short-name } may sign you out of websites and remove offline web content. Clearing cache data will not affect your logins.
clear-site-data-close-key =
.key = w
-clear-site-data-cookies = Cookies and Site Data
+# The parameters in parentheses in this string describe disk usage
+# in the format ($amount $unit), e.g. "Cookies and Site Data (24 KB)"
+# Variables:
+# $amount (Number) - Amount of site data currently stored on disk
+# $unit (String) - Abbreviation of the unit that $amount is in, e.g. "MB"
+clear-site-data-cookies-with-data =
+ .label = Cookies and Site Data ({ $amount } { $unit })
+ .accesskey = S
+
+# This string is a placeholder for while the data used to fill
+# clear-site-data-cookies-with-data is loading. This placeholder is usually
+# only shown for a very short time (< 1s), so it should be very similar
+# or the same as clear-site-data-cookies-with-data (except the amount and unit),
+# to avoid flickering.
+clear-site-data-cookies-empty =
+ .label = Cookies and Site Data
.accesskey = S
clear-site-data-cookies-info = You may get signed out of websites if cleared
-clear-site-data-cache = Cached Web Content
+# The parameters in parentheses in this string describe disk usage
+# in the format ($amount $unit), e.g. "Cached Web Content (24 KB)"
+# Variables:
+# $amount (Number) - Amount of cache currently stored on disk
+# $unit (String) - Abbreviation of the unit that $amount is in, e.g. "MB"
+clear-site-data-cache-with-data =
+ .label = Cached Web Content ({ $amount } { $unit })
+ .accesskey = W
+
+# This string is a placeholder for while the data used to fill
+# clear-site-data-cache-with-data is loading. This placeholder is usually
+# only shown for a very short time (< 1s), so it should be very similar
+# or the same as clear-site-data-cache-with-data (except the amount and unit),
+# to avoid flickering.
+clear-site-data-cache-empty =
+ .label = Cached Web Content
.accesskey = W
clear-site-data-cache-info = Will require websites to reload images and data
clear-site-data-cancel =
.label = Cancel
.accesskey = C
deleted file mode 100644
--- a/browser/locales/en-US/chrome/browser/preferences/clearSiteData.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# LOCALIZATION NOTE (clearSiteDataWithEstimates.label, clearCacheWithEstimates.label):
-# The parameters in parentheses in these strings describe disk usage
-# in the format (size unit), e.g. "Cookies and Site Data (24 KB)"
-# %1$S = size
-# %2$S = unit (MB, KB, etc.)
-clearSiteDataWithEstimates.label = Cookies and Site Data (%1$S %2$S)
-clearCacheWithEstimates.label = Cached Web Content (%1$S %2$S)
-
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -50,17 +50,16 @@
locale/browser/places/bookmarkProperties.properties (%chrome/browser/places/bookmarkProperties.properties)
locale/browser/safebrowsing/phishing-afterload-warning-message.dtd (%chrome/browser/safebrowsing/phishing-afterload-warning-message.dtd)
locale/browser/safebrowsing/report-phishing.dtd (%chrome/browser/safebrowsing/report-phishing.dtd)
locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties)
locale/browser/feeds/subscribe.dtd (%chrome/browser/feeds/subscribe.dtd)
locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
locale/browser/migration/migration.dtd (%chrome/browser/migration/migration.dtd)
locale/browser/migration/migration.properties (%chrome/browser/migration/migration.properties)
- locale/browser/preferences/clearSiteData.properties (%chrome/browser/preferences/clearSiteData.properties)
locale/browser/preferences/preferences.properties (%chrome/browser/preferences/preferences.properties)
locale/browser/preferences/security.dtd (%chrome/browser/preferences/security.dtd)
locale/browser/syncBrand.dtd (%chrome/browser/syncBrand.dtd)
locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
#if BUILD_FASTER
locale/browser/searchplugins/ (searchplugins/*.xml)
locale/browser/searchplugins/list.json (search/list.json)
#else
new file mode 100644
--- /dev/null
+++ b/python/l10n/fluent_migrations/bug_1442542_preferences_clearSiteData_js.py
@@ -0,0 +1,111 @@
+# coding=utf8
+
+# Any copyright is dedicated to the Public Domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+from __future__ import absolute_import
+import fluent.syntax.ast as FTL
+from fluent.migrate.helpers import EXTERNAL_ARGUMENT
+from fluent.migrate import COPY, REPLACE
+
+def migrate(ctx):
+ """Bug 1442542 - Migrate Preferences::Subdialogs::ClearSiteData properties strings to Fluent, part {index}."""
+
+ ctx.add_transforms(
+ 'browser/browser/preferences/clearSiteData.ftl',
+ 'browser/browser/preferences/clearSiteData.ftl',
+ [
+ FTL.Message(
+ id=FTL.Identifier('clear-site-data-cookies-with-data'),
+ attributes=[
+ FTL.Attribute(
+ FTL.Identifier('label'),
+ REPLACE(
+ 'browser/chrome/browser/preferences/clearSiteData.properties',
+ 'clearSiteDataWithEstimates.label',
+ {
+ '%1$S': EXTERNAL_ARGUMENT(
+ 'amount'
+ ),
+ '%2$S': EXTERNAL_ARGUMENT(
+ 'unit'
+ )
+ }
+ )
+ ),
+ FTL.Attribute(
+ FTL.Identifier('accesskey'),
+ COPY(
+ 'browser/chrome/browser/preferences/clearSiteData.dtd',
+ 'clearSiteData.accesskey'
+ )
+ )
+ ]
+ ),
+ FTL.Message(
+ id=FTL.Identifier('clear-site-data-cookies-empty'),
+ attributes=[
+ FTL.Attribute(
+ FTL.Identifier('label'),
+ COPY(
+ 'browser/chrome/browser/preferences/clearSiteData.dtd',
+ 'clearSiteData.label'
+ )
+ ),
+ FTL.Attribute(
+ FTL.Identifier('accesskey'),
+ COPY(
+ 'browser/chrome/browser/preferences/clearSiteData.dtd',
+ 'clearSiteData.accesskey'
+ )
+ )
+ ]
+ ),
+ FTL.Message(
+ id=FTL.Identifier('clear-site-data-cache-with-data'),
+ attributes=[
+ FTL.Attribute(
+ FTL.Identifier('label'),
+ REPLACE(
+ 'browser/chrome/browser/preferences/clearSiteData.properties',
+ 'clearCacheWithEstimates.label',
+ {
+ '%1$S': EXTERNAL_ARGUMENT(
+ 'amount'
+ ),
+ '%2$S': EXTERNAL_ARGUMENT(
+ 'unit'
+ )
+ }
+ )
+ ),
+ FTL.Attribute(
+ FTL.Identifier('accesskey'),
+ COPY(
+ 'browser/chrome/browser/preferences/clearSiteData.dtd',
+ 'clearCache.accesskey'
+ )
+ )
+ ]
+ ),
+ FTL.Message(
+ id=FTL.Identifier('clear-site-data-cache-empty'),
+ attributes=[
+ FTL.Attribute(
+ FTL.Identifier('label'),
+ COPY(
+ 'browser/chrome/browser/preferences/clearSiteData.dtd',
+ 'clearCache.label'
+ )
+ ),
+ FTL.Attribute(
+ FTL.Identifier('accesskey'),
+ COPY(
+ 'browser/chrome/browser/preferences/clearSiteData.dtd',
+ 'clearCache.accesskey'
+ )
+ )
+ ]
+ )
+ ]
+ )