зеркало из https://github.com/mozilla/gecko-dev.git
merge m-c to fx-team
This commit is contained in:
Коммит
203c7ebb16
|
@ -956,7 +956,7 @@
|
|||
|
||||
<toolbarpalette id="BrowserToolbarPalette">
|
||||
|
||||
# Update primaryToolbarButtons in browser/themes/browserShared.inc when adding
|
||||
# Update primaryToolbarButtons in browser/themes/shared/browser.inc when adding
|
||||
# or removing default items with the toolbarbutton-1 class.
|
||||
|
||||
<toolbarbutton id="print-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
||||
|
|
|
@ -221,11 +221,11 @@ let SessionFileInternal = {
|
|||
return TaskUtils.spawn(function task() {
|
||||
try {
|
||||
yield OS.File.copy(self.path, self.backupPath);
|
||||
} catch (ex if self._isNoSuchFile(ex)) {
|
||||
// Ignore exceptions about non-existent files.
|
||||
} catch (ex) {
|
||||
if (!self._isNoSuchFile(ex)) {
|
||||
Cu.reportError("Could not backup session state file: " + ex);
|
||||
throw ex;
|
||||
}
|
||||
Cu.reportError("Could not backup session state file: " + ex);
|
||||
throw ex;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -235,12 +235,17 @@ let SessionFileInternal = {
|
|||
return TaskUtils.spawn(function task() {
|
||||
try {
|
||||
yield OS.File.remove(self.path);
|
||||
} catch (ex if self._isNoSuchFile(ex)) {
|
||||
// Ignore exceptions about non-existent files.
|
||||
} catch (ex) {
|
||||
Cu.reportError("Could not remove session state file: " + ex);
|
||||
throw ex;
|
||||
}
|
||||
|
||||
try {
|
||||
yield OS.File.remove(self.backupPath);
|
||||
} catch (ex if self._isNoSuchFile(ex)) {
|
||||
// Ignore exceptions about non-existent files.
|
||||
} catch (ex) {
|
||||
Cu.reportError("Could not remove session state backup file: " + ex);
|
||||
throw ex;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<meta charset="utf-8">
|
||||
<title>Test for bug 248970</title>
|
||||
|
||||
<h3>Text Fields</h3>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<meta charset="utf-8">
|
||||
<title>Test for bug 339445</title>
|
||||
|
||||
storageTestItem = <span id="storageTestItem">FAIL</span>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script type="text/javascript">
|
||||
// generate an enormous random number...
|
||||
var r = Math.floor(Math.random() * Math.pow(2, 62)).toString();
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Testcase for bug 447951</title>
|
||||
|
||||
<a href="#end">click me</a>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<title>Test for bug 459906</title>
|
||||
|
||||
<body>
|
||||
<iframe src="data:text/html,not_on_localhost"></iframe>
|
||||
<iframe src="data:text/html;charset=utf-8,not_on_localhost"></iframe>
|
||||
<iframe></iframe>
|
||||
|
||||
<script type="application/javascript">
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<title>Test for bug 461743</title>
|
||||
|
||||
<body>
|
||||
<iframe src="data:text/html,empty"></iframe>
|
||||
<iframe src="data:text/html;charset=utf-8,empty"></iframe>
|
||||
<iframe></iframe>
|
||||
|
||||
<script type="application/javascript">
|
||||
|
|
|
@ -13,9 +13,9 @@ function test() {
|
|||
let doneURL = "done";
|
||||
|
||||
let mainURL = testURL;
|
||||
let frame1URL = "data:text/html,<input%20id='original'>";
|
||||
let frame1URL = "data:text/html;charset=utf-8,<input%20id='original'>";
|
||||
let frame2URL = rootDir + "browser_463205_helper.html";
|
||||
let frame3URL = "data:text/html,mark2";
|
||||
let frame3URL = "data:text/html;charset=utf-8,mark2";
|
||||
|
||||
let frameCount = 0;
|
||||
|
||||
|
@ -68,7 +68,7 @@ function test() {
|
|||
frame1URL = "http://mochi.test:8888/browser/" +
|
||||
"browser/components/sessionstore/test/browser_463205_helper.html";
|
||||
frame2URL = rootDir + "browser_463205_helper.html";
|
||||
frame3URL = "data:text/html,mark2";
|
||||
frame3URL = "data:text/html;charset=utf-8,mark2";
|
||||
|
||||
frameCount = 0;
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for bug 463205 (cross domain)</title>
|
||||
|
||||
<input id="original" value="preserve me">
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
<!-- Testcase originally by <moz_bug_r_a4@yahoo.com> -->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for bug 463205</title>
|
||||
|
||||
<body onload="onLoad()">
|
||||
<iframe src="data:text/html,<input%20id='original'>"></iframe>
|
||||
<iframe src="data:text/html;charset=utf-8,<input%20id='original'>"></iframe>
|
||||
<iframe src="browser_463205_helper.html"></iframe>
|
||||
<iframe src="data:text/html,mark1"></iframe>
|
||||
<iframe src="data:text/html;charset=utf-8,mark1"></iframe>
|
||||
|
||||
<script type="application/javascript">
|
||||
function onLoad() {
|
||||
if (frames[2].document.location.href == "data:text/html,mark1") {
|
||||
frames[2].document.location = "data:text/html,mark2";
|
||||
if (frames[2].document.location.href == "data:text/html;charset-utf-8,mark1") {
|
||||
frames[2].document.location = "data:text/html;charset=utf-8,mark2";
|
||||
}
|
||||
else {
|
||||
frames[1].document.location.hash = "#original";
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
<!-- Testcase originally by <moz_bug_r_a4@yahoo.com> -->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for bug 463206</title>
|
||||
|
||||
<iframe src="data:text/html,<iframe></iframe><iframe%20src='data:text/html,<input%2520id=%2522in1%2522>'></iframe>"></iframe>
|
||||
<iframe src="data:text/html,<input%20id='out1'><input%20id='out2'><iframe%20src='data:text/html,<input%2520id=%2522in1%2522>'>"></iframe>
|
||||
<iframe src="data:text/html;charset=utf-8,<iframe></iframe><iframe%20src='data:text/html;charset=utf-8,<input%2520id=%2522in1%2522>'></iframe>"></iframe>
|
||||
<iframe src="data:text/html;charset=utf-8,<input%20id='out1'><input%20id='out2'><iframe%20src='data:text/html;charset=utf-8,<input%2520id=%2522in1%2522>'>"></iframe>
|
||||
|
||||
<input id="out1">
|
||||
<input name="1|#out2">
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
return;
|
||||
firstPass = frames[1].location.href == "about:blank";
|
||||
if (firstPass) {
|
||||
frames[0].location = 'data:text/html,<body onload="if (parent.firstPass) parent.step();"><input id="x" oninput="parent.xss()">XXX</body>';
|
||||
frames[0].location = 'data:text/html;charset=utf-8,<body onload="if (parent.firstPass) parent.step();"><input id="x" oninput="parent.xss()">XXX</body>';
|
||||
}
|
||||
frames[1].location = targetUrl;
|
||||
}
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
return;
|
||||
firstPass = frames[2].location.href == "about:blank";
|
||||
if (firstPass) {
|
||||
frames[0].location = 'data:text/html,<body onload="parent.step()">a</body>';
|
||||
frames[1].location = 'data:text/html,<body onload="document.designMode=\'on\';">XXX</body>';
|
||||
frames[0].location = 'data:text/html;charset=utf-8,<body onload="parent.step()">a</body>';
|
||||
frames[1].location = 'data:text/html;charset=utf-8,<body onload="document.designMode=\'on\';">XXX</body>';
|
||||
}
|
||||
frames[2].location = targetUrl;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!-- Testcase originally by <moz_bug_r_a4@yahoo.com> -->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for bug 466937</title>
|
||||
|
||||
<input id="thief" value="/home/user/secret">
|
||||
|
|
|
@ -33,5 +33,5 @@ function test() {
|
|||
}, true);
|
||||
}, true);
|
||||
|
||||
browser.loadURI("data:text/html,<body style='width: 100000px; height: 100000px;'><p>top</p></body>");
|
||||
browser.loadURI("data:text/html;charset=utf-8,<body style='width: 100000px; height: 100000px;'><p>top</p></body>");
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ function test() {
|
|||
}
|
||||
|
||||
// test content URL
|
||||
const TEST_URL = "data:text/html,"
|
||||
const TEST_URL = "data:text/html;charset=utf-8,"
|
||||
+ "<body style='width: 100000px; height: 100000px;'><p>top</p></body>"
|
||||
|
||||
// preferences that we use
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
var tab1 = gBrowser.addTab("data:text/plain,foo");
|
||||
var tab1 = gBrowser.addTab("data:text/plain;charset=utf-8,foo");
|
||||
gBrowser.pinTab(tab1);
|
||||
|
||||
tab1.linkedBrowser.addEventListener("load", function () {
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script>
|
||||
|
||||
function boom()
|
||||
|
@ -18,7 +19,7 @@ function boom()
|
|||
</script>
|
||||
</head>
|
||||
<body onload="boom();">
|
||||
<iframe src="data:text/html,1" id="f"></iframe>
|
||||
<iframe src="data:text/html;charset=utf-8,1" id="f"></iframe>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
let tabState = {
|
||||
entries: [{url: "data:text/html,<input%20id='foo'>", formdata: { id: { "foo": "bar" } } }]
|
||||
entries: [{url: "data:text/html;charset=utf-8,<input%20id='foo'>", formdata: { id: { "foo": "bar" } } }]
|
||||
};
|
||||
|
||||
function test() {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for form restore events (originally bug 476161)</title>
|
||||
|
||||
<script>
|
||||
|
|
|
@ -18,7 +18,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "Toolbox",
|
|||
XPCOMUtils.defineLazyModuleGetter(this, "TargetFactory",
|
||||
"resource:///modules/devtools/Target.jsm");
|
||||
|
||||
const FORBIDDEN_IDS = new Set("toolbox", "");
|
||||
const FORBIDDEN_IDS = new Set(["toolbox", ""]);
|
||||
|
||||
/**
|
||||
* DevTools is a class that represents a set of developer tools, it holds a
|
||||
|
@ -388,7 +388,7 @@ let gDevToolsBrowser = {
|
|||
doc.getElementById("mainCommandSet").appendChild(elements.cmd);
|
||||
|
||||
if (elements.key) {
|
||||
this.attachKeybindingsToBrowser(doc, elements.keys);
|
||||
this.attachKeybindingsToBrowser(doc, elements.key);
|
||||
}
|
||||
|
||||
doc.getElementById("mainBroadcasterSet").appendChild(elements.bc);
|
||||
|
|
|
@ -140,11 +140,13 @@ Highlighter.prototype = {
|
|||
if (id != "inspector") {
|
||||
this.chromeWin.clearTimeout(this.pageEventsMuter);
|
||||
this.detachMouseListeners();
|
||||
this.disabled = true;
|
||||
this.hide();
|
||||
} else {
|
||||
if (!this.locked) {
|
||||
this.attachMouseListeners();
|
||||
}
|
||||
this.disabled = false;
|
||||
this.show();
|
||||
}
|
||||
}.bind(this);
|
||||
|
@ -206,6 +208,9 @@ Highlighter.prototype = {
|
|||
this.selection.isElementNode();
|
||||
|
||||
if (canHighlightNode) {
|
||||
if (this.selection.reason != "navigateaway") {
|
||||
this.disabled = false;
|
||||
}
|
||||
this.show();
|
||||
this.updateInfobar();
|
||||
this.invalidateSize();
|
||||
|
@ -214,6 +219,7 @@ Highlighter.prototype = {
|
|||
LayoutHelpers.scrollIntoViewIfNeeded(this.selection.node);
|
||||
}
|
||||
} else {
|
||||
this.disabled = true;
|
||||
this.hide();
|
||||
}
|
||||
},
|
||||
|
@ -246,7 +252,7 @@ Highlighter.prototype = {
|
|||
* Show the highlighter if it has been hidden.
|
||||
*/
|
||||
show: function() {
|
||||
if (!this.hidden) return;
|
||||
if (!this.hidden || this.disabled) return;
|
||||
this.showOutline();
|
||||
this.showInfobar();
|
||||
this.computeZoomFactor();
|
||||
|
|
|
@ -242,8 +242,12 @@ InspectorPanel.prototype = {
|
|||
function onDOMReady() {
|
||||
newWindow.removeEventListener("DOMContentLoaded", onDOMReady, true);
|
||||
|
||||
if (self._destroyed) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!self.selection.node) {
|
||||
self.selection.setNode(newWindow.document.documentElement);
|
||||
self.selection.setNode(newWindow.document.documentElement, "navigateaway");
|
||||
}
|
||||
self._initMarkup();
|
||||
}
|
||||
|
|
|
@ -38,6 +38,8 @@ _BROWSER_FILES = \
|
|||
browser_inspector_bug_817558_delete_node.js \
|
||||
browser_inspector_bug_650804_search.js \
|
||||
browser_inspector_bug_650804_search.html \
|
||||
browser_inspector_bug_840156_destroy_after_navigation.js \
|
||||
browser_inspector_bug_835722_infobar_reappears.js \
|
||||
head.js \
|
||||
helpers.js \
|
||||
$(NULL)
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
function test() {
|
||||
let inspector;
|
||||
|
||||
function startLocationTests() {
|
||||
openInspector(runInspectorTests);
|
||||
}
|
||||
|
||||
function runInspectorTests(aInspector) {
|
||||
inspector = aInspector;
|
||||
|
||||
executeSoon(function() {
|
||||
inspector.selection.once("new-node", onNewSelection);
|
||||
info("selecting the DOCTYPE node");
|
||||
inspector.selection.setNode(content.document.doctype, "test");
|
||||
});
|
||||
}
|
||||
|
||||
function onNewSelection() {
|
||||
is(inspector.highlighter.isHidden(), true,
|
||||
"The infobar should be hidden now on selecting a non element node.");
|
||||
inspector.sidebar.select("ruleview");
|
||||
let ruleView = inspector.sidebar.getTab("ruleview");
|
||||
ruleView.addEventListener("mouseover", function onMouseOver() {
|
||||
ruleView.removeEventListener("mouseover", onMouseOver, false);
|
||||
is(inspector.highlighter.isHidden(), true,
|
||||
"The infobar was hidden so mouseover on the rules view did nothing");
|
||||
mouseOutAndContinue();
|
||||
}, false);
|
||||
EventUtils.synthesizeMouse(ruleView, 10, 50, {type: "mouseover"},
|
||||
ruleView.ownerDocument.defaultView);
|
||||
}
|
||||
|
||||
function mouseOutAndContinue() {
|
||||
let ruleView = inspector.sidebar.getTab("ruleview");
|
||||
ruleView.addEventListener("mouseout", function onMouseOut() {
|
||||
ruleView.removeEventListener("mouseout", onMouseOut, false);
|
||||
is(inspector.highlighter.isHidden(), true,
|
||||
"The infobar should not be visible after we mouseout of rules view");
|
||||
switchToWebConsole();
|
||||
}, false);
|
||||
EventUtils.synthesizeMouse(ruleView, 10, 10, {type: "mousemove"},
|
||||
ruleView.ownerDocument.defaultView);
|
||||
EventUtils.synthesizeMouse(ruleView, -10, -10, {type: "mouseout"},
|
||||
ruleView.ownerDocument.defaultView);
|
||||
}
|
||||
|
||||
function switchToWebConsole() {
|
||||
inspector.selection.once("new-node", function() {
|
||||
is(inspector.highlighter.isHidden(), false,
|
||||
"The infobar should be visible after we select a div.");
|
||||
gDevTools.showToolbox(inspector.target, "webconsole").then(function() {
|
||||
is(inspector.highlighter.isHidden(), true,
|
||||
"The infobar should not be visible after we switched to webconsole");
|
||||
reloadAndWait();
|
||||
});
|
||||
});
|
||||
inspector.selection.setNode(content.document.querySelector("div"), "test");
|
||||
}
|
||||
|
||||
function reloadAndWait() {
|
||||
gBrowser.selectedBrowser.addEventListener("load", function onBrowserLoad() {
|
||||
gBrowser.selectedBrowser.removeEventListener("load", onBrowserLoad, true);
|
||||
waitForFocus(testAfterReload, content);
|
||||
}, true);
|
||||
content.location.reload();
|
||||
}
|
||||
|
||||
function testAfterReload() {
|
||||
is(inspector.highlighter.isHidden(), true,
|
||||
"The infobar should not be visible after we reload with webconsole shown");
|
||||
testEnd();
|
||||
}
|
||||
|
||||
function testEnd() {
|
||||
gBrowser.removeCurrentTab();
|
||||
executeSoon(finish);
|
||||
}
|
||||
|
||||
waitForExplicitFinish();
|
||||
|
||||
gBrowser.selectedTab = gBrowser.addTab();
|
||||
gBrowser.selectedBrowser.addEventListener("load", function onBrowserLoad() {
|
||||
gBrowser.selectedBrowser.removeEventListener("load", onBrowserLoad, true);
|
||||
waitForFocus(startLocationTests, content);
|
||||
}, true);
|
||||
|
||||
content.location = "data:text/html,<!DOCTYPE html><div>Infobar should not " +
|
||||
"reappear</div><p>init</p>";
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
let temp = {};
|
||||
Cu.import("resource://gre/modules/commonjs/sdk/core/promise.js", temp);
|
||||
let Promise = temp.Promise;
|
||||
temp = {};
|
||||
Cu.import("resource:///modules/devtools/Toolbox.jsm", temp);
|
||||
let Toolbox = temp.Toolbox;
|
||||
temp = {};
|
||||
Cu.import("resource:///modules/devtools/Target.jsm", temp);
|
||||
let TargetFactory = temp.TargetFactory;
|
||||
temp = null;
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
const URL_1 = "data:text/plain;charset=UTF-8,abcde";
|
||||
const URL_2 = "data:text/plain;charset=UTF-8,12345";
|
||||
|
||||
let target, toolbox;
|
||||
|
||||
// open tab, load URL_1, and wait for load to finish
|
||||
let tab = gBrowser.selectedTab = gBrowser.addTab();
|
||||
let target = TargetFactory.forTab(gBrowser.selectedTab);
|
||||
let deferred = Promise.defer();
|
||||
let browser = gBrowser.getBrowserForTab(tab);
|
||||
function onTabLoad() {
|
||||
browser.removeEventListener("load", onTabLoad, true);
|
||||
deferred.resolve(null);
|
||||
}
|
||||
browser.addEventListener("load", onTabLoad, true);
|
||||
browser.loadURI(URL_1);
|
||||
|
||||
// open devtools panel
|
||||
deferred.promise
|
||||
.then(function () gDevTools.showToolbox(target, null, Toolbox.HostType.BOTTOM))
|
||||
.then(function (aToolbox) { toolbox = aToolbox; })
|
||||
|
||||
// select the inspector
|
||||
.then(function () toolbox.selectTool("inspector"))
|
||||
|
||||
// navigate to URL_2
|
||||
.then(function () {
|
||||
let deferred = Promise.defer();
|
||||
target.once("navigate", function () deferred.resolve());
|
||||
browser.loadURI(URL_2);
|
||||
return deferred.promise;
|
||||
})
|
||||
|
||||
// destroy the toolbox (and hence the inspector) before the load completes
|
||||
.then(function () toolbox.destroy())
|
||||
|
||||
// this (or any other) exception should not occur:
|
||||
// [JavaScript Error: "TypeError: self.selection is null" {file: "resource:///modules/devtools/InspectorPanel.jsm" line: 250}]
|
||||
|
||||
.then(function cleanUp() {
|
||||
gBrowser.removeCurrentTab();
|
||||
finish();
|
||||
});
|
||||
}
|
|
@ -125,8 +125,6 @@ CssLogic.prototype = {
|
|||
_matchedRules: null,
|
||||
_matchedSelectors: null,
|
||||
|
||||
domUtils: Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils),
|
||||
|
||||
/**
|
||||
* Reset various properties
|
||||
*/
|
||||
|
@ -470,8 +468,9 @@ CssLogic.prototype = {
|
|||
|
||||
rule.selectors.forEach(function (aSelector) {
|
||||
if (aSelector._matchId !== this._matchId &&
|
||||
(aSelector.elementStyle ||
|
||||
this._selectorMatchesElement(aSelector))) {
|
||||
(aSelector.elementStyle ||
|
||||
this.selectorMatchesElement(rule._domRule, aSelector.selectorIndex))) {
|
||||
|
||||
aSelector._matchId = this._matchId;
|
||||
this._matchedSelectors.push([ aSelector, status ]);
|
||||
if (aCallback) {
|
||||
|
@ -489,15 +488,19 @@ CssLogic.prototype = {
|
|||
* parents.
|
||||
*
|
||||
* @private
|
||||
* @param {string} aSelector the selector string you want to check.
|
||||
* @return {boolean} true if the given selector matches the highlighted
|
||||
* element or any of its parents, otherwise false is returned.
|
||||
* @param {DOMRule} domRule
|
||||
* The DOM Rule containing the selector.
|
||||
* @param {Number} idx
|
||||
* The index of the selector within the DOMRule.
|
||||
* @return {boolean}
|
||||
* true if the given selector matches the highlighted element or any
|
||||
* of its parents, otherwise false is returned.
|
||||
*/
|
||||
_selectorMatchesElement: function CL__selectorMatchesElement(aSelector)
|
||||
selectorMatchesElement: function CL_selectorMatchesElement2(domRule, idx)
|
||||
{
|
||||
let element = this.viewedElement;
|
||||
do {
|
||||
if (element.mozMatchesSelector(aSelector)) {
|
||||
if (domUtils.selectorMatchesElement(element, domRule, idx)) {
|
||||
return true;
|
||||
}
|
||||
} while ((element = element.parentNode) &&
|
||||
|
@ -531,7 +534,7 @@ CssLogic.prototype = {
|
|||
if (rule.getPropertyValue(aProperty) &&
|
||||
(status == CssLogic.STATUS.MATCHED ||
|
||||
(status == CssLogic.STATUS.PARENT_MATCH &&
|
||||
this.domUtils.isInheritedProperty(aProperty)))) {
|
||||
domUtils.isInheritedProperty(aProperty)))) {
|
||||
result[aProperty] = true;
|
||||
return false;
|
||||
}
|
||||
|
@ -569,7 +572,7 @@ CssLogic.prototype = {
|
|||
CssLogic.STATUS.MATCHED : CssLogic.STATUS.PARENT_MATCH;
|
||||
|
||||
try {
|
||||
domRules = this.domUtils.getCSSStyleRules(element);
|
||||
domRules = domUtils.getCSSStyleRules(element);
|
||||
} catch (ex) {
|
||||
Services.console.
|
||||
logStringMessage("CL__buildMatchedRules error: " + ex);
|
||||
|
@ -690,65 +693,22 @@ CssLogic.getShortNamePath = function CssLogic_getShortNamePath(aElement)
|
|||
};
|
||||
|
||||
/**
|
||||
* Get a string list of selectors for a given CSSStyleRule.selectorText
|
||||
* Get a string list of selectors for a given DOMRule.
|
||||
*
|
||||
* @param {string} aSelectorText The CSSStyleRule.selectorText to parse.
|
||||
* @return {array} An array of string selectors.
|
||||
* @param {DOMRule} aDOMRule
|
||||
* The DOMRule to parse.
|
||||
* @return {Array}
|
||||
* An array of string selectors.
|
||||
*/
|
||||
CssLogic.getSelectors = function CssLogic_getSelectors(aSelectorText)
|
||||
CssLogic.getSelectors = function CssLogic_getSelectors(aDOMRule)
|
||||
{
|
||||
let selectors = [];
|
||||
|
||||
let selector = aSelectorText.trim();
|
||||
if (!selector) {
|
||||
return selectors;
|
||||
let len = domUtils.getSelectorCount(aDOMRule);
|
||||
for (let i = 0; i < len; i++) {
|
||||
let text = domUtils.getSelectorText(aDOMRule, i);
|
||||
selectors.push(text);
|
||||
}
|
||||
|
||||
let nesting = 0;
|
||||
let currentSelector = [];
|
||||
|
||||
// Parse a selector group into selectors. Normally we could just .split(',')
|
||||
// however Gecko allows -moz-any(a, b, c) as a selector so we ignore commas
|
||||
// inside brackets.
|
||||
for (let i = 0, selLen = selector.length; i < selLen; i++) {
|
||||
let c = selector.charAt(i);
|
||||
switch (c) {
|
||||
case ",":
|
||||
if (nesting == 0 && currentSelector.length > 0) {
|
||||
let selectorStr = currentSelector.join("").trim();
|
||||
if (selectorStr) {
|
||||
selectors.push(selectorStr);
|
||||
}
|
||||
currentSelector = [];
|
||||
} else {
|
||||
currentSelector.push(c);
|
||||
}
|
||||
break;
|
||||
|
||||
case "(":
|
||||
nesting++;
|
||||
currentSelector.push(c);
|
||||
break;
|
||||
|
||||
case ")":
|
||||
nesting--;
|
||||
currentSelector.push(c);
|
||||
break;
|
||||
|
||||
default:
|
||||
currentSelector.push(c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Add the last selector.
|
||||
if (nesting == 0 && currentSelector.length > 0) {
|
||||
let selectorStr = currentSelector.join("").trim();
|
||||
if (selectorStr) {
|
||||
selectors.push(selectorStr);
|
||||
}
|
||||
}
|
||||
|
||||
return selectors;
|
||||
}
|
||||
|
||||
|
@ -1171,7 +1131,7 @@ function CssRule(aCssSheet, aDomRule, aElement)
|
|||
if (this._cssSheet) {
|
||||
// parse _domRule.selectorText on call to this.selectors
|
||||
this._selectors = null;
|
||||
this.line = this._cssSheet._cssLogic.domUtils.getRuleLine(this._domRule);
|
||||
this.line = domUtils.getRuleLine(this._domRule);
|
||||
this.source = this._cssSheet.shortSource + ":" + this.line;
|
||||
if (this.mediaText) {
|
||||
this.source += " @media " + this.mediaText;
|
||||
|
@ -1179,7 +1139,7 @@ function CssRule(aCssSheet, aDomRule, aElement)
|
|||
this.href = this._cssSheet.href;
|
||||
this.contentRule = this._cssSheet.contentSheet;
|
||||
} else if (aElement) {
|
||||
this._selectors = [ new CssSelector(this, "@element.style") ];
|
||||
this._selectors = [ new CssSelector(this, "@element.style", 0) ];
|
||||
this.line = -1;
|
||||
this.source = CssLogic.l10n("rule.sourceElement");
|
||||
this.href = "#";
|
||||
|
@ -1263,8 +1223,12 @@ CssRule.prototype = {
|
|||
return this._selectors;
|
||||
}
|
||||
|
||||
let selectors = CssLogic.getSelectors(this._domRule.selectorText);
|
||||
this._selectors = [new CssSelector(this, text) for (text of selectors)];
|
||||
let selectors = CssLogic.getSelectors(this._domRule);
|
||||
|
||||
for (let i = 0, len = selectors.length; i < len; i++) {
|
||||
this._selectors.push(new CssSelector(this, selectors[i], i));
|
||||
}
|
||||
|
||||
return this._selectors;
|
||||
},
|
||||
|
||||
|
@ -1281,13 +1245,15 @@ CssRule.prototype = {
|
|||
* @constructor
|
||||
* @param {CssRule} aCssRule the CssRule instance from where the selector comes.
|
||||
* @param {string} aSelector The selector that we wish to investigate.
|
||||
* @param {Number} aIndex The index of the selector within it's rule.
|
||||
*/
|
||||
this.CssSelector = function CssSelector(aCssRule, aSelector)
|
||||
this.CssSelector = function CssSelector(aCssRule, aSelector, aIndex)
|
||||
{
|
||||
this._cssRule = aCssRule;
|
||||
this.text = aSelector;
|
||||
this.elementStyle = this.text == "@element.style";
|
||||
this._specificity = null;
|
||||
this.selectorIndex = aIndex;
|
||||
}
|
||||
|
||||
CssSelector.prototype = {
|
||||
|
@ -1402,8 +1368,7 @@ CssSelector.prototype = {
|
|||
* @see http://www.w3.org/TR/css3-selectors/#specificity
|
||||
* @see http://www.w3.org/TR/CSS2/selector.html
|
||||
*
|
||||
* @return {object} an object holding specificity information for the current
|
||||
* selector.
|
||||
* @return {Number} The selector's specificity.
|
||||
*/
|
||||
get specificity()
|
||||
{
|
||||
|
@ -1411,59 +1376,8 @@ CssSelector.prototype = {
|
|||
return this._specificity;
|
||||
}
|
||||
|
||||
let specificity = {
|
||||
ids: 0,
|
||||
classes: 0,
|
||||
tags: 0
|
||||
};
|
||||
|
||||
let text = this.text;
|
||||
|
||||
if (!this.elementStyle) {
|
||||
// Remove universal selectors as they are not relevant as far as specificity
|
||||
// is concerned.
|
||||
text = text.replace(RX_UNIVERSAL_SELECTOR, "");
|
||||
|
||||
// not() is ignored but any selectors contained by it are counted. Let's
|
||||
// remove the not() and keep the contents.
|
||||
text = text.replace(RX_NOT, " $1");
|
||||
|
||||
// Simplify remaining psuedo classes & elements.
|
||||
text = text.replace(RX_PSEUDO_CLASS_OR_ELT, " $1)");
|
||||
|
||||
// Replace connectors with spaces
|
||||
text = text.replace(RX_CONNECTORS, " ");
|
||||
|
||||
text.split(/\s/).forEach(function(aSimple) {
|
||||
// Count IDs.
|
||||
aSimple = aSimple.replace(RX_ID, function() {
|
||||
specificity.ids++;
|
||||
return "";
|
||||
});
|
||||
|
||||
// Count class names and attribute matchers.
|
||||
aSimple = aSimple.replace(RX_CLASS_OR_ATTRIBUTE, function() {
|
||||
specificity.classes++;
|
||||
return "";
|
||||
});
|
||||
|
||||
aSimple = aSimple.replace(RX_PSEUDO, function(aDummy, aPseudoName) {
|
||||
if (this.pseudoElements.has(aPseudoName)) {
|
||||
// Pseudo elements count as tags.
|
||||
specificity.tags++;
|
||||
} else {
|
||||
// Pseudo classes count as classes.
|
||||
specificity.classes++;
|
||||
}
|
||||
return "";
|
||||
}.bind(this));
|
||||
|
||||
if (aSimple) {
|
||||
specificity.tags++;
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
this._specificity = specificity;
|
||||
this._specificity = domUtils.getSpecificity(this._cssRule._domRule,
|
||||
this.selectorIndex);
|
||||
|
||||
return this._specificity;
|
||||
},
|
||||
|
@ -1610,7 +1524,7 @@ CssPropertyInfo.prototype = {
|
|||
if (value &&
|
||||
(aStatus == CssLogic.STATUS.MATCHED ||
|
||||
(aStatus == CssLogic.STATUS.PARENT_MATCH &&
|
||||
this._cssLogic.domUtils.isInheritedProperty(this.property)))) {
|
||||
domUtils.isInheritedProperty(this.property)))) {
|
||||
let selectorInfo = new CssSelectorInfo(aSelector, this.property, value,
|
||||
aStatus);
|
||||
this._matchedSelectors.push(selectorInfo);
|
||||
|
@ -1677,25 +1591,6 @@ function CssSelectorInfo(aSelector, aProperty, aValue, aStatus)
|
|||
|
||||
let priority = this.selector._cssRule.getPropertyPriority(this.property);
|
||||
this.important = (priority === "important");
|
||||
|
||||
/* Score prefix:
|
||||
0 UA normal property
|
||||
1 UA important property
|
||||
2 normal property
|
||||
3 inline (element.style)
|
||||
4 important
|
||||
5 inline important
|
||||
*/
|
||||
let scorePrefix = this.contentRule ? 2 : 0;
|
||||
if (this.elementStyle) {
|
||||
scorePrefix++;
|
||||
}
|
||||
if (this.important) {
|
||||
scorePrefix += this.contentRule ? 2 : 1;
|
||||
}
|
||||
|
||||
this.specificityScore = "" + scorePrefix + this.specificity.ids +
|
||||
this.specificity.classes + this.specificity.tags;
|
||||
}
|
||||
|
||||
CssSelectorInfo.prototype = {
|
||||
|
@ -1824,14 +1719,8 @@ CssSelectorInfo.prototype = {
|
|||
if (this.important && !aThat.important) return -1;
|
||||
if (aThat.important && !this.important) return 1;
|
||||
|
||||
if (this.specificity.ids > aThat.specificity.ids) return -1;
|
||||
if (aThat.specificity.ids > this.specificity.ids) return 1;
|
||||
|
||||
if (this.specificity.classes > aThat.specificity.classes) return -1;
|
||||
if (aThat.specificity.classes > this.specificity.classes) return 1;
|
||||
|
||||
if (this.specificity.tags > aThat.specificity.tags) return -1;
|
||||
if (aThat.specificity.tags > this.specificity.tags) return 1;
|
||||
if (this.specificity > aThat.specificity) return -1;
|
||||
if (aThat.specificity > this.specificity) return 1;
|
||||
|
||||
if (this.sheetIndex > aThat.sheetIndex) return -1;
|
||||
if (aThat.sheetIndex > this.sheetIndex) return 1;
|
||||
|
@ -1847,3 +1736,7 @@ CssSelectorInfo.prototype = {
|
|||
return this.selector + " -> " + this.value;
|
||||
},
|
||||
};
|
||||
|
||||
XPCOMUtils.defineLazyGetter(this, "domUtils", function() {
|
||||
return Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
|
||||
});
|
||||
|
|
|
@ -108,8 +108,6 @@ ElementStyle.prototype = {
|
|||
// to figure out how shorthand properties will be parsed.
|
||||
dummyElement: null,
|
||||
|
||||
domUtils: Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils),
|
||||
|
||||
/**
|
||||
* Called by the Rule object when it has been changed through the
|
||||
* setProperty* methods.
|
||||
|
@ -158,7 +156,7 @@ ElementStyle.prototype = {
|
|||
});
|
||||
|
||||
// Get the styles that apply to the element.
|
||||
var domRules = this.domUtils.getCSSStyleRules(aElement);
|
||||
var domRules = domUtils.getCSSStyleRules(aElement);
|
||||
|
||||
// getCSStyleRules returns ordered from least-specific to
|
||||
// most-specific.
|
||||
|
@ -413,7 +411,7 @@ Rule.prototype = {
|
|||
// No stylesheet, no ruleLine
|
||||
return null;
|
||||
}
|
||||
return this.elementStyle.domUtils.getRuleLine(this.domRule);
|
||||
return domUtils.getRuleLine(this.domRule);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -576,8 +574,7 @@ Rule.prototype = {
|
|||
continue;
|
||||
|
||||
let name = matches[1];
|
||||
if (this.inherited &&
|
||||
!this.elementStyle.domUtils.isInheritedProperty(name)) {
|
||||
if (this.inherited && !domUtils.isInheritedProperty(name)) {
|
||||
continue;
|
||||
}
|
||||
let value = store.userProperties.getProperty(this.style, name, matches[2]);
|
||||
|
@ -1448,7 +1445,7 @@ RuleEditor.prototype = {
|
|||
// actually match. For custom selector text (such as for the 'element'
|
||||
// style, just show the text directly.
|
||||
if (this.rule.domRule && this.rule.domRule.selectorText) {
|
||||
let selectors = CssLogic.getSelectors(this.rule.selectorText);
|
||||
let selectors = CssLogic.getSelectors(this.rule.domRule);
|
||||
let element = this.rule.inherited || this.ruleView._viewedElement;
|
||||
for (let i = 0; i < selectors.length; i++) {
|
||||
let selector = selectors[i];
|
||||
|
@ -1458,8 +1455,12 @@ RuleEditor.prototype = {
|
|||
textContent: ", "
|
||||
});
|
||||
}
|
||||
let cls = element.mozMatchesSelector(selector) ? "ruleview-selector-matched" :
|
||||
"ruleview-selector-unmatched";
|
||||
let cls;
|
||||
if (domUtils.selectorMatchesElement(element, this.rule.domRule, i)) {
|
||||
cls = "ruleview-selector-matched";
|
||||
} else {
|
||||
cls = "ruleview-selector-unmatched";
|
||||
}
|
||||
createChild(this.selectorText, "span", {
|
||||
class: cls,
|
||||
textContent: selector
|
||||
|
@ -2847,3 +2848,7 @@ XPCOMUtils.defineLazyGetter(this, "_strings", function() {
|
|||
XPCOMUtils.defineLazyGetter(this, "osString", function() {
|
||||
return Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime).OS;
|
||||
});
|
||||
|
||||
XPCOMUtils.defineLazyGetter(this, "domUtils", function() {
|
||||
return Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
|
||||
});
|
||||
|
|
|
@ -6,44 +6,98 @@
|
|||
|
||||
let tempScope = {};
|
||||
Cu.import("resource:///modules/devtools/CssLogic.jsm", tempScope);
|
||||
const DOMUtils = Cc["@mozilla.org/inspector/dom-utils;1"]
|
||||
.getService(Ci.inIDOMUtils);
|
||||
let CssLogic = tempScope.CssLogic;
|
||||
let CssSelector = tempScope.CssSelector;
|
||||
|
||||
function test()
|
||||
function createDocument()
|
||||
{
|
||||
let tests = [
|
||||
{text: "*", expected: "000"},
|
||||
{text: "LI", expected: "001"},
|
||||
{text: "UL LI", expected: "002"},
|
||||
{text: "UL OL+LI", expected: "003"},
|
||||
{text: "H1 + *[REL=up]", expected: "011"},
|
||||
{text: "UL OL LI.red", expected: "013"},
|
||||
{text: "LI.red.level", expected: "021"},
|
||||
{text: ".red .level", expected: "020"},
|
||||
{text: "#x34y", expected: "100"},
|
||||
{text: "#s12:not(FOO)", expected: "101"},
|
||||
{text: "body#home div#warning p.message", expected: "213"},
|
||||
{text: "* body#home div#warning p.message", expected: "213"},
|
||||
{text: "#footer *:not(nav) li", expected: "102"},
|
||||
{text: "bar:nth-child(1n+0)", expected: "011"},
|
||||
{text: "li::-moz-list-number", expected: "002"},
|
||||
{text: "a:hover", expected: "011"},
|
||||
];
|
||||
let doc = content.document;
|
||||
doc.body.innerHTML = getStylesheetText();
|
||||
doc.title = "Computed view specificity test";
|
||||
runTests(doc);
|
||||
}
|
||||
|
||||
tests.forEach(function(aTest) {
|
||||
let selector = new CssSelector(null, aTest.text);
|
||||
let specificity = selector.specificity;
|
||||
function runTests(doc) {
|
||||
let cssLogic = new CssLogic();
|
||||
cssLogic.highlight(doc.body);
|
||||
|
||||
let result = "" + specificity.ids + specificity.classes + specificity.tags;
|
||||
is(result, aTest.expected, "selector \"" + aTest.text +
|
||||
"\" produces expected result");
|
||||
});
|
||||
let tests = getTests();
|
||||
let cssSheet = cssLogic.sheets[0];
|
||||
let cssRule = cssSheet.domSheet.cssRules[0];
|
||||
let selectors = CssLogic.getSelectors(cssRule);
|
||||
|
||||
for (let i = 0; i < selectors.length; i++) {
|
||||
let selectorText = selectors[i];
|
||||
let selector = new CssSelector(cssRule, selectorText, i);
|
||||
let expected = getExpectedSpecificity(selectorText);
|
||||
let specificity = DOMUtils.getSpecificity(selector._cssRule,
|
||||
selector.selectorIndex)
|
||||
is(specificity, expected,
|
||||
'selector "' + selectorText + '" has a specificity of ' + expected);
|
||||
}
|
||||
finishUp();
|
||||
}
|
||||
|
||||
function getExpectedSpecificity(selectorText) {
|
||||
let tests = getTests();
|
||||
|
||||
for (let test of tests) {
|
||||
if (test.text == selectorText) {
|
||||
return test.expected;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getTests() {
|
||||
return [
|
||||
{text: "*", expected: 0},
|
||||
{text: "LI", expected: 1},
|
||||
{text: "UL LI", expected: 2},
|
||||
{text: "UL OL + LI", expected: 3},
|
||||
{text: "H1 + [REL=\"up\"]", expected: 257},
|
||||
{text: "UL OL LI.red", expected: 259},
|
||||
{text: "LI.red.level", expected: 513},
|
||||
{text: ".red .level", expected: 512},
|
||||
{text: "#x34y", expected: 65536},
|
||||
{text: "#s12:not(FOO)", expected: 65537},
|
||||
{text: "body#home div#warning p.message", expected: 131331},
|
||||
{text: "* body#home div#warning p.message", expected: 131331},
|
||||
{text: "#footer :not(nav) li", expected: 65538},
|
||||
{text: "bar:nth-child(n)", expected: 257},
|
||||
{text: "li::-moz-list-number", expected: 1},
|
||||
{text: "a:hover", expected: 257},
|
||||
];
|
||||
}
|
||||
|
||||
function getStylesheetText() {
|
||||
let tests = getTests();
|
||||
let text = "";
|
||||
|
||||
tests.forEach(function(test) {
|
||||
if (text.length > 0) {
|
||||
text += ",";
|
||||
}
|
||||
text += test.text;
|
||||
});
|
||||
return '<style type="text/css">' + text + " {color:red;}</style>";
|
||||
}
|
||||
|
||||
function finishUp()
|
||||
{
|
||||
CssLogic = CssSelector = null;
|
||||
CssLogic = CssSelector = tempScope = null;
|
||||
finish();
|
||||
}
|
||||
|
||||
function test()
|
||||
{
|
||||
waitForExplicitFinish();
|
||||
gBrowser.selectedTab = gBrowser.addTab();
|
||||
gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) {
|
||||
gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true);
|
||||
waitForFocus(createDocument, content);
|
||||
}, true);
|
||||
|
||||
content.location = "data:text/html,Computed view specificity test";
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
|
||||
@namespace html url("http://www.w3.org/1999/xhtml");
|
||||
|
||||
%include ../browserShared.inc
|
||||
%include ../shared/browser.inc
|
||||
%filter substitution
|
||||
%define toolbarHighlight rgba(255,255,255,.3)
|
||||
%define selectedTabHighlight rgba(255,255,255,.8) 1px, rgba(255,255,255,.5) 3px
|
||||
|
@ -1972,135 +1972,6 @@ toolbar[mode="text"] toolbarbutton.chevron > .toolbarbutton-icon {
|
|||
margin-left: 1em;
|
||||
}
|
||||
|
||||
/* Highlighter */
|
||||
|
||||
.highlighter-outline {
|
||||
box-shadow: 0 0 0 1px black;
|
||||
outline: 1px dashed white;
|
||||
outline-offset: -1px;
|
||||
}
|
||||
|
||||
.highlighter-outline[locked] {
|
||||
box-shadow: 0 0 0 1px rgba(0,0,0,0.3);
|
||||
outline-color: rgba(255,255,255,0.7);
|
||||
}
|
||||
|
||||
/* Developer toolbar */
|
||||
|
||||
#developer-toolbar {
|
||||
border-top: 1px solid hsla(210, 8%, 5%, .65);
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar */
|
||||
|
||||
.highlighter-nodeinfobar {
|
||||
color: hsl(200, 100%, 65%);
|
||||
border: 1px solid hsla(210, 19%, 63%, .5);
|
||||
border-radius: 3px;
|
||||
background: linear-gradient(hsl(209, 18%, 30%), hsl(210, 24%, 16%)) no-repeat padding-box;
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - text */
|
||||
|
||||
.highlighter-nodeinfobar-text {
|
||||
/* 100% - size of the buttons and margins */
|
||||
max-width: calc(100% - 2 * (26px + 6px));
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-tagname {
|
||||
color: white;
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-id {
|
||||
color: hsl(90, 79%, 52%);
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-pseudo-classes {
|
||||
color: hsl(20, 100%, 70%);
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - buttons */
|
||||
|
||||
.highlighter-nodeinfobar-button {
|
||||
-moz-appearance: none;
|
||||
border: 0 solid hsla(210,8%,5%,.45);
|
||||
padding: 0;
|
||||
width: 26px;
|
||||
min-height: 26px;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton {
|
||||
-moz-border-end-width: 1px;
|
||||
box-shadow: 1px 0 0 hsla(210,16%,76%,.15), -1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
-moz-margin-end: 6px;
|
||||
list-style-image: url("chrome://browser/skin/devtools/inspect-button.png");
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton:-moz-locale-dir(rtl) {
|
||||
box-shadow: -1px 0 0 hsla(210,16%,76%,.15), 1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton:active:hover,
|
||||
.highlighter-nodeinfobar-container:not([locked]) > .highlighter-nodeinfobar > .highlighter-nodeinfobar-inspectbutton {
|
||||
-moz-image-region: rect(0px 32px 16px 16px);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu {
|
||||
-moz-border-start-width: 1px;
|
||||
box-shadow: -1px 0 0 hsla(210,16%,76%,.15), 1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
-moz-margin-start: 6px;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu:-moz-locale-dir(rtl) {
|
||||
box-shadow: 1px 0 0 hsla(210,16%,76%,.15), -1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu > .toolbarbutton-menu-dropmarker {
|
||||
-moz-appearance: none !important;
|
||||
list-style-image: url("chrome://browser/skin/devtools/dropmarker.png");
|
||||
-moz-box-align: center;
|
||||
-moz-margin-start: -1px;
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - box & arrow */
|
||||
|
||||
.highlighter-nodeinfobar-arrow {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
-moz-margin-start: calc(50% - 7px);
|
||||
transform: rotate(-45deg);
|
||||
border: 1px solid transparent;
|
||||
background-clip: padding-box;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-arrow-top {
|
||||
margin-bottom: -8px;
|
||||
margin-top: 8px;
|
||||
border-right-color: hsla(210, 19%, 63%, .5);
|
||||
border-top-color: hsla(210, 19%, 63%, .5);
|
||||
background-image: linear-gradient(to top right, transparent 50%, hsl(209, 18%, 30%) 50%);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-arrow-bottom {
|
||||
margin-top: -8px;
|
||||
margin-bottom: 8px;
|
||||
border-left-color: hsla(210, 19%, 63%, .5);
|
||||
border-bottom-color: hsla(210, 19%, 63%, .5);
|
||||
background-image: linear-gradient(to bottom left, transparent 50%, hsl(210, 24%, 16%) 50%);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-container[position="top"] > .highlighter-nodeinfobar,
|
||||
.highlighter-nodeinfobar-container[position="overlap"] > .highlighter-nodeinfobar {
|
||||
box-shadow: 0 1px 0 hsla(0, 0%, 100%, .1) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-container[hide-arrow] > .highlighter-nodeinfobar {
|
||||
margin: 7px 0;
|
||||
}
|
||||
|
||||
#full-screen-warning-message {
|
||||
background-color: hsl(0,0%,15%);
|
||||
color: white;
|
||||
|
@ -2127,149 +1998,35 @@ html|*.highlighter-nodeinfobar-pseudo-classes {
|
|||
font-size: 120%;
|
||||
}
|
||||
|
||||
html|*#gcli-tooltip-frame,
|
||||
html|*#gcli-output-frame {
|
||||
padding: 0;
|
||||
border-width: 0;
|
||||
background-color: transparent;
|
||||
/* Developer toolbar */
|
||||
|
||||
#developer-toolbar {
|
||||
border-top: 1px solid hsla(210, 8%, 5%, .65);
|
||||
}
|
||||
|
||||
%include ../shared/devtools/responsivedesign.inc.css
|
||||
%include ../shared/devtools/highlighter.inc.css
|
||||
%include ../shared/devtools/commandline.inc.css
|
||||
|
||||
.gcli-panel {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#gcli-output,
|
||||
#gcli-tooltip {
|
||||
border-width: 0;
|
||||
background-color: transparent;
|
||||
-moz-appearance: none;
|
||||
margin-bottom: -2px;
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node,
|
||||
.gclitoolbar-complete-node,
|
||||
.gclitoolbar-prompt {
|
||||
margin: 0;
|
||||
-moz-margin-end: 5px;
|
||||
-moz-box-align: center;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
padding-right: 4px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 3px;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node {
|
||||
padding-left: 20px;
|
||||
background-color: transparent;
|
||||
-moz-appearance: none;
|
||||
border-color: hsl(210,11%,10%);
|
||||
color: hsl(210,30%,85%);
|
||||
text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
|
||||
box-shadow: 0 1px 1px hsla(210,8%,5%,.3) inset,
|
||||
0 0 0 1px hsla(210,16%,76%,.1) inset,
|
||||
0 1px 0 hsla(210,16%,76%,.15);
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node > .textbox-input-box > html|*.textbox-input::-moz-selection {
|
||||
background-color: hsl(210,30%,85%);
|
||||
color: hsl(210,11%,16%);
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.gclitoolbar-complete-node {
|
||||
padding-left: 21px;
|
||||
background-color: transparent;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
.gclitoolbar-prompt {
|
||||
padding-left: 4px;
|
||||
padding-bottom: 2px;
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
color: hsl(210,30%,85%);
|
||||
background-color: hsl(210,11%,16%);
|
||||
}
|
||||
|
||||
.gclitoolbar-prompt-label,
|
||||
.gcli-in-incomplete,
|
||||
.gcli-in-error,
|
||||
.gcli-in-ontab,
|
||||
.gcli-in-todo,
|
||||
.gcli-in-closebrace,
|
||||
.gcli-in-param,
|
||||
.gcli-in-valid {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.gcli-in-incomplete {
|
||||
border-bottom: 2px dotted #999;
|
||||
}
|
||||
|
||||
.gcli-in-error {
|
||||
border-bottom: 2px dotted #F00;
|
||||
}
|
||||
|
||||
.gcli-in-ontab {
|
||||
color: hsl(210,0%,35%);
|
||||
}
|
||||
|
||||
.gcli-in-todo {
|
||||
color: hsl(210,50%,35%);
|
||||
}
|
||||
|
||||
.gcli-in-closebrace {
|
||||
color: hsl(0,0%,80%);
|
||||
}
|
||||
|
||||
/* Responsive Mode */
|
||||
|
||||
.browserContainer[responsivemode] {
|
||||
background: #222 url("chrome://browser/skin/devtools/responsive-background.png");
|
||||
padding: 0 20px 20px 20px;
|
||||
}
|
||||
|
||||
.browserStack[responsivemode] {
|
||||
box-shadow: 0 0 7px black;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar {
|
||||
background: transparent;
|
||||
margin: 10px 0;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar > menulist,
|
||||
.devtools-responsiveui-toolbar > toolbarbutton {
|
||||
min-width: 22px;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar:-moz-locale-dir(ltr) > *:first-child,
|
||||
.devtools-responsiveui-toolbar:-moz-locale-dir(rtl) > *:last-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-resizebar {
|
||||
width: 7px;
|
||||
height: 24px;
|
||||
cursor: ew-resize;
|
||||
transform: translate(12px, -12px);
|
||||
background-image: url("chrome://browser/skin/devtools/responsive-vertical-resizer.png");
|
||||
}
|
||||
|
||||
.devtools-responsiveui-resizehandle {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
cursor: se-resize;
|
||||
transform: translate(12px, 12px);
|
||||
background-image: url("chrome://browser/skin/devtools/responsive-se-resizer.png");
|
||||
}
|
||||
|
||||
/* Web Console */
|
||||
|
||||
.web-console-frame {
|
||||
|
@ -2396,152 +2153,39 @@ html|*#gcli-output-frame {
|
|||
padding: 0;
|
||||
}
|
||||
|
||||
.chat-status-icon {
|
||||
max-height: 16px;
|
||||
max-width: 16px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.chat-toolbarbutton {
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.chat-toolbarbutton > .toolbarbutton-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.chat-close-button {
|
||||
list-style-image: url('chrome://browser/skin/social/chat-close.png');
|
||||
-moz-image-region: rect(0, 14px, 14px, 0);
|
||||
}
|
||||
|
||||
.chat-close-button:hover:active {
|
||||
-moz-image-region: rect(14px, 14px, 28px, 0);
|
||||
}
|
||||
|
||||
.chat-close-button:hover {
|
||||
-moz-image-region: rect(28px, 14px, 42px, 0);
|
||||
}
|
||||
|
||||
.chat-title {
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
text-shadow: none;
|
||||
cursor: inherit;
|
||||
}
|
||||
%include ../shared/social/chat.inc.css
|
||||
|
||||
.chat-titlebar {
|
||||
background-color: #d9d9d9;
|
||||
background-image: linear-gradient(@toolbarHighlight@, rgba(255,255,255,0));
|
||||
height: 20px;
|
||||
min-height: 20px;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
-moz-padding-start: 6px;
|
||||
border: none;
|
||||
border-bottom: 1px solid #ccc;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.chat-titlebar[minimized="true"] {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.chat-titlebar[selected] {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.chat-titlebar[activity] {
|
||||
background-image: radial-gradient(ellipse closest-side at center, rgb(255,255,255), rgba(255,255,255,0));
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 20px;
|
||||
background-position: 0 -10px;
|
||||
}
|
||||
|
||||
.chat-frame {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.chatbar-button {
|
||||
-moz-appearance: none;
|
||||
background-color: #d9d9d9;
|
||||
list-style-image: url("chrome://browser/skin/social/social.png");
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
height: 21px;
|
||||
width: 21px;
|
||||
border-top: 1px solid #ccc;
|
||||
-moz-border-end: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.chatbar-button > .toolbarbutton-icon {
|
||||
opacity: .6;
|
||||
-moz-margin-end: 0;
|
||||
}
|
||||
.chatbar-button:hover > .toolbarbutton-icon,
|
||||
.chatbar-button[open="true"] > .toolbarbutton-icon {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.chatbar-button[open="true"] {
|
||||
background-color: #f0f0f0;
|
||||
box-shadow: inset 0 2px 5px rgba(0,0,0,0.6), 0 1px rgba(255,255,255,0.2);
|
||||
}
|
||||
|
||||
.chatbar-button > .toolbarbutton-text,
|
||||
.chatbar-button > .toolbarbutton-menu-dropmarker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.chatbar-button[activity] {
|
||||
background-image: radial-gradient(circle farthest-corner at center 3px, rgb(233,242,252) 3%, rgba(172,206,255,0.75) 40%, rgba(87,151,201,0.5) 80%, rgba(87,151,201,0));
|
||||
}
|
||||
|
||||
.chatbar-button > menupopup > menuitem[activity] {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.chatbar-button > menupopup > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon {
|
||||
width: auto;
|
||||
height: auto;
|
||||
max-height: 16px;
|
||||
max-width: 16px;
|
||||
}
|
||||
|
||||
.chatbar-innerbox {
|
||||
background: transparent;
|
||||
margin: -285px -1px 0 -1px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
chatbar {
|
||||
-moz-margin-end: 20px;
|
||||
}
|
||||
|
||||
chatbox {
|
||||
height: 285px;
|
||||
width: 260px;
|
||||
-moz-margin-start: 4px;
|
||||
background-color: white;
|
||||
border: 1px solid #ccc;
|
||||
border-bottom: none;
|
||||
border-top-left-radius: 2.5px;
|
||||
border-top-right-radius: 2.5px;
|
||||
}
|
||||
|
||||
chatbox[minimized="true"] {
|
||||
width: 160px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.click-to-play-plugins-notification-content {
|
||||
margin: -10px;
|
||||
}
|
||||
|
|
|
@ -3405,38 +3405,6 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
|
|||
margin-left: 1em;
|
||||
}
|
||||
|
||||
|
||||
/* Highlighter */
|
||||
|
||||
.highlighter-outline {
|
||||
box-shadow: 0 0 0 1px black;
|
||||
outline: 1px dashed white;
|
||||
outline-offset: -1px;
|
||||
}
|
||||
|
||||
.highlighter-outline[locked] {
|
||||
box-shadow: 0 0 0 1px rgba(0,0,0,0.3);
|
||||
outline-color: rgba(255,255,255,0.7);
|
||||
}
|
||||
|
||||
/* Developer toolbar */
|
||||
|
||||
#developer-toolbar {
|
||||
border-top: 1px solid hsla(210, 8%, 5%, .65);
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
#developer-toolbar:-moz-locale-dir(ltr) {
|
||||
padding-left: 2px;
|
||||
padding-right: 16px; /* use -moz-padding-end when/if bug 631729 gets fixed */
|
||||
}
|
||||
|
||||
#developer-toolbar:-moz-locale-dir(rtl) {
|
||||
padding-left: 4px;
|
||||
padding-right: 18px; /* use -moz-padding-end when/if bug 631729 gets fixed */
|
||||
}
|
||||
|
||||
/* Lion Fullscreen window styling */
|
||||
@media (-moz-mac-lion-theme) {
|
||||
#navigator-toolbox[inFullscreen][tabsontop="true"]:not(:-moz-lwtheme)::before {
|
||||
|
@ -3451,117 +3419,6 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
|
|||
}
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar */
|
||||
|
||||
.highlighter-nodeinfobar {
|
||||
color: hsl(200, 100%, 65%);
|
||||
border: 1px solid hsla(210, 19%, 63%, .5);
|
||||
border-radius: 3px;
|
||||
background: linear-gradient(hsl(209, 18%, 30%), hsl(210, 24%, 16%)) no-repeat padding-box;
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - text */
|
||||
|
||||
.highlighter-nodeinfobar-text {
|
||||
/* 100% - size of the buttons + margins */
|
||||
max-width: calc(100% - 2 * (26px + 6px));
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-tagname {
|
||||
color: white;
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-id {
|
||||
color: hsl(90, 79%, 52%);
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-pseudo-classes {
|
||||
color: hsl(20, 100%, 70%);
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - buttons */
|
||||
|
||||
.highlighter-nodeinfobar-button {
|
||||
-moz-appearance: none;
|
||||
border: 0 solid hsla(210,8%,5%,.45);
|
||||
padding: 0;
|
||||
width: 26px;
|
||||
min-height: 26px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton {
|
||||
-moz-border-end-width: 1px;
|
||||
box-shadow: 1px 0 0 hsla(210,16%,76%,.15), -1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
-moz-margin-end: 6px;
|
||||
list-style-image: url("chrome://browser/skin/devtools/inspect-button.png");
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton:-moz-locale-dir(rtl) {
|
||||
box-shadow: -1px 0 0 hsla(210,16%,76%,.15), 1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton:active:hover,
|
||||
.highlighter-nodeinfobar-container:not([locked]) > .highlighter-nodeinfobar > .highlighter-nodeinfobar-inspectbutton {
|
||||
-moz-image-region: rect(0px 32px 16px 16px);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu {
|
||||
-moz-border-start-width: 1px;
|
||||
box-shadow: -1px 0 0 hsla(210,16%,76%,.15), 1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
-moz-margin-start: 6px;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu:-moz-locale-dir(rtl) {
|
||||
box-shadow: 1px 0 0 hsla(210,16%,76%,.15), -1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu > .toolbarbutton-menu-dropmarker {
|
||||
-moz-appearance: none !important;
|
||||
list-style-image: url("chrome://browser/skin/devtools/dropmarker.png");
|
||||
-moz-box-align: center;
|
||||
-moz-margin-start: -1px;
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - box & arrow */
|
||||
|
||||
.highlighter-nodeinfobar-arrow {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
-moz-margin-start: calc(50% - 7px);
|
||||
transform: rotate(-45deg);
|
||||
border: 1px solid transparent;
|
||||
background-clip: padding-box;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-arrow-top {
|
||||
margin-bottom: -8px;
|
||||
margin-top: 8px;
|
||||
border-right-color: hsla(210, 19%, 63%, .5);
|
||||
border-top-color: hsla(210, 19%, 63%, .5);
|
||||
background-image: linear-gradient(to top right, transparent 50%, hsl(209, 18%, 30%) 50%);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-arrow-bottom {
|
||||
margin-top: -8px;
|
||||
margin-bottom: 8px;
|
||||
border-left-color: hsla(210, 19%, 63%, .5);
|
||||
border-bottom-color: hsla(210, 19%, 63%, .5);
|
||||
background-image: linear-gradient(to bottom left, transparent 50%, hsl(210, 24%, 16%) 50%);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-container[position="top"] > .highlighter-nodeinfobar,
|
||||
.highlighter-nodeinfobar-container[position="overlap"] > .highlighter-nodeinfobar {
|
||||
box-shadow: 0 1px 0 hsla(0, 0%, 100%, .1) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-container[hide-arrow] > .highlighter-nodeinfobar {
|
||||
margin: 7px 0;
|
||||
}
|
||||
|
||||
#full-screen-warning-message {
|
||||
background-color: hsl(0,0%,15%);
|
||||
color: white;
|
||||
|
@ -3588,145 +3445,49 @@ html|*.highlighter-nodeinfobar-pseudo-classes {
|
|||
font-size: 120%;
|
||||
}
|
||||
|
||||
html|*#gcli-tooltip-frame,
|
||||
html|*#gcli-output-frame {
|
||||
padding: 0;
|
||||
border-width: 0;
|
||||
background-color: transparent;
|
||||
/* Developer toolbar */
|
||||
|
||||
#developer-toolbar {
|
||||
border-top: 1px solid hsla(210, 8%, 5%, .65);
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
#gcli-output,
|
||||
#gcli-tooltip {
|
||||
border-width: 0;
|
||||
background-color: transparent;
|
||||
-moz-appearance: none;
|
||||
margin-bottom: -2px;
|
||||
#developer-toolbar:-moz-locale-dir(ltr) {
|
||||
padding-left: 2px;
|
||||
padding-right: 16px; /* use -moz-padding-end when/if bug 631729 gets fixed */
|
||||
}
|
||||
|
||||
#developer-toolbar:-moz-locale-dir(rtl) {
|
||||
padding-left: 4px;
|
||||
padding-right: 18px; /* use -moz-padding-end when/if bug 631729 gets fixed */
|
||||
}
|
||||
|
||||
%include ../shared/devtools/responsivedesign.inc.css
|
||||
%include ../shared/devtools/highlighter.inc.css
|
||||
%include ../shared/devtools/commandline.inc.css
|
||||
|
||||
.gclitoolbar-input-node,
|
||||
.gclitoolbar-complete-node,
|
||||
.gclitoolbar-prompt {
|
||||
margin: 0;
|
||||
-moz-margin-end: 5px;
|
||||
-moz-box-align: center;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
padding-right: 4px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: @toolbarbuttonCornerRadius@;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node {
|
||||
padding-left: 20px;
|
||||
background-color: transparent;
|
||||
-moz-appearance: none;
|
||||
border-color: hsl(210,11%,10%);
|
||||
color: hsl(210,30%,85%);
|
||||
text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
|
||||
box-shadow: 0 1px 1px hsla(210,8%,5%,.3) inset,
|
||||
0 0 0 1px hsla(210,16%,76%,.1) inset,
|
||||
0 1px 0 hsla(210,16%,76%,.15);
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node > .textbox-input-box > html|*.textbox-input::-moz-selection {
|
||||
background-color: hsl(210,30%,85%);
|
||||
color: hsl(210,11%,16%);
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.gclitoolbar-complete-node {
|
||||
padding-left: 21px;
|
||||
background-color: transparent;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
.gclitoolbar-prompt {
|
||||
padding-left: 4px;
|
||||
padding-bottom: 2px;
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
color: hsl(210,30%,85%);
|
||||
background-color: hsl(210,11%,16%);
|
||||
}
|
||||
|
||||
.gclitoolbar-prompt-label,
|
||||
.gcli-in-incomplete,
|
||||
.gcli-in-error,
|
||||
.gcli-in-ontab,
|
||||
.gcli-in-todo,
|
||||
.gcli-in-closebrace,
|
||||
.gcli-in-param,
|
||||
.gcli-in-valid {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.gcli-in-incomplete {
|
||||
border-bottom: 2px dotted #999;
|
||||
}
|
||||
|
||||
.gcli-in-error {
|
||||
border-bottom: 2px dotted #F00;
|
||||
}
|
||||
|
||||
.gcli-in-ontab {
|
||||
color: hsl(210,0%,35%);
|
||||
}
|
||||
|
||||
.gcli-in-todo {
|
||||
color: hsl(210,50%,35%);
|
||||
}
|
||||
|
||||
.gcli-in-closebrace {
|
||||
color: hsl(0,0%,80%);
|
||||
}
|
||||
|
||||
/* Responsive Mode */
|
||||
|
||||
.browserContainer[responsivemode] {
|
||||
background: #222 url("chrome://browser/skin/devtools/responsive-background.png");
|
||||
padding: 0 20px 20px 20px;
|
||||
}
|
||||
|
||||
.browserStack[responsivemode] {
|
||||
box-shadow: 0 0 7px black;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar {
|
||||
background: transparent;
|
||||
margin: 10px 0;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar > menulist,
|
||||
.devtools-responsiveui-toolbar > toolbarbutton {
|
||||
min-width: 22px;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar:-moz-locale-dir(ltr) > *:first-child,
|
||||
.devtools-responsiveui-toolbar:-moz-locale-dir(rtl) > *:last-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-resizebar {
|
||||
width: 7px;
|
||||
height: 24px;
|
||||
cursor: ew-resize;
|
||||
transform: translate(12px, -12px);
|
||||
background-image: url("chrome://browser/skin/devtools/responsive-vertical-resizer.png");
|
||||
}
|
||||
|
||||
.devtools-responsiveui-resizehandle {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
cursor: se-resize;
|
||||
transform: translate(12px, 12px);
|
||||
background-image: url("chrome://browser/skin/devtools/responsive-se-resizer.png");
|
||||
}
|
||||
|
||||
/* Web Console */
|
||||
|
||||
.web-console-frame {
|
||||
|
@ -3872,150 +3633,34 @@ toolbar[mode="icons"] > *|* > .social-notification-container > .toolbarbutton-1[
|
|||
|
||||
/* === end of social toolbar provider menu === */
|
||||
|
||||
.chat-status-icon {
|
||||
max-height: 16px;
|
||||
max-width: 16px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.chat-toolbarbutton {
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.chat-toolbarbutton > .toolbarbutton-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.chat-close-button {
|
||||
list-style-image: url('chrome://browser/skin/social/chat-close.png');
|
||||
-moz-image-region: rect(0, 14px, 14px, 0);
|
||||
}
|
||||
|
||||
.chat-close-button:hover:active {
|
||||
-moz-image-region: rect(14px, 14px, 28px, 0);
|
||||
}
|
||||
|
||||
.chat-close-button:hover {
|
||||
-moz-image-region: rect(28px, 14px, 42px, 0);
|
||||
}
|
||||
|
||||
.chat-title {
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
text-shadow: none;
|
||||
cursor: inherit;
|
||||
}
|
||||
%include ../shared/social/chat.inc.css
|
||||
|
||||
.chat-titlebar {
|
||||
background-color: #d9d9d9;
|
||||
background-image: linear-gradient(rgba(255,255,255,.43), rgba(255,255,255,0));
|
||||
height: 20px;
|
||||
min-height: 20px;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
-moz-padding-start: 6px;
|
||||
border: none;
|
||||
border-bottom: 1px solid #ccc;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.chat-titlebar[minimized="true"] {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.chat-titlebar[activity] {
|
||||
background-image: radial-gradient(ellipse closest-side at center, rgb(255,255,255), rgba(255,255,255,0));
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 20px;
|
||||
background-position: 0 -10px;
|
||||
}
|
||||
|
||||
.chat-titlebar[selected] {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.chat-frame {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.chatbar-button {
|
||||
background-color: #d9d9d9;
|
||||
list-style-image: url("chrome://browser/skin/social/social.png");
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
height: 21px;
|
||||
width: 21px;
|
||||
border-top: 1px solid #ccc;
|
||||
-moz-border-end: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.chatbar-button > .toolbarbutton-icon {
|
||||
opacity: .6;
|
||||
}
|
||||
.chatbar-button:hover > .toolbarbutton-icon,
|
||||
.chatbar-button[open="true"] > .toolbarbutton-icon {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.chatbar-button[open="true"] {
|
||||
background-color: #f0f0f0;
|
||||
box-shadow: inset 0 2px 5px rgba(0,0,0,0.6), 0 1px rgba(255,255,255,0.2);
|
||||
}
|
||||
|
||||
.chatbar-button > .toolbarbutton-text,
|
||||
.chatbar-button > .toolbarbutton-menu-dropmarker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.chatbar-button[activity] {
|
||||
background-image: radial-gradient(circle farthest-corner at center 2px, rgb(254,254,255) 3%, rgba(210,235,255,0.9) 12%, rgba(148,205,253,0.6) 30%, rgba(148,205,253,0.2) 70%);
|
||||
}
|
||||
|
||||
.chatbar-button > menupopup > menuitem[activity] {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.chatbar-button > menupopup > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon {
|
||||
width: auto;
|
||||
height: auto;
|
||||
max-height: 16px;
|
||||
max-width: 16px;
|
||||
}
|
||||
|
||||
.chatbar-innerbox {
|
||||
background: transparent;
|
||||
margin: -285px 0 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
chatbar {
|
||||
-moz-margin-end: 20px;
|
||||
}
|
||||
|
||||
chatbox {
|
||||
height: 285px;
|
||||
width: 260px;
|
||||
-moz-margin-start: 4px;
|
||||
background-color: white;
|
||||
border: 1px solid #ccc;
|
||||
border-bottom: none;
|
||||
border-top-left-radius: @toolbarbuttonCornerRadius@;
|
||||
border-top-right-radius: @toolbarbuttonCornerRadius@;
|
||||
}
|
||||
|
||||
chatbox[minimized="true"] {
|
||||
width: 160px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
panel[type="arrow"][popupid="click-to-play-plugins"] > .panel-arrowcontainer > .panel-arrowbox > .panel-arrow[side="top"],
|
||||
panel[type="arrow"][popupid="click-to-play-plugins"] > .panel-arrowcontainer > .panel-arrowbox > .panel-arrow[side="bottom"] {
|
||||
list-style-image: url("chrome://global/skin/arrow/panelarrow-light-vertical.png");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%include ../../../toolkit/themes/pinstripe/global/shared.inc
|
||||
%include ../browserShared.inc
|
||||
%include ../shared/browser.inc
|
||||
|
||||
%define hudButton -moz-appearance: none; color: #434343; border-radius: 4px; border: 1px solid #b5b5b5; background: -moz-linear-gradient(#fff, #f2f2f2); box-shadow: inset 0 1px rgba(255,255,255,.8), inset 0 0 1px rgba(255,255, 255,.25), 0 1px rgba(255,255,255,.3); background-clip: padding-box; background-origin: padding-box; padding: 2px 6px;
|
||||
%define hudButtonPressed box-shadow: inset 0 1px 4px -3px #000, 0 1px rgba(255,255,255,.3);
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
%if 0
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
%endif
|
||||
|
||||
html|*#gcli-tooltip-frame,
|
||||
html|*#gcli-output-frame {
|
||||
padding: 0;
|
||||
border-width: 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#gcli-output,
|
||||
#gcli-tooltip {
|
||||
border-width: 0;
|
||||
background-color: transparent;
|
||||
-moz-appearance: none;
|
||||
margin-bottom: -2px;
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node,
|
||||
.gclitoolbar-complete-node,
|
||||
.gclitoolbar-prompt {
|
||||
margin: 0;
|
||||
-moz-margin-end: 5px;
|
||||
-moz-box-align: center;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
padding-right: 4px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 3px;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node {
|
||||
padding-left: 20px;
|
||||
background-color: transparent;
|
||||
-moz-appearance: none;
|
||||
border-color: hsl(210,24%,10%);
|
||||
color: hsl(210,30%,85%);
|
||||
text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
|
||||
box-shadow: inset 0 1px 0 hsla(211,68%,6%,.05),
|
||||
0 0 0 1px hsla(210,40%,83%,.1);
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node > .textbox-input-box > html|*.textbox-input::-moz-selection {
|
||||
background-color: hsl(210,30%,85%);
|
||||
color: hsl(210,24%,16%);
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.gclitoolbar-complete-node {
|
||||
padding-left: 21px;
|
||||
background-color: transparent;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
.gclitoolbar-prompt {
|
||||
padding-left: 4px;
|
||||
padding-bottom: 2px;
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
color: hsl(210,30%,85%);
|
||||
background-color: hsl(210,24%,16%);
|
||||
}
|
||||
|
||||
.gclitoolbar-prompt-label,
|
||||
.gcli-in-incomplete,
|
||||
.gcli-in-error,
|
||||
.gcli-in-ontab,
|
||||
.gcli-in-todo,
|
||||
.gcli-in-closebrace,
|
||||
.gcli-in-param,
|
||||
.gcli-in-valid {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.gcli-in-incomplete {
|
||||
border-bottom: 2px dotted #999;
|
||||
}
|
||||
|
||||
.gcli-in-error {
|
||||
border-bottom: 2px dotted #F00;
|
||||
}
|
||||
|
||||
.gcli-in-ontab {
|
||||
color: hsl(210,0%,35%);
|
||||
}
|
||||
|
||||
.gcli-in-todo {
|
||||
color: hsl(210,50%,35%);
|
||||
}
|
||||
|
||||
.gcli-in-closebrace {
|
||||
color: hsl(0,0%,80%);
|
||||
}
|
|
@ -0,0 +1,131 @@
|
|||
%if 0
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
%endif
|
||||
|
||||
/* Highlighter */
|
||||
|
||||
.highlighter-outline {
|
||||
box-shadow: 0 0 0 1px black;
|
||||
outline: 1px dashed white;
|
||||
outline-offset: -1px;
|
||||
}
|
||||
|
||||
.highlighter-outline[locked] {
|
||||
box-shadow: 0 0 0 1px rgba(0,0,0,0.3);
|
||||
outline-color: rgba(255,255,255,0.7);
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar */
|
||||
|
||||
.highlighter-nodeinfobar {
|
||||
color: hsl(200, 100%, 65%);
|
||||
border: 1px solid hsla(210, 19%, 63%, .5);
|
||||
border-radius: 3px;
|
||||
background: linear-gradient(hsl(209, 18%, 30%), hsl(210, 24%, 16%)) no-repeat padding-box;
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - text */
|
||||
|
||||
.highlighter-nodeinfobar-text {
|
||||
/* 100% - size of the buttons and margins */
|
||||
max-width: calc(100% - 2 * (26px + 6px));
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-tagname {
|
||||
color: white;
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-id {
|
||||
color: hsl(90, 79%, 52%);
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-pseudo-classes {
|
||||
color: hsl(20, 100%, 70%);
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - buttons */
|
||||
|
||||
.highlighter-nodeinfobar-button {
|
||||
-moz-appearance: none;
|
||||
border: 0 solid hsla(210,8%,5%,.45);
|
||||
padding: 0;
|
||||
width: 26px;
|
||||
min-height: 26px;
|
||||
%ifndef XP_LINUX
|
||||
background-color: transparent;
|
||||
%endif
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton {
|
||||
-moz-border-end-width: 1px;
|
||||
box-shadow: 1px 0 0 hsla(210,16%,76%,.15), -1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
-moz-margin-end: 6px;
|
||||
list-style-image: url("chrome://browser/skin/devtools/inspect-button.png");
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton:-moz-locale-dir(rtl) {
|
||||
box-shadow: -1px 0 0 hsla(210,16%,76%,.15), 1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton:active:hover,
|
||||
.highlighter-nodeinfobar-container:not([locked]) > .highlighter-nodeinfobar > .highlighter-nodeinfobar-inspectbutton {
|
||||
-moz-image-region: rect(0px 32px 16px 16px);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu {
|
||||
-moz-border-start-width: 1px;
|
||||
box-shadow: -1px 0 0 hsla(210,16%,76%,.15), 1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
-moz-margin-start: 6px;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu:-moz-locale-dir(rtl) {
|
||||
box-shadow: 1px 0 0 hsla(210,16%,76%,.15), -1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu > .toolbarbutton-menu-dropmarker {
|
||||
-moz-appearance: none !important;
|
||||
list-style-image: url("chrome://browser/skin/devtools/dropmarker.png");
|
||||
-moz-box-align: center;
|
||||
-moz-margin-start: -1px;
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - box & arrow */
|
||||
|
||||
.highlighter-nodeinfobar-arrow {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
-moz-margin-start: calc(50% - 7px);
|
||||
transform: rotate(-45deg);
|
||||
border: 1px solid transparent;
|
||||
background-clip: padding-box;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-arrow-top {
|
||||
margin-bottom: -8px;
|
||||
margin-top: 8px;
|
||||
border-right-color: hsla(210, 19%, 63%, .5);
|
||||
border-top-color: hsla(210, 19%, 63%, .5);
|
||||
background-image: linear-gradient(to top right, transparent 50%, hsl(209, 18%, 30%) 50%);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-arrow-bottom {
|
||||
margin-top: -8px;
|
||||
margin-bottom: 8px;
|
||||
border-left-color: hsla(210, 19%, 63%, .5);
|
||||
border-bottom-color: hsla(210, 19%, 63%, .5);
|
||||
background-image: linear-gradient(to bottom left, transparent 50%, hsl(210, 24%, 16%) 50%);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-container[position="top"] > .highlighter-nodeinfobar,
|
||||
.highlighter-nodeinfobar-container[position="overlap"] > .highlighter-nodeinfobar {
|
||||
box-shadow: 0 1px 0 hsla(0, 0%, 100%, .1) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-container[hide-arrow] > .highlighter-nodeinfobar {
|
||||
margin: 7px 0;
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
%if 0
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
%endif
|
||||
|
||||
/* Responsive Mode */
|
||||
|
||||
.browserContainer[responsivemode] {
|
||||
background: #222 url("chrome://browser/skin/devtools/responsive-background.png");
|
||||
padding: 0 20px 20px 20px;
|
||||
}
|
||||
|
||||
.browserStack[responsivemode] {
|
||||
box-shadow: 0 0 7px black;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar {
|
||||
background: transparent;
|
||||
margin: 10px 0;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
%ifdef XP_WIN
|
||||
border-bottom-width: 0;
|
||||
%endif
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar > menulist,
|
||||
.devtools-responsiveui-toolbar > toolbarbutton {
|
||||
min-width: 22px;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar:-moz-locale-dir(ltr) > *:first-child,
|
||||
.devtools-responsiveui-toolbar:-moz-locale-dir(rtl) > *:last-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-resizebar {
|
||||
width: 7px;
|
||||
height: 24px;
|
||||
cursor: ew-resize;
|
||||
transform: translate(12px, -12px);
|
||||
background-image: url("chrome://browser/skin/devtools/responsive-vertical-resizer.png");
|
||||
}
|
||||
|
||||
.devtools-responsiveui-resizehandle {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
cursor: se-resize;
|
||||
transform: translate(12px, 12px);
|
||||
background-image: url("chrome://browser/skin/devtools/responsive-se-resizer.png");
|
||||
}
|
|
@ -0,0 +1,137 @@
|
|||
%if 0
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
%endif
|
||||
|
||||
.chat-status-icon {
|
||||
max-height: 16px;
|
||||
max-width: 16px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.chat-toolbarbutton {
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.chat-toolbarbutton > .toolbarbutton-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.chat-close-button {
|
||||
list-style-image: url('chrome://browser/skin/social/chat-close.png');
|
||||
-moz-image-region: rect(0, 14px, 14px, 0);
|
||||
}
|
||||
|
||||
.chat-close-button:hover:active {
|
||||
-moz-image-region: rect(14px, 14px, 28px, 0);
|
||||
}
|
||||
|
||||
.chat-close-button:hover {
|
||||
-moz-image-region: rect(28px, 14px, 42px, 0);
|
||||
}
|
||||
|
||||
.chat-title {
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
text-shadow: none;
|
||||
cursor: inherit;
|
||||
}
|
||||
|
||||
.chat-titlebar {
|
||||
height: 20px;
|
||||
min-height: 20px;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
-moz-padding-start: 6px;
|
||||
border: none;
|
||||
border-bottom: 1px solid #ccc;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.chat-titlebar[minimized="true"] {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.chat-titlebar[activity] {
|
||||
background-image: radial-gradient(ellipse closest-side at center, rgb(255,255,255), rgba(255,255,255,0));
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 20px;
|
||||
background-position: 0 -10px;
|
||||
}
|
||||
|
||||
.chat-frame {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.chatbar-button {
|
||||
/* XXX get a real image for this */
|
||||
list-style-image: url("chrome://browser/skin/social/social.png");
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
height: 21px;
|
||||
width: 21px;
|
||||
border-top: 1px solid #ccc;
|
||||
-moz-border-end: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.chatbar-button > menupopup > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon {
|
||||
width: auto;
|
||||
height: auto;
|
||||
max-height: 16px;
|
||||
max-width: 16px;
|
||||
}
|
||||
|
||||
.chatbar-button > .toolbarbutton-icon {
|
||||
opacity: .6;
|
||||
}
|
||||
|
||||
.chatbar-button:hover > .toolbarbutton-icon,
|
||||
.chatbar-button[open="true"] > .toolbarbutton-icon {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.chatbar-button[open="true"] {
|
||||
box-shadow: inset 0 2px 5px rgba(0,0,0,0.6), 0 1px rgba(255,255,255,0.2);
|
||||
}
|
||||
|
||||
.chatbar-button > .toolbarbutton-text,
|
||||
.chatbar-button > .toolbarbutton-menu-dropmarker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.chatbar-button > menupopup > menuitem[activity] {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.chatbar-innerbox {
|
||||
background: transparent;
|
||||
margin: -285px 0 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
chatbar {
|
||||
-moz-margin-end: 20px;
|
||||
}
|
||||
|
||||
chatbox {
|
||||
height: 285px;
|
||||
width: 260px;
|
||||
-moz-margin-start: 4px;
|
||||
background-color: white;
|
||||
border: 1px solid #ccc;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
chatbox[minimized="true"] {
|
||||
width: 160px;
|
||||
height: 20px;
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
|
||||
@namespace html url("http://www.w3.org/1999/xhtml");
|
||||
|
||||
%include ../browserShared.inc
|
||||
%include ../shared/browser.inc
|
||||
%filter substitution
|
||||
%define toolbarHighlight rgba(255,255,255,.5)
|
||||
%define selectedTabHighlight rgba(255,255,255,.7)
|
||||
|
@ -2548,136 +2548,6 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
|
|||
margin-left: 1em;
|
||||
}
|
||||
|
||||
/* Highlighter */
|
||||
|
||||
.highlighter-outline {
|
||||
box-shadow: 0 0 0 1px black;
|
||||
outline: 1px dashed white;
|
||||
outline-offset: -1px;
|
||||
}
|
||||
|
||||
.highlighter-outline[locked] {
|
||||
box-shadow: 0 0 0 1px rgba(0,0,0,0.3);
|
||||
outline-color: rgba(255,255,255,0.7);
|
||||
}
|
||||
|
||||
/* Developer toolbar */
|
||||
|
||||
#developer-toolbar {
|
||||
border-top: 1px solid hsla(211,68%,6%,.65) !important;
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar */
|
||||
|
||||
.highlighter-nodeinfobar {
|
||||
color: hsl(200, 100%, 65%);
|
||||
border: 1px solid hsla(210, 19%, 63%, .5);
|
||||
border-radius: 3px;
|
||||
background: linear-gradient(hsl(209, 18%, 30%), hsl(210, 24%, 16%)) no-repeat padding-box;
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - text */
|
||||
|
||||
.highlighter-nodeinfobar-text {
|
||||
/* 100% - size of the buttons and margins */
|
||||
max-width: calc(100% - 2 * (26px + 6px));
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-tagname {
|
||||
color: white;
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-id {
|
||||
color: hsl(90, 79%, 52%);
|
||||
}
|
||||
|
||||
html|*.highlighter-nodeinfobar-pseudo-classes {
|
||||
color: hsl(20, 100%, 70%);
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - buttons */
|
||||
|
||||
.highlighter-nodeinfobar-button {
|
||||
-moz-appearance: none;
|
||||
border: 0 solid hsla(210,8%,5%,.45);
|
||||
padding: 0;
|
||||
width: 26px;
|
||||
min-height: 26px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton {
|
||||
-moz-border-end-width: 1px;
|
||||
box-shadow: 1px 0 0 hsla(210,16%,76%,.15), -1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
-moz-margin-end: 6px;
|
||||
list-style-image: url("chrome://browser/skin/devtools/inspect-button.png");
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton:-moz-locale-dir(rtl) {
|
||||
box-shadow: -1px 0 0 hsla(210,16%,76%,.15), 1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-inspectbutton:active:hover,
|
||||
.highlighter-nodeinfobar-container:not([locked]) > .highlighter-nodeinfobar > .highlighter-nodeinfobar-inspectbutton {
|
||||
-moz-image-region: rect(0px 32px 16px 16px);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu {
|
||||
-moz-border-start-width: 1px;
|
||||
box-shadow: -1px 0 0 hsla(210,16%,76%,.15), 1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
-moz-margin-start: 6px;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu:-moz-locale-dir(rtl) {
|
||||
box-shadow: 1px 0 0 hsla(210,16%,76%,.15), -1px 0 0 hsla(210,16%,76%,.15) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-menu > .toolbarbutton-menu-dropmarker {
|
||||
-moz-appearance: none !important;
|
||||
list-style-image: url("chrome://browser/skin/devtools/dropmarker.png");
|
||||
-moz-box-align: center;
|
||||
-moz-margin-start: -1px;
|
||||
}
|
||||
|
||||
/* Highlighter - Node Infobar - box & arrow */
|
||||
|
||||
.highlighter-nodeinfobar-arrow {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
-moz-margin-start: calc(50% - 7px);
|
||||
transform: rotate(-45deg);
|
||||
border: 1px solid transparent;
|
||||
background-clip: padding-box;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-arrow-top {
|
||||
margin-bottom: -8px;
|
||||
margin-top: 8px;
|
||||
border-right-color: hsla(210, 19%, 63%, .5);
|
||||
border-top-color: hsla(210, 19%, 63%, .5);
|
||||
background-image: linear-gradient(to top right, transparent 50%, hsl(209, 18%, 30%) 50%);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-arrow-bottom {
|
||||
margin-top: -8px;
|
||||
margin-bottom: 8px;
|
||||
border-left-color: hsla(210, 19%, 63%, .5);
|
||||
border-bottom-color: hsla(210, 19%, 63%, .5);
|
||||
background-image: linear-gradient(to bottom left, transparent 50%, hsl(210, 24%, 16%) 50%);
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-container[position="top"] > .highlighter-nodeinfobar,
|
||||
.highlighter-nodeinfobar-container[position="overlap"] > .highlighter-nodeinfobar {
|
||||
box-shadow: 0 1px 0 hsla(0, 0%, 100%, .1) inset;
|
||||
}
|
||||
|
||||
.highlighter-nodeinfobar-container[hide-arrow] > .highlighter-nodeinfobar {
|
||||
margin: 7px 0;
|
||||
}
|
||||
|
||||
#full-screen-warning-message {
|
||||
background-color: hsl(0,0%,15%);
|
||||
color: white;
|
||||
|
@ -2704,145 +2574,22 @@ html|*.highlighter-nodeinfobar-pseudo-classes {
|
|||
font-size: 120%;
|
||||
}
|
||||
|
||||
html|*#gcli-tooltip-frame,
|
||||
html|*#gcli-output-frame {
|
||||
padding: 0;
|
||||
border-width: 0;
|
||||
background-color: transparent;
|
||||
/* Developer toolbar */
|
||||
|
||||
#developer-toolbar {
|
||||
border-top: 1px solid hsla(211,68%,6%,.65) !important;
|
||||
}
|
||||
|
||||
#gcli-output,
|
||||
#gcli-tooltip {
|
||||
border-width: 0;
|
||||
background-color: transparent;
|
||||
-moz-appearance: none;
|
||||
margin-bottom: -2px;
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node,
|
||||
.gclitoolbar-complete-node,
|
||||
.gclitoolbar-prompt {
|
||||
margin: 0;
|
||||
-moz-margin-end: 5px;
|
||||
-moz-box-align: center;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
padding-right: 4px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 3px;
|
||||
text-shadow: none;
|
||||
}
|
||||
%include ../shared/devtools/responsivedesign.inc.css
|
||||
%include ../shared/devtools/highlighter.inc.css
|
||||
%include ../shared/devtools/commandline.inc.css
|
||||
|
||||
.gclitoolbar-input-node {
|
||||
padding-left: 20px;
|
||||
background-color: transparent;
|
||||
-moz-appearance: none;
|
||||
border-color: hsl(210,24%,10%);
|
||||
color: hsl(210,30%,85%);
|
||||
text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
|
||||
box-shadow: inset 0 1px 0 hsla(211,68%,6%,.05),
|
||||
0 0 0 1px hsla(210,40%,83%,.1);
|
||||
}
|
||||
|
||||
.gclitoolbar-input-node > .textbox-input-box > html|*.textbox-input::-moz-selection {
|
||||
background-color: hsl(210,30%,85%);
|
||||
color: hsl(210,24%,16%);
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.gclitoolbar-complete-node {
|
||||
padding-left: 21px;
|
||||
background-color: transparent;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
.gclitoolbar-prompt {
|
||||
padding-left: 4px;
|
||||
padding-bottom: 2px;
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
color: hsl(210,30%,85%);
|
||||
background-color: hsl(210,24%,16%);
|
||||
}
|
||||
|
||||
.gclitoolbar-prompt-label,
|
||||
.gcli-in-incomplete,
|
||||
.gcli-in-error,
|
||||
.gcli-in-ontab,
|
||||
.gcli-in-todo,
|
||||
.gcli-in-closebrace,
|
||||
.gcli-in-param,
|
||||
.gcli-in-valid {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.gcli-in-incomplete {
|
||||
border-bottom: 2px dotted #999;
|
||||
}
|
||||
|
||||
.gcli-in-error {
|
||||
border-bottom: 2px dotted #F00;
|
||||
}
|
||||
|
||||
.gcli-in-ontab {
|
||||
color: hsl(210,0%,35%);
|
||||
}
|
||||
|
||||
.gcli-in-todo {
|
||||
color: hsl(210,50%,35%);
|
||||
}
|
||||
|
||||
.gcli-in-closebrace {
|
||||
color: hsl(0,0%,80%);
|
||||
}
|
||||
|
||||
/* Responsive Mode */
|
||||
|
||||
.browserContainer[responsivemode] {
|
||||
background: #222 url("chrome://browser/skin/devtools/responsive-background.png");
|
||||
padding: 0 20px 20px 20px;
|
||||
}
|
||||
|
||||
.browserStack[responsivemode] {
|
||||
box-shadow: 0 0 7px black;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar {
|
||||
background: transparent;
|
||||
margin: 10px 0;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar > menulist,
|
||||
.devtools-responsiveui-toolbar > toolbarbutton {
|
||||
min-width: 22px;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-toolbar:-moz-locale-dir(ltr) > *:first-child,
|
||||
.devtools-responsiveui-toolbar:-moz-locale-dir(rtl) > *:last-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.devtools-responsiveui-resizebar {
|
||||
width: 7px;
|
||||
height: 24px;
|
||||
cursor: ew-resize;
|
||||
transform: translate(12px, -12px);
|
||||
background-image: url("chrome://browser/skin/devtools/responsive-vertical-resizer.png");
|
||||
}
|
||||
|
||||
.devtools-responsiveui-resizehandle {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
cursor: se-resize;
|
||||
transform: translate(12px, 12px);
|
||||
background-image: url("chrome://browser/skin/devtools/responsive-se-resizer.png");
|
||||
}
|
||||
|
||||
/* Web Console */
|
||||
|
||||
.web-console-frame {
|
||||
|
@ -3011,153 +2758,39 @@ html|*#gcli-output-frame {
|
|||
border-radius: inherit;
|
||||
}
|
||||
|
||||
.chat-status-icon {
|
||||
max-height: 16px;
|
||||
max-width: 16px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.chat-toolbarbutton {
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.chat-toolbarbutton > .toolbarbutton-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.chat-close-button {
|
||||
list-style-image: url('chrome://browser/skin/social/chat-close.png');
|
||||
-moz-image-region: rect(0, 14px, 14px, 0);
|
||||
}
|
||||
|
||||
.chat-close-button:hover:active {
|
||||
-moz-image-region: rect(14px, 14px, 28px, 0);
|
||||
}
|
||||
|
||||
.chat-close-button:hover {
|
||||
-moz-image-region: rect(28px, 14px, 42px, 0);
|
||||
}
|
||||
|
||||
.chat-title {
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
text-shadow: none;
|
||||
cursor: inherit;
|
||||
}
|
||||
%include ../shared/social/chat.inc.css
|
||||
|
||||
.chat-titlebar {
|
||||
background-color: #c4cfde;
|
||||
background-image: linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
|
||||
height: 20px;
|
||||
min-height: 20px;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
-moz-padding-start: 6px;
|
||||
border: none;
|
||||
border-bottom: 1px solid #ccc;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.chat-titlebar[minimized="true"] {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.chat-titlebar[selected] {
|
||||
background-color: #dae3f0;
|
||||
}
|
||||
|
||||
.chat-titlebar[activity] {
|
||||
background-image: radial-gradient(ellipse closest-side at center, rgb(255,255,255), rgba(255,255,255,0));
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 20px;
|
||||
background-position: 0 -10px;
|
||||
}
|
||||
|
||||
.chat-frame {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.chatbar-button {
|
||||
/* XXX get a real image for this */
|
||||
-moz-appearance: none;
|
||||
list-style-image: url("chrome://browser/skin/social/social.png");
|
||||
background-color: #c4cfde;
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
height: 21px;
|
||||
width: 21px;
|
||||
border-top: 1px solid #ccc;
|
||||
-moz-border-end: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.chatbar-button > menupopup > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon {
|
||||
width: auto;
|
||||
height: auto;
|
||||
max-height: 16px;
|
||||
max-width: 16px;
|
||||
}
|
||||
|
||||
.chatbar-button > .toolbarbutton-icon {
|
||||
opacity: .6;
|
||||
-moz-margin-end: 0;
|
||||
}
|
||||
.chatbar-button:hover > .toolbarbutton-icon,
|
||||
.chatbar-button[open="true"] > .toolbarbutton-icon {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.chatbar-button[open="true"] {
|
||||
background-color: #dae3f0;
|
||||
box-shadow: inset 0 2px 5px rgba(0,0,0,0.6), 0 1px rgba(255,255,255,0.2);
|
||||
}
|
||||
|
||||
.chatbar-button > .toolbarbutton-text,
|
||||
.chatbar-button > .toolbarbutton-menu-dropmarker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.chatbar-button[activity]:not([open="true"]) {
|
||||
background-image: radial-gradient(circle farthest-corner at center 3px, rgb(255,255,255) 3%, rgba(186,221,251,0.75) 40%, rgba(127,179,255,0.5) 80%, rgba(127,179,255,0.25));
|
||||
}
|
||||
|
||||
.chatbar-button > menupopup > menuitem[activity] {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.chatbar-innerbox {
|
||||
background: transparent;
|
||||
margin: -285px 0 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
chatbar {
|
||||
-moz-margin-end: 20px;
|
||||
}
|
||||
|
||||
chatbox {
|
||||
height: 285px;
|
||||
width: 260px;
|
||||
-moz-margin-start: 4px;
|
||||
background-color: white;
|
||||
border: 1px solid #ccc;
|
||||
border-bottom: none;
|
||||
border-top-left-radius: 2.5px;
|
||||
border-top-right-radius: 2.5px;
|
||||
}
|
||||
|
||||
chatbox[minimized="true"] {
|
||||
width: 160px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.click-to-play-plugins-notification-content {
|
||||
margin: -10px;
|
||||
border-radius: 4px;
|
||||
|
|
Загрузка…
Ссылка в новой задаче