This commit is contained in:
Ryan VanderMeulen 2015-06-03 15:52:14 -04:00
Родитель 60a5912cdf 6cfa30710e
Коммит c6c207b13a
34 изменённых файлов: 681 добавлений и 668 удалений

Просмотреть файл

@ -636,22 +636,6 @@ window[chromehidden~="toolbar"] toolbar:not(#nav-bar):not(#TabsToolbar):not(#pri
background-image: -moz-element(#historySwipeAnimationNextPageSnapshot);
}
/* Identity UI */
#identity-popup-content-box:not(.chromeUI) > #identity-popup-brandName,
#identity-popup-content-box:not(.chromeUI) > #identity-popup-chromeLabel,
#identity-popup-content-box.chromeUI > .identity-popup-label:not(#identity-popup-brandName):not(#identity-popup-chromeLabel),
#identity-popup-content-box.chromeUI > .identity-popup-description,
#identity-popup.chromeUI > #identity-popup-button-container,
#identity-popup-content-box.unknownIdentity > #identity-popup-connectedToLabel ,
#identity-popup-content-box.unknownIdentity > #identity-popup-runByLabel ,
#identity-popup-content-box.unknownIdentity > #identity-popup-content-host ,
#identity-popup-content-box.unknownIdentity > #identity-popup-content-owner ,
#identity-popup-content-box.verifiedIdentity > #identity-popup-connectedToLabel2 ,
#identity-popup-content-box.verifiedDomain > #identity-popup-connectedToLabel2 ,
#identity-popup-content-box.verifiedDomain > #identity-popup-runByLabel {
display: none;
}
/* Full Screen UI */
#fullscr-toggler {

Просмотреть файл

