deleted file mode 100644
--- a/browser/base/content/aboutaccounts/aboutaccounts.css
+++ /dev/null
@@ -1,24 +0,0 @@
-html, body {
- height: 100%;
-}
-
-#remote {
- width: 100%;
- height: 100%;
- border: 0;
- display: none;
-}
-
-#networkError, #manage, #intro, #stage, #configError {
- display: none;
-}
-
-#oldsync {
- background: none;
- border: 0;
- color: #0095dd;
-}
-
-#oldsync:focus {
- outline: 1px dotted #0095dd;
-}
deleted file mode 100644
--- a/browser/base/content/aboutaccounts/aboutaccounts.js
+++ /dev/null
@@ -1,320 +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/. */
-
-"use strict";
-
-var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/FxAccounts.jsm");
-
-var fxAccountsCommon = {};
-Cu.import("resource://gre/modules/FxAccountsCommon.js", fxAccountsCommon);
-
-// for master-password utilities
-Cu.import("resource://services-sync/util.js");
-
-const ACTION_URL_PARAM = "action";
-
-function log(msg) {
- // dump("FXA: " + msg + "\n");
-}
-
-function updateDisplayedEmail(user) {
- let emailDiv = document.getElementById("email");
- if (emailDiv && user) {
- emailDiv.textContent = user.email;
- }
-}
-
-var wrapper = {
- iframe: null,
-
- init(url, urlParams) {
- // If a master-password is enabled, we want to encourage the user to
- // unlock it. Things still work if not, but the user will probably need
- // to re-auth next startup (in which case we will get here again and
- // re-prompt)
- Utils.ensureMPUnlocked();
-
- let iframe = document.getElementById("remote");
- this.iframe = iframe;
- let docShell = this.iframe.frameLoader.docShell;
- docShell.QueryInterface(Ci.nsIWebProgress);
- docShell.addProgressListener(this.iframeListener,
- Ci.nsIWebProgress.NOTIFY_STATE_DOCUMENT |
- Ci.nsIWebProgress.NOTIFY_LOCATION);
-
- // Ideally we'd just merge urlParams with new URL(url).searchParams, but our
- // URLSearchParams implementation doesn't support iteration (bug 1085284).
- let urlParamStr = urlParams.toString();
- if (urlParamStr) {
- url += (url.includes("?") ? "&" : "?") + urlParamStr;
- }
- this.url = url;
- // Set the iframe's location with loadURI/LOAD_FLAGS_REPLACE_HISTORY to
- // avoid having a new history entry being added. REPLACE_HISTORY is used
- // to replace the current entry, which is `about:blank`.
- let webNav = iframe.frameLoader.docShell.QueryInterface(Ci.nsIWebNavigation);
- webNav.loadURI(url, Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY, null, null, null);
- },
-
- retry() {
- let webNav = this.iframe.frameLoader.docShell.QueryInterface(Ci.nsIWebNavigation);
- webNav.loadURI(this.url, Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_HISTORY, null, null, null);
- },
-
- iframeListener: {
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener,
- Ci.nsISupportsWeakReference,
- Ci.nsISupports]),
-
- onStateChange(aWebProgress, aRequest, aState, aStatus) {
- let failure = false;
-
- // Captive portals sometimes redirect users
- if ((aState & Ci.nsIWebProgressListener.STATE_REDIRECTING)) {
- failure = true;
- } else if ((aState & Ci.nsIWebProgressListener.STATE_STOP)) {
- if (aRequest instanceof Ci.nsIHttpChannel) {
- try {
- failure = aRequest.responseStatus != 200;
- } catch (e) {
- failure = aStatus != Components.results.NS_OK;
- }
- }
- }
-
- // Calling cancel() will raise some OnStateChange notifications by itself,
- // so avoid doing that more than once
- if (failure && aStatus != Components.results.NS_BINDING_ABORTED) {
- aRequest.cancel(Components.results.NS_BINDING_ABORTED);
- setErrorPage("networkError");
- }
- },
-
- onLocationChange(aWebProgress, aRequest, aLocation, aFlags) {
- if (aRequest && aFlags & Ci.nsIWebProgressListener.LOCATION_CHANGE_ERROR_PAGE) {
- aRequest.cancel(Components.results.NS_BINDING_ABORTED);
- setErrorPage("networkError");
- }
- },
- }
-};
-
-
-// Button onclick handlers
-
-function getStarted() {
- show("remote");
-}
-
-function retry() {
- show("remote");
- wrapper.retry();
-}
-
-function openPrefs() {
- // Bug 1199303 calls for this tab to always be replaced with Preferences
- // rather than it opening in a different tab.
- window.location = "about:preferences#sync";
-}
-
-function init() {
- fxAccounts.getSignedInUser().then(user => {
- // tests in particular might cause the window to start closing before
- // getSignedInUser has returned.
- if (window.closed) {
- return Promise.resolve();
- }
-
- updateDisplayedEmail(user);
-
- // Ideally we'd use new URL(document.URL).searchParams, but for about: URIs,
- // searchParams is empty.
- let urlParams = new URLSearchParams(document.URL.split("?")[1] || "");
- let action = urlParams.get(ACTION_URL_PARAM);
- urlParams.delete(ACTION_URL_PARAM);
-
- switch (action) {
- case "signin":
- if (user) {
- // asking to sign-in when already signed in just shows manage.
- show("stage", "manage");
- } else {
- return fxAccounts.promiseAccountsSignInURI().then(url => {
- show("remote");
- wrapper.init(url, urlParams);
- });
- }
- break;
- case "email":
- if (user) {
- // asking to sign-in/up when already signed in just shows manage.
- show("stage", "manage");
- } else {
- return fxAccounts.promiseAccountsEmailURI().then(url => {
- show("remote");
- wrapper.init(url, urlParams);
- });
- }
- break;
- case "signup":
- if (user) {
- // asking to sign-up when already signed in just shows manage.
- show("stage", "manage");
- } else {
- return fxAccounts.promiseAccountsSignUpURI().then(url => {
- show("remote");
- wrapper.init(url, urlParams);
- });
- }
- break;
- case "reauth":
- // ideally we would only show this when we know the user is in a
- // "must reauthenticate" state - but we don't.
- // As the email address will be included in the URL returned from
- // promiseAccountsForceSigninURI, just always show it.
- return fxAccounts.promiseAccountsForceSigninURI().then(url => {
- show("remote");
- wrapper.init(url, urlParams);
- });
- default:
- // No action specified.
- if (user) {
- show("stage", "manage");
- } else {
- // Attempt a migration if enabled or show the introductory page
- // otherwise.
- return migrateToDevEdition(urlParams).then(migrated => {
- if (!migrated) {
- show("stage", "intro");
- // load the remote frame in the background
- return fxAccounts.promiseAccountsSignUpURI().then(uri =>
- wrapper.init(uri, urlParams));
- }
- return Promise.resolve();
- });
- }
- break;
- }
- return Promise.resolve();
- }).catch(err => {
- console.log("Configuration or sign in error", err);
- setErrorPage("configError");
- });
-}
-
-function setErrorPage(errorType) {
- show("stage", errorType);
-}
-
-// Causes the "top-level" element with |id| to be shown - all other top-level
-// elements are hidden. Optionally, ensures that only 1 "second-level" element
-// inside the top-level one is shown.
-function show(id, childId) {
- // top-level items are either <div> or <iframe>
- let allTop = document.querySelectorAll("body > div, iframe");
- for (let elt of allTop) {
- if (elt.getAttribute("id") == id) {
- elt.style.display = "block";
- } else {
- elt.style.display = "none";
- }
- }
- if (childId) {
- // child items are all <div>
- let allSecond = document.querySelectorAll("#" + id + " > div");
- for (let elt of allSecond) {
- if (elt.getAttribute("id") == childId) {
- elt.style.display = "block";
- } else {
- elt.style.display = "none";
- }
- }
- }
-}
-
-// Migrate sync data from the default profile to the dev-edition profile.
-// Returns a promise of a true value if migration succeeded, or false if it
-// failed.
-function migrateToDevEdition(urlParams) {
- let defaultProfilePath;
- try {
- defaultProfilePath = window.getDefaultProfilePath();
- } catch (e) {} // no default profile.
-
- if (!defaultProfilePath ||
- !Services.prefs.getBoolPref("identity.fxaccounts.migrateToDevEdition", false)) {
- return Promise.resolve(false);
- }
-
- Cu.import("resource://gre/modules/osfile.jsm");
- let fxAccountsStorage = OS.Path.join(defaultProfilePath, fxAccountsCommon.DEFAULT_STORAGE_FILENAME);
- return OS.File.read(fxAccountsStorage, { encoding: "utf-8" }).then(text => {
- let accountData = JSON.parse(text).accountData;
- updateDisplayedEmail(accountData);
- return fxAccounts.setSignedInUser(accountData);
- }).then(() => {
- return fxAccounts.promiseAccountsForceSigninURI().then(url => {
- show("remote");
- wrapper.init(url, urlParams);
- });
- }).catch(error => {
- log("Failed to migrate FX Account: " + error);
- show("stage", "intro");
- // load the remote frame in the background
- fxAccounts.promiseAccountsSignUpURI().then(uri => {
- wrapper.init(uri, urlParams);
- }).catch(e => {
- console.log("Failed to load signup page", e);
- setErrorPage("configError");
- });
- }).then(() => {
- // Reset the pref after migration.
- Services.prefs.setBoolPref("identity.fxaccounts.migrateToDevEdition", false);
- return true;
- }).catch(err => {
- Cu.reportError("Failed to reset the migrateToDevEdition pref: " + err);
- return false;
- });
-}
-
-// Helper function that returns the path of the default profile on disk. Will be
-// overridden in tests.
-function getDefaultProfilePath() {
- let defaultProfile = Cc["@mozilla.org/toolkit/profile-service;1"]
- .getService(Ci.nsIToolkitProfileService)
- .defaultProfile;
- return defaultProfile.rootDir.path;
-}
-
-document.addEventListener("DOMContentLoaded", function() {
- init();
- var buttonGetStarted = document.getElementById("buttonGetStarted");
- buttonGetStarted.addEventListener("click", getStarted);
-
- var buttonRetry = document.getElementById("buttonRetry");
- buttonRetry.addEventListener("click", retry);
-
- var buttonOpenPrefs = document.getElementById("buttonOpenPrefs");
- buttonOpenPrefs.addEventListener("click", openPrefs);
-}, {capture: true, once: true});
-
-function initObservers() {
- function observe(subject, topic, data) {
- log("about:accounts observed " + topic);
- window.location = "about:accounts?action=signin";
- }
-
- Services.obs.addObserver(observe, fxAccountsCommon.ONLOGOUT_NOTIFICATION);
-
- window.addEventListener("unload", function(event) {
- log("about:accounts unloading");
- Services.obs.removeObserver(observe,
- fxAccountsCommon.ONLOGOUT_NOTIFICATION);
- });
-}
-initObservers();
deleted file mode 100644
--- a/browser/base/content/aboutaccounts/aboutaccounts.xhtml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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/. -->
-<!DOCTYPE html [
- <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
- %htmlDTD;
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
- %brandDTD;
- <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
- %globalDTD;
- <!ENTITY % aboutAccountsDTD SYSTEM "chrome://browser/locale/aboutAccounts.dtd">
- %aboutAccountsDTD;
- <!ENTITY % syncBrandDTD SYSTEM "chrome://browser/locale/syncBrand.dtd">
- %syncBrandDTD;
-]>
-
-<html xmlns="http://www.w3.org/1999/xhtml" dir="&locale.dir;">
- <head>
- <title>&syncBrand.fullName.label;</title>
- <meta name="viewport" content="width=device-width"/>
-
-
- <link rel="icon" type="image/png" id="favicon"
- href="chrome://branding/content/icon32.png"/>
- <link rel="stylesheet"
- href="chrome://browser/content/aboutaccounts/normalize.css"
- type="text/css" />
- <link rel="stylesheet"
- href="chrome://browser/content/aboutaccounts/main.css"
- type="text/css" />
- <link rel="stylesheet"
- href="chrome://browser/content/aboutaccounts/aboutaccounts.css"
- type="text/css" />
- </head>
- <body>
- <div id="stage">
-
- <div id="manage">
- <header>
- <div id="email"></div>
- </header>
-
- <section>
- <img class="graphic graphic-sync-intro" src="chrome://browser/skin/fxa/sync-illustration.svg"/>
-
- <div class="button-row">
- <button id="buttonOpenPrefs" class="button" href="#" tabindex="0">&aboutAccountsConfig.syncPreferences.label;</button>
- </div>
- </section>
- </div>
-
- <div id="intro">
- <header>
- <h1>&aboutAccounts.welcome;</h1>
- </header>
-
- <section>
- <img class="graphic graphic-sync-intro" src="chrome://browser/skin/fxa/sync-illustration.svg"/>
- <div class="description">&aboutAccountsConfig.description;</div>
-
- <div class="button-row">
- <button id="buttonGetStarted" class="button" tabindex="1">&aboutAccountsConfig.startButton.label;</button>
- </div>
- </section>
- </div>
-
- <div id="networkError">
- <header>
- <h1>&aboutAccounts.noConnection.title;</h1>
- </header>
-
- <section>
- <img class="graphic graphic-sync-intro" src="chrome://browser/skin/fxa/sync-illustration.svg"/>
- <div class="description">&aboutAccounts.noConnection.description;</div>
-
- <div class="button-row">
- <button id="buttonRetry" class="button" tabindex="3">&aboutAccounts.noConnection.retry;</button>
- </div>
- </section>
- </div>
-
- <div id="configError">
- <header>
- <h1>&aboutAccounts.badConfig.title;</h1>
- </header>
-
- <section>
- <img class="graphic graphic-sync-intro" src="chrome://browser/skin/fxa/sync-illustration.svg"/>
- <div class="description">&aboutAccounts.badConfig.description;</div>
-
- </section>
- </div>
-
- </div>
-
- <iframe mozframetype="content" id="remote" />
-
- <script type="application/javascript"
- src="chrome://browser/content/utilityOverlay.js"/>
- <script type="text/javascript"
- src="chrome://browser/content/aboutaccounts/aboutaccounts.js" />
- </body>
-</html>
deleted file mode 100644
--- a/browser/base/content/aboutaccounts/main.css
+++ /dev/null
@@ -1,157 +0,0 @@
-*,
-*:before,
-*:after {
- box-sizing: border-box;
-}
-
-html {
- background-color: #F2F2F2;
- height: 100%;
-}
-
-body {
- color: #424f59;
- font: message-box;
- font-size: 14px;
- height: 100%;
-}
-
-a {
- color: #0095dd;
- cursor: pointer; /* Use the correct cursor for anchors without an href */
-}
-
-a:active {
- outline: none;
-}
-
-a:focus {
- outline: 1px dotted #0095dd;
-}
-
-
-a.no-underline {
- text-decoration: none;
-}
-
-#stage {
- background:#fff;
- border-radius: 5px;
- box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.25);
- margin: 0 auto;
- min-height: 300px;
- padding: 60px 40px 40px 40px;
- position: relative;
- text-align: center;
- top: 80px;
- width: 420px;
-}
-
-header h1
-{
- font-size: 24px;
- font-weight: 200;
- line-height: 1em;
-}
-
-#intro header h1 {
- margin: 0 0 32px 0;
-}
-
-#manage header h1 {
- margin: 0 0 12px 0;
-}
-
-#manage header #email {
- margin-bottom: 23px;
- color: rgb(138, 155, 168);
- font-size: 19px;
- text-overflow: ellipsis;
- overflow: hidden;
- white-space: nowrap;
-}
-
-.description {
- font-size: 18px;
-}
-
-.button-row {
- margin-top: 45px;
- margin-bottom:20px;
-}
-
-.button-row button,
-.button-row a.button {
- background: #0095dd;
- border: none;
- border-radius: 5px;
- color: #FFFFFF;
- cursor: pointer;
- font-size: 24px;
- padding: 15px 0;
- transition-duration: 150ms;
- transition-property: background-color;
- width: 100%;
-}
-
-.button-row a.button {
- display: inline-block;
- text-decoration: none;
-}
-
-.button-row a.button:active,
-.button-row a.button:hover,
-.button-row a.button:focus,
-.button-row button:active,
-.button-row button:hover,
-.button-row button:focus {
- background: #08c;
-}
-
-
-.graphic-sync-intro {
- background-repeat: no-repeat;
- background-size: contain;
- height: 231px;
- width: 231px;
- margin: 0 auto;
- overflow: hidden;
- text-indent: 100%;
- white-space: nowrap;
- -moz-context-properties: fill;
- fill: #bfcbd3;
-}
-
-.description,
-.button-row {
- margin-top: 30px;
-}
-
-.links {
- margin: 20px 0;
-}
-
-@media only screen and (max-width: 500px) {
- html {
- background: #fff;
- }
-
- #stage {
- box-shadow: none;
- margin: 30px auto 0 auto;
- min-height: none;
- min-width: 320px;
- padding: 0 10px;
- width: 100%;
- }
-
- .button-row {
- margin-top: 20px;
- }
-
- .button-row button,
- .button-row a.button {
- padding: 10px 0;
- }
-
-}
deleted file mode 100644
--- a/browser/base/content/aboutaccounts/normalize.css
+++ /dev/null
@@ -1,402 +0,0 @@
-/*! normalize.css v2.1.3 | MIT License | git.io/normalize */
-
-/* ==========================================================================
- HTML5 display definitions
- ========================================================================== */
-
-/**
- * Correct `block` display not defined in IE 8/9.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
- display: block;
-}
-
-/**
- * Correct `inline-block` display not defined in IE 8/9.
- */
-
-audio,
-canvas,
-video {
- display: inline-block;
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/**
- * Address `[hidden]` styling not present in IE 8/9.
- * Hide the `template` element in IE, Safari, and Firefox < 22.
- */
-
-[hidden],
-template {
- display: none;
-}
-
-/* ==========================================================================
- Base
- ========================================================================== */
-
-/**
- * 1. Set default font family to sans-serif.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- * user zoom.
- */
-
-html {
- font-family: sans-serif; /* 1 */
- -ms-text-size-adjust: 100%; /* 2 */
- -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Remove default margin.
- */
-
-body {
- margin: 0;
-}
-
-/* ==========================================================================
- Links
- ========================================================================== */
-
-/**
- * Remove the gray background color from active links in IE 10.
- */
-
-a {
- background: transparent;
-}
-
-/**
- * Address `outline` inconsistency between Chrome and other browsers.
- */
-
-a:focus {
- outline: thin dotted;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
- outline: 0;
-}
-
-/* ==========================================================================
- Typography
- ========================================================================== */
-
-/**
- * Address variable `h1` font-size and margin within `section` and `article`
- * contexts in Firefox 4+, Safari 5, and Chrome.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-/**
- * Address styling not present in IE 8/9, Safari 5, and Chrome.
- */
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
- */
-
-b,
-strong {
- font-weight: bold;
-}
-
-/**
- * Address styling not present in Safari 5 and Chrome.
- */
-
-dfn {
- font-style: italic;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- */
-
-hr {
- box-sizing: content-box;
- height: 0;
-}
-
-/**
- * Address styling not present in IE 8/9.
- */
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-/**
- * Correct font family set oddly in Safari 5 and Chrome.
- */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, serif;
- font-size: 1em;
-}
-
-/**
- * Improve readability of pre-formatted text in all browsers.
- */
-
-pre {
- white-space: pre-wrap;
-}
-
-/**
- * Set consistent quote types.
- */
-
-q {
- quotes: "\201C" "\201D" "\2018" "\2019";
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-/* ==========================================================================
- Embedded content
- ========================================================================== */
-
-/**
- * Remove border when inside `a` element in IE 8/9.
- */
-
-img {
- border: 0;
-}
-
-/**
- * Correct overflow displayed oddly in IE 9.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* ==========================================================================
- Figures
- ========================================================================== */
-
-/**
- * Address margin not present in IE 8/9 and Safari 5.
- */
-
-figure {
- margin: 0;
-}
-
-/* ==========================================================================
- Forms
- ========================================================================== */
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct `color` not being inherited in IE 8/9.
- * 2. Remove padding so people aren't caught out if they zero out fieldsets.
- */
-
-legend {
- border: 0; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * 1. Correct font family not being inherited in all browsers.
- * 2. Correct font size not being inherited in all browsers.
- * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
- */
-
-button,
-input,
-select,
-textarea {
- font-family: inherit; /* 1 */
- font-size: 100%; /* 2 */
- margin: 0; /* 3 */
-}
-
-/**
- * Address Firefox 4+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-button,
-input {
- line-height: normal;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
- * Correct `select` style inheritance in Firefox 4+ and Opera.
- */
-
-button,
-select {
- text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- * and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- * `input` and others.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; /* 2 */
- cursor: pointer; /* 3 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-
-/**
- * 1. Address box sizing set to `content-box` in IE 8/9/10.
- * 2. Remove excess padding in IE 8/9/10.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome.
- */
-
-input[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- box-sizing: content-box; /* 2 */
-}
-
-/**
- * Remove inner padding and search cancel button in Safari 5 and Chrome
- * on OS X.
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * Remove inner padding and border in Firefox 4+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-/**
- * 1. Remove default vertical scrollbar in IE 8/9.
- * 2. Improve readability and alignment in all browsers.
- */
-
-textarea {
- overflow: auto; /* 1 */
- vertical-align: top; /* 2 */
-}
-
-/* ==========================================================================
- Tables
- ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
--- a/browser/base/content/moz.build
+++ b/browser/base/content/moz.build
@@ -2,19 +2,16 @@
# vim: set filetype=python:
# 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/.
with Files("**"):
BUG_COMPONENT = ("Firefox", "General")
-with Files("aboutaccounts/**"):
- BUG_COMPONENT = ("Firefox", "Sync")
-
with Files("abouthealthreport/**"):
BUG_COMPONENT = ("Firefox Health Report", "Client: Desktop")
with Files("defaultthemes/**"):
BUG_COMPONENT = ("Firefox", "Theme")
with Files("docs/**"):
BUG_COMPONENT = ("Core", "Security")
--- a/browser/base/content/test/static/browser_parsable_css.js
+++ b/browser/base/content/test/static/browser_parsable_css.js
@@ -22,19 +22,16 @@ let whitelist = [
// PDFjs is futureproofing its pseudoselectors, and those rules are dropped.
{sourceName: /web\/viewer\.css$/i,
errorMessage: /Unknown pseudo-class.*(fullscreen|selection)/i,
isFromDevTools: false},
// PDFjs rules needed for compat with other UAs.
{sourceName: /web\/viewer\.css$/i,
errorMessage: /Unknown property.*appearance/i,
isFromDevTools: false},
- // Tracked in bug 1004428.
- {sourceName: /aboutaccounts\/(main|normalize)\.css$/i,
- isFromDevTools: false},
// Highlighter CSS uses a UA-only pseudo-class, see bug 985597.
{sourceName: /highlighters\.css$/i,
errorMessage: /Unknown pseudo-class.*moz-native-anonymous/i,
isFromDevTools: true},
// Responsive Design Mode CSS uses a UA-only pseudo-class, see Bug 1241714.
{sourceName: /responsive-ua\.css$/i,
errorMessage: /Unknown pseudo-class.*moz-dropdown-list/i,
isFromDevTools: true},
--- a/browser/base/content/test/sync/browser.ini
+++ b/browser/base/content/test/sync/browser.ini
@@ -4,12 +4,8 @@ support-files =
[browser_sync.js]
[browser_contextmenu_sendtab.js]
[browser_contextmenu_sendpage.js]
[browser_fxa_web_channel.js]
support-files=
browser_fxa_web_channel.html
[browser_fxa_badge.js]
-[browser_aboutAccounts.js]
-skip-if = os == "linux" # Bug 958026
-support-files =
- content_aboutAccounts.js
deleted file mode 100644
--- a/browser/base/content/test/sync/browser_aboutAccounts.js
+++ /dev/null
@@ -1,481 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-XPCOMUtils.defineLazyModuleGetter(this, "Promise",
- "resource://gre/modules/Promise.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "fxAccounts",
- "resource://gre/modules/FxAccounts.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
- "resource://gre/modules/FileUtils.jsm");
-
-const CHROME_BASE = "chrome://mochitests/content/browser/browser/base/content/test/sync/";
-// Preference helpers.
-var changedPrefs = new Set();
-
-function setPref(name, value) {
- changedPrefs.add(name);
- Services.prefs.setCharPref(name, value);
-}
-
-registerCleanupFunction(function() {
- // Ensure we don't pollute prefs for next tests.
- for (let name of changedPrefs) {
- Services.prefs.clearUserPref(name);
- }
-});
-
-var gTests = [
-{
- desc: "Test action=signin - no user logged in",
- teardown: () => gBrowser.removeCurrentTab(),
- async run() {
- // When this loads with no user logged-in, we expect the "normal" URL
- const expected_url = "https://example.com/?is_sign_in";
- setPref("identity.fxaccounts.remote.signin.uri", expected_url);
- let [tab, url] = await promiseNewTabWithIframeLoadEvent("about:accounts?action=signin");
- is(url, expected_url, "action=signin got the expected URL");
- // we expect the remote iframe to be shown.
- await checkVisibilities(tab, {
- stage: false, // parent of 'manage' and 'intro'
- manage: false,
- intro: false, // this is "get started"
- remote: true,
- networkError: false
- });
- }
-},
-{
- desc: "Test action=signin - user logged in",
- async teardown() {
- gBrowser.removeCurrentTab();
- await signOut();
- },
- async run() {
- // When this loads with a user logged-in, we expect the normal URL to
- // have been ignored and the "manage" page to be shown.
- const expected_url = "https://example.com/?is_sign_in";
- setPref("identity.fxaccounts.remote.signin.uri", expected_url);
- await setSignedInUser();
- let tab = await promiseNewTabLoadEvent("about:accounts?action=signin");
- // about:accounts initializes after fetching the current user from Fxa -
- // so we also request it - by the time we get it we know it should have
- // done its thing.
- await fxAccounts.getSignedInUser();
- // we expect "manage" to be shown.
- await checkVisibilities(tab, {
- stage: true, // parent of 'manage' and 'intro'
- manage: true,
- intro: false, // this is "get started"
- remote: false,
- networkError: false
- });
- }
-},
-{
- desc: "Test action=signin - captive portal",
- teardown: () => gBrowser.removeCurrentTab(),
- async run() {
- const signinUrl = "https://redirproxy.example.com/test";
- setPref("identity.fxaccounts.remote.signin.uri", signinUrl);
- let [tab, ] = await promiseNewTabWithIframeLoadEvent("about:accounts?action=signin");
- await checkVisibilities(tab, {
- stage: true, // parent of 'manage' and 'intro'
- manage: false,
- intro: false, // this is "get started"
- remote: false,
- networkError: true
- });
- }
-},
-{
- desc: "Test action=signin - offline",
- teardown: () => {
- gBrowser.removeCurrentTab();
- BrowserOffline.toggleOfflineStatus();
- },
- async run() {
- BrowserOffline.toggleOfflineStatus();
- Services.cache2.clear();
-
- const signinUrl = "https://unknowndomain.cow";
- setPref("identity.fxaccounts.remote.signin.uri", signinUrl);
- let [tab, ] = await promiseNewTabWithIframeLoadEvent("about:accounts?action=signin");
- await checkVisibilities(tab, {
- stage: true, // parent of 'manage' and 'intro'
- manage: false,
- intro: false, // this is "get started"
- remote: false,
- networkError: true
- });
- }
-},
-{
- desc: "Test action=signup - no user logged in",
- teardown: () => gBrowser.removeCurrentTab(),
- async run() {
- const expected_url = "https://example.com/?is_sign_up";
- setPref("identity.fxaccounts.remote.signup.uri", expected_url);
- let [tab, url] = await promiseNewTabWithIframeLoadEvent("about:accounts?action=signup");
- is(url, expected_url, "action=signup got the expected URL");
- // we expect the remote iframe to be shown.
- await checkVisibilities(tab, {
- stage: false, // parent of 'manage' and 'intro'
- manage: false,
- intro: false, // this is "get started"
- remote: true,
- networkError: false
- });
- },
-},
-{
- desc: "Test action=signup - user logged in",
- async teardown() {
- gBrowser.removeCurrentTab();
- await signOut();
- },
- async run() {
- const expected_url = "https://example.com/?is_sign_up";
- setPref("identity.fxaccounts.remote.signup.uri", expected_url);
- await setSignedInUser();
- let tab = await promiseNewTabLoadEvent("about:accounts?action=signup");
- await fxAccounts.getSignedInUser();
- // we expect "manage" to be shown.
- await checkVisibilities(tab, {
- stage: true, // parent of 'manage' and 'intro'
- manage: true,
- intro: false, // this is "get started"
- remote: false,
- networkError: false
- });
- },
-},
-{
- desc: "Test action=email - no user logged in",
- teardown: () => gBrowser.removeCurrentTab(),
- async run() {
- const expected_url = "https://example.com/?is_email";
- setPref("identity.fxaccounts.remote.email.uri", expected_url);
- let [tab, url] = await promiseNewTabWithIframeLoadEvent("about:accounts?action=email");
- is(url, expected_url, "action=email got the expected URL");
- // we expect the remote iframe to be shown.
- await checkVisibilities(tab, {
- stage: false, // parent of 'manage' and 'intro'
- manage: false,
- intro: false, // this is "get started"
- remote: true,
- networkError: false
- });
- },
-},
-{
- desc: "Test action=email - user logged in",
- teardown: () => gBrowser.removeCurrentTab(),
- async run() {
- const expected_url = "https://example.com/?is_email";
- setPref("identity.fxaccounts.remote.email.uri", expected_url);
- await setSignedInUser();
- let tab = await promiseNewTabLoadEvent("about:accounts?action=email");
- await fxAccounts.getSignedInUser();
- // we expect "manage" to be shown.
- await checkVisibilities(tab, {
- stage: true, // parent of 'manage' and 'intro'
- manage: true,
- intro: false, // this is "get started"
- remote: false,
- networkError: false
- });
- },
-},
-{
- desc: "Test action=reauth",
- async teardown() {
- gBrowser.removeCurrentTab();
- await signOut();
- },
- async run() {
- const expected_url = "https://example.com/force_auth";
- setPref("identity.fxaccounts.remote.force_auth.uri", expected_url);
-
- await setSignedInUser();
- let [, url] = await promiseNewTabWithIframeLoadEvent("about:accounts?action=reauth");
- // The current user will be appended to the url
- let expected = expected_url + "?uid=1234%40lcip.org&email=foo%40example.com";
- is(url, expected, "action=reauth got the expected URL");
- },
-},
-{
- desc: "Test with migrateToDevEdition enabled (success)",
- async teardown() {
- gBrowser.removeCurrentTab();
- await signOut();
- },
- async run() {
- let fxAccountsCommon = {};
- Cu.import("resource://gre/modules/FxAccountsCommon.js", fxAccountsCommon);
- const pref = "identity.fxaccounts.migrateToDevEdition";
- changedPrefs.add(pref);
- Services.prefs.setBoolPref(pref, true);
-
- // Create the signedInUser.json file that will be used as the source of
- // migrated user data.
- let signedInUser = {
- version: 1,
- accountData: {
- email: "foo@example.com",
- uid: "1234@lcip.org",
- sessionToken: "dead",
- verified: true
- }
- };
- // We use a sub-dir of the real profile dir as the "pretend" profile dir
- // for this test.
- let profD = Services.dirsvc.get("ProfD", Ci.nsIFile);
- let mockDir = profD.clone();
- mockDir.append("about-accounts-mock-profd");
- mockDir.createUnique(Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
- let fxAccountsStorage = OS.Path.join(mockDir.path, fxAccountsCommon.DEFAULT_STORAGE_FILENAME);
- await OS.File.writeAtomic(fxAccountsStorage, JSON.stringify(signedInUser));
- info("Wrote file " + fxAccountsStorage);
-
- // this is a little subtle - we load about:robots so we get a non-remote
- // tab, then we send a message which does both (a) load the URL we want and
- // (b) mocks the default profile path used by about:accounts.
- let tab = await promiseNewTabLoadEvent("about:robots");
- let readyPromise = promiseOneMessage(tab, "test:load-with-mocked-profile-path-response");
-
- let mm = tab.linkedBrowser.messageManager;
- mm.sendAsyncMessage("test:load-with-mocked-profile-path", {
- url: "about:accounts",
- profilePath: mockDir.path,
- });
-
- let response = await readyPromise;
- // We are expecting the iframe to be on the "force reauth" URL
- let expected = await fxAccounts.promiseAccountsForceSigninURI();
- is(response.data.url, expected);
-
- let userData = await fxAccounts.getSignedInUser();
- SimpleTest.isDeeply(userData, signedInUser.accountData, "All account data were migrated");
- // The migration pref will have been switched off by now.
- is(Services.prefs.getBoolPref(pref), false, pref + " got the expected value");
-
- await OS.File.remove(fxAccountsStorage);
- await OS.File.removeEmptyDir(mockDir.path);
- },
-},
-{
- desc: "Test with migrateToDevEdition enabled (no user to migrate)",
- async teardown() {
- gBrowser.removeCurrentTab();
- await signOut();
- },
- async run() {
- const pref = "identity.fxaccounts.migrateToDevEdition";
- changedPrefs.add(pref);
- Services.prefs.setBoolPref(pref, true);
-
- let profD = Services.dirsvc.get("ProfD", Ci.nsIFile);
- let mockDir = profD.clone();
- mockDir.append("about-accounts-mock-profd");
- mockDir.createUnique(Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
- // but leave it empty, so we don't think a user is logged in.
-
- let tab = await promiseNewTabLoadEvent("about:robots");
- let readyPromise = promiseOneMessage(tab, "test:load-with-mocked-profile-path-response");
-
- let mm = tab.linkedBrowser.messageManager;
- mm.sendAsyncMessage("test:load-with-mocked-profile-path", {
- url: "about:accounts",
- profilePath: mockDir.path,
- });
-
- let response = await readyPromise;
- // We are expecting the iframe to be on the "signup" URL
- let expected = await fxAccounts.promiseAccountsSignUpURI();
- is(response.data.url, expected);
-
- // and expect no signed in user.
- let userData = await fxAccounts.getSignedInUser();
- is(userData, null);
- // The migration pref should have still been switched off.
- is(Services.prefs.getBoolPref(pref), false, pref + " got the expected value");
- await OS.File.removeEmptyDir(mockDir.path);
- },
-},
-{
- desc: "Test observers about:accounts",
- teardown() {
- gBrowser.removeCurrentTab();
- },
- async run() {
- setPref("identity.fxaccounts.remote.signup.uri", "https://example.com/");
- await setSignedInUser();
- let tab = await promiseNewTabLoadEvent("about:accounts");
- // sign the user out - the tab should have action=signin
- let loadPromise = promiseOneMessage(tab, "test:document:load");
- await signOut();
- // wait for the new load.
- await loadPromise;
- is(tab.linkedBrowser.contentDocument.location.href, "about:accounts?action=signin");
- }
-},
-{
- desc: "Test entrypoint query string, no action, no user logged in",
- teardown: () => gBrowser.removeCurrentTab(),
- async run() {
- // When this loads with no user logged-in, we expect the "normal" URL
- setPref("identity.fxaccounts.remote.signup.uri", "https://example.com/");
- let [, url] = await promiseNewTabWithIframeLoadEvent("about:accounts?entrypoint=abouthome");
- is(url, "https://example.com/?entrypoint=abouthome", "entrypoint=abouthome got the expected URL");
- },
-},
-{
- desc: "Test entrypoint query string for signin",
- teardown: () => gBrowser.removeCurrentTab(),
- async run() {
- // When this loads with no user logged-in, we expect the "normal" URL
- const expected_url = "https://example.com/?is_sign_in";
- setPref("identity.fxaccounts.remote.signin.uri", expected_url);
- let [, url] = await promiseNewTabWithIframeLoadEvent("about:accounts?action=signin&entrypoint=abouthome");
- is(url, expected_url + "&entrypoint=abouthome", "entrypoint=abouthome got the expected URL");
- },
-},
-{
- desc: "Test entrypoint query string for signup",
- teardown: () => gBrowser.removeCurrentTab(),
- async run() {
- // When this loads with no user logged-in, we expect the "normal" URL
- const sign_up_url = "https://example.com/?is_sign_up";
- setPref("identity.fxaccounts.remote.signup.uri", sign_up_url);
- let [, url] = await promiseNewTabWithIframeLoadEvent("about:accounts?entrypoint=abouthome&action=signup");
- is(url, sign_up_url + "&entrypoint=abouthome", "entrypoint=abouthome got the expected URL");
- },
-},
-{
- desc: "about:accounts URL params should be copied to remote URL params " +
- "when remote URL has no URL params, except for 'action'",
- teardown() {
- gBrowser.removeCurrentTab();
- },
- async run() {
- let signupURL = "https://example.com/";
- setPref("identity.fxaccounts.remote.signup.uri", signupURL);
- let queryStr = "email=foo%40example.com&foo=bar&baz=quux";
- let [, url] =
- await promiseNewTabWithIframeLoadEvent("about:accounts?" + queryStr +
- "&action=action");
- is(url, signupURL + "?" + queryStr, "URL params are copied to signup URL");
- },
-},
-{
- desc: "about:accounts URL params should be copied to remote URL params " +
- "when remote URL already has some URL params, except for 'action'",
- teardown() {
- gBrowser.removeCurrentTab();
- },
- async run() {
- let signupURL = "https://example.com/?param";
- setPref("identity.fxaccounts.remote.signup.uri", signupURL);
- let queryStr = "email=foo%40example.com&foo=bar&baz=quux";
- let [, url] =
- await promiseNewTabWithIframeLoadEvent("about:accounts?" + queryStr +
- "&action=action");
- is(url, signupURL + "&" + queryStr, "URL params are copied to signup URL");
- },
-},
-]; // gTests
-
-function test() {
- waitForExplicitFinish();
-
- (async function() {
- for (let testCase of gTests) {
- info(testCase.desc);
- try {
- await testCase.run();
- } finally {
- await testCase.teardown();
- }
- }
-
- finish();
- })();
-}
-
-function promiseOneMessage(tab, messageName) {
- let mm = tab.linkedBrowser.messageManager;
- return new Promise(resolve => {
- mm.addMessageListener(messageName, function onmessage(message) {
- mm.removeMessageListener(messageName, onmessage);
- resolve(message);
- });
- });
-}
-
-function promiseNewTabLoadEvent(aUrl) {
- let tab = gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, aUrl);
- let browser = tab.linkedBrowser;
- let mm = browser.messageManager;
-
- // give it an e10s-friendly content script to help with our tests,
- // and wait for it to tell us about the load.
- let promise = promiseOneMessage(tab, "test:document:load");
- mm.loadFrameScript(CHROME_BASE + "content_aboutAccounts.js", true);
- return promise.then(() => tab);
-}
-
-// Returns a promise which is resolved with the iframe's URL after a new
-// tab is created and the iframe in that tab loads.
-function promiseNewTabWithIframeLoadEvent(aUrl) {
- return new Promise(resolve => {
- let tab = gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, aUrl);
- let browser = tab.linkedBrowser;
- let mm = browser.messageManager;
-
- // give it an e10s-friendly content script to help with our tests,
- // and wait for it to tell us about the iframe load.
- mm.addMessageListener("test:iframe:load", function onFrameLoad(message) {
- mm.removeMessageListener("test:iframe:load", onFrameLoad);
- resolve([tab, message.data.url]);
- });
- mm.loadFrameScript(CHROME_BASE + "content_aboutAccounts.js", true);
- });
-}
-
-function checkVisibilities(tab, data) {
- let ids = Object.keys(data);
- let mm = tab.linkedBrowser.messageManager;
- return new Promise(resolve => {
- mm.addMessageListener("test:check-visibilities-response", function onResponse(message) {
- mm.removeMessageListener("test:check-visibilities-response", onResponse);
- for (let id of ids) {
- is(message.data[id], data[id], "Element '" + id + "' has correct visibility");
- }
- resolve();
- });
- mm.sendAsyncMessage("test:check-visibilities", {ids});
- });
-}
-
-// watch out - these will fire observers which if you aren't careful, may
-// interfere with the tests.
-function setSignedInUser(data) {
- if (!data) {
- data = {
- email: "foo@example.com",
- uid: "1234@lcip.org",
- assertion: "foobar",
- sessionToken: "dead",
- kA: "beef",
- kB: "cafe",
- verified: true
- };
- }
- return fxAccounts.setSignedInUser(data);
-}
-
-function signOut() {
- // we always want a "localOnly" signout here...
- return fxAccounts.signOut(true);
-}
deleted file mode 100644
--- a/browser/base/content/test/sync/content_aboutAccounts.js
+++ /dev/null
@@ -1,89 +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/. */
-
-// This file is loaded as a "content script" for browser_aboutAccounts tests
-"use strict";
-
-/* eslint-env mozilla/frame-script */
-
-var {interfaces: Ci, utils: Cu} = Components;
-
-addEventListener("load", function load(event) {
- if (event.target != content.document) {
- return;
- }
-// content.document.removeEventListener("load", load, true);
- sendAsyncMessage("test:document:load");
- // Opening Sync prefs in tests is a pain as leaks are reported due to the
- // in-flight promises. For now we just mock the openPrefs() function and have
- // it send a message back to the test so we know it was called.
- content.openPrefs = function() {
- sendAsyncMessage("test:openPrefsCalled");
- };
-}, true);
-
-addEventListener("DOMContentLoaded", function domContentLoaded(event) {
- removeEventListener("DOMContentLoaded", domContentLoaded, true);
- let iframe = content.document.getElementById("remote");
- if (!iframe) {
- // at least one test initially loads about:blank - in that case, we are done.
- return;
- }
- // We use DOMContentLoaded here as that fires for our iframe even when we've
- // arranged for the URL in the iframe to cause an error.
- addEventListener("DOMContentLoaded", function iframeLoaded(dclEvent) {
- if (iframe.contentWindow.location.href == "about:blank" ||
- dclEvent.target != iframe.contentDocument) {
- return;
- }
- removeEventListener("DOMContentLoaded", iframeLoaded, true);
- sendAsyncMessage("test:iframe:load", {url: iframe.contentDocument.location.href});
- // And an event listener for the test responses, which we send to the test
- // via a message.
- iframe.contentWindow.addEventListener("FirefoxAccountsTestResponse", function(fxAccountsEvent) {
- sendAsyncMessage("test:response", {data: fxAccountsEvent.detail.data});
- }, true);
- }, true);
-}, true);
-
-// Return the visibility state of a list of ids.
-addMessageListener("test:check-visibilities", function(message) {
- let result = {};
- for (let id of message.data.ids) {
- let elt = content.document.getElementById(id);
- if (elt) {
- let displayStyle = content.window.getComputedStyle(elt).display;
- if (displayStyle == "none") {
- result[id] = false;
- } else if (displayStyle == "block") {
- result[id] = true;
- } else {
- result[id] = "strange: " + displayStyle; // tests should fail!
- }
- } else {
- result[id] = "doesn't exist: " + id;
- }
- }
- sendAsyncMessage("test:check-visibilities-response", result);
-});
-
-addMessageListener("test:load-with-mocked-profile-path", function(message) {
- addEventListener("DOMContentLoaded", function domContentLoaded(event) {
- removeEventListener("DOMContentLoaded", domContentLoaded, true);
- content.getDefaultProfilePath = () => message.data.profilePath;
- // now wait for the iframe to load.
- let iframe = content.document.getElementById("remote");
- iframe.addEventListener("load", function iframeLoaded(loadEvent) {
- if (iframe.contentWindow.location.href == "about:blank" ||
- loadEvent.target != iframe) {
- return;
- }
- iframe.removeEventListener("load", iframeLoaded, true);
- sendAsyncMessage("test:load-with-mocked-profile-path-response",
- {url: iframe.contentDocument.location.href});
- }, true);
- });
- let webNav = docShell.QueryInterface(Ci.nsIWebNavigation);
- webNav.loadURI(message.data.url, webNav.LOAD_FLAGS_NONE, null, null, null);
-}, true);
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -43,22 +43,16 @@ browser.jar:
content/browser/illustrations/error-malformed-url.svg (content/illustrations/error-malformed-url.svg)
content/browser/aboutNetError.xhtml (content/aboutNetError.xhtml)
#ifdef MOZ_SERVICES_HEALTHREPORT
content/browser/abouthealthreport/abouthealth.xhtml (content/abouthealthreport/abouthealth.xhtml)
content/browser/abouthealthreport/abouthealth.js (content/abouthealthreport/abouthealth.js)
content/browser/abouthealthreport/abouthealth.css (content/abouthealthreport/abouthealth.css)
#endif
- content/browser/aboutaccounts/aboutaccounts.xhtml (content/aboutaccounts/aboutaccounts.xhtml)
- content/browser/aboutaccounts/aboutaccounts.js (content/aboutaccounts/aboutaccounts.js)
- content/browser/aboutaccounts/aboutaccounts.css (content/aboutaccounts/aboutaccounts.css)
- content/browser/aboutaccounts/main.css (content/aboutaccounts/main.css)
- content/browser/aboutaccounts/normalize.css (content/aboutaccounts/normalize.css)
-
content/browser/aboutRobots-icon.png (content/aboutRobots-icon.png)
content/browser/aboutRobots-widget-left.png (content/aboutRobots-widget-left.png)
content/browser/aboutTabCrashed.css (content/aboutTabCrashed.css)
content/browser/aboutTabCrashed.js (content/aboutTabCrashed.js)
content/browser/aboutTabCrashed.xhtml (content/aboutTabCrashed.xhtml)
* content/browser/browser.css (content/browser.css)
content/browser/browser.js (content/browser.js)
--- a/browser/components/about/AboutRedirector.cpp
+++ b/browser/components/about/AboutRedirector.cpp
@@ -90,18 +90,16 @@ static const RedirEntry kRedirMap[] = {
{ "preferences", "chrome://browser/content/preferences/in-content/preferences.xul",
nsIAboutModule::ALLOW_SCRIPT },
{ "downloads", "chrome://browser/content/downloads/contentAreaDownloadsView.xul",
nsIAboutModule::ALLOW_SCRIPT },
#ifdef MOZ_SERVICES_HEALTHREPORT
{ "healthreport", "chrome://browser/content/abouthealthreport/abouthealth.xhtml",
nsIAboutModule::ALLOW_SCRIPT },
#endif
- { "accounts", "chrome://browser/content/aboutaccounts/aboutaccounts.xhtml",
- nsIAboutModule::ALLOW_SCRIPT },
{ "reader", "chrome://global/content/reader/aboutReader.html",
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
nsIAboutModule::ALLOW_SCRIPT |
nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
nsIAboutModule::HIDE_FROM_ABOUTABOUT },
};
static nsAutoCString
--- a/browser/components/preferences/in-content/sync.js
+++ b/browser/components/preferences/in-content/sync.js
@@ -455,17 +455,16 @@ var gSyncPane = {
fxAccounts.resendVerificationEmail()
.then(fxAccounts.getSignedInUser, onError)
.then(onSuccess, onError);
},
unlinkFirefoxAccount(confirm) {
if (confirm) {
- // We use a string bundle shared with aboutAccounts.
let sb = Services.strings.createBundle("chrome://browser/locale/syncSetup.properties");
let disconnectLabel = sb.GetStringFromName("disconnect.label");
let title = sb.GetStringFromName("disconnect.verify.title");
let body = sb.GetStringFromName("disconnect.verify.bodyHeading") +
"\n\n" +
sb.GetStringFromName("disconnect.verify.bodyText");
let ps = Services.prompt;
let buttonFlags = (ps.BUTTON_POS_0 * ps.BUTTON_TITLE_IS_STRING) +
--- a/browser/components/uitour/test/browser_fxa.js
+++ b/browser/components/uitour/test/browser_fxa.js
@@ -43,18 +43,17 @@ var tests = [
await showHighlightPromise("accountStatus");
let highlight = document.getElementById("UITourHighlightContainer");
let expectedTarget = "appMenu-fxa-avatar";
is(highlight.popupBoxObject.anchorNode.id, expectedTarget, "Anchored on avatar");
is(highlight.getAttribute("targetName"), "accountStatus", "Correct highlight target");
}),
];
-// Helpers copied from browser_aboutAccounts.js
-// watch out - these will fire observers which if you aren't careful, may
+// Watch out - these will fire observers which if you aren't careful, may
// interfere with the tests.
function setSignedInUser(data) {
if (!data) {
data = {
email: "foo@example.com",
uid: "1234@lcip.org",
assertion: "foobar",
sessionToken: "dead",
deleted file mode 100644
--- a/browser/locales/en-US/chrome/browser/aboutAccounts.dtd
+++ /dev/null
@@ -1,14 +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/. -->
-
-<!ENTITY aboutAccounts.welcome "Welcome to &syncBrand.shortName.label;">
-
-<!ENTITY aboutAccountsConfig.description "Sign in to sync your tabs, bookmarks, passwords & more.">
-<!ENTITY aboutAccountsConfig.startButton.label "Get started">
-<!ENTITY aboutAccountsConfig.syncPreferences.label "Sync preferences">
-<!ENTITY aboutAccounts.noConnection.title "No connection">
-<!ENTITY aboutAccounts.noConnection.description "You must be connected to the Internet to sign in.">
-<!ENTITY aboutAccounts.noConnection.retry "Try again">
-<!ENTITY aboutAccounts.badConfig.title "Bad configuration">
-<!ENTITY aboutAccounts.badConfig.description "Unable to determine your Firefox Account server configuration. Please try again later.">
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -5,17 +5,16 @@
# Note: This file should only contain locale entries. All
# override and resource entries should go to browser/base/jar.mn to avoid
# having to create the same entry for each locale.
@AB_CD@.jar:
% locale browser @AB_CD@ %locale/browser/
* locale/browser/bookmarks.html (generic/profile/bookmarks.html.in)
- locale/browser/aboutAccounts.dtd (%chrome/browser/aboutAccounts.dtd)
locale/browser/aboutDialog.dtd (%chrome/browser/aboutDialog.dtd)
locale/browser/aboutPrivateBrowsing.dtd (%chrome/browser/aboutPrivateBrowsing.dtd)
locale/browser/aboutPrivateBrowsing.properties (%chrome/browser/aboutPrivateBrowsing.properties)
locale/browser/aboutRobots.dtd (%chrome/browser/aboutRobots.dtd)
locale/browser/aboutHome.dtd (%chrome/browser/aboutHome.dtd)
locale/browser/accounts.properties (%chrome/browser/accounts.properties)
#ifdef MOZ_SERVICES_HEALTHREPORT
locale/browser/aboutHealthReport.dtd (%chrome/browser/aboutHealthReport.dtd)