mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
Merge m-c to inbound. a=merge
This commit is contained in:
commit
1734a80650
@ -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");
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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");
|
||||
});
|
||||
});
|
9
browser/base/content/test/plugins/empty_file.html
Normal file
9
browser/base/content/test/plugins/empty_file.html
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
<body>
|
||||
This page is intentionally left blank.
|
||||
</body>
|
||||
</html>
|
@ -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
|
||||
|
@ -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},
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;"
|
||||
|
@ -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]
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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)
|
@ -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;
|
||||
|
@ -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]
|
||||
|
@ -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;
|
||||
})
|
||||
});
|
||||
});
|
||||
}
|
@ -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;
|
||||
});
|
||||
|
||||
|
@ -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;",
|
||||
|
@ -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 {
|
||||
|
@ -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"]],
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -460,7 +460,7 @@ body {
|
||||
padding: 0;
|
||||
padding-inline-start: 20px;
|
||||
margin: 0;
|
||||
-moz-appearance: none; appearance: none;
|
||||
-moz-appearance: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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).
|
||||
|
@ -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;
|
||||
|
@ -109,7 +109,7 @@
|
||||
}
|
||||
|
||||
.tooltip-xul-wrapper {
|
||||
-moz-appearance: none; appearance: none;
|
||||
-moz-appearance: none;
|
||||
background: transparent;
|
||||
overflow: visible;
|
||||
border-style: none;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -424,7 +424,7 @@ a {
|
||||
padding: 0;
|
||||
padding-inline-start: 20px;
|
||||
margin: 0;
|
||||
-moz-appearance: none; appearance: none;
|
||||
-moz-appearance: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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"
|
||||
|
@ -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)"
|
||||
|
@ -27,7 +27,7 @@
|
||||
}
|
||||
|
||||
textarea, input {
|
||||
-moz-appearance: none; appearance: none;
|
||||
-moz-appearance: none;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
|
@ -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;
|
||||
|
@ -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">
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<input type="time" autofocus onfocus="focusHandler();"
|
||||
style="-moz-appearance: none; appearance: none;">
|
||||
style="-moz-appearance: none;">
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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>
|
||||
|
@ -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"/>
|
||||
|
@ -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())) {
|
||||
|
@ -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
|
||||
|
@ -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());
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -26,6 +26,7 @@ function checkExternalFunction(entry)
|
||||
"ceil",
|
||||
/memchr/,
|
||||
"strlen",
|
||||
/Servo_DeclarationBlock_GetCssText/,
|
||||
// Assume that atomic accesses are threadsafe.
|
||||
/^__atomic_fetch_/,
|
||||
/^__atomic_load_/,
|
||||
|
@ -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;
|
||||
|
@ -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 &&
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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");
|
||||
|
@ -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) {
|
||||
|
@ -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");
|
||||
|
@ -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();
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user