@ -6685,14 +6685,6 @@ var gIdentityHandler = {
this._permissionList = document.getElementById("identity-popup-permission-list");
},
/**
* Handler for commands on the help button in the "identity-popup" panel.
*/
handleHelpCommand : function(event) {
openHelpLink("secure-connection");
this._identityPopup.hidePopup();
},
/**
* Handler for mouseclicks on the "More Information" button in the
* "identity-popup" panel.
@ -7051,8 +7043,6 @@ var gIdentityHandler = {
},
onPopupShown : function(event) {
document.getElementById('identity-popup-more-info-button').focus();
this._identityPopup.addEventListener("blur", this, true);
this._identityPopup.addEventListener("popuphidden", this);
},

Просмотреть файл

@ -9,6 +9,7 @@
<?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/places/places.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/devtools/common.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/controlcenter/panel.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/customizableui/panelUIOverlay.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/browser-lightweightTheme.css" type="text/css"?>
@ -406,67 +407,6 @@
<menupopup id="placesContext"/>
<!-- Popup for site identity information -->
<panel id="identity-popup"
type="arrow"
hidden="true"
noautofocus="true"
onpopupshown="if (event.target == this)
gIdentityHandler.onPopupShown(event);"
orient="vertical"
level="top">
<hbox id="identity-popup-container" align="top">
<image id="identity-popup-icon"/>
<vbox id="identity-popup-content-box">
<label id="identity-popup-brandName"
class="identity-popup-label"
value="&brandFullName;"/>
<label id="identity-popup-chromeLabel"
class="identity-popup-label"/>
<label id="identity-popup-connectedToLabel"
class="identity-popup-label"
value="&identity.connectedTo;"/>
<label id="identity-popup-connectedToLabel2"
class="identity-popup-label"
value="&identity.unverifiedsite2;"/>
<description id="identity-popup-content-host"
class="identity-popup-description"/>
<label id="identity-popup-runByLabel"
class="identity-popup-label"
value="&identity.runBy;"/>
<description id="identity-popup-content-owner"
class="identity-popup-description"/>
<description id="identity-popup-content-supplemental"
class="identity-popup-description"/>
<description id="identity-popup-content-verifier"
class="identity-popup-description"/>
<hbox id="identity-popup-encryption" flex="1">
<vbox>
<image id="identity-popup-encryption-icon"/>
</vbox>
<description id="identity-popup-encryption-label" flex="1"
class="identity-popup-description"/>
</hbox>
<vbox id="identity-popup-permissions">
<separator class="thin"/>
<label class="identity-popup-label header"
value="&identity.permissions;"/>
<vbox id="identity-popup-permission-list" class="indent"/>
</vbox>
</vbox>
</hbox>
<!-- Footer button to open security page info -->
<hbox id="identity-popup-button-container" align="center">
<button id="identity-popup-help-icon"
oncommand="gIdentityHandler.handleHelpCommand(event);"
tooltiptext="&identity.help.tooltip;"/>
<spacer flex="1"/>
<button id="identity-popup-more-info-button"
label="&identity.moreInfoLinkText;"
oncommand="gIdentityHandler.handleMoreInfoClick(event);"/>
</hbox>
</panel>
<panel id="ctrlTab-panel" class="KUI-panel" hidden="true" norestorefocus="true" level="top">
<hbox>
<button class="ctrlTab-preview" flex="1"/>
@ -549,6 +489,7 @@
#include popup-notifications.inc
#include ../../components/customizableui/content/panelUI.inc.xul
#include ../../components/controlcenter/content/panel.inc.xul
<hbox id="downloads-animation-container" mousethrough="always">
<vbox id="downloads-notification-anchor">

Просмотреть файл

@ -0,0 +1,59 @@
<!-- 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/. -->
<panel id="identity-popup"
type="arrow"
hidden="true"
noautofocus="true"
onpopupshown="if (event.target == this)
gIdentityHandler.onPopupShown(event);"
orient="vertical"
level="top">
<hbox id="identity-popup-container" align="top">
<image id="identity-popup-icon"/>
<vbox id="identity-popup-content-box">
<label id="identity-popup-brandName"
class="identity-popup-label"
value="&brandFullName;"/>
<label id="identity-popup-chromeLabel"
class="identity-popup-label"/>
<label id="identity-popup-connectedToLabel"
class="identity-popup-label"
value="&identity.connectedTo;"/>
<label id="identity-popup-connectedToLabel2"
class="identity-popup-label"
value="&identity.unverifiedsite2;"/>
<description id="identity-popup-content-host"
class="identity-popup-description"/>
<label id="identity-popup-runByLabel"
class="identity-popup-label"
value="&identity.runBy;"/>
<description id="identity-popup-content-owner"
class="identity-popup-description"/>
<description id="identity-popup-content-supplemental"
class="identity-popup-description"/>
<description id="identity-popup-content-verifier"
class="identity-popup-description"/>
<hbox id="identity-popup-encryption" flex="1">
<vbox>
<image id="identity-popup-encryption-icon"/>
</vbox>
<description id="identity-popup-encryption-label" flex="1"
class="identity-popup-description"/>
</hbox>
<vbox id="identity-popup-permissions">
<separator class="thin"/>
<label class="identity-popup-label header"
value="&identity.permissions;"/>
<vbox id="identity-popup-permission-list" class="indent"/>
</vbox>
</vbox>
</hbox>
<!-- Footer button to open security page info -->
<hbox id="identity-popup-button-container" align="center">
<button id="identity-popup-more-info-button" flex="1"
label="&identity.moreInfoLinkText2;"
oncommand="gIdentityHandler.handleMoreInfoClick(event);"/>
</hbox>
</panel>

Просмотреть файл

@ -54,3 +54,6 @@ if CONFIG['MOZ_SAFE_BROWSING']:
with Files('safebrowsing/*'):
BUG_COMPONENT = ('Toolkit', 'Phishing Protection')
with Files('controlcenter/**'):
BUG_COMPONENT = ('Firefox', 'General')

Просмотреть файл

@ -12,6 +12,7 @@ support-files =
helper_disable_cache.js
doc_theme.css
doc_viewsource.html
browser_toolbox_options_enable_serviceworkers_testing_frame_script.js
browser_toolbox_options_enable_serviceworkers_testing.html
serviceworker.js
@ -66,7 +67,6 @@ skip-if = os == "mac" && os_version == "10.8" || os == "win" && os_version == "5
[browser_toolbox_custom_host.js]
[browser_toolbox_theme_registration.js]
[browser_toolbox_options_enable_serviceworkers_testing.js]
skip-if = true # Bug 1153407 - this test breaks subsequent tests and is not e10s compatible
[browser_toolbox_selected_tool_unavailable.js]
# We want this test to run for mochitest-dt as well, so we include it here:

Просмотреть файл

@ -3,56 +3,8 @@
<head>
<title>browser_toolbox_options_enable_serviceworkers_testing.html</title>
<meta charset="UTF-8">
<style>
div {
width: 260px;
height: 24px;
border: 1px solid #000;
margin-top: 10px;
}
h1 {
font-size: 20px
}
</style>
<script type="application/javascript;version=1.8">
function log(msg) {
var output = document.getElementById("output");
output.innerHTML = msg;
}
navigator.serviceWorker.register("serviceworker.js").then(
swr => {
var msg = "";
var button = document.getElementById("button");
if (swr.installing) {
msg += "Installing worker/";
}
if (swr.waiting) {
msg += "Waiting worker/";
}
if (swr.active) {
msg += "Active worker/";
}
log(msg);
button.click();
},
error => {
var button = document.getElementById("button");
if (error.name === "SecurityError") {
log("SecurityError");
}
button.click();
});
</script>
</head>
<body>
<h1>Test in page</h1>
<input id="button"
type="button"
value="Worker clicks here"/>
<br>
<div id="output">No output</div>
<h1>SW-test</h1>
</body>
</html>

Просмотреть файл

@ -4,13 +4,19 @@
// Test that enabling Service Workers testing option enables the
// mServiceWorkersTestingEnabled attribute added to nsPIDOMWindow.
const COMMON_FRAME_SCRIPT_URL =
"chrome://browser/content/devtools/frame-script-utils.js";
const ROOT_TEST_DIR =
getRootDirectory(gTestPath);
const FRAME_SCRIPT_URL =
ROOT_TEST_DIR +
"browser_toolbox_options_enable_serviceworkers_testing_frame_script.js";
const TEST_URI = URL_ROOT +
"browser_toolbox_options_enable_serviceworkers_testing.html";
const ELEMENT_ID = "devtools-enable-serviceWorkersTesting";
let toolbox;
let doc;
function test() {
// Note: Pref dom.serviceWorkers.testing.enabled is false since we are testing
@ -19,16 +25,19 @@ function test() {
["dom.serviceWorkers.exemptFromPerDomainMax", true],
["dom.serviceWorkers.enabled", true],
["dom.serviceWorkers.testing.enabled", false]
]}, start);
]}, init);
}
function start() {
gBrowser.selectedTab = gBrowser.addTab();
function init() {
let tab = gBrowser.selectedTab = gBrowser.addTab();
let target = TargetFactory.forTab(gBrowser.selectedTab);
let linkedBrowser = tab.linkedBrowser;
linkedBrowser.messageManager.loadFrameScript(COMMON_FRAME_SCRIPT_URL, false);
linkedBrowser.messageManager.loadFrameScript(FRAME_SCRIPT_URL, false);
gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) {
gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true);
doc = content.document;
gDevTools.showToolbox(target).then(testSelectTool);
}, true);
@ -37,89 +46,24 @@ function start() {
function testSelectTool(aToolbox) {
toolbox = aToolbox;
toolbox.once("options-selected", () => {
testRegisterFails().then(testRegisterInstallingWorker);
});
toolbox.once("options-selected", start);
toolbox.selectTool("options");
}
function testRegisterFails() {
let deferred = promise.defer();
let output = doc.getElementById("output");
let button = doc.getElementById("button");
function doTheCheck() {
info("Testing it doesn't registers correctly until enable testing");
is(output.textContent,
"SecurityError",
"SecurityError expected");
deferred.resolve();
}
if (output.textContent !== "No output") {
doTheCheck();
}
button.addEventListener('click', function onClick() {
button.removeEventListener('click', onClick);
doTheCheck();
});
return deferred.promise;
function register() {
return executeInContent("devtools:sw-test:register");
}
function testRegisterInstallingWorker() {
toggleServiceWorkersTestingCheckbox().then(() => {
let output = doc.getElementById("output");
let button = doc.getElementById("button");
function doTheCheck() {
info("Testing it registers correctly and there is an installing worker");
is(output.textContent,
"Installing worker/",
"Installing worker expected");
testRegisterFailsWhenToolboxCloses();
}
if (output.textContent !== "No output") {
doTheCheck();
}
button.addEventListener('click', function onClick() {
button.removeEventListener('click', onClick);
doTheCheck();
});
});
function unregister(swr) {
return executeInContent("devtools:sw-test:unregister");
}
// Workers should be turned back off when we closes the toolbox
function testRegisterFailsWhenToolboxCloses() {
info("Testing it disable worker when closing the toolbox");
toolbox.destroy()
.then(reload)
.then(testRegisterFails)
.then(finishUp);
}
function reload() {
let deferred = promise.defer();
gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) {
gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true);
doc = content.document;
deferred.resolve();
}, true);
let mm = getFrameScript();
mm.sendAsyncMessage("devtools:test:reload");
return deferred.promise;
function testRegisterFails(data) {
is(data.success, false, "Register should fail with security error");
return promise.resolve();
}
function toggleServiceWorkersTestingCheckbox() {
let deferred = promise.defer();
let panel = toolbox.getCurrentPanel();
let cbx = panel.panelDoc.getElementById(ELEMENT_ID);
@ -133,11 +77,46 @@ function toggleServiceWorkersTestingCheckbox() {
cbx.click();
return reload();
return promise.resolve();
}
function reload() {
let deferred = promise.defer();
gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) {
gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true);
deferred.resolve();
}, true);
executeInContent("devtools:test:reload", {}, {}, false);
return deferred.promise;
}
function testRegisterSuccesses(data) {
is(data.success, true, "Register should success");
return promise.resolve();
}
function start() {
register()
.then(testRegisterFails)
.then(toggleServiceWorkersTestingCheckbox)
.then(reload)
.then(register)
.then(testRegisterSuccesses)
.then(unregister)
// Workers should be turned back off when we closes the toolbox
.then(toolbox.destroy.bind(toolbox))
.then(reload)
.then(register)
.then(testRegisterFails)
.catch(function(e) {
ok(false, "Some test failed with error " + e);
}).then(finishUp);
}
function finishUp() {
gBrowser.removeCurrentTab();
toolbox = doc = null;
toolbox = null;
finish();
}

Просмотреть файл

@ -0,0 +1,24 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
// A helper frame-script for browser/devtools/framework service worker tests.
"use strict";
addMessageListener("devtools:sw-test:register", function(msg) {
content.navigator.serviceWorker.register("serviceworker.js")
.then(swr => {
sendAsyncMessage("devtools:sw-test:register", {success: true});
}, error => {
sendAsyncMessage("devtools:sw-test:register", {success: false});
});
});
addMessageListener("devtools:sw-test:unregister", function(msg) {
content.navigator.serviceWorker.getRegistration().then(swr => {
swr.unregister().then(result => {
sendAsyncMessage("devtools:sw-test:unregister",
{success: result ? true : false});
});
});
});

Просмотреть файл

@ -65,3 +65,47 @@ function *openScratchpadWindow () {
});
return p;
}
/**
* Wait for a content -> chrome message on the message manager (the window
* messagemanager is used).
* @param {String} name The message name
* @return {Promise} A promise that resolves to the response data when the
* message has been received
*/
function waitForContentMessage(name) {
info("Expecting message " + name + " from content");
let mm = gBrowser.selectedBrowser.messageManager;
let def = promise.defer();
mm.addMessageListener(name, function onMessage(msg) {
mm.removeMessageListener(name, onMessage);
def.resolve(msg.data);
});
return def.promise;
}
/**
* Send an async message to the frame script (chrome -> content) and wait for a
* response message with the same name (content -> chrome).
* @param {String} name The message name. Should be one of the messages defined
* in doc_frame_script.js
* @param {Object} data Optional data to send along
* @param {Object} objects Optional CPOW objects to send along
* @param {Boolean} expectResponse If set to false, don't wait for a response
* with the same name from the content script. Defaults to true.
* @return {Promise} Resolves to the response data if a response is expected,
* immediately resolves otherwise
*/
function executeInContent(name, data={}, objects={}, expectResponse=true) {
info("Sending message " + name + " to content");
let mm = gBrowser.selectedBrowser.messageManager;
mm.sendAsyncMessage(name, data, objects);
if (expectResponse) {
return waitForContentMessage(name);
} else {
return promise.resolve();
}
}

