mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-28 07:13:20 +00:00
Bug 716107 part 6 - Add UI to approve DOM fullscreen entry. r=dao
This commit is contained in:
parent
94b5272d8e
commit
9e303fb896
@ -1147,9 +1147,14 @@ pref("browser.newtab.url", "about:newtab");
|
||||
// Toggles the content of 'about:newtab'. Shows the grid when enabled.
|
||||
pref("browser.newtabpage.enabled", true);
|
||||
|
||||
// Enable the DOM full-screen API.
|
||||
// Enable the DOM fullscreen API.
|
||||
pref("full-screen-api.enabled", true);
|
||||
|
||||
// True if the fullscreen API requires approval upon a domain entering fullscreen.
|
||||
// Domains that have already had fullscreen permission granted won't re-request
|
||||
// approval.
|
||||
pref("full-screen-api.approval-required", true);
|
||||
|
||||
// Startup Crash Tracking
|
||||
// number of startup crashes that can occur before starting into safe mode automatically
|
||||
// (this pref has no effect if more than 6 hours have passed since the last crash)
|
||||
|
@ -372,6 +372,16 @@ window[chromehidden~="toolbar"] toolbar:not(.toolbar-primary):not(.chromeclass-m
|
||||
|
||||
#full-screen-warning-message {
|
||||
pointer-events: auto;
|
||||
/* We must specify a max-width, otherwise word-wrap:break-word doesn't
|
||||
work in descendant <description> and <label> elements. Bug 630864. */
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
#full-screen-domain-text,
|
||||
#full-screen-remember-decision > .checkbox-label-box > .checkbox-label {
|
||||
word-wrap: break-word;
|
||||
/* We must specify a min-width, otherwise word-wrap:break-word doesn't work. Bug 630864. */
|
||||
min-width: 1px;
|
||||
}
|
||||
|
||||
#nav-bar[mode="text"] > #window-controls > toolbarbutton > .toolbarbutton-icon {
|
||||
|
@ -434,7 +434,7 @@ function findChildShell(aDocument, aDocShell, aSoughtURI) {
|
||||
|
||||
var gPopupBlockerObserver = {
|
||||
_reportButton: null,
|
||||
|
||||
|
||||
onReportButtonClick: function (aEvent)
|
||||
{
|
||||
if (aEvent.button != 0 || aEvent.target != this._reportButton)
|
||||
@ -564,7 +564,7 @@ var gPopupBlockerObserver = {
|
||||
if (pageReport) {
|
||||
for (var i = 0; i < pageReport.length; ++i) {
|
||||
// popupWindowURI will be null if the file picker popup is blocked.
|
||||
// xxxdz this should make the option say "Show file picker" and do it (Bug 590306)
|
||||
// xxxdz this should make the option say "Show file picker" and do it (Bug 590306)
|
||||
if (!pageReport[i].popupWindowURI)
|
||||
continue;
|
||||
var popupURIspec = pageReport[i].popupWindowURI.spec;
|
||||
@ -1674,16 +1674,12 @@ function delayedStartup(isLoadingBlank, mustLoadSidebar) {
|
||||
|
||||
// Called when we enter DOM full-screen mode. Note we can already be in browser
|
||||
// full-screen mode when we enter DOM full-screen mode.
|
||||
window.addEventListener("mozfullscreenchange", onMozFullScreenChange, true);
|
||||
|
||||
// When a restricted key is pressed in DOM full-screen mode, we should display
|
||||
// the "Press ESC to exit" warning message.
|
||||
window.addEventListener("MozShowFullScreenWarning", onShowFullScreenWarning, true);
|
||||
window.addEventListener("MozEnteredDomFullscreen", onMozEnteredDomFullscreen, true);
|
||||
|
||||
if (window.fullScreen)
|
||||
onFullScreen();
|
||||
if (document.mozFullScreen)
|
||||
onMozFullScreenChange();
|
||||
onMozEnteredDomFullscreen();
|
||||
|
||||
#ifdef MOZ_SERVICES_SYNC
|
||||
// initialize the sync UI
|
||||
@ -2929,12 +2925,8 @@ function onFullScreen(event) {
|
||||
FullScreen.toggle(event);
|
||||
}
|
||||
|
||||
function onMozFullScreenChange(event) {
|
||||
FullScreen.enterDomFullScreen(event);
|
||||
}
|
||||
|
||||
function onShowFullScreenWarning(event) {
|
||||
FullScreen.showWarning(false);
|
||||
function onMozEnteredDomFullscreen(event) {
|
||||
FullScreen.enterDomFullscreen(event);
|
||||
}
|
||||
|
||||
function getWebNavigation()
|
||||
@ -3148,7 +3140,7 @@ function FillInHTMLTooltip(tipElement)
|
||||
|
||||
[titleText, XLinkTitleText, SVGTitleText].forEach(function (t) {
|
||||
if (t && /\S/.test(t)) {
|
||||
// Make CRLF and CR render one line break each.
|
||||
// Make CRLF and CR render one line break each.
|
||||
t = t.replace(/\r\n?/g, '\n');
|
||||
|
||||
tipNode.setAttribute("label", t);
|
||||
@ -3483,7 +3475,7 @@ const BrowserSearch = {
|
||||
}
|
||||
win = window.openDialog(getBrowserURL(), "_blank",
|
||||
"chrome,all,dialog=no", "about:blank");
|
||||
Services.obs.addObserver(observer, "browser-delayed-startup-finished", false);
|
||||
Services.obs.addObserver(observer, "browser-delayed-startup-finished", false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -4019,33 +4011,29 @@ var FullScreen = {
|
||||
// middle of window lowering. See bug 729872.
|
||||
setTimeout(this.exitDomFullScreen.bind(this), 0);
|
||||
break;
|
||||
case "transitionend":
|
||||
if (event.propertyName == "opacity")
|
||||
this.cancelWarning();
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
enterDomFullScreen : function(event) {
|
||||
if (!document.mozFullScreen) {
|
||||
enterDomFullscreen : function(event) {
|
||||
if (!document.mozFullScreen)
|
||||
return;
|
||||
|
||||
// However, if we receive a "MozEnteredDomFullScreen" event for a document
|
||||
// which is not a subdocument of the currently selected tab, we know that
|
||||
// we've switched tabs since the request to enter full-screen was made,
|
||||
// so we should exit full-screen since the "full-screen document" isn't
|
||||
// acutally visible.
|
||||
if (event.target.defaultView.top != gBrowser.contentWindow) {
|
||||
document.mozCancelFullScreen();
|
||||
return;
|
||||
}
|
||||
|
||||
// We receive "mozfullscreenchange" events for each subdocument which
|
||||
// is an ancestor of the document containing the element which requested
|
||||
// full-screen. Only add listeners and show warning etc when the event we
|
||||
// receive is targeted at the chrome document, i.e. only once every time
|
||||
// we enter DOM full-screen mode.
|
||||
if (event.target != document) {
|
||||
// However, if we receive a "mozfullscreenchange" event for a document
|
||||
// which is not a subdocument of the currently selected tab, we know that
|
||||
// we've switched tabs since the request to enter full-screen was made,
|
||||
// so we should exit full-screen since the "full-screen document" isn't
|
||||
// acutally visible.
|
||||
if (event.target.defaultView.top != gBrowser.contentWindow) {
|
||||
document.mozCancelFullScreen();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
let focusManger = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager);
|
||||
if (focusManger.activeWindow != window) {
|
||||
let focusManager = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager);
|
||||
if (focusManager.activeWindow != window) {
|
||||
// The top-level window has lost focus since the request to enter
|
||||
// full-screen was made. Cancel full-screen.
|
||||
document.mozCancelFullScreen();
|
||||
@ -4059,7 +4047,7 @@ var FullScreen = {
|
||||
if (gFindBarInitialized)
|
||||
gFindBar.close();
|
||||
|
||||
this.showWarning(true);
|
||||
this.showWarning(event.target);
|
||||
|
||||
// Exit DOM full-screen mode upon open, close, or change tab.
|
||||
gBrowser.tabContainer.addEventListener("TabOpen", this.exitDomFullScreen);
|
||||
@ -4104,9 +4092,8 @@ var FullScreen = {
|
||||
gBrowser.tabContainer.removeEventListener("TabOpen", this.exitDomFullScreen);
|
||||
gBrowser.tabContainer.removeEventListener("TabClose", this.exitDomFullScreen);
|
||||
gBrowser.tabContainer.removeEventListener("TabSelect", this.exitDomFullScreen);
|
||||
if (!this.useLionFullScreen) {
|
||||
if (!this.useLionFullScreen)
|
||||
window.removeEventListener("deactivate", this);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -4240,81 +4227,98 @@ var FullScreen = {
|
||||
},
|
||||
|
||||
cancelWarning: function(event) {
|
||||
if (!this.warningBox) {
|
||||
if (!this.warningBox)
|
||||
return;
|
||||
}
|
||||
if (this.onWarningHidden) {
|
||||
this.warningBox.removeEventListener("transitionend", this.onWarningHidden, false);
|
||||
this.onWarningHidden = null;
|
||||
}
|
||||
this.fullscreenDocUri = null;
|
||||
this.warningBox.removeEventListener("transitionend", this);
|
||||
if (this.warningFadeOutTimeout) {
|
||||
clearTimeout(this.warningFadeOutTimeout);
|
||||
this.warningFadeOutTimeout = null;
|
||||
}
|
||||
if (this.revealBrowserTimeout) {
|
||||
clearTimeout(this.revealBrowserTimeout);
|
||||
this.revealBrowserTimeout = null;
|
||||
}
|
||||
this.warningBox.removeAttribute("fade-warning-out");
|
||||
this.warningBox.removeAttribute("stop-obscuring-browser");
|
||||
this.warningBox.removeAttribute("obscure-browser");
|
||||
|
||||
// Ensure focus switches away from the (now hidden) warning box. If the user
|
||||
// clicked buttons in the fullscreen key authorization UI, it would have been
|
||||
// focused, and any key events would be directed at the (now hidden) chrome
|
||||
// document instead of the target document.
|
||||
gBrowser.selectedBrowser.focus();
|
||||
|
||||
this.warningBox.setAttribute("hidden", true);
|
||||
this.warningBox.removeAttribute("fade-warning-out");
|
||||
this.warningBox.removeAttribute("obscure-browser");
|
||||
this.warningBox = null;
|
||||
},
|
||||
|
||||
setFullscreenAllowed: function(isApproved) {
|
||||
let remember = document.getElementById("full-screen-remember-decision").checked;
|
||||
if (remember)
|
||||
Services.perms.add(this.fullscreenDocUri,
|
||||
"fullscreen",
|
||||
isApproved ? Services.perms.ALLOW_ACTION : Services.perms.DENY_ACTION,
|
||||
Services.perms.EXPIRE_NEVER);
|
||||
if (this.warningBox)
|
||||
this.warningBox.setAttribute("fade-warning-out", "true");
|
||||
if (!isApproved)
|
||||
document.mozCancelFullScreen();
|
||||
},
|
||||
|
||||
warningBox: null,
|
||||
warningFadeOutTimeout: null,
|
||||
revealBrowserTimeout: null,
|
||||
onWarningHidden: null,
|
||||
fullscreenDocUri: null,
|
||||
|
||||
// Fade in a warning that document has entered full-screen, and then fade it
|
||||
// out after a few seconds.
|
||||
showWarning: function(obscureBackground) {
|
||||
if (!document.mozFullScreen || !gPrefService.getBoolPref("full-screen-api.warning.enabled")) {
|
||||
// Shows the fullscreen approval UI, or if the domain has already been approved
|
||||
// for fullscreen, shows a warning that the site has entered fullscreen for a short
|
||||
// duration.
|
||||
showWarning: function(targetDoc) {
|
||||
if (!document.mozFullScreen ||
|
||||
!gPrefService.getBoolPref("full-screen-api.approval-required"))
|
||||
return;
|
||||
}
|
||||
if (this.warningBox) {
|
||||
// Warning is already showing. Reset the timer which fades out the warning message,
|
||||
// and we'll restart the timer down below.
|
||||
if (this.warningFadeOutTimeout) {
|
||||
clearTimeout(this.warningFadeOutTimeout);
|
||||
this.warningFadeOutTimeout = null;
|
||||
}
|
||||
} else {
|
||||
|
||||
// Set the strings on the fullscreen approval UI.
|
||||
this.fullscreenDocUri = targetDoc.nodePrincipal.URI;
|
||||
let utils = {};
|
||||
Cu.import("resource://gre/modules/DownloadUtils.jsm", utils);
|
||||
let [displayHost, fullHost] = utils.DownloadUtils.getURIHost(this.fullscreenDocUri.spec);
|
||||
let bundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
|
||||
let domainText = bundle.formatStringFromName("fullscreen.entered", [displayHost], 1);
|
||||
document.getElementById("full-screen-domain-text").textContent = domainText;
|
||||
let rememberText = bundle.formatStringFromName("fullscreen.rememberDecision", [displayHost], 1);
|
||||
document.getElementById("full-screen-remember-decision").label = rememberText;
|
||||
|
||||
// Note: the warning box can be non-null if the warning box from the previous request
|
||||
// wasn't hidden before another request was made.
|
||||
if (!this.warningBox) {
|
||||
this.warningBox = document.getElementById("full-screen-warning-container");
|
||||
// Add a listener to clean up state after the warning is hidden.
|
||||
this.onWarningHidden =
|
||||
function(event) {
|
||||
if (event.propertyName != "opacity")
|
||||
return;
|
||||
this.cancelWarning();
|
||||
}.bind(this);
|
||||
this.warningBox.addEventListener("transitionend", this.onWarningHidden, false);
|
||||
this.warningBox.addEventListener("transitionend", this);
|
||||
this.warningBox.removeAttribute("hidden");
|
||||
}
|
||||
|
||||
if (obscureBackground) {
|
||||
// Partially obscure the <browser> element underneath the warning panel...
|
||||
// If fullscreen mode has not yet been approved for the fullscreen
|
||||
// document's domain, show the approval UI and don't auto fade out the
|
||||
// fullscreen warning box. Otherwise, we're just notifying of entry into
|
||||
// fullscreen mode.
|
||||
let isApproved =
|
||||
Services.perms.testPermission(this.fullscreenDocUri, "fullscreen") == Services.perms.ALLOW_ACTION;
|
||||
let authUI = document.getElementById("full-screen-approval-pane");
|
||||
document.getElementById("full-screen-remember-decision").checked = false;
|
||||
if (isApproved)
|
||||
authUI.setAttribute("hidden", "true");
|
||||
else {
|
||||
// Partially obscure the <browser> element underneath the approval UI.
|
||||
this.warningBox.setAttribute("obscure-browser", "true");
|
||||
// ...But set a timeout to stop obscuring the browser after a few moments.
|
||||
this.warningBox.removeAttribute("stop-obscuring-browser");
|
||||
this.revealBrowserTimeout =
|
||||
authUI.removeAttribute("hidden");
|
||||
}
|
||||
|
||||
// If we're not showing the fullscreen approval UI, we're just notifying the user
|
||||
// of the transition, so set a timeout to fade the warning out after a few moments.
|
||||
if (isApproved)
|
||||
this.warningFadeOutTimeout =
|
||||
setTimeout(
|
||||
function() {
|
||||
if (this.warningBox)
|
||||
this.warningBox.setAttribute("stop-obscuring-browser", "true");
|
||||
this.warningBox.setAttribute("fade-warning-out", "true");
|
||||
}.bind(this),
|
||||
1250);
|
||||
}
|
||||
|
||||
// Set a timeout to fade the warning out after a few moments.
|
||||
this.warningFadeOutTimeout =
|
||||
setTimeout(
|
||||
function() {
|
||||
if (this.warningBox)
|
||||
this.warningBox.setAttribute("fade-warning-out", "true");
|
||||
}.bind(this),
|
||||
3000);
|
||||
3000);
|
||||
},
|
||||
|
||||
mouseoverToggle: function(aShow, forceHide)
|
||||
@ -6146,7 +6150,7 @@ function UpdateCharsetDetector(target) {
|
||||
prefvalue = gPrefService.getComplexValue("intl.charset.detector", Ci.nsIPrefLocalizedString).data;
|
||||
}
|
||||
catch (ex) {}
|
||||
|
||||
|
||||
if (!prefvalue)
|
||||
prefvalue = "off";
|
||||
|
||||
@ -9127,12 +9131,12 @@ XPCOMUtils.defineLazyGetter(this, "HUDConsoleUI", function () {
|
||||
}
|
||||
});
|
||||
|
||||
// Prompt user to restart the browser in safe mode
|
||||
// Prompt user to restart the browser in safe mode
|
||||
function safeModeRestart()
|
||||
{
|
||||
// prompt the user to confirm
|
||||
// prompt the user to confirm
|
||||
let promptTitle = gNavigatorBundle.getString("safeModeRestartPromptTitle");
|
||||
let promptMessage =
|
||||
let promptMessage =
|
||||
gNavigatorBundle.getString("safeModeRestartPromptMessage");
|
||||
let restartText = gNavigatorBundle.getString("safeModeRestartButton");
|
||||
let buttonFlags = (Services.prompt.BUTTON_POS_0 *
|
||||
|
@ -409,7 +409,7 @@
|
||||
<label class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
|
||||
#endif
|
||||
</tooltip>
|
||||
|
||||
|
||||
<tooltip id="forward-button-tooltip">
|
||||
<label class="tooltip-label" value="&forwardButton.tooltip;"/>
|
||||
#ifdef XP_MACOSX
|
||||
@ -989,9 +989,22 @@
|
||||
|
||||
<hbox id="full-screen-warning-container" hidden="true" fadeout="true">
|
||||
<hbox style="width: 100%;" pack="center"> <!-- Inner hbox needed due to bug 579776. -->
|
||||
<hbox id="full-screen-warning-message">
|
||||
<description id="full-screen-warning-text" value="&domFullScreenWarning.label;"></description>
|
||||
</hbox>
|
||||
<vbox id="full-screen-warning-message" align="center">
|
||||
<description id="full-screen-domain-text"/>
|
||||
<description class="full-screen-description" value="&fullscreenExitHint.value;"/>
|
||||
<vbox id="full-screen-approval-pane" align="center">
|
||||
<description class="full-screen-description" value="&fullscreenApproval.value;"/>
|
||||
<hbox>
|
||||
<button label="&fullscreenAllowButton.label;"
|
||||
oncommand="FullScreen.setFullscreenAllowed(true);"
|
||||
class="full-screen-approval-button"/>
|
||||
<button label="&fullscreenExitButton.label;"
|
||||
oncommand="FullScreen.setFullscreenAllowed(false);"
|
||||
class="full-screen-approval-button"/>
|
||||
</hbox>
|
||||
<checkbox id="full-screen-remember-decision"/>
|
||||
</vbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
</hbox>
|
||||
|
||||
|
@ -90,7 +90,10 @@ can reach it easily. -->
|
||||
<!ENTITY fullScreenAutohide.accesskey "H">
|
||||
<!ENTITY fullScreenExit.label "Exit Full Screen Mode">
|
||||
<!ENTITY fullScreenExit.accesskey "F">
|
||||
<!ENTITY domFullScreenWarning.label "Press ESC to leave full-screen mode">
|
||||
<!ENTITY fullscreenAllowButton.label "Allow">
|
||||
<!ENTITY fullscreenExitButton.label "Deny">
|
||||
<!ENTITY fullscreenApproval.value "Allow fullscreen?">
|
||||
<!ENTITY fullscreenExitHint.value "Press ESC at any time to exit fullscreen.">
|
||||
|
||||
<!ENTITY closeWindow.label "Close Window">
|
||||
<!ENTITY closeWindow.accesskey "d">
|
||||
|
@ -352,3 +352,8 @@ webapps.requestInstall = Do you want to install "%1$S" from this site (%2$S)?
|
||||
# LOCALIZATION NOTE (telemetryOptOutPrompt): %1$S and %3$S will be replaced by
|
||||
# brandFullName, and %2$S by the value of the toolkit.telemetry.server_owner preference.
|
||||
telemetryOptOutPrompt = %1$S sends information about performance, hardware, usage and customizations back to %2$S to help improve %3$S.
|
||||
|
||||
# LOCALIZATION NOTE (fullscreen.entered): displayed when we enter HTML5 fullscreen mode, %S is the domain name of the focused website (e.g. mozilla.com).
|
||||
fullscreen.entered=%S is now fullscreen.
|
||||
# LOCALIZATION NOTE (fullscreen.rememberDecision): displayed when we enter HTML5 fullscreen mode, %S is the domain name of the focused website (e.g. mozilla.com).
|
||||
fullscreen.rememberDecision=Remember decision for %S
|
||||
|
@ -207,7 +207,7 @@ menuitem.bookmark-item {
|
||||
list-style-image: url("moz-icon://stock/gtk-directory?size=menu");
|
||||
}
|
||||
|
||||
.bookmark-item[container][livemark] {
|
||||
.bookmark-item[container][livemark] {
|
||||
list-style-image: url("chrome://browser/skin/feeds/feedIcon16.png");
|
||||
}
|
||||
|
||||
@ -1307,7 +1307,7 @@ toolbar[iconsize="small"] #feed-button {
|
||||
}
|
||||
|
||||
#treecolAutoCompleteImage {
|
||||
max-width : 36px;
|
||||
max-width : 36px;
|
||||
}
|
||||
|
||||
.ac-result-type-bookmark,
|
||||
@ -1359,7 +1359,7 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action-
|
||||
color: inherit !important;
|
||||
}
|
||||
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggesthint, treecolAutoCompleteComment),
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggesthint, treecolAutoCompleteComment),
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggestfirst, treecolAutoCompleteComment) {
|
||||
color: GrayText;
|
||||
font-size: smaller;
|
||||
@ -2152,7 +2152,6 @@ html|*#highlighter-nodeinfobar-pseudo-classes {
|
||||
#full-screen-warning-message {
|
||||
background-color: hsl(0,0%,15%);
|
||||
color: white;
|
||||
font-size: 32px;
|
||||
border-radius: 8px;
|
||||
margin-top: 30px;
|
||||
padding: 30px 50px;
|
||||
@ -2160,13 +2159,20 @@ html|*#highlighter-nodeinfobar-pseudo-classes {
|
||||
}
|
||||
|
||||
#full-screen-warning-container[obscure-browser] {
|
||||
background-color: rgba(0,0,0,0.75);
|
||||
background-color: rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
#full-screen-warning-container[stop-obscuring-browser] {
|
||||
-moz-transition-property: background-color;
|
||||
-moz-transition-duration: 500ms;
|
||||
background-color: rgba(0,0,0,0);
|
||||
.full-screen-description {
|
||||
font-size: 150%;
|
||||
}
|
||||
|
||||
#full-screen-domain-text {
|
||||
font-size: 300%;
|
||||
}
|
||||
|
||||
.full-screen-approval-button,
|
||||
#full-screen-remember-decision {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
/* Highlighter toolbar - breadcrumbs */
|
||||
|
@ -1207,8 +1207,8 @@ window[tabsontop="false"] richlistitem[type~="action"][actiontype="switchtab"][s
|
||||
color: inherit !important;
|
||||
}
|
||||
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggesthint, treecolAutoCompleteComment),
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggestfirst, treecolAutoCompleteComment)
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggesthint, treecolAutoCompleteComment),
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggestfirst, treecolAutoCompleteComment)
|
||||
{
|
||||
color: GrayText;
|
||||
font-size: smaller;
|
||||
@ -1224,8 +1224,8 @@ window[tabsontop="false"] richlistitem[type~="action"][actiontype="switchtab"][s
|
||||
#go-button,
|
||||
#urlbar > toolbarbutton {
|
||||
margin: 0;
|
||||
-moz-padding-start: 2px;
|
||||
-moz-padding-end: 1px;
|
||||
-moz-padding-start: 2px;
|
||||
-moz-padding-end: 1px;
|
||||
background-origin: border-box;
|
||||
list-style-image: url("chrome://browser/skin/reload-stop-go.png");
|
||||
}
|
||||
@ -2901,7 +2901,6 @@ html|*#highlighter-nodeinfobar-pseudo-classes {
|
||||
#full-screen-warning-message {
|
||||
background-color: hsl(0,0%,15%);
|
||||
color: white;
|
||||
font-size: 32px;
|
||||
border-radius: 8px;
|
||||
margin-top: 30px;
|
||||
padding: 30px 50px;
|
||||
@ -2909,13 +2908,20 @@ html|*#highlighter-nodeinfobar-pseudo-classes {
|
||||
}
|
||||
|
||||
#full-screen-warning-container[obscure-browser] {
|
||||
background-color: rgba(0,0,0,0.75);
|
||||
background-color: rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
#full-screen-warning-container[stop-obscuring-browser] {
|
||||
-moz-transition-property: background-color;
|
||||
-moz-transition-duration: 500ms;
|
||||
background-color: rgba(0,0,0,0);
|
||||
.full-screen-description {
|
||||
font-size: 150%;
|
||||
}
|
||||
|
||||
#full-screen-domain-text {
|
||||
font-size: 300%;
|
||||
}
|
||||
|
||||
.full-screen-approval-button,
|
||||
#full-screen-remember-decision {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
/* Highlighter toolbar - breadcrumbs */
|
||||
|
@ -603,7 +603,7 @@ menuitem.bookmark-item {
|
||||
-moz-image-region: rect(16px, 32px, 32px, 16px);
|
||||
}
|
||||
|
||||
.bookmark-item[container][livemark] {
|
||||
.bookmark-item[container][livemark] {
|
||||
list-style-image: url("chrome://browser/skin/livemark-folder.png");
|
||||
-moz-image-region: auto;
|
||||
}
|
||||
@ -1299,7 +1299,7 @@ html|*.urlbar-input:-moz-lwtheme:-moz-placeholder,
|
||||
.urlbar-textbox-container {
|
||||
-moz-box-align: stretch;
|
||||
}
|
||||
|
||||
|
||||
.urlbar-input-box {
|
||||
-moz-margin-start: 0;
|
||||
}
|
||||
@ -1504,7 +1504,7 @@ html|*.urlbar-input:-moz-lwtheme:-moz-placeholder,
|
||||
.autocomplete-treebody::-moz-tree-image(bookmark, treecolAutoCompleteImage) {
|
||||
list-style-image: url("chrome://browser/skin/places/editBookmark.png");
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
width: 16px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
@ -1519,7 +1519,7 @@ html|*.urlbar-input:-moz-lwtheme:-moz-placeholder,
|
||||
.ac-result-type-tag,
|
||||
.autocomplete-treebody::-moz-tree-image(tag, treecolAutoCompleteImage) {
|
||||
list-style-image: url("chrome://browser/skin/places/tag.png");
|
||||
width: 16px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
@ -1565,8 +1565,8 @@ richlistitem[type~="action"][actiontype="switchtab"][selected="true"] > .ac-url-
|
||||
color: inherit !important;
|
||||
}
|
||||
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggesthint, treecolAutoCompleteComment),
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggestfirst, treecolAutoCompleteComment)
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggesthint, treecolAutoCompleteComment),
|
||||
.autocomplete-treebody::-moz-tree-cell-text(suggestfirst, treecolAutoCompleteComment)
|
||||
{
|
||||
color: GrayText;
|
||||
font-size: smaller;
|
||||
@ -1670,7 +1670,7 @@ richlistitem[type~="action"][actiontype="switchtab"][selected="true"] > .ac-url-
|
||||
|
||||
#star-button:hover {
|
||||
background-image: -moz-radial-gradient(center, circle closest-side, hsla(45,100%,73%,.3), hsla(45,100%,73%,0));
|
||||
-moz-image-region: rect(0px 32px 16px 16px);
|
||||
-moz-image-region: rect(0px 32px 16px 16px);
|
||||
}
|
||||
|
||||
#star-button:hover:active {
|
||||
@ -2822,7 +2822,6 @@ html|*#highlighter-nodeinfobar-pseudo-classes {
|
||||
#full-screen-warning-message {
|
||||
background-color: hsl(0,0%,15%);
|
||||
color: white;
|
||||
font-size: 32px;
|
||||
border-radius: 8px;
|
||||
margin-top: 30px;
|
||||
padding: 30px 50px;
|
||||
@ -2830,13 +2829,20 @@ html|*#highlighter-nodeinfobar-pseudo-classes {
|
||||
}
|
||||
|
||||
#full-screen-warning-container[obscure-browser] {
|
||||
background-color: rgba(0,0,0,0.75);
|
||||
background-color: rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
#full-screen-warning-container[stop-obscuring-browser] {
|
||||
-moz-transition-property: background-color;
|
||||
-moz-transition-duration: 500ms;
|
||||
background-color: rgba(0,0,0,0);
|
||||
.full-screen-description {
|
||||
font-size: 150%;
|
||||
}
|
||||
|
||||
#full-screen-domain-text {
|
||||
font-size: 300%;
|
||||
}
|
||||
|
||||
.full-screen-approval-button,
|
||||
#full-screen-remember-decision {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
/* Highlighter toolbar - breadcrumbs */
|
||||
|
@ -3531,7 +3531,6 @@ pref("alerts.disableSlidingEffect", false);
|
||||
// DOM full-screen API.
|
||||
pref("full-screen-api.enabled", false);
|
||||
pref("full-screen-api.allow-trusted-requests-only", true);
|
||||
pref("full-screen-api.warning.enabled", true);
|
||||
pref("full-screen-api.exit-on-deactivate", true);
|
||||
pref("full-screen-api.pointer-lock.enabled", true);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user