Richard Pospesel pushed to branch tor-browser-102.6.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
-
90395b29
by Henry Wilkes at 2023-01-09T20:41:54+00:00
5 changed files:
- browser/components/preferences/privacy.js
- browser/components/securitylevel/content/securityLevel.js
- browser/components/securitylevel/content/securityLevelPreferences.css
- browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
- browser/components/securitylevel/locale/en-US/securityLevel.properties
Changes:
| ... | ... | @@ -341,11 +341,9 @@ var gPrivacyPane = { |
| 341 | 341 | */
|
| 342 | 342 | _initSecurityLevel() {
|
| 343 | 343 | SecurityLevelPreferences.init();
|
| 344 | - let unload = () => {
|
|
| 345 | - window.removeEventListener("unload", unload);
|
|
| 346 | - SecurityLevelPreferences.uninit();
|
|
| 347 | - };
|
|
| 348 | - window.addEventListener("unload", unload);
|
|
| 344 | + window.addEventListener("unload", () => SecurityLevelPreferences.uninit(), {
|
|
| 345 | + once: true,
|
|
| 346 | + });
|
|
| 349 | 347 | },
|
| 350 | 348 | |
| 351 | 349 | /**
|
| ... | ... | @@ -17,13 +17,14 @@ XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", () => { |
| 17 | 17 | security_level_restore: "Restore Defaults",
|
| 18 | 18 | security_level_learn_more: "Learn more",
|
| 19 | 19 | // Panel
|
| 20 | - security_level_change: "Change…",
|
|
| 20 | + security_level_change_setting: "Change Setting…",
|
|
| 21 | 21 | security_level_standard_summary:
|
| 22 | 22 | "All browser and website features are enabled.",
|
| 23 | 23 | security_level_safer_summary:
|
| 24 | 24 | "Disables website features that are often dangerous, causing some sites to lose functionality.",
|
| 25 | 25 | security_level_safest_summary:
|
| 26 | 26 | "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.",
|
| 27 | + security_level_custom_heading: "Warning!",
|
|
| 27 | 28 | security_level_custom_summary:
|
| 28 | 29 | "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.",
|
| 29 | 30 | // Security level section in about:preferences#privacy
|
| ... | ... | @@ -259,7 +260,7 @@ var SecurityLevelPanel = { |
| 259 | 260 | this._elements.restoreDefaultsButton.textContent =
|
| 260 | 261 | SecurityLevelStrings.security_level_restore;
|
| 261 | 262 | this._elements.settingsButton.textContent =
|
| 262 | - SecurityLevelStrings.security_level_change;
|
|
| 263 | + SecurityLevelStrings.security_level_change_setting;
|
|
| 263 | 264 | |
| 264 | 265 | this._elements.restoreDefaultsButton.addEventListener("command", () => {
|
| 265 | 266 | this.restoreDefaults();
|
| ... | ... | @@ -367,120 +368,112 @@ var SecurityLevelPanel = { |
| 367 | 368 | |
| 368 | 369 | var SecurityLevelPreferences = {
|
| 369 | 370 | _securityPrefsBranch: null,
|
| 371 | + /**
|
|
| 372 | + * The notification box shown when the user has a custom security setting.
|
|
| 373 | + *
|
|
| 374 | + * @type {Element}
|
|
| 375 | + */
|
|
| 376 | + _customNotification: null,
|
|
| 377 | + /**
|
|
| 378 | + * The radiogroup for this preference.
|
|
| 379 | + *
|
|
| 380 | + * @type {Element}
|
|
| 381 | + */
|
|
| 382 | + _radiogroup: null,
|
|
| 383 | + /**
|
|
| 384 | + * A list of radio options and their containers.
|
|
| 385 | + *
|
|
| 386 | + * @type {Array<Object>}
|
|
| 387 | + */
|
|
| 388 | + _radioOptions: null,
|
|
| 370 | 389 | |
| 371 | 390 | _populateXUL() {
|
| 372 | - const groupbox = document.querySelector("#securityLevel-groupbox");
|
|
| 373 | - const radiogroup = groupbox.querySelector("#securityLevel-radiogroup");
|
|
| 374 | - radiogroup.addEventListener(
|
|
| 375 | - "command",
|
|
| 376 | - SecurityLevelPreferences.selectSecurityLevel
|
|
| 391 | + this._customNotification = document.getElementById(
|
|
| 392 | + "securityLevel-customNotification"
|
|
| 377 | 393 | );
|
| 394 | + this._radiogroup = document.getElementById("securityLevel-radiogroup");
|
|
| 378 | 395 | |
| 379 | - groupbox.querySelector("h2").textContent =
|
|
| 396 | + document.querySelector("#securityLevel-groupbox h2").textContent =
|
|
| 380 | 397 | SecurityLevelStrings.security_level;
|
| 381 | - groupbox.querySelector("#securityLevel-overview").textContent =
|
|
| 398 | + document.getElementById("securityLevel-overview").textContent =
|
|
| 382 | 399 | SecurityLevelStrings.security_level_overview;
|
| 383 | - groupbox
|
|
| 384 | - .querySelector("#securityLevel-learnMore")
|
|
| 400 | + document
|
|
| 401 | + .getElementById("securityLevel-learnMore")
|
|
| 385 | 402 | .setAttribute("value", SecurityLevelStrings.security_level_learn_more);
|
| 386 | 403 | |
| 387 | - const populateRadioElements = (level, descr) => {
|
|
| 388 | - const vbox = groupbox.querySelector(`#securityLevel-vbox-${level}`);
|
|
| 389 | - vbox
|
|
| 390 | - .querySelector("radio")
|
|
| 391 | - .setAttribute("label", SecurityLevelStrings[`security_level_${level}`]);
|
|
| 392 | - vbox
|
|
| 393 | - .querySelector(".securityLevel-customWarning")
|
|
| 394 | - .setAttribute("value", SecurityLevelStrings.security_level_custom);
|
|
| 395 | - vbox.querySelector(".summary").textContent =
|
|
| 396 | - SecurityLevelStrings[`security_level_${level}_summary`];
|
|
| 397 | - const labelRestoreDefaults = vbox.querySelector(
|
|
| 398 | - ".securityLevel-restoreDefaults"
|
|
| 399 | - );
|
|
| 400 | - labelRestoreDefaults.setAttribute(
|
|
| 401 | - "value",
|
|
| 402 | - SecurityLevelStrings.security_level_restore
|
|
| 404 | + document.getElementById("securityLevel-customHeading").textContent =
|
|
| 405 | + SecurityLevelStrings.security_level_custom_heading;
|
|
| 406 | + document.getElementById("securityLevel-customDescription").textContent =
|
|
| 407 | + SecurityLevelStrings.security_level_custom_summary;
|
|
| 408 | + const restoreDefaultsButton = document.getElementById(
|
|
| 409 | + "securityLevel-restoreDefaults"
|
|
| 410 | + );
|
|
| 411 | + restoreDefaultsButton.textContent =
|
|
| 412 | + SecurityLevelStrings.security_level_restore;
|
|
| 413 | + |
|
| 414 | + this._radioOptions = Array.from(
|
|
| 415 | + this._radiogroup.querySelectorAll(".securityLevel-radio-option"),
|
|
| 416 | + container => {
|
|
| 417 | + return { container, radio: container.querySelector("radio") };
|
|
| 418 | + }
|
|
| 419 | + );
|
|
| 420 | + const descListItemsMap = {
|
|
| 421 | + safer: [
|
|
| 422 | + SecurityLevelStrings.security_level_js_https_only,
|
|
| 423 | + SecurityLevelStrings.security_level_limit_typography,
|
|
| 424 | + SecurityLevelStrings.security_level_limit_media,
|
|
| 425 | + ],
|
|
| 426 | + safest: [
|
|
| 427 | + SecurityLevelStrings.security_level_js_disabled,
|
|
| 428 | + SecurityLevelStrings.security_level_limit_typography_svg,
|
|
| 429 | + SecurityLevelStrings.security_level_limit_media,
|
|
| 430 | + ],
|
|
| 431 | + };
|
|
| 432 | + for (const { container, radio } of this._radioOptions) {
|
|
| 433 | + const level = radio.value;
|
|
| 434 | + radio.setAttribute(
|
|
| 435 | + "label",
|
|
| 436 | + SecurityLevelStrings[`security_level_${level}`]
|
|
| 403 | 437 | );
|
| 404 | - labelRestoreDefaults.addEventListener(
|
|
| 405 | - "click",
|
|
| 406 | - SecurityLevelStrings.restoreDefaults
|
|
| 438 | + container.querySelector(".summary").textContent =
|
|
| 439 | + SecurityLevelStrings[`security_level_${level}_summary`];
|
|
| 440 | + const descListItems = descListItemsMap[level];
|
|
| 441 | + if (!descListItems) {
|
|
| 442 | + continue;
|
|
| 443 | + }
|
|
| 444 | + const descrList = container.querySelector(
|
|
| 445 | + ".securityLevel-descriptionList"
|
|
| 407 | 446 | );
|
| 408 | - if (descr) {
|
|
| 409 | - const descrList = vbox.querySelector(".securityLevel-descriptionList");
|
|
| 410 | - // TODO: Add the elements in securityLevelPreferences.inc.xhtml again
|
|
| 411 | - // when we switch to Fluent
|
|
| 412 | - for (const text of descr) {
|
|
| 413 | - let elem = document.createXULElement("description");
|
|
| 414 | - elem.textContent = text;
|
|
| 415 | - elem.className = "indent";
|
|
| 416 | - descrList.append(elem);
|
|
| 417 | - }
|
|
| 447 | + // TODO: Add the elements in securityLevelPreferences.inc.xhtml again
|
|
| 448 | + // when we switch to Fluent
|
|
| 449 | + for (const text of descListItems) {
|
|
| 450 | + let elem = document.createXULElement("description");
|
|
| 451 | + elem.textContent = text;
|
|
| 452 | + elem.className = "indent";
|
|
| 453 | + descrList.append(elem);
|
|
| 418 | 454 | }
|
| 419 | - };
|
|
| 420 | - populateRadioElements("standard");
|
|
| 421 | - populateRadioElements("safer", [
|
|
| 422 | - SecurityLevelStrings.security_level_js_https_only,
|
|
| 423 | - SecurityLevelStrings.security_level_limit_typography,
|
|
| 424 | - SecurityLevelStrings.security_level_limit_media,
|
|
| 425 | - ]);
|
|
| 426 | - populateRadioElements("safest", [
|
|
| 427 | - SecurityLevelStrings.security_level_js_disabled,
|
|
| 428 | - SecurityLevelStrings.security_level_limit_typography_svg,
|
|
| 429 | - SecurityLevelStrings.security_level_limit_media,
|
|
| 430 | - ]);
|
|
| 455 | + }
|
|
| 456 | + |
|
| 457 | + restoreDefaultsButton.addEventListener("command", () => {
|
|
| 458 | + SecurityLevelPrefs.securityCustom = false;
|
|
| 459 | + });
|
|
| 460 | + this._radiogroup.addEventListener("select", () => {
|
|
| 461 | + SecurityLevelPrefs.securityLevel = this._radiogroup.value;
|
|
| 462 | + });
|
|
| 431 | 463 | },
|
| 432 | 464 | |
| 433 | 465 | _configUIFromPrefs() {
|
| 434 | - // read our prefs
|
|
| 435 | - const securityLevel = SecurityLevelPrefs.securityLevel;
|
|
| 436 | - const securityCustom = SecurityLevelPrefs.securityCustom;
|
|
| 437 | - |
|
| 438 | - // get our elements
|
|
| 439 | - const groupbox = document.querySelector("#securityLevel-groupbox");
|
|
| 440 | - let radiogroup = groupbox.querySelector("#securityLevel-radiogroup");
|
|
| 441 | - let labelStandardCustom = groupbox.querySelector(
|
|
| 442 | - "#securityLevel-vbox-standard label.securityLevel-customWarning"
|
|
| 443 | - );
|
|
| 444 | - let labelSaferCustom = groupbox.querySelector(
|
|
| 445 | - "#securityLevel-vbox-safer label.securityLevel-customWarning"
|
|
| 446 | - );
|
|
| 447 | - let labelSafestCustom = groupbox.querySelector(
|
|
| 448 | - "#securityLevel-vbox-safest label.securityLevel-customWarning"
|
|
| 449 | - );
|
|
| 450 | - let labelStandardRestoreDefaults = groupbox.querySelector(
|
|
| 451 | - "#securityLevel-vbox-standard label.securityLevel-restoreDefaults"
|
|
| 452 | - );
|
|
| 453 | - let labelSaferRestoreDefaults = groupbox.querySelector(
|
|
| 454 | - "#securityLevel-vbox-safer label.securityLevel-restoreDefaults"
|
|
| 455 | - );
|
|
| 456 | - let labelSafestRestoreDefaults = groupbox.querySelector(
|
|
| 457 | - "#securityLevel-vbox-safest label.securityLevel-restoreDefaults"
|
|
| 458 | - );
|
|
| 459 | - |
|
| 460 | - // hide custom label by default until we know which level we're at
|
|
| 461 | - labelStandardCustom.hidden = true;
|
|
| 462 | - labelSaferCustom.hidden = true;
|
|
| 463 | - labelSafestCustom.hidden = true;
|
|
| 464 | - |
|
| 465 | - labelStandardRestoreDefaults.hidden = true;
|
|
| 466 | - labelSaferRestoreDefaults.hidden = true;
|
|
| 467 | - labelSafestRestoreDefaults.hidden = true;
|
|
| 468 | - |
|
| 469 | - radiogroup.value = securityLevel;
|
|
| 470 | - |
|
| 471 | - switch (securityLevel) {
|
|
| 472 | - case "standard":
|
|
| 473 | - labelStandardCustom.hidden = !securityCustom;
|
|
| 474 | - labelStandardRestoreDefaults.hidden = !securityCustom;
|
|
| 475 | - break;
|
|
| 476 | - case "safer":
|
|
| 477 | - labelSaferCustom.hidden = !securityCustom;
|
|
| 478 | - labelSaferRestoreDefaults.hidden = !securityCustom;
|
|
| 479 | - break;
|
|
| 480 | - case "safest":
|
|
| 481 | - labelSafestCustom.hidden = !securityCustom;
|
|
| 482 | - labelSafestRestoreDefaults.hidden = !securityCustom;
|
|
| 483 | - break;
|
|
| 466 | + this._radiogroup.value = SecurityLevelPrefs.securityLevel;
|
|
| 467 | + const isCustom = SecurityLevelPrefs.securityCustom;
|
|
| 468 | + this._radiogroup.disabled = isCustom;
|
|
| 469 | + this._customNotification.hidden = !isCustom;
|
|
| 470 | + // Have the container's selection CSS class match the selection state of the
|
|
| 471 | + // radio elements.
|
|
| 472 | + for (const { container, radio } of this._radioOptions) {
|
|
| 473 | + container.classList.toggle(
|
|
| 474 | + "securityLevel-radio-option-selected",
|
|
| 475 | + radio.selected
|
|
| 476 | + );
|
|
| 484 | 477 | }
|
| 485 | 478 | },
|
| 486 | 479 | |
| ... | ... | @@ -514,17 +507,4 @@ var SecurityLevelPreferences = { |
| 514 | 507 | break;
|
| 515 | 508 | }
|
| 516 | 509 | },
|
| 517 | - |
|
| 518 | - selectSecurityLevel() {
|
|
| 519 | - // radio group elements
|
|
| 520 | - let radiogroup = document.getElementById("securityLevel-radiogroup");
|
|
| 521 | - |
|
| 522 | - // update pref based on selected radio option
|
|
| 523 | - SecurityLevelPrefs.securityLevel = radiogroup.value;
|
|
| 524 | - SecurityLevelPreferences.restoreDefaults();
|
|
| 525 | - },
|
|
| 526 | - |
|
| 527 | - restoreDefaults() {
|
|
| 528 | - SecurityLevelPrefs.securityCustom = false;
|
|
| 529 | - },
|
|
| 530 | 510 | }; /* SecurityLevelPreferences */ |
| 1 | -label.securityLevel-customWarning {
|
|
| 2 | - border-radius: 4px;
|
|
| 3 | - background-color: var(--yellow-50);
|
|
| 4 | - color: black;
|
|
| 5 | - font-size: 1em;
|
|
| 6 | - height: 1.6em;
|
|
| 7 | - padding: 0.4em 0.5em;
|
|
| 1 | +#securityLevel-groupbox {
|
|
| 2 | + --section-highlight-background-color: color-mix(in srgb, var(--in-content-accent-color) 20%, transparent);
|
|
| 3 | +}
|
|
| 4 | + |
|
| 5 | +#securityLevel-customNotification {
|
|
| 6 | + /* Spacing similar to #fpiIncompatibilityWarning. */
|
|
| 7 | + margin-block: 16px;
|
|
| 8 | +}
|
|
| 9 | + |
|
| 10 | +.info-icon.securityLevel-custom-warning-icon {
|
|
| 11 | + list-style-image: url("chrome://global/skin/icons/warning.svg");
|
|
| 12 | +}
|
|
| 13 | + |
|
| 14 | +#securityLevel-customHeading {
|
|
| 15 | + font-weight: bold;
|
|
| 8 | 16 | }
|
| 9 | 17 | |
| 10 | -radiogroup#securityLevel-radiogroup description {
|
|
| 11 | - color: var(--in-content-page-color)!important;
|
|
| 18 | +/* Overwrite indent rule from preferences.css */
|
|
| 19 | +#securityLevel-radiogroup description.indent {
|
|
| 20 | + color: var(--in-content-page-color);
|
|
| 12 | 21 | }
|
| 13 | 22 | |
| 14 | -radiogroup#securityLevel-radiogroup radio {
|
|
| 23 | +#securityLevel-radiogroup radio {
|
|
| 15 | 24 | font-weight: bold;
|
| 16 | 25 | }
|
| 17 | 26 | |
| 18 | -radiogroup#securityLevel-radiogroup > vbox {
|
|
| 27 | +#securityLevel-radiogroup[disabled] {
|
|
| 28 | + opacity: 0.5;
|
|
| 29 | +}
|
|
| 30 | + |
|
| 31 | +/* Overwrite the rule in common-shared.css so we don't get 0.25 opacity overall
|
|
| 32 | + * on the radio text. */
|
|
| 33 | +#securityLevel-radiogroup[disabled] radio[disabled] {
|
|
| 34 | + opacity: 1.0;
|
|
| 35 | +}
|
|
| 36 | + |
|
| 37 | +.securityLevel-radio-option {
|
|
| 19 | 38 | border: 1px solid var(--in-content-box-border-color);
|
| 20 | 39 | border-radius: 4px;
|
| 21 | 40 | margin: 3px 0;
|
| 22 | 41 | padding: 9px;
|
| 23 | 42 | }
|
| 24 | 43 | |
| 25 | -radiogroup#securityLevel-radiogroup[value=standard] > vbox#securityLevel-vbox-standard,
|
|
| 26 | -radiogroup#securityLevel-radiogroup[value=safer] > vbox#securityLevel-vbox-safer,
|
|
| 27 | -radiogroup#securityLevel-radiogroup[value=safest] > vbox#securityLevel-vbox-safest {
|
|
| 28 | - --section-highlight-background-color: color-mix(in srgb, var(--in-content-accent-color) 20%, transparent);
|
|
| 44 | +.securityLevel-radio-option.securityLevel-radio-option-selected {
|
|
| 29 | 45 | background-color: var(--section-highlight-background-color);
|
| 30 | 46 | border: 1px solid var(--in-content-accent-color);
|
| 31 | 47 | |
| 32 | 48 | }
|
| 33 | 49 | |
| 34 | -vbox.securityLevel-descriptionList {
|
|
| 50 | +.securityLevel-radio-option:not(
|
|
| 51 | + .securityLevel-radio-option-selected
|
|
| 52 | +) .securityLevel-descriptionList {
|
|
| 35 | 53 | display: none;
|
| 36 | 54 | }
|
| 37 | 55 | |
| 38 | -radiogroup#securityLevel-radiogroup[value=safer] vbox#securityLevel-vbox-safer vbox.securityLevel-descriptionList,
|
|
| 39 | -radiogroup#securityLevel-radiogroup[value=safest] vbox#securityLevel-vbox-safest vbox.securityLevel-descriptionList {
|
|
| 40 | - display: inherit;
|
|
| 41 | -}
|
|
| 42 | - |
|
| 43 | -vbox.securityLevel-descriptionList description {
|
|
| 56 | +.securityLevel-descriptionList description {
|
|
| 44 | 57 | display: list-item;
|
| 45 | 58 | } |
| 46 | - |
|
| 47 | -vbox#securityLevel-vbox-standard,
|
|
| 48 | -vbox#securityLevel-vbox-safer,
|
|
| 49 | -vbox#securityLevel-vbox-safest {
|
|
| 50 | - margin-top: 0.4em;
|
|
| 51 | -} |
| ... | ... | @@ -2,62 +2,58 @@ |
| 2 | 2 | data-category="panePrivacy"
|
| 3 | 3 | data-subcategory="securitylevel"
|
| 4 | 4 | hidden="true">
|
| 5 | - <label><html:h2/></label>
|
|
| 5 | + <label><html:h2></html:h2></label>
|
|
| 6 | 6 | <vbox flex="1">
|
| 7 | 7 | <description flex="1">
|
| 8 | - <html:span id="securityLevel-overview" class="tail-with-learn-more"/>
|
|
| 8 | + <html:span id="securityLevel-overview" class="tail-with-learn-more">
|
|
| 9 | + </html:span>
|
|
| 9 | 10 | <label id="securityLevel-learnMore"
|
| 10 | 11 | class="learnMore text-link"
|
| 11 | 12 | is="text-link"
|
| 12 | 13 | href="about:manual#security-settings"
|
| 13 | 14 | useoriginprincipal="true"/>
|
| 14 | 15 | </description>
|
| 16 | + <hbox id="securityLevel-customNotification"
|
|
| 17 | + class="info-box-container"
|
|
| 18 | + flex="1">
|
|
| 19 | + <hbox class="info-icon-container">
|
|
| 20 | + <image class="info-icon securityLevel-custom-warning-icon"/>
|
|
| 21 | + </hbox>
|
|
| 22 | + <vbox flex="1">
|
|
| 23 | + <label id="securityLevel-customHeading"/>
|
|
| 24 | + <description id="securityLevel-customDescription" flex="1"/>
|
|
| 25 | + </vbox>
|
|
| 26 | + <hbox align="center">
|
|
| 27 | + <button id="securityLevel-restoreDefaults"/>
|
|
| 28 | + </hbox>
|
|
| 29 | + </hbox>
|
|
| 15 | 30 | <radiogroup id="securityLevel-radiogroup">
|
| 16 | - <vbox id="securityLevel-vbox-standard">
|
|
| 17 | - <hbox>
|
|
| 18 | - <radio value="standard"/>
|
|
| 19 | - <vbox>
|
|
| 20 | - <spacer flex="1"/>
|
|
| 21 | - <label class="securityLevel-customWarning"/>
|
|
| 22 | - <spacer flex="1"/>
|
|
| 23 | - </vbox>
|
|
| 24 | - <spacer flex="1"/>
|
|
| 25 | - </hbox>
|
|
| 26 | - <description flex="1" class="indent">
|
|
| 27 | - <html:span class="summary tail-with-learn-more"/>
|
|
| 28 | - <label class="securityLevel-restoreDefaults learnMore text-link"/>
|
|
| 29 | - </description>
|
|
| 31 | + <vbox class="securityLevel-radio-option">
|
|
| 32 | + <radio value="standard"
|
|
| 33 | + aria-describedby="securityLevelSummary-standard"/>
|
|
| 34 | + <vbox id="securityLevelSummary-standard">
|
|
| 35 | + <description class="summary indent" flex="1"/>
|
|
| 36 | + </vbox>
|
|
| 30 | 37 | </vbox>
|
| 31 | - <vbox id="securityLevel-vbox-safer">
|
|
| 32 | - <hbox>
|
|
| 33 | - <radio value="safer"/>
|
|
| 34 | - <vbox>
|
|
| 35 | - <spacer flex="1"/>
|
|
| 36 | - <label class="securityLevel-customWarning"/>
|
|
| 37 | - <spacer flex="1"/>
|
|
| 38 | - </vbox>
|
|
| 39 | - </hbox>
|
|
| 40 | - <description flex="1" class="indent">
|
|
| 41 | - <html:span class="summary tail-with-learn-more"/>
|
|
| 42 | - <label class="securityLevel-restoreDefaults learnMore text-link"/>
|
|
| 43 | - </description>
|
|
| 44 | - <vbox class="securityLevel-descriptionList indent">
|
|
| 38 | + <vbox class="securityLevel-radio-option">
|
|
| 39 | + <!-- NOTE: We point the accessible description to the wrapping vbox
|
|
| 40 | + - rather than its first description element. This means that when the
|
|
| 41 | + - securityLevel-descriptionList is shown or hidden, its text content
|
|
| 42 | + - is included or excluded from the accessible description,
|
|
| 43 | + - respectively. -->
|
|
| 44 | + <radio value="safer"
|
|
| 45 | + aria-describedby="securityLevelSummary-safer"/>
|
|
| 46 | + <vbox id="securityLevelSummary-safer">
|
|
| 47 | + <description class="summary indent" flex="1"/>
|
|
| 48 | + <vbox class="securityLevel-descriptionList indent"/>
|
|
| 45 | 49 | </vbox>
|
| 46 | 50 | </vbox>
|
| 47 | - <vbox id="securityLevel-vbox-safest">
|
|
| 48 | - <hbox>
|
|
| 49 | - <radio value="safest"/>
|
|
| 50 | - <vbox>
|
|
| 51 | - <spacer flex="1"/>
|
|
| 52 | - <label class="securityLevel-customWarning"/>
|
|
| 53 | - <spacer flex="1"/>
|
|
| 54 | - </vbox>
|
|
| 55 | - </hbox>
|
|
| 56 | - <description flex="1" class="indent">
|
|
| 57 | - <html:span class="summary tail-with-learn-more"/>
|
|
| 58 | - <label class="securityLevel-restoreDefaults learnMore text-link"/>
|
|
| 59 | - </description>
|
|
| 60 | - <vbox class="securityLevel-descriptionList indent">
|
|
| 51 | + <vbox class="securityLevel-radio-option">
|
|
| 52 | + <radio value="safest"
|
|
| 53 | + aria-describedby="securityLevelSummary-safest"/>
|
|
| 54 | + <vbox id="securityLevelSummary-safest">
|
|
| 55 | + <description class="summary indent" flex="1"/>
|
|
| 56 | + <vbox class="securityLevel-descriptionList indent"/>
|
|
| 61 | 57 | </vbox>
|
| 62 | 58 | </vbox>
|
| 63 | 59 | </radiogroup>
|
| ... | ... | @@ -13,9 +13,11 @@ security_level_learn_more = Learn more |
| 13 | 13 | |
| 14 | 14 | # Panel
|
| 15 | 15 | security_level_change = Change…
|
| 16 | +security_level_change_setting = Change Setting…
|
|
| 16 | 17 | security_level_standard_summary = All browser and website features are enabled.
|
| 17 | 18 | security_level_safer_summary = Disables website features that are often dangerous, causing some sites to lose functionality.
|
| 18 | 19 | security_level_safest_summary = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.
|
| 20 | +security_level_custom_heading = Warning!
|
|
| 19 | 21 | security_level_custom_summary = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.
|
| 20 | 22 | |
| 21 | 23 | ## Security level section in about:preferences#privacy
|