Просмотреть файл

@ -6,17 +6,11 @@
"use strict";
const {Cc, Cu, Ci} = require("chrome");
const {Cu, Ci} = require("chrome");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource:///modules/devtools/DOMHelpers.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource:///modules/devtools/ViewHelpers.jsm");
const {Promise: promise} = require("resource://gre/modules/Promise.jsm");
XPCOMUtils.defineLazyGetter(this, "DOMUtils", function () {
return Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
});
const PSEUDO_CLASSES = [":hover", ":active", ":focus"];
const ENSURE_SELECTION_VISIBLE_DELAY = 50; // ms
const ELLIPSIS = Services.prefs.getComplexValue("intl.ellipsis", Ci.nsIPrefLocalizedString).data;
const MAX_LABEL_LENGTH = 40;
@ -29,7 +23,7 @@ const LOW_PRIORITY_ELEMENTS = {
"META": true,
"SCRIPT": true,
"STYLE": true,
"TITLE": true,
"TITLE": true
};
/**
@ -51,7 +45,6 @@ function HTMLBreadcrumbs(inspector) {
this.selection = this.inspector.selection;
this.chromeWin = this.inspector.panelWin;
this.chromeDoc = this.inspector.panelDoc;
this.DOMHelpers = new DOMHelpers(this.chromeWin);
this._init();
}
@ -93,10 +86,11 @@ HTMLBreadcrumbs.prototype = {
this.container._scrollButtonDown.collapsed = true;
this.onscrollboxreflow = () => {
if (this.container._scrollButtonDown.collapsed)
if (this.container._scrollButtonDown.collapsed) {
this.container.removeAttribute("overflows");
else
} else {
this.container.setAttribute("overflows", true);
}
};
this.container.addEventListener("underflow", this.onscrollboxreflow, false);
@ -118,12 +112,12 @@ HTMLBreadcrumbs.prototype = {
*/
selectionGuard: function() {
let selection = this.selection.nodeFront;
return (result) => {
return result => {
if (selection != this.selection.nodeFront) {
return promise.reject("selection-changed");
}
return result;
}
};
},
/**
@ -204,11 +198,6 @@ HTMLBreadcrumbs.prototype = {
}
}
// XXX: Until we have pseudoclass lock in the node.
for (let pseudo of node.pseudoClassLocks) {
}
// Figure out which element (if any) needs ellipsing.
// Substring for that element, then clear out any extras
// (except for pseudo elements).
@ -217,11 +206,11 @@ HTMLBreadcrumbs.prototype = {
let maxClassLength = MAX_LABEL_LENGTH - tagText.length - idText.length;
if (tagText.length > maxTagLength) {
tagText = tagText.substr(0, maxTagLength) + ELLIPSIS;
idText = classesText = "";
tagText = tagText.substr(0, maxTagLength) + ELLIPSIS;
idText = classesText = "";
} else if (idText.length > maxIdLength) {
idText = idText.substr(0, maxIdLength) + ELLIPSIS;
classesText = "";
idText = idText.substr(0, maxIdLength) + ELLIPSIS;
classesText = "";
} else if (classesText.length > maxClassLength) {
classesText = classesText.substr(0, maxClassLength) + ELLIPSIS;
}
@ -250,19 +239,20 @@ HTMLBreadcrumbs.prototype = {
// for inspector.selection
this.selection.setNodeFront(node, "breadcrumbs");
let title = this.chromeDoc.createElement("menuitem");
title.setAttribute("label", this.inspector.strings.GetStringFromName("breadcrumbs.siblings"));
title.setAttribute("disabled", "true");
let separator = this.chromeDoc.createElement("menuseparator");
let items = [title, separator];
// Build a list of extra menu items that will be appended at the end of the
// inspector node context menu.
let items = [this.chromeDoc.createElement("menuseparator")];
this.walker.siblings(node, {
whatToShow: Ci.nsIDOMNodeFilter.SHOW_ELEMENT
}).then(siblings => {
let nodes = siblings.nodes;
for (let i = 0; i < nodes.length; i++) {
// Skip siblings of the documentElement node.
if (nodes[i].nodeType !== Ci.nsIDOMNode.ELEMENT_NODE) {
continue;
}
let item = this.chromeDoc.createElement("menuitem");
if (nodes[i] === node) {
item.setAttribute("disabled", "true");
@ -276,12 +266,14 @@ HTMLBreadcrumbs.prototype = {
item.onmouseup = (function(node) {
return function() {
selection.setNodeFront(node, "breadcrumbs");
}
};
})(nodes[i]);
items.push(item);
this.inspector.showNodeMenu(button, "before_start", items);
}
// Append the items to the inspector node context menu and show the menu.
this.inspector.showNodeMenu(button, "before_start", items);
});
},
@ -445,8 +437,9 @@ HTMLBreadcrumbs.prototype = {
}
if (index > -1) {
this.nodeHierarchy[index].button.setAttribute("checked", "true");
if (this.hadFocus)
if (this.hadFocus) {
this.nodeHierarchy[index].button.focus();
}
}
this.currentIndex = index;
},
@ -457,7 +450,6 @@ HTMLBreadcrumbs.prototype = {
* @returns {Number} The index for this node or -1 if not found.
*/
indexOf: function(node) {
let i = this.nodeHierarchy.length - 1;
for (let i = this.nodeHierarchy.length - 1; i >= 0; i--) {
if (this.nodeHierarchy[i].node === node) {
return i;
@ -492,9 +484,10 @@ HTMLBreadcrumbs.prototype = {
button.onkeypress = function onBreadcrumbsKeypress(e) {
if (e.charCode == Ci.nsIDOMKeyEvent.DOM_VK_SPACE ||
e.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_RETURN)
e.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_RETURN) {
button.click();
}
}
};
button.onBreadcrumbsClick = () => {
this.selection.setNodeFront(node, "breadcrumbs");
@ -574,9 +567,8 @@ HTMLBreadcrumbs.prototype = {
if (response.hasLast) {
deferred.resolve(fallback);
return;
} else {
moreChildren();
}
moreChildren();
}).then(null, this.selectionGuardEnd);
};
@ -594,9 +586,8 @@ HTMLBreadcrumbs.prototype = {
let idx = this.indexOf(node);
if (idx > -1) {
return idx;
} else {
node = node.parentNode();
}
node = node.parentNode();
}
return -1;
},
@ -725,12 +716,14 @@ HTMLBreadcrumbs.prototype = {
cmdDispatcher.focusedElement.parentNode == this.container);
if (!this.selection.isConnected()) {
this.cutAfter(-1); // remove all the crumbs
// remove all the crumbs
this.cutAfter(-1);
return;
}
if (!this.selection.isElementNode()) {
this.setCursor(-1); // no selection
// no selection
this.setCursor(-1);
return;
}

