diff --git a/Makefile.in b/Makefile.in
index 012f69bebfc8..845585fe4092 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -38,19 +38,12 @@ DIST_GARBAGE = config.cache config.log config.status* config-defs.h \
.mozconfig.mk
ifndef MOZ_PROFILE_USE
-# Automation builds should always have a new buildid, but for the sake of not
-# re-linking libxul on every incremental build we do not enforce this for
-# developer builds. Tests always need a new buildid as well.
-ifneq (,$(MOZ_AUTOMATION)$(MOZ_BUILD_DATE)$(TEST_MOZBUILD))
+ifneq (mobile/android,$(MOZ_BUILD_APP))
$(MDDEPDIR)/buildid.h.stub $(MDDEPDIR)/source-repo.h.stub: FORCE
endif
-# Additionally, provide a dummy target during tests, because
-# faster/rules.mk will expect these targets to exist.
-ifdef TEST_MOZBUILD
source-repo.h: $(MDDEPDIR)/source-repo.h.stub
buildid.h: $(MDDEPDIR)/buildid.h.stub
endif
-endif
BUILD_BACKEND_FILES := $(addprefix backend.,$(addsuffix Backend,$(BUILD_BACKENDS)))
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index 715223bc3829..fbb0a48d7109 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -343,13 +343,8 @@ pref("browser.urlbar.openintab", false);
pref("browser.urlbar.usepreloadedtopurls.enabled", false);
pref("browser.urlbar.usepreloadedtopurls.expire_days", 14);
-// Toggle the new work in progress Address Bar code. Enable it on Nightly and Beta,
-// not on Release yet.
-#ifdef EARLY_BETA_OR_EARLIER
+// Enable the new Address Bar code.
pref("browser.urlbar.quantumbar", true);
-#else
-pref("browser.urlbar.quantumbar", false);
-#endif
pref("browser.altClickSave", false);
diff --git a/browser/base/content/browser-sync.js b/browser/base/content/browser-sync.js
index fa95595cd4de..239a5c7a4f71 100644
--- a/browser/base/content/browser-sync.js
+++ b/browser/base/content/browser-sync.js
@@ -16,8 +16,6 @@ ChromeUtils.defineModuleGetter(this, "Weave",
const MIN_STATUS_ANIMATION_DURATION = 1600;
-const FXA_NO_AVATAR_ZEROS = "00000000000000000000000000000000";
-
var gSync = {
_initialized: false,
// The last sync start time. Used to calculate the leftover animation time
@@ -327,11 +325,7 @@ var gSync = {
stateValue = "unverified";
} else if (state.status === UIState.STATUS_SIGNED_IN) {
stateValue = "signedin";
- // Firefox Account specifies a `default` avatar image that uses the convention
- // of all 0s in url. The default used in the design of the toolbar menu is
- // different from the one provided by Firefox Account. Perform a check and only
- // change avatar *if* this is not a default avatar.
- if (state.avatarURL && !state.avatarURL.includes(FXA_NO_AVATAR_ZEROS)) {
+ if (state.avatarURL && !state.avatarIsDefault) {
// The user has specified a custom avatar, attempt to load the image on all the menu buttons.
const bgImage = `url("${state.avatarURL}")`;
let img = new Image();
@@ -373,7 +367,7 @@ var gSync = {
emitFxaToolbarTelemetry(type, panel) {
if (UIState.isReady() && panel) {
const state = UIState.get();
- const hasAvatar = state.avatarURL && !state.avatarURL.includes(FXA_NO_AVATAR_ZEROS);
+ const hasAvatar = state.avatarURL && !state.avatarIsDefault;
let extraOptions = {"fxa_status": state.status, "fxa_avatar": hasAvatar ? "true" : "false"};
// When the fxa avatar panel is within the Firefox app menu,
@@ -430,21 +424,6 @@ var gSync = {
this.appMenuLabel.setAttribute("label", state.displayName || state.email);
this.appMenuLabel.classList.add("subviewbutton-nav");
this.appMenuStatus.removeAttribute("tooltiptext");
-
- if (state.avatarURL) {
- let bgImage = "url(\"" + state.avatarURL + "\")";
- this.appMenuAvatar.style.listStyleImage = bgImage;
-
- let img = new Image();
- img.onerror = () => {
- // Clear the image if it has trouble loading. Since this callback is asynchronous
- // we check to make sure the image is still the same before we clear it.
- if (this.appMenuAvatar.style.listStyleImage === bgImage) {
- this.appMenuAvatar.style.removeProperty("list-style-image");
- }
- };
- img.src = state.avatarURL;
- }
},
updateState(state) {
diff --git a/browser/base/content/test/performance/browser_preferences_usage.js b/browser/base/content/test/performance/browser_preferences_usage.js
index b0cf45c2fcd7..11c713b028c0 100644
--- a/browser/base/content/test/performance/browser_preferences_usage.js
+++ b/browser/base/content/test/performance/browser_preferences_usage.js
@@ -86,10 +86,6 @@ add_task(async function startup() {
min: 200,
max: 350,
},
- "layout.css.prefixes.webkit": {
- min: 135,
- max: 170,
- },
"layout.css.dpi": {
min: 45,
max: 81,
diff --git a/browser/base/content/test/sync/browser_sync.js b/browser/base/content/test/sync/browser_sync.js
index 3a2227990f64..b9a194252f0f 100644
--- a/browser/base/content/test/sync/browser_sync.js
+++ b/browser/base/content/test/sync/browser_sync.js
@@ -42,14 +42,13 @@ add_task(async function test_ui_state_signedin() {
checkPanelUIStatusBar({
label: "Foo Bar",
fxastatus: "signedin",
- avatarURL: "https://foo.bar",
syncing: false,
syncNowTooltip: lastSyncTooltip,
});
checkRemoteTabsPanel("PanelUI-remotetabs-main", false);
checkMenuBarItem("sync-syncnowitem");
checkFxaToolbarButtonPanel("PanelUI-fxa-menu");
- checkFxaToolbarButtonAvatar("signedin");
+ checkFxAAvatar("signedin");
gSync.relativeTimeFormat = origRelativeTimeFormat;
});
@@ -92,7 +91,7 @@ add_task(async function test_ui_state_unconfigured() {
checkRemoteTabsPanel("PanelUI-remotetabs-setupsync");
checkMenuBarItem("sync-setup");
checkFxaToolbarButtonPanel("PanelUI-fxa-signin");
- checkFxaToolbarButtonAvatar("not_configured");
+ checkFxAAvatar("not_configured");
});
add_task(async function test_ui_state_unverified() {
@@ -111,14 +110,13 @@ add_task(async function test_ui_state_unverified() {
label: expectedLabel,
tooltip: tooltipText,
fxastatus: "unverified",
- avatarURL: null,
syncing: false,
syncNowTooltip: tooltipText,
});
checkRemoteTabsPanel("PanelUI-remotetabs-unverified", false);
checkMenuBarItem("sync-unverifieditem");
checkFxaToolbarButtonPanel("PanelUI-fxa-unverified");
- checkFxaToolbarButtonAvatar("unverified");
+ checkFxAAvatar("unverified");
});
add_task(async function test_ui_state_loginFailed() {
@@ -135,21 +133,19 @@ add_task(async function test_ui_state_loginFailed() {
label: expectedLabel,
tooltip: tooltipText,
fxastatus: "login-failed",
- avatarURL: null,
syncing: false,
syncNowTooltip: tooltipText,
});
checkRemoteTabsPanel("PanelUI-remotetabs-reauthsync", false);
checkMenuBarItem("sync-reauthitem");
checkFxaToolbarButtonPanel("PanelUI-fxa-unverified");
- checkFxaToolbarButtonAvatar("unverified");
+ checkFxAAvatar("unverified");
});
-function checkPanelUIStatusBar({label, tooltip, fxastatus, avatarURL, syncing, syncNowTooltip}) {
+function checkPanelUIStatusBar({label, tooltip, fxastatus, syncing, syncNowTooltip}) {
let labelNode = document.getElementById("appMenu-fxa-label");
let tooltipNode = document.getElementById("appMenu-fxa-status");
let statusNode = document.getElementById("appMenu-fxa-container");
- let avatar = document.getElementById("appMenu-fxa-avatar");
is(labelNode.getAttribute("label"), label, "fxa label has the right value");
if (tooltipNode.getAttribute("tooltiptext")) {
@@ -160,11 +156,6 @@ function checkPanelUIStatusBar({label, tooltip, fxastatus, avatarURL, syncing, s
} else {
ok(!statusNode.hasAttribute("fxastatus"), "fxastatus is unset");
}
- if (avatarURL) {
- is(avatar.style.listStyleImage, `url("${avatarURL}")`, "fxa avatar URL is set");
- } else {
- ok(!statusNode.style.listStyleImage, "fxa avatar URL is unset");
- }
}
function checkRemoteTabsPanel(expectedShownItemId, syncing, syncNowTooltip) {
@@ -212,15 +203,20 @@ async function checkFxaToolbarButtonPanel(expectedShownItemId) {
}
// fxaStatus is one of 'not_configured', 'unverified', or 'signedin'.
-function checkFxaToolbarButtonAvatar(fxaStatus) {
- const avatar = document.getElementById("fxa-avatar-image");
- const avatarURL = getComputedStyle(avatar).listStyleImage;
- const expected = {
- not_configured: "url(\"chrome://browser/skin/fxa/avatar-empty-badged.svg\")",
- unverified: "url(\"chrome://browser/skin/fxa/avatar-confirm.svg\")",
- signedin: "url(\"chrome://browser/skin/fxa/avatar.svg\")",
- };
- ok(avatarURL == expected[fxaStatus], `expected avatar URL to be ${expected[fxaStatus]}, but got ${avatarURL}`);
+function checkFxAAvatar(fxaStatus) {
+ const avatarContainers = [
+ document.getElementById("appMenu-fxa-avatar"),
+ document.getElementById("fxa-avatar-image"),
+ ];
+ for (const avatar of avatarContainers) {
+ const avatarURL = getComputedStyle(avatar).listStyleImage;
+ const expected = {
+ not_configured: "url(\"chrome://browser/skin/fxa/avatar-empty-badged.svg\")",
+ unverified: "url(\"chrome://browser/skin/fxa/avatar-confirm.svg\")",
+ signedin: "url(\"chrome://browser/skin/fxa/avatar.svg\")",
+ };
+ ok(avatarURL == expected[fxaStatus], `expected avatar URL to be ${expected[fxaStatus]}, got ${avatarURL}`);
+ }
}
// Only one item displayed at a time.
diff --git a/browser/components/extensions/test/browser/browser-common.ini b/browser/components/extensions/test/browser/browser-common.ini
index ad32e054a60a..3ae32a440f71 100644
--- a/browser/components/extensions/test/browser/browser-common.ini
+++ b/browser/components/extensions/test/browser/browser-common.ini
@@ -201,6 +201,7 @@ skip-if = !e10s
[browser_ext_tabs_discarded.js]
[browser_ext_tabs_duplicate.js]
[browser_ext_tabs_events.js]
+skip-if = true # Bug 1521363
[browser_ext_tabs_events_order.js]
[browser_ext_tabs_executeScript.js]
skip-if = (verify && !debug && (os == 'mac'))
diff --git a/browser/components/newtab/data/content/assets/sync-devices.svg b/browser/components/newtab/data/content/assets/sync-devices.svg
index 0bb13eb5a22d..fcf3f662caad 100644
--- a/browser/components/newtab/data/content/assets/sync-devices.svg
+++ b/browser/components/newtab/data/content/assets/sync-devices.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
diff --git a/browser/components/preferences/in-content/sync.js b/browser/components/preferences/in-content/sync.js
index 835ccd22db86..5d4059ff8511 100644
--- a/browser/components/preferences/in-content/sync.js
+++ b/browser/components/preferences/in-content/sync.js
@@ -321,7 +321,7 @@ var gSyncPane = {
} else {
fxaLoginStatus.removeAttribute("hasName");
}
- if (state.avatarURL) {
+ if (state.avatarURL && !state.avatarIsDefault) {
let bgImage = "url(\"" + state.avatarURL + "\")";
let profileImageElement = document.querySelector("#fxaLoginVerified > .fxaProfileImage");
profileImageElement.style.listStyleImage = bgImage;
diff --git a/browser/themes/shared/customizableui/panelUI.inc.css b/browser/themes/shared/customizableui/panelUI.inc.css
index d02fe2d15c66..8f642fc784d8 100644
--- a/browser/themes/shared/customizableui/panelUI.inc.css
+++ b/browser/themes/shared/customizableui/panelUI.inc.css
@@ -568,7 +568,9 @@ toolbarbutton[constrain-size="true"][cui-areatype="menu-panel"] > .toolbarbutton
#appMenu-fxa-avatar {
pointer-events: none;
- list-style-image: url(chrome://browser/skin/fxa/default-avatar.svg);
+ list-style-image: var(--avatar-image-url);
+ -moz-context-properties: fill;
+ fill: currentColor;
}
/* Handle different UI states. */
@@ -697,26 +699,31 @@ toolbarbutton[constrain-size="true"][cui-areatype="menu-panel"] > .toolbarbutton
--avatar-image-url: url(chrome://browser/skin/fxa/avatar.svg);
}
-:root[fxastatus="unverified"] #fxa-avatar-image {
- list-style-image: url(chrome://browser/skin/fxa/avatar-confirm.svg);
+:root[fxastatus="unverified"] {
+ --avatar-image-url: url(chrome://browser/skin/fxa/avatar-confirm.svg);
}
-:root[fxastatus="not_configured"] #fxa-avatar-image {
- list-style-image: url(chrome://browser/skin/fxa/avatar-empty.svg);
+:root[fxastatus="not_configured"] {
+ --avatar-image-url: url(chrome://browser/skin/fxa/avatar-empty.svg);
}
-:root[fxastatus="not_configured"][fxa_avatar_badged="badged"] #fxa-avatar-image {
- list-style-image: url(chrome://browser/skin/fxa/avatar-empty-badged.svg);
+:root[fxastatus="not_configured"][fxa_avatar_badged="badged"] {
+ --avatar-image-url: url(chrome://browser/skin/fxa/avatar-empty-badged.svg);
}
:root:not([fxatoolbarmenu]) #fxa-toolbar-menu-button {
display: none;
}
+#fxa-menu-avatar,
+#fxa-avatar-image {
+ list-style-image: var(--avatar-image-url);
+}
+
+/* Non-signedin statuses icons are not totally round. */
:root[fxastatus="signedin"] #fxa-menu-avatar,
:root[fxastatus="signedin"] #fxa-avatar-image {
border-radius: 50%;
- list-style-image: var(--avatar-image-url);
}
:root[fxastatus="signedin"] #PanelUI-fxa-signin,
@@ -796,7 +803,7 @@ panelmultiview[mainViewId="PanelUI-fxa"] #PanelUI-remotetabs-syncnow {
.fxaChooseWhatToSyncDevices {
height: 102px;
width: 201px;
- list-style-image: url(chrome://browser/skin/fxa/choose-what-to-sync-devices.svg);
+ list-style-image: url(chrome://browser/skin/fxa/sync-devices.svg);
}
.fxaGraphicMail {
@@ -806,7 +813,7 @@ panelmultiview[mainViewId="PanelUI-fxa"] #PanelUI-remotetabs-syncnow {
}
#PanelUI-remotetabs {
- --panel-ui-sync-illustration-height: 91px;
+ --panel-ui-sync-illustration-height: 141px;
}
.PanelUI-fxa-signin-instruction-label,
@@ -885,7 +892,7 @@ panelmultiview[mainViewId="PanelUI-fxa"] #PanelUI-remotetabs-syncnow {
/* If you change the margin here, the min-height of the synced tabs panel
(e.g. #PanelUI-remotetabs[mainview] #PanelUI-remotetabs-setupsync, etc) may
need adjusting (see bug 1248506) */
- width: 104px;
+ width: 204px;
height: var(--panel-ui-sync-illustration-height);
margin: 38px 0 15px;
-moz-context-properties: fill;
diff --git a/browser/themes/shared/fxa/avatar-color.svg b/browser/themes/shared/fxa/avatar-color.svg
new file mode 100644
index 000000000000..b39f00a1936b
--- /dev/null
+++ b/browser/themes/shared/fxa/avatar-color.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/browser/themes/shared/fxa/choose-what-to-sync-devices.svg b/browser/themes/shared/fxa/choose-what-to-sync-devices.svg
deleted file mode 100644
index 4ef7caf058b9..000000000000
--- a/browser/themes/shared/fxa/choose-what-to-sync-devices.svg
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
diff --git a/browser/themes/shared/fxa/default-avatar.svg b/browser/themes/shared/fxa/default-avatar.svg
deleted file mode 100644
index 540234911544..000000000000
--- a/browser/themes/shared/fxa/default-avatar.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
diff --git a/browser/themes/shared/fxa/sync-devices.svg b/browser/themes/shared/fxa/sync-devices.svg
new file mode 100644
index 000000000000..5c9ff7b03cc1
--- /dev/null
+++ b/browser/themes/shared/fxa/sync-devices.svg
@@ -0,0 +1,49 @@
+
+
diff --git a/browser/themes/shared/fxa/sync-illustration-issue.svg b/browser/themes/shared/fxa/sync-illustration-issue.svg
index a2e9e0df2300..9fdfb1e65dd9 100644
--- a/browser/themes/shared/fxa/sync-illustration-issue.svg
+++ b/browser/themes/shared/fxa/sync-illustration-issue.svg
@@ -1,57 +1,52 @@
-