Merge m-c to inbound. a=merge

This commit is contained in:
Ryan VanderMeulen 2017-05-23 11:15:49 -04:00
commit 1734a80650
575 changed files with 42716 additions and 24045 deletions

View File

@ -24,31 +24,6 @@ var gSync = {
UIState.ON_UPDATE
],
get panelUIFooter() {
delete this.panelUIFooter;
return this.panelUIFooter = document.getElementById("PanelUI-footer-fxa");
},
get panelUIStatus() {
delete this.panelUIStatus;
return this.panelUIStatus = document.getElementById("PanelUI-fxa-status");
},
get panelUIAvatar() {
delete this.panelUIAvatar;
return this.panelUIAvatar = document.getElementById("PanelUI-fxa-avatar");
},
get panelUILabel() {
delete this.panelUILabel;
return this.panelUILabel = document.getElementById("PanelUI-fxa-label");
},
get panelUIIcon() {
delete this.panelUIIcon;
return this.panelUIIcon = document.getElementById("PanelUI-fxa-icon");
},
get fxaStrings() {
delete this.fxaStrings;
return this.fxaStrings = Services.strings.createBundle(
@ -74,21 +49,21 @@ var gSync = {
.sort((a, b) => a.name.localeCompare(b.name));
},
init() {
// Bail out if we're already initialized or for pop-up windows.
if (this._initialized || !window.toolbar.visible) {
return;
_generateNodeGetters(usePhoton) {
let prefix = usePhoton ? "appMenu-" : "PanelUI-";
for (let k of ["Status", "Avatar", "Label", "Container"]) {
let prop = "appMenu" + k;
let suffix = k.toLowerCase();
delete this[prop];
this.__defineGetter__(prop, function() {
delete this[prop];
return this[prop] = document.getElementById(prefix + "fxa-" + suffix);
});
}
},
for (let topic of this._obs) {
Services.obs.addObserver(this, topic, true);
}
// initial label for the sync buttons.
let broadcaster = document.getElementById("sync-status");
broadcaster.setAttribute("label", this.syncStrings.GetStringFromName("syncnow.label"));
// Update the UI
_maybeUpdateUIState() {
// Update the UI.
if (UIState.isReady()) {
const state = UIState.get();
// If we are not configured, the UI is already in the right state when
@ -99,6 +74,32 @@ var gSync = {
}
this.maybeMoveSyncedTabsButton();
},
init() {
// Bail out if we're already initialized or for pop-up windows.
if (this._initialized || !window.toolbar.visible) {
return;
}
for (let topic of this._obs) {
Services.obs.addObserver(this, topic, true);
}
// Use this getter not because 'lazy' but because of the observer,
// which lets us easily update our UI according to the pref flip
XPCOMUtils.defineLazyPreferenceGetter(this, "gPhotonStructure",
"browser.photon.structure.enabled", (pref, old, newValue) => {
this._generateNodeGetters(newValue);
this._maybeUpdateUIState();
});
this._generateNodeGetters(this.gPhotonStructure);
// initial label for the sync buttons.
let broadcaster = document.getElementById("sync-status");
broadcaster.setAttribute("label", this.syncStrings.GetStringFromName("syncnow.label"));
this._maybeUpdateUIState();
EnsureFxAccountsWebChannel();
@ -150,16 +151,16 @@ var gSync = {
},
updatePanelPopup(state) {
let defaultLabel = this.panelUIStatus.getAttribute("defaultlabel");
let defaultLabel = this.appMenuStatus.getAttribute("defaultlabel");
// The localization string is for the signed in text, but it's the default text as well
let defaultTooltiptext = this.panelUIStatus.getAttribute("signedinTooltiptext");
let defaultTooltiptext = this.appMenuStatus.getAttribute("signedinTooltiptext");
const status = state.status;
// Reset the status bar to its original state.
this.panelUILabel.setAttribute("label", defaultLabel);
this.panelUIStatus.setAttribute("tooltiptext", defaultTooltiptext);
this.panelUIFooter.removeAttribute("fxastatus");
this.panelUIAvatar.style.removeProperty("list-style-image");
this.appMenuLabel.setAttribute("label", defaultLabel);
this.appMenuStatus.setAttribute("tooltiptext", defaultTooltiptext);
this.appMenuContainer.removeAttribute("fxastatus");
this.appMenuAvatar.style.removeProperty("list-style-image");
if (status == UIState.STATUS_NOT_CONFIGURED) {
return;
@ -168,34 +169,34 @@ var gSync = {
// At this point we consider sync to be configured (but still can be in an error state).
if (status == UIState.STATUS_LOGIN_FAILED) {
let tooltipDescription = this.fxaStrings.formatStringFromName("reconnectDescription", [state.email], 1);
let errorLabel = this.panelUIStatus.getAttribute("errorlabel");
this.panelUIFooter.setAttribute("fxastatus", "login-failed");
this.panelUILabel.setAttribute("label", errorLabel);
this.panelUIStatus.setAttribute("tooltiptext", tooltipDescription);
let errorLabel = this.appMenuStatus.getAttribute("errorlabel");
this.appMenuContainer.setAttribute("fxastatus", "login-failed");
this.appMenuLabel.setAttribute("label", errorLabel);
this.appMenuStatus.setAttribute("tooltiptext", tooltipDescription);
return;
} else if (status == UIState.STATUS_NOT_VERIFIED) {
let tooltipDescription = this.fxaStrings.formatStringFromName("verifyDescription", [state.email], 1);
let unverifiedLabel = this.panelUIStatus.getAttribute("unverifiedlabel");
this.panelUIFooter.setAttribute("fxastatus", "unverified");
this.panelUILabel.setAttribute("label", unverifiedLabel);
this.panelUIStatus.setAttribute("tooltiptext", tooltipDescription);
let unverifiedLabel = this.appMenuStatus.getAttribute("unverifiedlabel");
this.appMenuContainer.setAttribute("fxastatus", "unverified");
this.appMenuLabel.setAttribute("label", unverifiedLabel);
this.appMenuStatus.setAttribute("tooltiptext", tooltipDescription);
return;
}
// At this point we consider sync to be logged-in.
this.panelUIFooter.setAttribute("fxastatus", "signedin");
this.panelUILabel.setAttribute("label", state.displayName || state.email);
this.appMenuContainer.setAttribute("fxastatus", "signedin");
this.appMenuLabel.setAttribute("label", state.displayName || state.email);
if (state.avatarURL) {
let bgImage = "url(\"" + state.avatarURL + "\")";
this.panelUIAvatar.style.listStyleImage = bgImage;
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.panelUIAvatar.style.listStyleImage === bgImage) {
this.panelUIAvatar.style.removeProperty("list-style-image");
if (this.appMenuAvatar.style.listStyleImage === bgImage) {
this.appMenuAvatar.style.removeProperty("list-style-image");
}
};
img.src = state.avatarURL;
@ -239,12 +240,12 @@ var gSync = {
},
onMenuPanelCommand() {
switch (this.panelUIFooter.getAttribute("fxastatus")) {
switch (this.appMenuContainer.getAttribute("fxastatus")) {
case "signedin":
this.openPrefs("menupanel", "fxaSignedin");
break;
case "error":
if (this.panelUIFooter.getAttribute("fxastatus") == "unverified") {
if (this.appMenuContainer.getAttribute("fxastatus") == "unverified") {
this.openPrefs("menupanel", "fxaError");
} else {
this.openSignInAgainPage("menupanel");

View File

@ -91,8 +91,8 @@ function createPanel(attrs)
button.label = "OK";
button.width = 120;
button.height = 40;
button.setAttribute("style", "-moz-appearance: none; appearance: none; border: 0; margin: 0;");
panel.setAttribute("style", "-moz-appearance: none; appearance: none; border: 0; margin: 0;");
button.setAttribute("style", "-moz-appearance: none; border: 0; margin: 0;");
panel.setAttribute("style", "-moz-appearance: none; border: 0; margin: 0;");
return document.documentElement.appendChild(panel);
}

View File

@ -8,6 +8,7 @@ support-files =
blockPluginVulnerableUpdatable.xml
browser_clearplugindata.html
browser_clearplugindata_noage.html
empty_file.html
head.js
plugin_add_dynamically.html
plugin_alternate_content.html
@ -92,6 +93,7 @@ tags = blocklist
[browser_blocklist_content.js]
skip-if = !e10s
tags = blocklist
[browser_enable_DRM_prompt.js]
[browser_globalplugin_crashinfobar.js]
skip-if = !crashreporter
[browser_pluginCrashCommentAndURL.js]

View File

@ -0,0 +1,67 @@
/*
* Bug 1366167 - Tests that the "Enable DRM" prompt shows if EME is requested while EME is disabled.
*/
const TEST_URL =
getRootDirectory(gTestPath).replace("chrome://mochitests/content",
"https://example.com") + "empty_file.html";
add_task(async function() {
await BrowserTestUtils.withNewTab(TEST_URL, async function(browser) {
// Note: SpecialPowers.pushPrefEnv has problems with the "Enable DRM"
// button on the notification box toggling the prefs. So manually
// set/unset the prefs the UI we're testing toggles.
let emeWasEnabled = Services.prefs.getBoolPref("media.eme.enabled", false);
let cdmWasEnabled = Services.prefs.getBoolPref("media.gmp-widevinecdm.enabled", false);
// Restore the preferences to their pre-test state on test finish.
registerCleanupFunction(function() {
Services.prefs.setBoolPref("media.eme.enabled", emeWasEnabled);
Services.prefs.setBoolPref("media.gmp-widevinecdm.enabled", cdmWasEnabled);
});
// Turn off EME and Widevine CDM.
Services.prefs.setBoolPref("media.eme.enabled", false);
Services.prefs.setBoolPref("media.gmp-widevinecdm.enabled", false);
// Have content request access to Widevine, UI should drop down to
// prompt user to enable DRM.
let result = await ContentTask.spawn(browser, {}, async function() {
try {
let config = [{
initDataTypes: ["webm"],
videoCapabilities: [{contentType: 'video/webm; codecs="vp9"'}],
}];
await content.navigator.requestMediaKeySystemAccess("com.widevine.alpha", config);
} catch (ex) {
return {rejected: true};
}
return {rejected: false};
});
is(result.rejected, true, "EME request should be denied because EME disabled.");
// Verify the UI prompt showed.
let box = gBrowser.getNotificationBox(browser);
let notification = box.currentNotification;
ok(notification, "Notification should be visible");
is(notification.value, "drmContentDisabled",
"Should be showing the right notification");
// Verify the "Enable DRM" button is there.
let buttons = notification.querySelectorAll(".notification-button");
is(buttons.length, 1, "Should have one button.");
// Prepare a Promise that should resolve when the "Enable DRM" button's
// page reload completes.
let refreshPromise = BrowserTestUtils.browserLoaded(browser);
buttons[0].click();
// Wait for the reload to complete.
await refreshPromise;
// Verify clicking the "Enable DRM" button enabled DRM.
let enabled = Services.prefs.getBoolPref("media.eme.enabled", true);
is(enabled, true, "EME should be enabled after click on 'Enable DRM' button");
});
});

View File

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
This page is intentionally left blank.
</body>
</html>

View File

@ -159,9 +159,6 @@ var whitelist = new Set([
platforms: ["linux"]},
// Bug 1348362
{file: "chrome://global/skin/icons/warning-64.png", platforms: ["linux", "win"]},
// Bug 1348522
{file: "chrome://global/skin/media/clicktoplay-bgtexture.png"},
{file: "chrome://global/skin/media/videoClickToPlayButton.svg"},
// Bug 1348524
{file: "chrome://global/skin/notification/close.png", platforms: ["macosx"]},
// Bug 1348525

View File

@ -20,6 +20,10 @@ let whitelist = [
{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},

View File

@ -27,7 +27,7 @@ add_task(async function test_ui_state_signedin() {
gSync.updateAllUI(state);
checkFxABadge(false);
let statusBarTooltip = gSync.panelUIStatus.getAttribute("signedinTooltiptext");
let statusBarTooltip = gSync.appMenuStatus.getAttribute("signedinTooltiptext");
let lastSyncTooltip = gSync.formatLastSyncDate(new Date(state.lastSync));
checkPanelUIStatusBar({
label: "Foo Bar",
@ -75,8 +75,8 @@ add_task(async function test_ui_state_unconfigured() {
gSync.updateAllUI(state);
checkFxABadge(false);
let signedOffLabel = gSync.panelUIStatus.getAttribute("defaultlabel");
let statusBarTooltip = gSync.panelUIStatus.getAttribute("signedinTooltiptext");
let signedOffLabel = gSync.appMenuStatus.getAttribute("defaultlabel");
let statusBarTooltip = gSync.appMenuStatus.getAttribute("signedinTooltiptext");
checkPanelUIStatusBar({
label: signedOffLabel,
tooltip: statusBarTooltip
@ -96,7 +96,7 @@ add_task(async function test_ui_state_unverified() {
gSync.updateAllUI(state);
checkFxABadge(true);
let expectedLabel = gSync.panelUIStatus.getAttribute("unverifiedlabel");
let expectedLabel = gSync.appMenuStatus.getAttribute("unverifiedlabel");
let tooltipText = gSync.fxaStrings.formatStringFromName("verifyDescription", [state.email], 1);
checkPanelUIStatusBar({
label: expectedLabel,
@ -119,7 +119,7 @@ add_task(async function test_ui_state_loginFailed() {
gSync.updateAllUI(state);
checkFxABadge(true);
let expectedLabel = gSync.panelUIStatus.getAttribute("errorlabel");
let expectedLabel = gSync.appMenuStatus.getAttribute("errorlabel");
let tooltipText = gSync.fxaStrings.formatStringFromName("reconnectDescription", [state.email], 1);
checkPanelUIStatusBar({
label: expectedLabel,
@ -160,26 +160,27 @@ function checkFxABadge(shouldBeShown) {
}
function checkPanelUIStatusBar({label, tooltip, fxastatus, avatarURL, syncing, syncNowTooltip}) {
let labelNode = document.getElementById("PanelUI-fxa-label");
let tooltipNode = document.getElementById("PanelUI-fxa-status");
let statusNode = document.getElementById("PanelUI-footer-fxa");
let avatar = document.getElementById("PanelUI-fxa-avatar");
let prefix = gPhotonStructure ? "appMenu" : "PanelUI"
let labelNode = document.getElementById(`${prefix}-fxa-label`);
let tooltipNode = document.getElementById(`${prefix}-fxa-status`);
let statusNode = document.getElementById(`${prefix}-fxa-container`);
let avatar = document.getElementById(`${prefix}-fxa-avatar`);
is(labelNode.getAttribute("label"), label, "panelUI-fxa label has the right value");
is(tooltipNode.getAttribute("tooltiptext"), tooltip, "panelUI-fxa tooltip has the right value");
is(labelNode.getAttribute("label"), label, "fxa label has the right value");
is(tooltipNode.getAttribute("tooltiptext"), tooltip, "fxa tooltip has the right value");
if (fxastatus) {
is(statusNode.getAttribute("fxastatus"), fxastatus, "panelUI-fxa fxastatus has the right value");
is(statusNode.getAttribute("fxastatus"), fxastatus, "fxa fxastatus has the right value");
} else {
ok(!statusNode.hasAttribute("fxastatus"), "panelUI-fxa fxastatus is unset")
ok(!statusNode.hasAttribute("fxastatus"), "fxastatus is unset")
}
if (avatarURL) {
is(avatar.style.listStyleImage, `url("${avatarURL}")`, "panelUI-fxa avatar URL is set");
is(avatar.style.listStyleImage, `url("${avatarURL}")`, "fxa avatar URL is set");
} else {
ok(!statusNode.style.listStyleImage, "panelUI-fxa avatar URL is unset");
ok(!statusNode.style.listStyleImage, "fxa avatar URL is unset");
}
if (syncing != undefined && syncNowTooltip != undefined) {
checkSyncNowButton("PanelUI-fxa-icon", syncing, syncNowTooltip);
checkSyncNowButton(`${prefix}-fxa-icon`, syncing, syncNowTooltip);
}
}

View File

@ -24,7 +24,7 @@
oncommand="PanelUI._onBannerItemSelected(event)"
wrap="true"
hidden="true"/>
<hbox id="PanelUI-footer-fxa">
<hbox id="PanelUI-fxa-container">
<hbox id="PanelUI-fxa-status"
label="&fxaSignedIn.tooltip;"
defaultlabel="&fxaSignIn.label;"
@ -508,6 +508,31 @@
oncommand="PanelUI._onBannerItemSelected(event)"
wrap="true"
hidden="true"/>
<toolbaritem id="appMenu-fxa-container">
<hbox id="appMenu-fxa-status"
flex="1"
defaultlabel="&fxaSignIn.label;"
signedinTooltiptext="&fxaSignedIn.tooltip;"
tooltiptext="&fxaSignedIn.tooltip;"
errorlabel="&fxaSignInError.label;"
unverifiedlabel="&fxaUnverified.label;"
onclick="if (event.which == 1) gSync.onMenuPanelCommand();">
<image id="appMenu-fxa-avatar"/>
<toolbarbutton id="appMenu-fxa-label"
class="subviewbutton subviewbutton-iconic"
label="&fxaSignIn.label;"
fxabrandname="&syncBrand.fxAccount.label;"/>
</hbox>
<toolbarseparator/>
<toolbarbutton id="appMenu-fxa-icon"
class="subviewbutton subviewbutton-iconic"
oncommand="gSync.doSync();"
closemenu="none">
<observes element="sync-status" attribute="syncstatus"/>
<observes element="sync-status" attribute="tooltiptext"/>
</toolbarbutton>
</toolbaritem>
<toolbarseparator/>
<toolbarbutton id="appMenu-new-window-button"
class="subviewbutton subviewbutton-iconic"
label="&newNavigatorCmd.label;"

View File

@ -198,7 +198,6 @@ skip-if = true # Needs to be rewritten as Marionette test, bug 995916
[browser_635418.js]
[browser_636279.js]
[browser_637020.js]
[browser_644409-scratchpads.js]
[browser_645428.js]
[browser_659591.js]
[browser_662743.js]

View File

@ -99,7 +99,7 @@ this.UITour = {
["accountStatus", {
query: (aDocument) => {
// If the user is logged in, use the avatar element.
let fxAFooter = aDocument.getElementById("PanelUI-footer-fxa");
let fxAFooter = aDocument.getElementById("PanelUI-fxa-container");
if (fxAFooter.getAttribute("fxastatus")) {
return aDocument.getElementById("PanelUI-fxa-avatar");
}

View File

@ -230,9 +230,7 @@ chrome/toolkit/skin/classic/global/dropmarker.css
chrome/toolkit/skin/classic/global/global.css
chrome/toolkit/skin/classic/global/groupbox.css
chrome/toolkit/skin/classic/global/icons/close-win7.png
chrome/toolkit/skin/classic/global/icons/tabprompts-bgtexture.png
chrome/toolkit/skin/classic/global/listbox.css
chrome/toolkit/skin/classic/global/media/clicktoplay-bgtexture.png
chrome/toolkit/skin/classic/global/menu.css
chrome/toolkit/skin/classic/global/menulist.css
chrome/toolkit/skin/classic/global/numberbox.css

View File

@ -22,6 +22,10 @@
:root {
--panel-ui-exit-subview-gutter-width: 38px;
--appmenu-yellow-warning-border-color: hsl(45, 100%, 77%);
--appmenu-yellow-warning-color: #FFEFBF;
--appmenu-yellow-warning-hover-color: #FFE8A2;
--appmenu-yellow-warning-active-color: #FFE38F;
}
#PanelUI-popup #PanelUI-contents:empty {
@ -489,9 +493,9 @@ toolbaritem[cui-areatype="menu-panel"][sdkstylewidget="true"] > iframe {
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-contents-scroller > #PanelUI-contents > .panel-wide-item,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-contents-scroller > #PanelUI-contents > .toolbarbutton-1:not([panel-multiview-anchor="true"]),
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > .panel-banner-item,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-footer-fxa > #PanelUI-fxa-status > #PanelUI-fxa-avatar,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-footer-fxa > #PanelUI-fxa-status > #PanelUI-fxa-label,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-footer-fxa > #PanelUI-fxa-icon,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-fxa-container > #PanelUI-fxa-status > #PanelUI-fxa-avatar,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-fxa-container > #PanelUI-fxa-status > #PanelUI-fxa-label,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-fxa-container > #PanelUI-fxa-icon,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-footer-inner > #PanelUI-footer-inner > toolbarseparator,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-footer-inner > #PanelUI-customize,
#PanelUI-multiView[viewtype="subview"] #PanelUI-mainView > #PanelUI-footer > #PanelUI-footer-inner > #PanelUI-help:not([panel-multiview-anchor="true"]) {
@ -589,17 +593,17 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
margin: 0;
}
#main-window[customizing] #PanelUI-footer-fxa {
#main-window[customizing] #PanelUI-fxa-container {
display: none;
}
#PanelUI-footer-fxa:not([fxastatus="signedin"]) > toolbarseparator,
#PanelUI-footer-fxa:not([fxastatus="signedin"]) > #PanelUI-fxa-icon {
#PanelUI-fxa-container:not([fxastatus="signedin"]) > toolbarseparator,
#PanelUI-fxa-container:not([fxastatus="signedin"]) > #PanelUI-fxa-icon {
display: none;
}
#PanelUI-footer-fxa[fxastatus="login-failed"] > #PanelUI-fxa-status::after,
#PanelUI-footer-fxa[fxastatus="unverified"] > #PanelUI-fxa-status::after {
#PanelUI-fxa-container[fxastatus="login-failed"] > #PanelUI-fxa-status::after,
#PanelUI-fxa-container[fxastatus="unverified"] > #PanelUI-fxa-status::after {
content: url(chrome://browser/skin/warning.svg);
filter: drop-shadow(0 1px 0 hsla(206,50%,10%,.15));
width: 47px;
@ -620,9 +624,9 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
}
.addon-banner-item {
background-color: #FFEFBF;
background-color: var(--appmenu-yellow-warning-color);
/* Force border to override `.addon-banner-item` selector below */
border-top: 1px solid hsl(45, 100%, 77%) !important;
border-top: 1px solid var(--appmenu-yellow-warning-border-color) !important;
display: flex;
flex: 1 1 0%;
width: calc(@menuPanelWidth@ + 30px);
@ -631,11 +635,11 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
}
.addon-banner-item:hover {
background-color: #FFE8A2;
background-color: var(--appmenu-yellow-warning-hover-color);
}
.addon-banner-item:active {
background-color: #FFE38F;
background-color: var(--appmenu-yellow-warning-active-color);
}
.addon-banner-item > .toolbarbutton-icon {
@ -654,18 +658,18 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
}
#PanelUI-footer-inner,
#PanelUI-footer-fxa:not([hidden]) {
#PanelUI-fxa-container:not([hidden]) {
display: flex;
border-top: 1px solid var(--panel-separator-color);
}
#PanelUI-multiView[viewtype="subview"] #PanelUI-footer-inner,
#PanelUI-multiView[viewtype="subview"] #PanelUI-footer-fxa {
#PanelUI-multiView[viewtype="subview"] #PanelUI-fxa-container {
position: relative;
}
#PanelUI-footer-inner > toolbarseparator,
#PanelUI-footer-fxa > toolbarseparator {
#PanelUI-fxa-container > toolbarseparator {
border: 0;
border-left: 1px solid var(--panel-separator-color);
margin: 7px 0 7px;
@ -673,7 +677,7 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
}
#PanelUI-footer-inner:hover > toolbarseparator,
#PanelUI-footer-fxa:hover > toolbarseparator {
#PanelUI-fxa-container:hover > toolbarseparator {
margin: 0;
}
@ -710,11 +714,118 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
padding-inline-start: 10px;
}
.panel-banner-item > .toolbarbutton-text {
width: 0; /* Fancy cropping solution for flexbox. */
}
/* FxAccount indicator bits. */
#appMenu-fxa-label,
#appMenu-fxa-icon {
padding: 4px;
-moz-appearance: none;
box-shadow: none;
border-radius: 0;
border: 0 none;
-moz-box-orient: horizontal;
-moz-image-region: rect(0, 16px, 16px, 0);
list-style-image: url(chrome://browser/skin/sync-horizontalbar.png);
}
#appMenu-fxa-label {
-moz-box-flex: 1;
padding-inline-start: 12px;
margin: 0;
}
#appMenu-fxa-icon {
margin: 0 10px;
}
#appMenu-fxa-icon > .toolbarbutton-text {
display: none;
}
#appMenu-fxa-icon[syncstatus="active"] {
list-style-image: url(chrome://browser/skin/syncProgress-horizontalbar.png);
}
#appMenu-fxa-avatar {
pointer-events: none;
list-style-image: url(chrome://browser/skin/fxa/default-avatar.svg);
}
@media (min-resolution: 1.1dppx) {
#appMenu-fxa-label,
#appMenu-fxa-icon {
list-style-image: url(chrome://browser/skin/sync-horizontalbar@2x.png);
-moz-image-region: rect(0, 32px, 32px, 0);
}
#appMenu-fxa-icon[syncstatus="active"] {
list-style-image: url(chrome://browser/skin/syncProgress-horizontalbar@2x.png);
}
}
#appMenu-fxa-container {
-moz-box-orient: horizontal;
}
/* Handle different UI states. */
#appMenu-fxa-container[fxastatus="signedin"] > #appMenu-fxa-status > #appMenu-fxa-label > .toolbarbutton-icon,
#appMenu-fxa-container:not([fxastatus="signedin"]) > toolbarseparator,
#appMenu-fxa-container:not([fxastatus="signedin"]) > #appMenu-fxa-icon,
#appMenu-fxa-container:not([fxastatus="signedin"]) > #appMenu-fxa-status > #appMenu-fxa-avatar {
display: none;
}
#appMenu-fxa-container[fxastatus="signedin"] > #appMenu-fxa-status > #appMenu-fxa-label {
/* 12px space before the avatar, then 16px for the avatar */
padding-inline-start: 28px;
margin-inline-start: -28px;
}
#appMenu-fxa-container[fxastatus="signedin"] > #appMenu-fxa-status {
margin-inline-end: 10px;
}
#appMenu-fxa-container[fxastatus="signedin"] > #appMenu-fxa-status > #appMenu-fxa-avatar {
margin-inline-start: 12px;
}
#appMenu-fxa-container[fxastatus="signedin"] > toolbarseparator {
-moz-appearance: none;
height: 24px;
margin: 0;
border: 0 none;
width: 1px;
/* Use background: rather than background-color: to override background-image
* styles on OS X */
background: var(--arrowpanel-dimmed);
}
/* Error states */
#appMenu-fxa-container[fxastatus="unverified"] > #appMenu-fxa-status > #appMenu-fxa-label,
#appMenu-fxa-container[fxastatus="login-failed"] > #appMenu-fxa-status > #appMenu-fxa-label {
list-style-image: url(chrome://browser/skin/warning.svg);
-moz-image-region: rect(0, 16px, 16px, 0);
}
#appMenu-fxa-container[fxastatus="login-failed"],
#appMenu-fxa-container[fxastatus="unverified"] {
background-color: var(--appmenu-yellow-warning-color);
border-top: 1px solid var(--appmenu-yellow-warning-border-color);
border-bottom: 1px solid var(--appmenu-yellow-warning-border-color);
}
#appMenu-fxa-container[fxastatus="login-failed"] > #appMenu-fxa-status:hover,
#appMenu-fxa-container[fxastatus="unverified"] > #appMenu-fxa-status:hover {
background-color: var(--appmenu-yellow-warning-hover-color);
}
#appMenu-fxa-container[fxastatus="login-failed"] > #appMenu-fxa-status:hover:active,
#appMenu-fxa-container[fxastatus="unverified"] > #appMenu-fxa-status:hover:active {
background-color: var(--appmenu-yellow-warning-active-color);
}
#PanelUI-help,
#PanelUI-quit {
min-width: 46px;
@ -757,7 +868,7 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
border-inline-start-style: none;
}
#PanelUI-footer-fxa[fxastatus="signedin"] > #PanelUI-fxa-status > #PanelUI-fxa-label {
#PanelUI-fxa-container[fxastatus="signedin"] > #PanelUI-fxa-status > #PanelUI-fxa-label {
padding-inline-start: 0px;
}
@ -919,8 +1030,8 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
-moz-image-region: rect(0, 16px, 16px, 0);
}
#PanelUI-footer-fxa[fxastatus="signedin"] > #PanelUI-fxa-status > #PanelUI-fxa-label > .toolbarbutton-icon,
#PanelUI-footer-fxa:not([fxastatus="signedin"]) > #PanelUI-fxa-status > #PanelUI-fxa-avatar {
#PanelUI-fxa-container[fxastatus="signedin"] > #PanelUI-fxa-status > #PanelUI-fxa-label > .toolbarbutton-icon,
#PanelUI-fxa-container:not([fxastatus="signedin"]) > #PanelUI-fxa-status > #PanelUI-fxa-avatar {
display: none;
}
@ -938,7 +1049,7 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
margin-inline-end: 0;
}
#PanelUI-footer-fxa > #PanelUI-fxa-status > #PanelUI-fxa-avatar {
#PanelUI-fxa-container > #PanelUI-fxa-status > #PanelUI-fxa-avatar {
list-style-image: url(chrome://browser/skin/fxa/default-avatar.svg);
}
@ -989,19 +1100,19 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
outline: none;
}
#PanelUI-footer-fxa[fxastatus="login-failed"],
#PanelUI-footer-fxa[fxastatus="unverified"] {
#PanelUI-fxa-container[fxastatus="login-failed"],
#PanelUI-fxa-container[fxastatus="unverified"] {
background-color: hsl(42,94%,88%);
border-top: 1px solid hsl(42,94%,70%);
}
#PanelUI-footer-fxa[fxastatus="login-failed"] > #PanelUI-fxa-status:hover,
#PanelUI-footer-fxa[fxastatus="unverified"] > #PanelUI-fxa-status:hover {
#PanelUI-fxa-container[fxastatus="login-failed"] > #PanelUI-fxa-status:hover,
#PanelUI-fxa-container[fxastatus="unverified"] > #PanelUI-fxa-status:hover {
background-color: hsl(42,94%,85%);
}
#PanelUI-footer-fxa[fxastatus="login-failed"] > #PanelUI-fxa-status:hover:active,
#PanelUI-footer-fxa[fxastatus="unverified"] > #PanelUI-fxa-status:hover:active {
#PanelUI-fxa-container[fxastatus="login-failed"] > #PanelUI-fxa-status:hover:active,
#PanelUI-fxa-container[fxastatus="unverified"] > #PanelUI-fxa-status:hover:active {
background-color: hsl(42,94%,82%);
box-shadow: 0 1px 0 hsla(210,4%,10%,.05) inset;
}
@ -1321,6 +1432,10 @@ menuitem.panel-subview-footer@menuStateActive@,
list-style-image: url("chrome://mozapps/skin/places/defaultFavicon.svg");
}
#appMenu-fxa-avatar,
#appMenu-fxa-label > .toolbarbutton-icon,
#appMenu-fxa-icon > .toolbarbutton-icon,
#PanelUI-containersItems > .subviewbutton > .toolbarbutton-icon,
#PanelUI-remotetabs-tabslist > toolbarbutton[itemtype="tab"] > .toolbarbutton-icon,
#PanelUI-recentlyClosedWindows > toolbarbutton > .toolbarbutton-icon,
#PanelUI-recentlyClosedTabs > toolbarbutton > .toolbarbutton-icon,
@ -1561,11 +1676,6 @@ menuitem[checked="true"].subviewbutton > .menu-iconic-left {
visibility: hidden;
}
#PanelUI-containersItems > .subviewbutton > .toolbarbutton-icon {
width: 16px;
height: 16px;
}
.panel-mainview[panelid=customizationui-widget-panel],
#customizationui-widget-multiview > .panel-viewcontainer,
#customizationui-widget-multiview > .panel-viewcontainer > .panel-viewstack,

View File

@ -585,7 +585,7 @@ class Automation(object):
if os.path.exists(processLog):
os.unlink(processLog)
return status
return status, self.lastTestSeen
def elf_arm(self, filename):
data = open(filename, 'rb').read(20)

View File

@ -13,7 +13,9 @@ from __future__ import print_function
import os
import sys
from check_utils import get_all_toplevel_filenames
from mozversioncontrol import get_repository_from_env
scriptname = os.path.basename(__file__);
expected_encoding = 'ascii'
@ -45,10 +47,13 @@ def check_single_file(filename):
def check_files():
result = True
for filename in get_all_toplevel_filenames():
repo = get_repository_from_env()
root = repo.path
for filename in repo.get_files_in_working_directory():
if filename.endswith('.msg'):
if filename not in ignore_files:
if not check_single_file(filename):
if not check_single_file(os.path.join(root, filename)):
result = False
return result

View File

@ -25,9 +25,10 @@ from __future__ import print_function
import difflib
import os
import re
import subprocess
import sys
from check_utils import get_all_toplevel_filenames
from mozversioncontrol import get_repository_from_env
architecture_independent = set([ 'generic' ])
all_architecture_names = set([ 'x86', 'x64', 'arm', 'arm64', 'mips32', 'mips64' ])
@ -131,7 +132,7 @@ def get_macroassembler_definitions(filename):
code_section = False
lines = ''
signatures = []
with open(os.path.join('../..', filename)) as f:
with open(filename) as f:
for line in f:
if '//{{{ check_macroassembler_style' in line:
style_section = True
@ -171,7 +172,7 @@ def get_macroassembler_declaration(filename):
style_section = False
lines = ''
signatures = []
with open(os.path.join('../..', filename)) as f:
with open(filename) as f:
for line in f:
if '//{{{ check_macroassembler_style' in line:
style_section = True
@ -238,13 +239,17 @@ def check_style():
# We infer from each file the signature of each MacroAssembler function.
defs = dict() # type: dict(signature => ['x86', 'x64'])
repo = get_repository_from_env()
# Select the appropriate files.
for filename in get_all_toplevel_filenames():
for filename in repo.get_files_in_working_directory():
if not filename.startswith('js/src/jit/'):
continue
if 'MacroAssembler' not in filename:
continue
filename = os.path.join(repo.path, filename)
if filename.endswith('MacroAssembler.h'):
decls = append_signatures(decls, get_macroassembler_declaration(filename))
else:

View File

@ -40,10 +40,10 @@ from __future__ import print_function
import difflib
import os
import re
import subprocess
import sys
import traceback
from check_utils import get_all_toplevel_filenames
from mozversioncontrol import get_repository_from_env
# We don't bother checking files in these directories, because they're (a) auxiliary or (b)
# imported code that doesn't follow our coding style.
@ -249,8 +249,10 @@ def check_style():
non_js_inclnames = set() # type: set(inclname)
js_names = dict() # type: dict(filename, inclname)
repo = get_repository_from_env()
# Select the appropriate files.
for filename in get_all_toplevel_filenames():
for filename in repo.get_files_in_working_directory():
for non_js_dir in non_js_dirnames:
if filename.startswith(non_js_dir) and filename.endswith('.h'):
inclname = 'mozilla/' + filename.split('/')[-1]
@ -285,7 +287,7 @@ def check_style():
# This script is run in js/src/, so prepend '../../' to get to the root of the Mozilla
# source tree.
with open(os.path.join('../..', filename)) as f:
with open(os.path.join(repo.path, filename)) as f:
do_file(filename, inclname, file_kind, f, all_inclnames, included_h_inclnames)
edges[inclname] = included_h_inclnames

View File

@ -1,31 +0,0 @@
# vim: set ts=8 sts=4 et sw=4 tw=99:
# 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/.
import subprocess
def get_all_toplevel_filenames():
'''Get a list of all the files in the (Mercurial or Git) repository.'''
failed_cmds = []
try:
cmd = ['hg', 'manifest', '-q']
all_filenames = subprocess.check_output(cmd, universal_newlines=True,
stderr=subprocess.PIPE).split('\n')
return all_filenames
except:
failed_cmds.append(cmd)
try:
# Get the relative path to the top-level directory.
cmd = ['git', 'rev-parse', '--show-cdup']
top_level = subprocess.check_output(cmd, universal_newlines=True,
stderr=subprocess.PIPE).split('\n')[0]
cmd = ['git', 'ls-files', '--full-name', top_level]
all_filenames = subprocess.check_output(cmd, universal_newlines=True,
stderr=subprocess.PIPE).split('\n')
return all_filenames
except:
failed_cmds.append(cmd)
raise Exception('failed to run any of the repo manifest commands', failed_cmds)

View File

@ -80,7 +80,7 @@ body,
}
select {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background-color: var(--theme-toolbar-background);
background-image: var(--viewport-selection-arrow);
-moz-context-properties: fill;

View File

@ -17,6 +17,7 @@ support-files = head.js
[browser_scratchpad_recent_files.js]
# [browser_scratchpad_confirm_close.js]
# Disable test due to bug 807234 becoming basically permanent
[browser_scratchpad_sessions.js]
[browser_scratchpad_tab.js]
[browser_scratchpad_wrong_window_focus.js]
[browser_scratchpad_unsaved.js]

View File

@ -1,10 +1,15 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const {Utils} = Cu.import("resource://gre/modules/sessionstore/Utils.jsm", {});
const triggeringPrincipalBase64 = Utils.SERIALIZED_SYSTEMPRINCIPAL;
const ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
const testState = {
windows: [{
tabs: [
{ entries: [{ url: "about:blank", triggeringPrincipal_base64 }] },
{ entries: [{ url: "about:blank", triggeringPrincipalBase64 }] },
]
}],
scratchpads: [
@ -35,10 +40,10 @@ function test() {
ss.setBrowserState(JSON.stringify(testState));
}
function windowObserver(aSubject, aTopic, aData) {
if (aTopic == "domwindowopened") {
let win = aSubject.QueryInterface(Ci.nsIDOMWindow);
win.addEventListener("load", function() {
function windowObserver(subject, topic, data) {
if (topic == "domwindowopened") {
let win = subject.QueryInterface(Ci.nsIDOMWindow);
win.addEventListener("load", function () {
if (win.Scratchpad) {
win.Scratchpad.addObserver({
onReady() {
@ -56,11 +61,11 @@ function windowObserver(aSubject, aTopic, aData) {
}
function statesMatch(restored, states) {
return states.every(function(state) {
return restored.some(function(restoredState) {
return states.every(function (state) {
return restored.some(function (restoredState) {
return state.filename == restoredState.filename &&
state.text == restoredState.text &&
state.executionContext == restoredState.executionContext;
})
});
});
}

View File

@ -18,7 +18,7 @@ const promise = require("promise");
var gScratchpadWindow; // Reference to the Scratchpad chrome window object
flags.testing = true;
SimpleTest.registerCleanupFunction(() => {
registerCleanupFunction(() => {
flags.testing = false;
});

View File

@ -9,14 +9,14 @@ const CSSCompleter =
const source = [
".devtools-toolbar {",
" -moz-appearance: none; appearance: none;",
" -moz-appearance: none;",
" padding:4px 3px;border-bottom-width: 1px;",
" border-bottom-style: solid;",
"}",
"",
"#devtools-menu.devtools-menulist,",
".devtools-toolbarbutton#devtools-menu {",
" -moz-appearance: none; appearance: none;",
" -moz-appearance: none;",
" -moz-box-align: center;",
" min-width: 78px;",
" min-height: 22px;",

View File

@ -3,14 +3,14 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
.devtools-toolbar {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
padding:4px 3px;border-bottom-width: 1px;
border-bottom-style: solid;
}
#devtools-menu.devtools-menulist,
.devtools-toolbarbutton#devtools-menu {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
-moz-box-align: center;
min-width: 78px;
min-height: 22px;
@ -64,7 +64,7 @@
}
.devtools-toolbarbutton[type=menu-button] > .toolbarbutton-menubutton-button {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
}
.devtools-sidebar-tabs > tabs > tab:first-of-type {

View File

@ -19,6 +19,8 @@
"tests": [
[[0, 10], ["null", "", "", ""]],
[[4, 3], ["selector", "class", "de", ".de"]],
[[5, 8], ["property", "null", "-moz-a"]],
[[5, 21], ["value", "null", "no", "-moz-appearance"]],
[[6, 18], ["property", "null", "padding"]],
[[6, 24], ["value", "null", "3", "padding"]],
[[6, 29], ["property", "null", "bo"]],
@ -29,6 +31,7 @@
[[10, 17], ["selector", "class", "de", "#devtools-menu.de"]],
[[11, 5], ["selector", "class", "devt", ".devt"]],
[[11, 30], ["selector", "id", "devtoo", ".devtools-toolbarbutton#devtoo"]],
[[12, 10], ["property", "null", "-moz-app"]],
[[16, 27], ["value", "null", "hsl", "text-shadow"]],
[[19, 24], ["value", "null", "linear-gra", "background"]],
[[19, 55], ["value", "null", "hsl", "background"]],

View File

@ -214,7 +214,7 @@ body {
}
#timeline-rate select.devtools-button {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
text-align: center;
font-family: inherit;
color: var(--theme-body-color);

View File

@ -34,7 +34,7 @@
}
#developer-toolbar {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
padding: 0;
min-height: 32px;
background-color: var(--gcli-background-color);
@ -42,7 +42,7 @@
}
#developer-toolbar > toolbarbutton {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
border: none;
background-color: transparent;
margin: 0;
@ -123,7 +123,6 @@ html|*#gcli-output-frame {
border-width: 0;
background-color: transparent;
-moz-appearance: none;
appearance: none;
/* We always wanted this to be a percentage of the viewport size but width: x% does not
* work. vw is the obvious solution.
@ -146,7 +145,7 @@ html|*#gcli-output-frame {
}
.gclitoolbar-input-node {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
color: var(--gcli-input-color);
background-color: var(--gcli-input-background);
background-repeat: no-repeat;

View File

@ -70,7 +70,7 @@ html|button, html|select {
}
.devtools-autocomplete-listbox {
-moz-appearance: none !important; appearance: none !important;
-moz-appearance: none !important;
background-color: transparent;
border-width: 0px !important;
margin: 0;
@ -229,7 +229,7 @@ checkbox:-moz-focusring {
.devtools-menulist,
.devtools-toolbarbutton,
.devtools-button {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background: transparent;
border: 1px solid var(--toolbarbutton-border-color);
border-radius: 2px;
@ -383,7 +383,7 @@ checkbox:-moz-focusring {
.devtools-textinput,
.devtools-searchinput,
.devtools-filterinput {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
margin: 1px 3px;
border: 1px solid;
border-radius: 2px;

View File

@ -62,7 +62,7 @@
/* Firebug theme uses breakpoint icon istead of a checkbox */
.theme-firebug #sources-pane .dbg-breakpoint-checkbox .checkbox-check {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
border: none;
background: url(chrome://devtools/skin/images/firebug/breakpoint.svg) no-repeat 50% 50%;
}
@ -327,7 +327,7 @@
}
.dbg-expression-button {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
border: none;
background: none;
text-decoration: underline;

View File

@ -20,7 +20,7 @@
.devtools-eyedropper-panel {
pointer-events: none;
-moz-appearance: none; appearance: none;
-moz-appearance: none;
width: 156px;
height: 120px;
background-color: transparent;

View File

@ -7,7 +7,7 @@
well as any overflow: scroll elements within the page, while excluding
<select>. */
*|*:not(html|select) > scrollbar {
-moz-appearance: none !important; appearance: none !important;
-moz-appearance: none !important;
position: relative;
background-color: transparent;
background-image: none;
@ -37,14 +37,14 @@
*|*:not(html|select) > scrollbar thumb {
background-color: rgba(170, 170, 170, .2) !important; /* --toolbar-tab-hover */
-moz-appearance: none !important; appearance: none !important;
-moz-appearance: none !important;
border-width: 0px !important;
border-radius: 3px !important;
}
*|*:root[platform="mac"] > scrollbar slider,
*|*:root[platform="mac"] *|*:not(html|select) > scrollbar slider {
-moz-appearance: none !important; appearance: none !important;
-moz-appearance: none !important;
}
*|*:root[platform="win"] > scrollbar scrollbarbutton,

View File

@ -7,7 +7,7 @@
well as any overflow: scroll elements within the page, while excluding
<select>. */
*|*:not(html|select) > scrollbar {
-moz-appearance: none !important; appearance: none !important;
-moz-appearance: none !important;
position: relative;
background-color: transparent;
background-image: none;
@ -31,11 +31,11 @@
}
*|*:not(html|select) > scrollbar slider {
-moz-appearance: none !important; appearance: none !important;
-moz-appearance: none !important;
}
*|*:not(html|select) > scrollbar thumb {
-moz-appearance: none !important; appearance: none !important;
-moz-appearance: none !important;
background-color: rgba(0,0,0,0.2);
border-width: 0px !important;
border-radius: 3px !important;

View File

@ -460,7 +460,7 @@ body {
padding: 0;
padding-inline-start: 20px;
margin: 0;
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background-color: transparent;
}

View File

@ -16,7 +16,7 @@
}
.devtools-responsiveui-toolbar {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background: transparent;
/* text color is textColor from dark theme, since no theme is applied to
* the responsive toolbar.
@ -29,7 +29,7 @@
}
.devtools-responsiveui-textinput {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background: #333;
color: #fff;
border: 1px solid #111;
@ -46,7 +46,7 @@
.devtools-responsiveui-menulist,
.devtools-responsiveui-toolbarbutton {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
-moz-box-align: center;
min-width: 32px;
min-height: 22px;
@ -60,12 +60,12 @@
}
.devtools-responsiveui-menulist .menulist-editable-box {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background-color: transparent;
}
.devtools-responsiveui-menulist html|*.menulist-editable-input {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
color: inherit;
text-align: center;
}
@ -124,7 +124,7 @@
}
.devtools-responsiveui-menulist > .menulist-dropmarker {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
display: -moz-box;
background-color: transparent;
list-style-image: url("chrome://devtools/skin/images/dropmarker.svg");
@ -134,7 +134,7 @@
}
.devtools-responsiveui-toolbarbutton[type=menu-button] > .toolbarbutton-menubutton-button {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
color: inherit;
border-width: 0;
border-inline-end: 1px solid hsla(210,8%,5%,.45);
@ -152,7 +152,7 @@
.devtools-responsiveui-toolbarbutton[type=menu] > .toolbarbutton-menu-dropmarker,
.devtools-responsiveui-toolbarbutton[type=menu-button] > .toolbarbutton-menubutton-dropmarker {
-moz-appearance: none !important; appearance: none !important;
-moz-appearance: none !important;
list-style-image: url("chrome://devtools/skin/images/dropmarker.svg");
-moz-box-align: center;
padding: 0 3px;
@ -266,7 +266,7 @@
}
.devtools-responsiveui-hardware-buttons {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
padding: 20px;
border: 1px solid #FFFFFF;
@ -288,7 +288,7 @@
.devtools-responsiveui-sleep-button {
-moz-user-focus: ignore;
-moz-appearance: none; appearance: none;
-moz-appearance: none;
/* compensate browserStack top padding */
margin-top: -67px;
margin-right: 10px;
@ -316,7 +316,7 @@
.devtools-responsiveui-volume-up-button,
.devtools-responsiveui-volume-down-button {
-moz-user-focus: ignore;
-moz-appearance: none; appearance: none;
-moz-appearance: none;
border: 1px solid red;
min-width: 8px;
height: 40px;

View File

@ -28,7 +28,7 @@
}
.side-menu-widget-item-checkbox {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
opacity: 0;
transition: opacity .15s ease-out 0s;
}
@ -43,7 +43,7 @@
}
.side-menu-widget-item-checkbox .checkbox-check {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background-image: url(images/item-toggle.svg);
background-color: transparent;
width: 16px;

View File

@ -31,7 +31,7 @@
.devtools-horizontal-splitter,
.devtools-side-splitter {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background-image: none;
border: 0;
border-style: solid;

View File

@ -90,13 +90,13 @@
/* In-tools sidebar */
.devtools-sidebar-tabs {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
margin: 0;
height: 100%;
}
.devtools-sidebar-tabs > tabpanels {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background: transparent;
padding: 0;
border: 0;
@ -115,7 +115,7 @@
}
.devtools-sidebar-alltabs {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
height: 24px;
line-height: 24px;
padding: 0 4px;
@ -135,7 +135,7 @@
}
.devtools-sidebar-tabs tabs > tab {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
/* We want to match the height of a toolbar with a toolbarbutton
* First, we need to replicated the padding of toolbar (4px),
* then we need to take the border of the buttons into account (1px).

View File

@ -42,7 +42,7 @@
/* Toolbox tabbar */
.devtools-tabbar {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
min-height: 24px;
border: 0px solid;
border-bottom-width: 1px;

View File

@ -109,7 +109,7 @@
}
.tooltip-xul-wrapper {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background: transparent;
overflow: visible;
border-style: none;

View File

@ -125,7 +125,7 @@ text {
.web-audio-inspector .error {
background-image: url(images/alerticon-warning.png);
background-size: 13px 12px;
-moz-appearance: none; appearance: none;
-moz-appearance: none;
opacity: 0;
transition: opacity .5s ease-out 0s;
}

View File

@ -424,7 +424,7 @@ a {
padding: 0;
padding-inline-start: 20px;
margin: 0;
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background-color: transparent;
}

View File

@ -123,7 +123,7 @@
.scrollbutton-up,
.scrollbutton-down {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
background: transparent;
box-shadow: none;
border: none;
@ -134,7 +134,7 @@
.scrollbutton-up > .toolbarbutton-icon,
.scrollbutton-down > .toolbarbutton-icon {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
width: 7px;
height: 16px;
background-size: 14px 16px;
@ -197,7 +197,7 @@
.breadcrumbs-widget-item {
background-color: transparent;
-moz-appearance: none; appearance: none;
-moz-appearance: none;
min-height: 24px;
min-width: 65px;
margin: 0;

View File

@ -1746,20 +1746,6 @@ exports.CSS_PROPERTIES = {
"unset"
]
},
"-webkit-appearance": {
"isInherited": false,
"subproperties": [
"appearance"
],
"supports": [],
"values": [
"auto",
"inherit",
"initial",
"none",
"unset"
]
},
"-webkit-backface-visibility": {
"isInherited": false,
"subproperties": [
@ -2872,7 +2858,6 @@ exports.CSS_PROPERTIES = {
"animation-play-state",
"animation-timing-function",
"-moz-appearance",
"appearance",
"backface-visibility",
"background-attachment",
"background-blend-mode",
@ -3904,20 +3889,6 @@ exports.CSS_PROPERTIES = {
"unset"
]
},
"appearance": {
"isInherited": false,
"subproperties": [
"appearance"
],
"supports": [],
"values": [
"auto",
"inherit",
"initial",
"none",
"unset"
]
},
"backface-visibility": {
"isInherited": false,
"subproperties": [
@ -9821,14 +9792,6 @@ exports.PREFERENCES = [
"all",
"layout.css.all-shorthand.enabled"
],
[
"-moz-appearance",
"layout.css.moz-appearance.enabled"
],
[
"appearance",
"layout.css.appearance.enabled"
],
[
"background-blend-mode",
"layout.css.background-blend-mode.enabled"
@ -10153,10 +10116,6 @@ exports.PREFERENCES = [
"-webkit-animation-timing-function",
"layout.css.prefixes.webkit"
],
[
"-webkit-appearance",
"layout.css.appearance.enabled"
],
[
"-webkit-filter",
"layout.css.prefixes.webkit"

View File

@ -9,6 +9,11 @@
"use strict";
const gMozillaSpecificProperties = {
"-moz-appearance": {
// https://drafts.csswg.org/css-align/#propdef-align-content
from: "button",
to: "none"
},
"-moz-border-bottom-colors": {
from: "rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0)",
to: "rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0)"

View File

@ -27,7 +27,7 @@
}
textarea, input {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
}
</style>
<script>

View File

@ -14,7 +14,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=656379
display: none;
}
input[type=button] {
-moz-appearance: none; appearance: none;
-moz-appearance: none;
padding: 0;
border: none;
color: black;

View File

@ -14,7 +14,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=864040
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=864040">Mozilla Bug 864040</a>
<div id="display">
<textarea id="ta" rows="5" cols="20" style="-moz-appearance:none; appearance: none"></textarea>
<textarea id="ta" rows="5" cols="20" style="-moz-appearance:none"></textarea>
<div id="ce" contentEditable="true" style="height: 5em;"></div>
</div>
<div id="content" style="display: none">

View File

@ -9,7 +9,7 @@
</head>
<body onload="document.getElementsByTagName('input')[0].focus();">
<input onfocus="document.documentElement.removeAttribute('class');"
style="-moz-appearance: none; appearance: none;">
style="-moz-appearance: none;">
<!-- div to cover spin box area for type=number to type=text comparison -->
<div style="display:block; position:absolute; background-color:black; width:200px; height:100px; top:0px; left:100px;">
</body>

View File

@ -18,7 +18,7 @@ function focusHandler() {
</head>
<body>
<input type="number" autofocus onfocus="focusHandler();"
style="-moz-appearance: none; appearance: none;">
style="-moz-appearance: none;">
<!-- div to cover spin box area for type=number to type=text comparison -->
<div style="display:block; position:absolute; background-color:black; width:200px; height:100px; top:0px; left:100px;">
</body>

View File

@ -15,7 +15,7 @@
</head>
<body onload="document.getElementById('t').focus();">
<input type="time" id="t" onfocus="focusHandler();"
style="-moz-appearance: none; appearance: none;">
style="-moz-appearance: none;">
</body>
</html>

View File

@ -15,7 +15,7 @@
</head>
<body>
<input type="time" autofocus onfocus="focusHandler();"
style="-moz-appearance: none; appearance: none;">
style="-moz-appearance: none;">
</body>
</html>

View File

@ -112,8 +112,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=829606
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=829606">Mozilla Bug 829606</a>
<p id="display"></p>
<div id="content">
<textarea rows='1' cols='5' style='-moz-appearance:none; appearance: none;'>this is a \n long text</textarea>
<input size='5' value="this is a very long text" style='-moz-appearance:none; appearance: none;'>
<textarea rows='1' cols='5' style='-moz-appearance:none;'>this is a \n long text</textarea>
<input size='5' value="this is a very long text" style='-moz-appearance:none;'>
</div>
<pre id="test">
</pre>

View File

@ -7,6 +7,8 @@
#include "VideoFrameContainer.h"
#include "mozilla/dom/HTMLMediaElement.h"
#include "mozilla/Telemetry.h"
#include "nsIFrame.h"
#include "nsDisplayList.h"
#include "nsSVGEffects.h"
@ -19,6 +21,27 @@ static LazyLogModule gVideoFrameContainerLog("VideoFrameContainer");
#define NS_DispatchToMainThread(...) CompileError_UseAbstractMainThreadInstead
namespace {
template<Telemetry::HistogramID ID>
class AutoTimer
{
// Set a threshold to reduce performance overhead
// for we're measuring hot spots.
static const uint32_t sThresholdMS = 1000;
public:
~AutoTimer()
{
auto end = TimeStamp::Now();
auto diff = uint32_t((end - mStart).ToMilliseconds());
if (diff > sThresholdMS) {
Telemetry::Accumulate(ID, diff);
}
}
private:
const TimeStamp mStart = TimeStamp::Now();
};
}
VideoFrameContainer::VideoFrameContainer(dom::HTMLMediaElement* aElement,
already_AddRefed<ImageContainer> aContainer)
: mElement(aElement),
@ -104,6 +127,7 @@ void VideoFrameContainer::SetCurrentFrames(const VideoSegment& aSegment)
}
MutexAutoLock lock(mMutex);
AutoTimer<Telemetry::VFC_SETVIDEOSEGMENT_LOCK_HOLD_MS> lockHold;
// Collect any new frames produced in this iteration.
AutoTArray<ImageContainer::NonOwningImage,4> newImages;
@ -192,6 +216,7 @@ void VideoFrameContainer::SetCurrentFrame(const gfx::IntSize& aIntrinsicSize,
{
if (aImage) {
MutexAutoLock lock(mMutex);
AutoTimer<Telemetry::VFC_SETCURRENTFRAME_LOCK_HOLD_MS> lockHold;
AutoTArray<ImageContainer::NonOwningImage,1> imageList;
imageList.AppendElement(
ImageContainer::NonOwningImage(aImage, aTargetTime, ++mFrameID));
@ -205,6 +230,7 @@ void VideoFrameContainer::SetCurrentFrames(const gfx::IntSize& aIntrinsicSize,
const nsTArray<ImageContainer::NonOwningImage>& aImages)
{
MutexAutoLock lock(mMutex);
AutoTimer<Telemetry::VFC_SETIMAGES_LOCK_HOLD_MS> lockHold;
SetCurrentFramesLocked(aIntrinsicSize, aImages);
}
@ -273,6 +299,7 @@ void VideoFrameContainer::SetCurrentFramesLocked(const gfx::IntSize& aIntrinsicS
void VideoFrameContainer::ClearCurrentFrame()
{
MutexAutoLock lock(mMutex);
AutoTimer<Telemetry::VFC_CLEARCURRENTFRAME_LOCK_HOLD_MS> lockHold;
// See comment in SetCurrentFrame for the reasoning behind
// using a kungFuDeathGrip here.
@ -286,6 +313,7 @@ void VideoFrameContainer::ClearCurrentFrame()
void VideoFrameContainer::ClearFutureFrames()
{
MutexAutoLock lock(mMutex);
AutoTimer<Telemetry::VFC_CLEARFUTUREFRAMES_LOCK_HOLD_MS> lockHold;
// See comment in SetCurrentFrame for the reasoning behind
// using a kungFuDeathGrip here.
@ -330,8 +358,14 @@ void VideoFrameContainer::InvalidateWithFlags(uint32_t aFlags)
bool invalidateFrame = false;
{
Maybe<AutoTimer<Telemetry::VFC_INVALIDATE_LOCK_WAIT_MS>> lockWait;
lockWait.emplace();
MutexAutoLock lock(mMutex);
lockWait.reset();
AutoTimer<Telemetry::VFC_INVALIDATE_LOCK_HOLD_MS> lockHold;
// Get mImageContainerSizeChanged while holding the lock.
invalidateFrame = mImageSizeChanged;
mImageSizeChanged = false;

View File

@ -10,6 +10,7 @@
#include "mozilla/Unused.h"
#include "ChromiumCDMProxy.h"
#include "mozilla/dom/MediaKeyMessageEventBinding.h"
#include "mozilla/Telemetry.h"
#include "content_decryption_module.h"
#include "GMPLog.h"
#include "MediaPrefs.h"
@ -696,6 +697,10 @@ ChromiumCDMParent::EnsureSufficientShmems(size_t aVideoFrameSize)
}
mVideoShmemsActive++;
}
mMaxVideoShmemsActive =
std::max(mMaxVideoShmemsActive, mVideoShmemsActive);
return true;
}
@ -1051,6 +1056,13 @@ ChromiumCDMParent::ShutdownVideoDecoder()
}
mVideoDecoderInitialized = false;
GMP_LOG("ChromiumCDMParent::~ShutdownVideoDecoder(this=%p) "
"VIDEO_CHROMIUM_CDM_MAX_SHMEMS=%u",
this,
mMaxVideoShmemsActive);
Telemetry::Accumulate(Telemetry::HistogramID::VIDEO_CHROMIUM_CDM_MAX_SHMEMS,
mMaxVideoShmemsActive);
// The ChromiumCDMChild will purge its shmems, so if the decoder is
// reinitialized the shmems need to be re-allocated, and they may need
// to be a different size.

View File

@ -166,6 +166,8 @@ protected:
uint32_t mVideoShmemsActive = 0;
// Maximum number of shmems to use to return decoded video frames.
uint32_t mVideoShmemLimit;
// High water mark for mVideoShmemsActive, reported via telemetry.
uint32_t mMaxVideoShmemsActive = 0;
bool mIsShutdown = false;
bool mVideoDecoderInitialized = false;

View File

@ -102,7 +102,7 @@ void AudioInputCubeb::UpdateDeviceList()
StaticMutexAutoLock lock(sMutex);
// swap state
if (mDevices) {
cubeb_device_collection_destroy(mDevices);
cubeb_device_collection_destroy(cubebContext, mDevices);
}
mDevices = devices;
}

View File

@ -181,7 +181,7 @@ public:
{
if (mDevices) {
// This doesn't require anything more than support for free()
cubeb_device_collection_destroy(mDevices);
cubeb_device_collection_destroy(CubebUtils::GetCubebContext(), mDevices);
mDevices = nullptr;
}
delete mDeviceIndexes;

View File

@ -1,5 +1,5 @@
<html><style>
* { outline: none; -moz-appearance: none; appearance: none; min-width:10px; min-height:10px; }
* { outline: none; -moz-appearance: none; min-width:10px; min-height:10px; }
#elem:focus { outline: 2px solid red; }
#elem:-moz-focusring { outline: 1px solid blue; }
</style><div id='container'></html>

View File

@ -47,8 +47,8 @@
onpopupshown="this.firstChild.open = true"
onpopuphidden="if (event.target == this) SimpleTest.finish();">
<menu id="innermenu" label="Open"
style="margin: 0; padding: 0; border: 2px black solid; -moz-appearance: none; appearance: none;">
<menupopup style="margin: 0; padding: 0; border: 1px black solid; -moz-appearance: none; appearance: none;"
style="margin: 0; padding: 0; border: 2px black solid; -moz-appearance: none;">
<menupopup style="margin: 0; padding: 0; border: 1px black solid; -moz-appearance: none;"
onpopupshown="testElements('outermenu', doneTests)">
<menuitem label="Document"/>
<menuitem id="innermenuitem" style="margin: 2px; padding: 3px;" label="Page"/>

View File

@ -582,8 +582,8 @@ U2FSoftTokenManager::IsCompatibleVersion(const nsAString& aVersion)
// IsRegistered determines if the provided key handle is usable by this token.
nsresult
U2FSoftTokenManager::IsRegistered(nsTArray<uint8_t>& aKeyHandle,
nsTArray<uint8_t>& aAppParam,
U2FSoftTokenManager::IsRegistered(const nsTArray<uint8_t>& aKeyHandle,
const nsTArray<uint8_t>& aAppParam,
bool& aResult)
{
nsNSSShutDownPreventionLock locker;
@ -603,9 +603,9 @@ U2FSoftTokenManager::IsRegistered(nsTArray<uint8_t>& aKeyHandle,
// Decode the key handle
UniqueSECKEYPrivateKey privKey = PrivateKeyFromKeyHandle(slot, mWrappingKey,
aKeyHandle.Elements(),
const_cast<uint8_t*>(aKeyHandle.Elements()),
aKeyHandle.Length(),
aAppParam.Elements(),
const_cast<uint8_t*>(aAppParam.Elements()),
aAppParam.Length(),
locker);
aResult = privKey.get() != nullptr;
@ -632,8 +632,8 @@ U2FSoftTokenManager::IsRegistered(nsTArray<uint8_t>& aKeyHandle,
// * attestation signature
//
nsresult
U2FSoftTokenManager::Register(nsTArray<uint8_t>& aApplication,
nsTArray<uint8_t>& aChallenge,
U2FSoftTokenManager::Register(const nsTArray<uint8_t>& aApplication,
const nsTArray<uint8_t>& aChallenge,
/* out */ nsTArray<uint8_t>& aRegistration,
/* out */ nsTArray<uint8_t>& aSignature)
{
@ -676,7 +676,7 @@ U2FSoftTokenManager::Register(nsTArray<uint8_t>& aApplication,
// The key handle will be the result of keywrap(privKey, key=mWrappingKey)
UniqueSECItem keyHandleItem = KeyHandleFromPrivateKey(slot, mWrappingKey,
aApplication.Elements(),
const_cast<uint8_t*>(aApplication.Elements()),
aApplication.Length(),
privKey, locker);
if (NS_WARN_IF(!keyHandleItem.get())) {
@ -744,9 +744,9 @@ U2FSoftTokenManager::Register(nsTArray<uint8_t>& aApplication,
// * Signature
//
nsresult
U2FSoftTokenManager::Sign(nsTArray<uint8_t>& aApplication,
nsTArray<uint8_t>& aChallenge,
nsTArray<uint8_t>& aKeyHandle,
U2FSoftTokenManager::Sign(const nsTArray<uint8_t>& aApplication,
const nsTArray<uint8_t>& aChallenge,
const nsTArray<uint8_t>& aKeyHandle,
nsTArray<uint8_t>& aSignature)
{
nsNSSShutDownPreventionLock locker;
@ -777,9 +777,9 @@ U2FSoftTokenManager::Sign(nsTArray<uint8_t>& aApplication,
// Decode the key handle
UniqueSECKEYPrivateKey privKey = PrivateKeyFromKeyHandle(slot, mWrappingKey,
aKeyHandle.Elements(),
const_cast<uint8_t*>(aKeyHandle.Elements()),
aKeyHandle.Length(),
aApplication.Elements(),
const_cast<uint8_t*>(aApplication.Elements()),
aApplication.Length(),
locker);
if (NS_WARN_IF(!privKey.get())) {

View File

@ -24,16 +24,16 @@ class U2FSoftTokenManager final : public U2FTokenTransport,
{
public:
explicit U2FSoftTokenManager(uint32_t aCounter);
virtual nsresult Register(nsTArray<uint8_t>& aApplication,
nsTArray<uint8_t>& aChallenge,
virtual nsresult Register(const nsTArray<uint8_t>& aApplication,
const nsTArray<uint8_t>& aChallenge,
/* out */ nsTArray<uint8_t>& aRegistration,
/* out */ nsTArray<uint8_t>& aSignature) override;
virtual nsresult Sign(nsTArray<uint8_t>& aApplication,
nsTArray<uint8_t>& aChallenge,
nsTArray<uint8_t>& aKeyHandle,
virtual nsresult Sign(const nsTArray<uint8_t>& aApplication,
const nsTArray<uint8_t>& aChallenge,
const nsTArray<uint8_t>& aKeyHandle,
/* out */ nsTArray<uint8_t>& aSignature) override;
nsresult IsRegistered(nsTArray<uint8_t>& aKeyHandle,
nsTArray<uint8_t>& aAppParam,
nsresult IsRegistered(const nsTArray<uint8_t>& aKeyHandle,
const nsTArray<uint8_t>& aAppParam,
bool& aResult);
// For nsNSSShutDownObject

View File

@ -168,7 +168,7 @@ U2FTokenManager::Cancel(const nsresult& aError)
void
U2FTokenManager::Register(WebAuthnTransactionParent* aTransactionParent,
WebAuthnTransactionInfo& aTransactionInfo)
const WebAuthnTransactionInfo& aTransactionInfo)
{
MOZ_LOG(gU2FTokenManagerLog, LogLevel::Debug, ("U2FAuthRegister"));
MOZ_ASSERT(U2FPrefManager::Get());
@ -229,7 +229,7 @@ U2FTokenManager::Register(WebAuthnTransactionParent* aTransactionParent,
void
U2FTokenManager::Sign(WebAuthnTransactionParent* aTransactionParent,
WebAuthnTransactionInfo& aTransactionInfo)
const WebAuthnTransactionInfo& aTransactionInfo)
{
MOZ_LOG(gU2FTokenManagerLog, LogLevel::Debug, ("U2FAuthSign"));
MOZ_ASSERT(U2FPrefManager::Get());

View File

@ -45,9 +45,9 @@ public:
NS_INLINE_DECL_REFCOUNTING(U2FTokenManager)
static U2FTokenManager* Get();
void Register(WebAuthnTransactionParent* aTransactionParent,
WebAuthnTransactionInfo& aTransactionInfo);
const WebAuthnTransactionInfo& aTransactionInfo);
void Sign(WebAuthnTransactionParent* aTransactionParent,
WebAuthnTransactionInfo& aTransactionInfo);
const WebAuthnTransactionInfo& aTransactionInfo);
void MaybeClearTransaction(WebAuthnTransactionParent* aParent);
static void Initialize();
private:

View File

@ -21,13 +21,13 @@ class U2FTokenTransport
public:
NS_INLINE_DECL_REFCOUNTING(U2FTokenTransport);
U2FTokenTransport() {}
virtual nsresult Register(nsTArray<uint8_t>& aApplication,
nsTArray<uint8_t>& aChallenge,
virtual nsresult Register(const nsTArray<uint8_t>& aApplication,
const nsTArray<uint8_t>& aChallenge,
/* out */ nsTArray<uint8_t>& aRegistration,
/* out */ nsTArray<uint8_t>& aSignature) = 0;
virtual nsresult Sign(nsTArray<uint8_t>& aApplication,
nsTArray<uint8_t>& aChallenge,
nsTArray<uint8_t>& aKeyHandle,
virtual nsresult Sign(const nsTArray<uint8_t>& aApplication,
const nsTArray<uint8_t>& aChallenge,
const nsTArray<uint8_t>& aKeyHandle,
/* out */ nsTArray<uint8_t>& aSignature) = 0;
protected:
virtual ~U2FTokenTransport() = default;

View File

@ -14,8 +14,7 @@ mozilla::ipc::IPCResult
WebAuthnTransactionParent::RecvRequestRegister(const WebAuthnTransactionInfo& aTransactionInfo)
{
U2FTokenManager* mgr = U2FTokenManager::Get();
// Cast away const here since NSS wants to be able to use non-const functions
mgr->Register(this, const_cast<WebAuthnTransactionInfo&>(aTransactionInfo));
mgr->Register(this, aTransactionInfo);
return IPC_OK();
}
@ -23,8 +22,7 @@ mozilla::ipc::IPCResult
WebAuthnTransactionParent::RecvRequestSign(const WebAuthnTransactionInfo& aTransactionInfo)
{
U2FTokenManager* mgr = U2FTokenManager::Get();
// Cast away const here since NSS wants to be able to use non-const functions
mgr->Sign(this, const_cast<WebAuthnTransactionInfo&>(aTransactionInfo));
mgr->Sign(this, aTransactionInfo);
return IPC_OK();
}

View File

@ -63,7 +63,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1053048
</div>
<textarea id="textarea"
style="height: 100px; width: 300px; -moz-appearance: none; appearance: none"
style="height: 100px; width: 300px; -moz-appearance: none"
spellcheck="false"
onkeydown="this.style.display='block'; this.style.height='200px';">foo</textarea>

View File

@ -24,7 +24,7 @@
textbox[multiline="true"], html|textarea {
border: none !important;
-moz-appearance: none; appearance: none !important;
-moz-appearance: none !important;
background-color: white !important;
border-top-right-radius: 0;
border-bottom-left-radius: 0;

View File

@ -14,9 +14,6 @@
// A checkbox element.
#define NS_THEME_CHECKBOX 3
// appearance:auto (only used in the style system, not in layout)
#define NS_THEME_AUTO 4
// A rectangular button that contains complex content
// like images (e.g. HTML <button> elements)
#define NS_THEME_BUTTON_BEVEL 7

View File

@ -86,10 +86,10 @@ load 580100-1.html
load 580212-1.html
load 580233-1.html
load 580719-1.html
pref(layout.css.moz-appearance.enabled,true) load 593526.html
pref(layout.css.moz-appearance.enabled,true) load 593526.xul
load 593526.html
load 593526.xul
load 594654-1.xhtml
pref(layout.css.moz-appearance.enabled,true) load 595042-1.html
load 595042-1.html
load 595727-1.html
load 624198.xhtml
load 633322-1.html

View File

@ -26,6 +26,7 @@ function checkExternalFunction(entry)
"ceil",
/memchr/,
"strlen",
/Servo_DeclarationBlock_GetCssText/,
// Assume that atomic accesses are threadsafe.
/^__atomic_fetch_/,
/^__atomic_load_/,

View File

@ -299,11 +299,11 @@ GeckoRestyleManager::AttributeChanged(Element* aElement,
if (primaryFrame) {
// See if we have appearance information for a theme.
const nsStyleDisplay* disp = primaryFrame->StyleDisplay();
if (disp->UsedAppearance()) {
if (disp->mAppearance) {
nsITheme* theme = PresContext()->GetTheme();
if (theme && theme->ThemeSupportsWidget(PresContext(), primaryFrame, disp->UsedAppearance())) {
if (theme && theme->ThemeSupportsWidget(PresContext(), primaryFrame, disp->mAppearance)) {
bool repaint = false;
theme->WidgetStateChanged(primaryFrame, disp->UsedAppearance(), aAttribute,
theme->WidgetStateChanged(primaryFrame, disp->mAppearance, aAttribute,
&repaint, aOldValue);
if (repaint)
hint |= nsChangeHint_RepaintFrame;

View File

@ -360,7 +360,7 @@ RestyleManager::ContentStateChangedInternal(Element* aElement,
NS_EVENT_STATE_LOADING)) {
*aOutChangeHint = nsChangeHint_ReconstructFrame;
} else {
uint8_t app = primaryFrame->StyleDisplay()->UsedAppearance();
uint8_t app = primaryFrame->StyleDisplay()->mAppearance;
if (app) {
nsITheme* theme = PresContext()->GetTheme();
if (theme &&

View File

@ -431,7 +431,7 @@ load 812665.html
load 813372-1.html
load 817219.html
load 818454.html
pref(layout.css.moz-appearance.enabled,true) load 822865.html
load 822865.html
load 824300.html
load 824862.html
load 826163.html

View File

@ -3773,7 +3773,7 @@ nsCSSFrameConstructor::FindInputData(Element* aElement,
// not (respectively) NS_THEME_RADIO and NS_THEME_CHECKBOX.)
if ((controlType == NS_FORM_INPUT_CHECKBOX ||
controlType == NS_FORM_INPUT_RADIO) &&
aStyleContext->StyleDisplay()->UsedAppearance() == NS_THEME_NONE) {
aStyleContext->StyleDisplay()->mAppearance == NS_THEME_NONE) {
return nullptr;
}
#endif

View File

@ -5143,7 +5143,7 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
LayoutDeviceIntSize devSize;
bool canOverride = true;
nsPresContext* pc = aFrame->PresContext();
pc->GetTheme()->GetMinimumWidgetSize(pc, aFrame, disp->UsedAppearance(),
pc->GetTheme()->GetMinimumWidgetSize(pc, aFrame, disp->mAppearance,
&devSize, &canOverride);
nscoord themeSize =
pc->DevPixelsToAppUnits(aAxis == eAxisVertical ? devSize.height
@ -7070,10 +7070,10 @@ nsLayoutUtils::GetFrameTransparency(nsIFrame* aBackgroundFrame,
if (HasNonZeroCorner(aCSSRootFrame->StyleBorder()->mBorderRadius))
return eTransparencyTransparent;
if (aCSSRootFrame->StyleDisplay()->UsedAppearance() == NS_THEME_WIN_GLASS)
if (aCSSRootFrame->StyleDisplay()->mAppearance == NS_THEME_WIN_GLASS)
return eTransparencyGlass;
if (aCSSRootFrame->StyleDisplay()->UsedAppearance() == NS_THEME_WIN_BORDERLESS_GLASS)
if (aCSSRootFrame->StyleDisplay()->mAppearance == NS_THEME_WIN_BORDERLESS_GLASS)
return eTransparencyBorderlessGlass;
nsITheme::Transparency transparency;

View File

@ -3,7 +3,7 @@
</head>
<body>
x<br>
<textarea id="t" rows="4" spellcheck="false" style="-moz-appearance: none; appearance: none">
<textarea id="t" rows="4" spellcheck="false" style="-moz-appearance: none">
A

View File

@ -3,7 +3,7 @@
</head>
<body>
x<br>
<textarea id="t" rows="4" spellcheck="false" style="-moz-appearance: none; appearance: none">
<textarea id="t" rows="4" spellcheck="false" style="-moz-appearance: none">
A

View File

@ -3,7 +3,7 @@
</head>
<body>
x<br>
<textarea id="t" rows="4" spellcheck="false" style="-moz-appearance: none; appearance: none">
<textarea id="t" rows="4" spellcheck="false" style="-moz-appearance: none">
A

View File

@ -20,7 +20,7 @@
</head>
<body>
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none; appearance: none">abc
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none">abc
def</textarea>
<script>

View File

@ -21,7 +21,7 @@
</head>
<body>
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none; appearance: none">abc
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none">abc
def</textarea>
<script>

View File

@ -21,7 +21,7 @@
</head>
<body>
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none; appearance: none">abc
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none">abc
def
ghi</textarea>

View File

@ -29,7 +29,7 @@
</head>
<body>
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none; appearance: none">abc
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none">abc
def
ghi</textarea>

View File

@ -20,7 +20,7 @@
</head>
<body>
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none; appearance: none">abcdef
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none">abcdef
</textarea>
<script>

View File

@ -24,7 +24,7 @@
</head>
<body>
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none; appearance: none">abcdef
<textarea onfocus="test1()" spellcheck="false" style="-moz-appearance:none">abcdef
</textarea>
<script>

View File

@ -1,6 +1,6 @@
<!DOCTYPE HTML><html>
<body>
<textarea id="t" rows="4" style="-moz-appearance: none; appearance: none">
<textarea id="t" rows="4" style="-moz-appearance: none">
</textarea>
<script>

View File

@ -2,7 +2,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body>
<textarea id="t" rows="4" style="-moz-appearance: none; appearance: none"></textarea>
<textarea id="t" rows="4" style="-moz-appearance: none"></textarea>
<script>
var area = document.getElementById('t');
area.focus();

View File

@ -2,7 +2,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body>
<textarea id="t" rows="4" style="-moz-appearance: none; appearance: none"></textarea>
<textarea id="t" rows="4" style="-moz-appearance: none"></textarea>
<script>
var area = document.getElementById('t');
area.focus();

View File

@ -4,7 +4,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body onload="doTest()">
<input type=text style="-moz-appearance: none; appearance: none">
<input type=text style="-moz-appearance: none">
<script>
function doTest() {
var d = document.querySelector("input");

View File

@ -4,7 +4,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body onload="doTest()">
<input type=text style="-moz-appearance: none; appearance: none">
<input type=text style="-moz-appearance: none">
<script>
function doTest() {
function enableCaret(aEnable) {

View File

@ -1,7 +1,7 @@
<!DOCTYPE HTML><html><head>
</head>
<body>
<textarea spellcheck="false" style="-moz-appearance: none; appearance: none">ab
<textarea spellcheck="false" style="-moz-appearance: none">ab
</textarea>
<script>
var t = document.querySelector("textarea");

View File

@ -2,7 +2,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body>
<textarea maxlength="3" spellcheck="false" style="-moz-appearance: none; appearance: none"></textarea>
<textarea maxlength="3" spellcheck="false" style="-moz-appearance: none"></textarea>
<script>
var t = document.querySelector("textarea");
t.focus();

View File

@ -2,7 +2,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body>
<textarea id="target" style="height: 100px; -moz-appearance: none; appearance: none" spellcheck="false"
<textarea id="target" style="height: 100px; -moz-appearance: none" spellcheck="false"
onkeydown="this.style.display='block';this.style.height='200px';">foo</textarea>
<script>
var t = document.querySelector("textarea");

View File

@ -2,7 +2,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body>
<textarea id="target" style="height: 100px; -moz-appearance: none; appearance: none" spellcheck="false"
<textarea id="target" style="height: 100px; -moz-appearance: none" spellcheck="false"
onkeypress="this.style.display='block';this.style.height='200px';">foo</textarea>
<script>
var t = document.querySelector("textarea");

View File

@ -2,7 +2,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body>
<textarea id="target" style="height: 100px; -moz-appearance: none; appearance: none" spellcheck="false"
<textarea id="target" style="height: 100px; -moz-appearance: none" spellcheck="false"
onkeyup="this.style.display='block';this.style.height='200px';">foo</textarea>
<script>
var t = document.querySelector("textarea");

View File

@ -9,7 +9,7 @@
</script>
</head>
<body onload="loaded()">
<textarea style="height: 200px; display: block; -moz-appearance: none; appearance: none" spellcheck="false"
<textarea style="height: 200px; display: block; -moz-appearance: none" spellcheck="false"
>foo
</textarea>
4 - 4

View File

@ -1,6 +1,6 @@
<!DOCTYPE HTML>
<html>
<body onload="document.querySelector('textarea').focus()">
<textarea id="t" rows="4" style="-moz-appearance: none; appearance: none"></textarea>
<textarea id="t" rows="4" style="-moz-appearance: none"></textarea>
</body>
</html>

View File

@ -4,7 +4,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body>
<textarea id="t" rows="4" style="-moz-appearance: none; appearance: none"></textarea>
<textarea id="t" rows="4" style="-moz-appearance: none"></textarea>
<script>
if (typeof(addLoadEvent) == 'undefined') {
_newCallStack = function(path) {

View File

@ -1,6 +1,6 @@
<!DOCTYPE HTML><html>
<body>
<textarea spellcheck="false" style="-moz-appearance: none; appearance: none">ab</textarea>
<textarea spellcheck="false" style="-moz-appearance: none">ab</textarea>
<script>
var t = document.querySelector("textarea");
t.focus();

View File

@ -2,7 +2,7 @@
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
</head>
<body>
<textarea spellcheck="false" style="-moz-appearance: none; appearance: none"></textarea>
<textarea spellcheck="false" style="-moz-appearance: none"></textarea>
<script>
var t = document.querySelector("textarea");
t.focus();

View File

@ -4,7 +4,7 @@
</head>
<body onload="start()">
<textarea onfocus="done()"
style="-moz-appearance: none; appearance: none;
style="-moz-appearance: none;
unicode-bidi: bidi-override;">س</textarea>
<script>
var textarea = document.querySelector("textarea");

Some files were not shown because too many files have changed in this diff Show More