Просмотреть файл

@ -31,6 +31,7 @@ support-files =
[browser_inspector_breadcrumbs.js]
[browser_inspector_breadcrumbs_highlight_hover.js]
[browser_inspector_breadcrumbs_menu.js]
[browser_inspector_breadcrumbs_mutations.js]
[browser_inspector_delete-selected-node-01.js]
[browser_inspector_delete-selected-node-02.js]

Просмотреть файл

@ -0,0 +1,51 @@
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Test that the inspector node context menu appears when right-clicking on the
// breadcrumbs nodes.
const TEST_URI = TEST_URL_ROOT + "doc_inspector_breadcrumbs.html";
add_task(function*() {
let {inspector} = yield openInspectorForURL(TEST_URI);
let container = inspector.panelDoc.getElementById("inspector-breadcrumbs");
info("Select a test node and try to right-click on the selected breadcrumb");
yield selectNode("#i1", inspector);
let button = container.querySelector("button[checked]");
let onMenuShown = once(inspector.nodemenu, "popupshown");
button.onclick({button: 2});
yield onMenuShown;
ok(true, "The context menu appeared on right-click");
info("Right-click on a non selected crumb (the body node)");
button = button.previousSibling;
onMenuShown = once(inspector.nodemenu, "popupshown");
let onInspectorUpdated = inspector.once("inspector-updated");
button.onclick({button: 2});
yield onMenuShown;
ok(true, "The context menu appeared on right-click");
yield onInspectorUpdated;
is(inspector.selection.nodeFront.tagName.toLowerCase(), "body",
"The body node was selected when right-clicking in the breadcrumbs");
info("Right-click on the html node");
button = button.previousSibling;
onMenuShown = once(inspector.nodemenu, "popupshown");
onInspectorUpdated = inspector.once("inspector-updated");
button.onclick({button: 2});
yield onMenuShown;
ok(true, "The context menu appeared on right-click");
yield onInspectorUpdated;
is(inspector.selection.nodeFront.tagName.toLowerCase(), "html",
"The html node was selected when right-clicking in the breadcrumbs");
});

Просмотреть файл

@ -2,6 +2,7 @@
tags = devtools
subsuite = devtools
support-files =
doc_force_gc.html
doc_innerHTML.html
doc_simple-test.html
head.js
@ -12,7 +13,6 @@ support-files =
[browser_aaa-run-first-leaktest.js]
[browser_marker-utils.js]
[browser_markers-gc.js]
skip-if = e10s # GC events seem unreliable in multiprocess
[browser_markers-parse-html.js]
[browser_markers-styles.js]
[browser_markers-timestamp.js]

Просмотреть файл

@ -6,17 +6,16 @@
*/
const TIME_CLOSE_TO = 10000;
const TEST_URL = EXAMPLE_URL + "doc_force_gc.html"
function* spawnTest () {
let { target, front } = yield initBackend(SIMPLE_URL);
let { target, front } = yield initBackend(TEST_URL);
let markers;
front.on("timeline-data", handler);
let model = yield front.startRecording({ withTicks: true });
// Check async for markers found while GC/CCing between
yield waitUntil(() => {
forceCC();
return !!markers;
}, 100);

Просмотреть файл

@ -0,0 +1,21 @@
<!-- Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ -->
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>Performance tool + garbage collection test page</title>
</head>
<body>
<script type="text/javascript">
window.test = function () {
SpecialPowers.Cu.forceGC();
setTimeout(window.test, 100);
};
test();
</script>
</body>
</html>

Просмотреть файл

@ -705,6 +705,10 @@ CSSCompleter.prototype = {
// possibility of suggestions.
switch(this.selectorState) {
case SELECTOR_STATES.null:
if (this.completing === ",") {
return Promise.resolve([]);
}
query += "*";
break;

Просмотреть файл

@ -8,6 +8,8 @@ const {InspectorFront} = require("devtools/server/actors/inspector");
const AUTOCOMPLETION_PREF = "devtools.editor.autocomplete";
const TEST_URI = "data:text/html;charset=UTF-8,<html><body><bar></bar><div id='baz'></div><body></html>";
const wait = (delay) => new Promise(resolve => setTimeout(resolve, delay));
add_task(function*() {
yield promiseTab(TEST_URI);
yield runTests();
@ -27,6 +29,7 @@ function* runTests() {
yield testKeyboard(ed, edWin);
yield testKeyboardCycle(ed, edWin);
yield testKeyboardCycleForPrefixedString(ed, edWin);
yield testKeyboardCSSComma(ed, edWin);
teardown(ed, win);
}
@ -87,6 +90,22 @@ function* testKeyboardCycleForPrefixedString(ed, win) {
is (ed.getText(), "#baz", "Editor text has been updated");
}
function* testKeyboardCSSComma(ed, win) {
ed.focus();
ed.setText("b");
ed.setCursor({line: 1, ch: 1});
let isPopupOpened = false;
let popupOpened = ed.getAutocompletionPopup().once("popup-opened");
popupOpened.then(() => isPopupOpened = true);
EventUtils.synthesizeKey(",", { }, win);
yield wait(500);
ok(!isPopupOpened, "Autocompletion shouldn't be opened");
}
function* testMouse(ed, win) {
ed.focus();
ed.setText("b");

Просмотреть файл

@ -686,15 +686,10 @@ with that structure, consider a translation which ignores the preceding domain a
just addresses the organization to follow, e.g. "This site is run by " -->
<!ENTITY identity.runBy "which is run by">
<!ENTITY identity.moreInfoLinkText "More Information">
<!ENTITY identity.moreInfoLinkText2 "More Information">
<!ENTITY identity.permissions "Permissions">
<!-- LOCALIZATION NOTE (identity.help.tooltip) : This string should be the
localized title of this SUMO article
https://support.mozilla.org/kb/how-do-i-tell-if-my-connection-is-secure -->
<!ENTITY identity.help.tooltip "How do I tell if my connection to a website is secure?">
<!-- Name for the tabs toolbar as spoken by screen readers.
The word "toolbar" is appended automatically and should not be contained below! -->
<!ENTITY tabsToolbar.label "Browser tabs">

Просмотреть файл

@ -1025,105 +1025,6 @@ toolbarbutton[constrain-size="true"][cui-areatype="toolbar"] > .toolbarbutton-ba
-moz-margin-end: 1px;
}
/* Identity popup icons */
#identity-popup-icon {
height: 64px;
width: 64px;
padding: 0;
list-style-image: url("chrome://browser/skin/identity.png");
-moz-image-region: rect(0px, 64px, 64px, 0px);
}
#identity-popup.verifiedDomain > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(64px, 64px, 128px, 0px);
}
#identity-popup.verifiedIdentity > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(128px, 64px, 192px, 0px);
}
/* Identity popup body text */
.identity-popup-description {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 2px 0 4px;
}
.identity-popup-label {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 0;
}
#identity-popup-content-host ,
#identity-popup-content-owner {
font-weight: bold;
max-width: 300px;
}
#identity-popup-content-host ,
#identity-popup-content-box.verifiedIdentity > #identity-popup-content-owner {
font-size: 140%;
}
#identity-popup-content-owner {
margin-bottom: 0 !important;
}
#identity-popup-content-verifier {
margin: 4px 0 2px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption {
margin-top: 10px;
-moz-margin-start: -18px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
list-style-image: url("chrome://browser/skin/Secure.png");
}
#identity-popup-help-icon {
-moz-appearance: none;
margin-left: 0px;
border: none;
background: none;
min-width: 0;
list-style-image: url("moz-icon://stock/gtk-dialog-question?size=16");
cursor: pointer;
}
#identity-popup-help-icon > .button-box > .button-text {
display: none;
}
#identity-popup-help-icon > .button-box > .button-icon {
height: 16px;
width: 16px;
}
#identity-popup-help-icon:-moz-focusring {
outline: 1px dotted;
outline-offset: 1px;
}
#identity-popup > .panel-arrowcontainer > .panel-arrowcontent {
padding: 0;
}
#identity-popup-container {
min-width: 280px;
padding: 10px;
}
#identity-popup-button-container {
background: linear-gradient(to bottom, rgba(0,0,0,0.04) 60%, transparent);
padding: 10px;
margin-top: 5px;
}
%include ../shared/notification-icons.inc.css
.popup-notification-body[popupid="addon-progress"],

Просмотреть файл

@ -0,0 +1,74 @@
/* 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/. */
%include ../../shared/controlcenter/panel.inc.css
/* Identity popup icons */
#identity-popup-icon {
height: 64px;
width: 64px;
padding: 0;
list-style-image: url("chrome://browser/skin/identity.png");
-moz-image-region: rect(0px, 64px, 64px, 0px);
}
#identity-popup.verifiedDomain > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(64px, 64px, 128px, 0px);
}
#identity-popup.verifiedIdentity > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(128px, 64px, 192px, 0px);
}
/* Identity popup body text */
.identity-popup-description {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 2px 0 4px;
}
.identity-popup-label {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 0;
}
#identity-popup-content-host ,
#identity-popup-content-owner {
font-weight: bold;
max-width: 300px;
}
#identity-popup-content-host ,
#identity-popup-content-box.verifiedIdentity > #identity-popup-content-owner {
font-size: 140%;
}
#identity-popup-content-owner {
margin-bottom: 0 !important;
}
#identity-popup-content-verifier {
margin: 4px 0 2px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption {
margin-top: 10px;
-moz-margin-start: -18px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
list-style-image: url("chrome://browser/skin/Secure.png");
}
#identity-popup > .panel-arrowcontainer > .panel-arrowcontent {
padding: 0;
}
#identity-popup-container {
min-width: 280px;
padding: 10px;
}

Просмотреть файл

@ -134,6 +134,7 @@ browser.jar:
skin/classic/browser/loop/menuPanel.png (loop/menuPanel.png)
skin/classic/browser/loop/toolbar.png (loop/toolbar.png)
skin/classic/browser/loop/toolbar-inverted.png (loop/toolbar-inverted.png)
* skin/classic/browser/controlcenter/panel.css (controlcenter/panel.css)
skin/classic/browser/customizableui/background-noise-toolbar.png (customizableui/background-noise-toolbar.png)
skin/classic/browser/customizableui/customize-illustration.png (../shared/customizableui/customize-illustration.png)
skin/classic/browser/customizableui/customize-illustration-rtl.png (../shared/customizableui/customize-illustration-rtl.png)

Просмотреть файл

@ -3118,140 +3118,6 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
background-color: Highlight;
}
/* Popup Icons */
#identity-popup-icon {
height: 64px;
width: 64px;
padding: 0;
list-style-image: url("chrome://browser/skin/identity.png");
-moz-image-region: rect(0px, 64px, 64px, 0px);
}
#identity-popup.verifiedDomain > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(64px, 64px, 128px, 0px);
}
#identity-popup.verifiedIdentity > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(128px, 64px, 192px, 0px);
}
@media (min-resolution: 2dppx) {
#identity-popup-icon {
list-style-image: url("chrome://browser/skin/identity@2x.png");
-moz-image-region: rect(0px, 128px, 128px, 0px);
}
#identity-popup.verifiedDomain > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(128px, 128px, 256px, 0px);
}
#identity-popup.verifiedIdentity > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(256px, 128px, 384px, 0px);
}
}
/* Popup Body Text */
.identity-popup-description {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 2px 0 4px;
}
.identity-popup-label {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 0;
}
#identity-popup-content-host ,
#identity-popup-content-owner {
font-weight: bold;
max-width: 300px;
}
#identity-popup-content-host ,
#identity-popup-content-box.verifiedIdentity > #identity-popup-content-owner {
font-size: 140%;
}
#identity-popup-content-owner {
margin-bottom: 0 !important;
}
#identity-popup-content-verifier {
margin: 4px 0 2px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption {
margin-top: 10px;
-moz-margin-start: -24px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
margin-top: 5px;
list-style-image: url("chrome://browser/skin/Secure-Glyph.png");
}
#identity-popup-help-icon {
-moz-appearance: none;
border: none;
margin: 10px 0 0 2px;
background: none;
min-width: 0;
list-style-image: url("chrome://global/skin/icons/question-16.png");
cursor: pointer;
}
#identity-popup-help-icon > .button-box > .button-text {
display: none;
}
#identity-popup-help-icon > .button-box > .button-icon {
height: 16px;
width: 16px;
}
#identity-popup-help-icon:focus {
@hudButtonFocused@
}
#identity-popup-help-icon:hover:active {
@hudButtonPressed@
}
@media (min-resolution: 2dppx) {
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
list-style-image: url("chrome://browser/skin/Secure-Glyph@2x.png");
width: 24px;
}
#identity-popup-help-icon {
list-style-image: url("chrome://global/skin/icons/question-32.png");
}
}
#identity-popup {
margin-top: 1px;
}
#identity-popup > .panel-arrowcontainer > .panel-arrowcontent {
padding: 0;
}
#identity-popup-container {
padding: 16px;
}
#identity-popup-button-container {
background-color: hsla(210,4%,10%,.07);
border-top: 1px solid hsla(210,4%,10%,.12);
padding: 16px;
margin-top: 5px;
}
%include ../shared/notification-icons.inc.css
#notification-popup-box {
@ -3431,21 +3297,6 @@ notification[value="loop-sharing-notification"] .messageImage {
font-weight: bold;
}
/* Popup Buttons */
#identity-popup-more-info-button {
@hudButton@
margin: 10px 0 0;
min-height: 0px;
}
#identity-popup-more-info-button:focus {
@hudButtonFocused@
}
#identity-popup-more-info-button:hover:active {
@hudButtonPressed@
}
/* ::::: Keyboard UI Panel ::::: */
.KUI-panel {

Просмотреть файл

@ -0,0 +1,101 @@
/* 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/. */
%include ../../shared/controlcenter/panel.inc.css
/* Popup Icons */
#identity-popup-icon {
height: 64px;
width: 64px;
padding: 0;
list-style-image: url("chrome://browser/skin/identity.png");
-moz-image-region: rect(0px, 64px, 64px, 0px);
}
#identity-popup.verifiedDomain > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(64px, 64px, 128px, 0px);
}
#identity-popup.verifiedIdentity > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(128px, 64px, 192px, 0px);
}
@media (min-resolution: 2dppx) {
#identity-popup-icon {
list-style-image: url("chrome://browser/skin/identity@2x.png");
-moz-image-region: rect(0px, 128px, 128px, 0px);
}
#identity-popup.verifiedDomain > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(128px, 128px, 256px, 0px);
}
#identity-popup.verifiedIdentity > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(256px, 128px, 384px, 0px);
}
}
/* Popup Body Text */
.identity-popup-description {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 2px 0 4px;
}
.identity-popup-label {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 0;
}
#identity-popup-content-host ,
#identity-popup-content-owner {
font-weight: bold;
max-width: 300px;
}
#identity-popup-content-host ,
#identity-popup-content-box.verifiedIdentity > #identity-popup-content-owner {
font-size: 140%;
}
#identity-popup-content-owner {
margin-bottom: 0 !important;
}
#identity-popup-content-verifier {
margin: 4px 0 2px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption {
margin-top: 10px;
-moz-margin-start: -24px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
margin-top: 5px;
list-style-image: url("chrome://browser/skin/Secure-Glyph.png");
}
@media (min-resolution: 2dppx) {
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
list-style-image: url("chrome://browser/skin/Secure-Glyph@2x.png");
width: 24px;
}
}
#identity-popup {
margin-top: 1px;
}
#identity-popup > .panel-arrowcontainer > .panel-arrowcontent {
padding: 0;
}
#identity-popup-container {
padding: 16px;
}

Просмотреть файл

@ -192,6 +192,7 @@ browser.jar:
skin/classic/browser/yosemite/loop/menuPanel@2x.png (loop/menuPanel-yosemite@2x.png)
skin/classic/browser/yosemite/loop/toolbar.png (loop/toolbar-yosemite.png)
skin/classic/browser/yosemite/loop/toolbar@2x.png (loop/toolbar-yosemite@2x.png)
* skin/classic/browser/controlcenter/panel.css (controlcenter/panel.css)
skin/classic/browser/customizableui/background-noise-toolbar.png (customizableui/background-noise-toolbar.png)
skin/classic/browser/customizableui/customize-titleBar-toggle.png (customizableui/customize-titleBar-toggle.png)
skin/classic/browser/customizableui/customize-titleBar-toggle@2x.png (customizableui/customize-titleBar-toggle@2x.png)

Просмотреть файл

@ -0,0 +1,59 @@
#identity-popup-content-box:not(.chromeUI) > #identity-popup-brandName,
#identity-popup-content-box:not(.chromeUI) > #identity-popup-chromeLabel,
#identity-popup-content-box.chromeUI > .identity-popup-label:not(#identity-popup-brandName):not(#identity-popup-chromeLabel),
#identity-popup-content-box.chromeUI > .identity-popup-description,
#identity-popup-content-box.unknownIdentity > #identity-popup-connectedToLabel ,
#identity-popup-content-box.unknownIdentity > #identity-popup-runByLabel ,
#identity-popup-content-box.unknownIdentity > #identity-popup-content-host ,
#identity-popup-content-box.unknownIdentity > #identity-popup-content-owner ,
#identity-popup-content-box.verifiedIdentity > #identity-popup-connectedToLabel2 ,
#identity-popup-content-box.verifiedDomain > #identity-popup-connectedToLabel2 ,
#identity-popup-content-box.verifiedDomain > #identity-popup-runByLabel {
display: none;
}
#identity-popup.chromeUI > #identity-popup-container > #identity-popup-icon {
list-style-image: url("chrome://branding/content/icon64.png");
}
#identity-popup-brandName {
font-weight: bold;
font-size: 1.25em;
margin-top: .5em;
margin-bottom: .5em;
}
#identity-popup-content-box {
max-width: 50ch;
}
#identity-popup-button-container {
background-color: hsla(210,4%,10%,.07);
}
#identity-popup-more-info-button {
border: none;
border-top: 1px solid hsla(210,4%,10%,.14);
background: transparent;
-moz-appearance: none;
margin-top: 5px;
padding: 1.1em;
margin: 0;
}
#identity-popup-more-info-button:hover {
background-color: hsla(210,4%,10%,.07);
}
#identity-popup-more-info-button:hover:active {
color: inherit;
background-color: hsla(210,4%,10%,.12);
box-shadow: 0 1px 0 hsla(210,4%,10%,.05) inset;
}
@media (min-resolution: 1.1dppx) {
#identity-popup.chromeUI > #identity-popup-container > #identity-popup-icon {
list-style-image: url("chrome://branding/content/icon128.png");
-moz-image-region: rect(0, 128px, 128px, 0);
}
}

Просмотреть файл

@ -91,21 +91,6 @@
opacity: 0.3;
}
#identity-popup.chromeUI > #identity-popup-container > #identity-popup-icon {
list-style-image: url("chrome://branding/content/icon64.png");
}
#identity-popup-brandName {
font-weight: bold;
font-size: 1.25em;
margin-top: .5em;
margin-bottom: .5em;
}
#identity-popup-content-box {
max-width: 50ch;
}
@media not all and (min-resolution: 1.1dppx) {
#page-proxy-favicon {
-moz-image-region: rect(0, 16px, 16px, 0);
@ -159,9 +144,4 @@
#identity-box[open=true] > #page-proxy-favicon {
-moz-image-region: rect(0, 96px, 32px, 64px);
}
#identity-popup.chromeUI > #identity-popup-container > #identity-popup-icon {
list-style-image: url("chrome://branding/content/icon128.png");
-moz-image-region: rect(0, 128px, 128px, 0);
}
}

Просмотреть файл

@ -158,26 +158,33 @@
text-shadow: 0 0 .5em white, 0 0 .5em white, 0 1px 0 rgba(255,255,255,.4);
}
/* Vertical toolbar border */
#main-window:not([customizing])[sizemode=normal] #navigator-toolbox:not(:-moz-lwtheme)::after,
#main-window:not([customizing])[sizemode=normal] #navigator-toolbox > toolbar:not(#toolbar-menubar):not(#TabsToolbar):not(:-moz-lwtheme),
#main-window:not([customizing])[sizemode=normal] #navigator-toolbox:-moz-lwtheme,
#main-window[customizing] #navigator-toolbox::after,
#main-window[customizing] #navigator-toolbox > toolbar:not(#toolbar-menubar):not(#TabsToolbar) {
border-left: 1px solid @toolbarShadowColor@;
border-right: 1px solid @toolbarShadowColor@;
background-clip: padding-box;
}
#main-window[sizemode=normal] #browser-border-start,
#main-window[sizemode=normal] #browser-border-end {
display: -moz-box;
background-color: @toolbarShadowColor@;
width: 1px;
}
#main-window[sizemode=normal] #browser-bottombox {
border: 1px solid @toolbarShadowColor@;
border-top-style: none;
background-clip: padding-box;
/* Show borders on vista through win8, but not on win10 and later: */
@media (-moz-os-version: windows-vista),
(-moz-os-version: windows-win7),
(-moz-os-version: windows-win8) {
/* Vertical toolbar border */
#main-window:not([customizing])[sizemode=normal] #navigator-toolbox:not(:-moz-lwtheme)::after,
#main-window:not([customizing])[sizemode=normal] #navigator-toolbox > toolbar:not(#toolbar-menubar):not(#TabsToolbar):not(:-moz-lwtheme),
#main-window:not([customizing])[sizemode=normal] #navigator-toolbox:-moz-lwtheme,
#main-window[customizing] #navigator-toolbox::after,
#main-window[customizing] #navigator-toolbox > toolbar:not(#toolbar-menubar):not(#TabsToolbar) {
border-left: 1px solid @toolbarShadowColor@;
border-right: 1px solid @toolbarShadowColor@;
background-clip: padding-box;
}
#main-window[sizemode=normal] #browser-border-start,
#main-window[sizemode=normal] #browser-border-end {
display: -moz-box;
background-color: @toolbarShadowColor@;
width: 1px;
}
#main-window[sizemode=normal] #browser-bottombox {
border: 1px solid @toolbarShadowColor@;
border-top-style: none;
background-clip: padding-box;
}
}
#main-window[sizemode=normal] #TabsToolbar {

Просмотреть файл

@ -2138,116 +2138,6 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
background-color: Highlight;
}
/* ::::: Identity Indicator Styling ::::: */
/* Popup Icons */
#identity-popup-icon {
height: 64px;
width: 64px;
padding: 0;
list-style-image: url("chrome://browser/skin/identity.png");
-moz-image-region: rect(0px, 64px, 64px, 0px);
}
#identity-popup.verifiedDomain > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(64px, 64px, 128px, 0px);
}
#identity-popup.verifiedIdentity > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(128px, 64px, 192px, 0px);
}
/* Popup Body Text */
.identity-popup-description {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 2px 0 4px;
}
.identity-popup-label {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 0;
}
#identity-popup-content-host,
#identity-popup-content-box.verifiedIdentity > #identity-popup-content-owner {
font-size: 1.2em;
}
#identity-popup-content-host {
margin-top: 3px;
margin-bottom: 5px;
font-weight: bold;
max-width: 300px;
}
#identity-popup-content-owner {
margin-top: 4px;
margin-bottom: 0 !important;
font-weight: bold;
max-width: 300px;
}
.verifiedDomain > #identity-popup-content-owner {
font-weight: normal;
}
#identity-popup-content-verifier {
margin: 4px 0 2px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption {
margin-top: 10px;
-moz-margin-start: -24px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
list-style-image: url("chrome://browser/skin/Secure24.png");
}
#identity-popup-help-icon {
-moz-appearance: none;
border: none;
margin: 7px 0 0 -3px;
background: none;
min-width: 0;
list-style-image: url("chrome://global/skin/icons/question-16.png");
cursor: pointer;
}
#identity-popup-help-icon > .button-box > .button-text {
display: none;
}
#identity-popup-help-icon > .button-box > .button-icon {
height: 16px;
width: 16px;
}
#identity-popup-more-info-button {
margin-top: 6px;
margin-bottom: 0;
-moz-margin-end: 0;
}
#identity-popup > .panel-arrowcontainer > .panel-arrowcontent {
padding: 0;
}
#identity-popup-container {
min-width: 280px;
padding: 10px;
}
#identity-popup-button-container {
background: linear-gradient(to bottom, rgba(0,0,0,0.04) 60%, transparent);
padding: 10px;
margin-top: 5px;
}
%include ../shared/notification-icons.inc.css
.popup-notification-body[popupid="addon-progress"],

Просмотреть файл

@ -0,0 +1,82 @@
/* 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/. */
%include ../../shared/controlcenter/panel.inc.css
/* Popup Icons */
#identity-popup-icon {
height: 64px;
width: 64px;
padding: 0;
list-style-image: url("chrome://browser/skin/identity.png");
-moz-image-region: rect(0px, 64px, 64px, 0px);
}
#identity-popup.verifiedDomain > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(64px, 64px, 128px, 0px);
}
#identity-popup.verifiedIdentity > #identity-popup-container > #identity-popup-icon {
-moz-image-region: rect(128px, 64px, 192px, 0px);
}
/* Popup Body Text */
.identity-popup-description {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 2px 0 4px;
}
.identity-popup-label {
white-space: pre-wrap;
-moz-padding-start: 15px;
margin: 0;
}
#identity-popup-content-host,
#identity-popup-content-box.verifiedIdentity > #identity-popup-content-owner {
font-size: 1.2em;
}
#identity-popup-content-host {
margin-top: 3px;
margin-bottom: 5px;
font-weight: bold;
max-width: 300px;
}
#identity-popup-content-owner {
margin-top: 4px;
margin-bottom: 0 !important;
font-weight: bold;
max-width: 300px;
}
.verifiedDomain > #identity-popup-content-owner {
font-weight: normal;
}
#identity-popup-content-verifier {
margin: 4px 0 2px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption {
margin-top: 10px;
-moz-margin-start: -24px;
}
#identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
#identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
list-style-image: url("chrome://browser/skin/Secure24.png");
}
#identity-popup > .panel-arrowcontainer > .panel-arrowcontent {
padding: 0;
}
#identity-popup-container {
min-width: 280px;
padding: 10px;
}

Просмотреть файл

@ -177,6 +177,7 @@ browser.jar:
skin/classic/browser/loop/toolbar-inverted.png (loop/toolbar-inverted.png)
skin/classic/browser/loop/toolbar-XP.png (loop/toolbar-XP.png)
skin/classic/browser/loop/toolbar-lunaSilver.png (loop/toolbar-lunaSilver.png)
* skin/classic/browser/controlcenter/panel.css (controlcenter/panel.css)
skin/classic/browser/customizableui/background-noise-toolbar.png (customizableui/background-noise-toolbar.png)
skin/classic/browser/customizableui/customizeFavicon.ico (../shared/customizableui/customizeFavicon.ico)
skin/classic/browser/customizableui/customize-illustration.png (../shared/customizableui/customize-illustration.png)

Просмотреть файл

@ -29,6 +29,7 @@ XPCOMUtils.defineLazyGetter(this, "debuggerServer", () => {
let debuggerServer = serverLoader.DebuggerServer;
debuggerServer.init();
debuggerServer.addBrowserActors();
debuggerServer.allowChromeProcess = !l10n.hiddenByChromePref();
return debuggerServer;
});

Просмотреть файл

@ -22,7 +22,7 @@ var Cu = require('chrome').Cu;
var prefSvc = Cc['@mozilla.org/preferences-service;1']
.getService(Ci.nsIPrefService);
var prefBranch = prefSvc.getBranch(null).QueryInterface(Ci.nsIPrefBranch2);
var prefBranch = prefSvc.getBranch(null).QueryInterface(Ci.nsIPrefBranch);
var Services = Cu.import('resource://gre/modules/Services.jsm', {}).Services;
var stringBundle = Services.strings.createBundle(
@ -75,5 +75,5 @@ exports.lookupFormat = function(name, swaps) {
* </pre>
*/
exports.hiddenByChromePref = function() {
return !prefBranch.prefHasUserValue('devtools.chrome.enabled');
return !prefBranch.getBoolPref('devtools.chrome.enabled');
};

Просмотреть файл

@ -83,3 +83,8 @@ notification[type="critical"] {
.popup-notification-button-container {
margin-top: 17px;
}
.popup-notification-closebutton {
-moz-margin-end: -10px;
margin-top: -6px;
}