зеркало из https://github.com/mozilla/gecko-dev.git
merge fx-team to mozilla-central a=merge
This commit is contained in:
Коммит
46f922660f
|
@ -196,6 +196,7 @@ let RemoteDebugger = {
|
|||
globalActorFactories: restrictPrivileges ? {
|
||||
webappsActor: DebuggerServer.globalActorFactories.webappsActor,
|
||||
deviceActor: DebuggerServer.globalActorFactories.deviceActor,
|
||||
settingsActor: DebuggerServer.globalActorFactories.settingsActor
|
||||
} : DebuggerServer.globalActorFactories
|
||||
};
|
||||
let { RootActor } = devtools.require("devtools/server/actors/root");
|
||||
|
|
|
@ -329,11 +329,6 @@ loop.panel = (function(_, mozL10n) {
|
|||
render: function() {
|
||||
var cx = React.addons.classSet;
|
||||
|
||||
// For now all of the menu entries require FxA so hide the whole gear if FxA is disabled.
|
||||
if (!navigator.mozLoop.fxAEnabled) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
React.createElement("div", {className: "settings-menu dropdown"},
|
||||
React.createElement("a", {className: "button-settings", onClick: this.showDropdownMenu,
|
||||
|
@ -347,7 +342,7 @@ loop.panel = (function(_, mozL10n) {
|
|||
React.createElement(SettingsDropdownEntry, {label: mozL10n.get("settings_menu_item_account"),
|
||||
onClick: this.handleClickAccountEntry,
|
||||
icon: "account",
|
||||
displayed: this._isSignedIn()}),
|
||||
displayed: this._isSignedIn() && navigator.mozLoop.fxAEnabled}),
|
||||
React.createElement(SettingsDropdownEntry, {icon: "tour",
|
||||
label: mozL10n.get("tour_label"),
|
||||
onClick: this.openGettingStartedTour}),
|
||||
|
|
|
@ -329,11 +329,6 @@ loop.panel = (function(_, mozL10n) {
|
|||
render: function() {
|
||||
var cx = React.addons.classSet;
|
||||
|
||||
// For now all of the menu entries require FxA so hide the whole gear if FxA is disabled.
|
||||
if (!navigator.mozLoop.fxAEnabled) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="settings-menu dropdown">
|
||||
<a className="button-settings" onClick={this.showDropdownMenu}
|
||||
|
@ -347,7 +342,7 @@ loop.panel = (function(_, mozL10n) {
|
|||
<SettingsDropdownEntry label={mozL10n.get("settings_menu_item_account")}
|
||||
onClick={this.handleClickAccountEntry}
|
||||
icon="account"
|
||||
displayed={this._isSignedIn()} />
|
||||
displayed={this._isSignedIn() && navigator.mozLoop.fxAEnabled} />
|
||||
<SettingsDropdownEntry icon="tour"
|
||||
label={mozL10n.get("tour_label")}
|
||||
onClick={this.openGettingStartedTour} />
|
||||
|
|
|
@ -260,6 +260,17 @@ describe("loop.panel", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("should hide the account entry when FxA is not enabled", function() {
|
||||
navigator.mozLoop.userProfile = {email: "test@example.com"};
|
||||
navigator.mozLoop.fxAEnabled = false;
|
||||
|
||||
var view = TestUtils.renderIntoDocument(
|
||||
React.createElement(loop.panel.SettingsDropdown));
|
||||
|
||||
expect(view.getDOMNode().querySelectorAll(".icon-account"))
|
||||
.to.have.length.of(0);
|
||||
});
|
||||
|
||||
describe("SettingsDropdown", function() {
|
||||
beforeEach(function() {
|
||||
navigator.mozLoop.logInToFxA = sandbox.stub();
|
||||
|
@ -271,14 +282,6 @@ describe("loop.panel", function() {
|
|||
navigator.mozLoop.fxAEnabled = true;
|
||||
});
|
||||
|
||||
it("should be hidden if FxA is not enabled",
|
||||
function() {
|
||||
navigator.mozLoop.fxAEnabled = false;
|
||||
var view = TestUtils.renderIntoDocument(
|
||||
React.createElement(loop.panel.SettingsDropdown));
|
||||
expect(view.getDOMNode()).to.be.null;
|
||||
});
|
||||
|
||||
it("should show a signin entry when user is not authenticated",
|
||||
function() {
|
||||
navigator.mozLoop.loggedInToFxA = false;
|
||||
|
|
|
@ -86,6 +86,7 @@ support-files =
|
|||
doc_scope-variable-3.html
|
||||
doc_scope-variable-4.html
|
||||
doc_script-eval.html
|
||||
doc_script-bookmarklet.html
|
||||
doc_script-switching-01.html
|
||||
doc_script-switching-02.html
|
||||
doc_split-console-paused-reload.html
|
||||
|
@ -413,6 +414,8 @@ skip-if = e10s && debug
|
|||
skip-if = e10s && debug
|
||||
[browser_dbg_sources-sorting.js]
|
||||
skip-if = e10s && debug
|
||||
[browser_dbg_sources-bookmarklet.js]
|
||||
skip-if = e10s && debug
|
||||
[browser_dbg_split-console-paused-reload.js]
|
||||
skip-if = e10s && debug
|
||||
[browser_dbg_stack-01.js]
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
/**
|
||||
* Make sure javascript bookmarklet scripts appear and load correctly in the source list
|
||||
*/
|
||||
|
||||
const TAB_URL = EXAMPLE_URL + "doc_script-bookmarklet.html";
|
||||
|
||||
const BOOKMARKLET_SCRIPT_CODE = "console.log('bookmarklet executed');";
|
||||
|
||||
function test() {
|
||||
let gTab, gPanel, gDebugger;
|
||||
let gSources, gBreakpoints;
|
||||
|
||||
initDebugger(TAB_URL).then(([aTab,, aPanel]) => {
|
||||
gTab = aTab;
|
||||
gPanel = aPanel;
|
||||
gDebugger = gPanel.panelWin;
|
||||
gSources = gDebugger.DebuggerView.Sources;
|
||||
gBreakpoints = gDebugger.DebuggerController.Breakpoints;
|
||||
|
||||
return Task.spawn(function*() {
|
||||
let waitForSource = waitForDebuggerEvents(gPanel, gPanel.panelWin.EVENTS.NEW_SOURCE, 1);
|
||||
|
||||
// NOTE: devtools debugger panel needs to be already open,
|
||||
// or the bookmarklet script will not be shown in the sources panel
|
||||
callInTab(gTab, "injectBookmarklet", BOOKMARKLET_SCRIPT_CODE);
|
||||
|
||||
yield waitForSource;
|
||||
|
||||
is(gSources.values.length, 2, "Should have 2 source");
|
||||
|
||||
let item = gSources.getItemForAttachment(e => {
|
||||
return e.label.indexOf("javascript:") === 0;
|
||||
});
|
||||
ok(item, "Source label is incorrect.");
|
||||
|
||||
let res = yield promiseInvoke(gDebugger.DebuggerController.client,
|
||||
gDebugger.DebuggerController.client.request,
|
||||
{ to: item.value, type: "source"});
|
||||
|
||||
ok(res && res.source == BOOKMARKLET_SCRIPT_CODE, "SourceActor reply received");
|
||||
is(res.source, BOOKMARKLET_SCRIPT_CODE, "source is correct");
|
||||
is(res.contentType, "text/javascript", "contentType is correct");
|
||||
|
||||
yield closeDebuggerAndFinish(gPanel);
|
||||
});
|
||||
});
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
<!-- Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ -->
|
||||
<!doctype html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>Debugger test page</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>function injectBookmarklet(bookmarklet) { setTimeout(function() { window.location = "javascript:" + bookmarklet; }, 0); }</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,603 @@
|
|||
/* 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/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
const { Ci, Cc } = require("chrome");
|
||||
const { Services } = require("resource://gre/modules/Services.jsm");
|
||||
const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/device.properties");
|
||||
|
||||
/* `Devices` is a catalog of existing devices and their properties, intended
|
||||
* for (mobile) device emulation tools and features.
|
||||
*
|
||||
* The properties of a device are:
|
||||
* - name: Device brand and model(s).
|
||||
* - width: Viewport width.
|
||||
* - height: Viewport height.
|
||||
* - pixelRatio: Screen pixel ratio to viewport.
|
||||
* - userAgent: Device UserAgent string.
|
||||
* - touch: Whether the screen is touch-enabled.
|
||||
*
|
||||
* To add more devices to this catalog, either patch this file, or push new
|
||||
* device descriptions from your own code (e.g. an addon) like so:
|
||||
*
|
||||
* var myPhone = { name: "My Phone", ... };
|
||||
* require("devtools/shared/devices").Devices.Others.phones.push(myPhone);
|
||||
*/
|
||||
|
||||
let Devices = {
|
||||
Types: ["phones", "tablets", "notebooks", "televisions", "watches"],
|
||||
|
||||
// Get the localized string of a device type.
|
||||
GetString(deviceType) {
|
||||
return Strings.GetStringFromName("device." + deviceType);
|
||||
},
|
||||
};
|
||||
exports.Devices = Devices;
|
||||
|
||||
|
||||
// The `Devices.FirefoxOS` list was put together from various sources online.
|
||||
Devices.FirefoxOS = {
|
||||
phones: [
|
||||
{
|
||||
name: "Firefox OS Flame",
|
||||
width: 320,
|
||||
height: 570,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Alcatel One Touch Fire, Fire C",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; ALCATELOneTouch4012X; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Alcatel Fire E",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Mobile; ALCATELOneTouch4012X; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Geeksphone Keon",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Geeksphone Peak, Revolution",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Intex Cloud Fx",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "LG Fireweb",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; LG-D300; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Spice Fire One Mi-FX1",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Symphony GoFox F15",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Zen Fire 105",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "ZTE Open",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; ZTEOPEN; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "ZTE Open C",
|
||||
width: 320,
|
||||
height: 450,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Mobile; OPENC; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
],
|
||||
tablets: [
|
||||
{
|
||||
name: "Foxconn InFocus",
|
||||
width: 1280,
|
||||
height: 800,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "VIA Vixen",
|
||||
width: 1024,
|
||||
height: 600,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0",
|
||||
touch: true,
|
||||
},
|
||||
],
|
||||
notebooks: [
|
||||
],
|
||||
televisions: [
|
||||
{
|
||||
name: "720p HD Television",
|
||||
width: 1280,
|
||||
height: 720,
|
||||
pixelRatio: 1,
|
||||
userAgent: "",
|
||||
touch: false,
|
||||
},
|
||||
{
|
||||
name: "1080p Full HD Television",
|
||||
width: 1920,
|
||||
height: 1080,
|
||||
pixelRatio: 1,
|
||||
userAgent: "",
|
||||
touch: false,
|
||||
},
|
||||
{
|
||||
name: "4K Ultra HD Television",
|
||||
width: 3840,
|
||||
height: 2160,
|
||||
pixelRatio: 1,
|
||||
userAgent: "",
|
||||
touch: false,
|
||||
},
|
||||
],
|
||||
watches: [
|
||||
{
|
||||
name: "LG G Watch",
|
||||
width: 280,
|
||||
height: 280,
|
||||
pixelRatio: 1,
|
||||
userAgent: "",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "LG G Watch R",
|
||||
width: 320,
|
||||
height: 320,
|
||||
pixelRatio: 1,
|
||||
userAgent: "",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Moto 360",
|
||||
width: 320,
|
||||
height: 290,
|
||||
pixelRatio: 1,
|
||||
userAgent: "",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Samsung Gear Live",
|
||||
width: 320,
|
||||
height: 320,
|
||||
pixelRatio: 1,
|
||||
userAgent: "",
|
||||
touch: true,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
// `Devices.Others` was derived from the Chromium source code:
|
||||
// - chromium/src/third_party/WebKit/Source/devtools/front_end/toolbox/OverridesUI.js
|
||||
Devices.Others = {
|
||||
phones: [
|
||||
{
|
||||
name: "Apple iPhone 3GS",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Apple iPhone 4",
|
||||
width: 320,
|
||||
height: 480,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Apple iPhone 5",
|
||||
width: 320,
|
||||
height: 568,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Apple iPhone 6",
|
||||
width: 375,
|
||||
height: 667,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Apple iPhone 6 Plus",
|
||||
width: 414,
|
||||
height: 736,
|
||||
pixelRatio: 3,
|
||||
userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "BlackBerry Z10",
|
||||
width: 384,
|
||||
height: 640,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "BlackBerry Z30",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Google Nexus 4",
|
||||
width: 384,
|
||||
height: 640,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Google Nexus 5",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 3,
|
||||
userAgent: "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Google Nexus S",
|
||||
width: 320,
|
||||
height: 533,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Nexus S Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "HTC Evo, Touch HD, Desire HD, Desire",
|
||||
width: 320,
|
||||
height: 533,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Sprint APA9292KT Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "HTC One X, EVO LTE",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "HTC Sensation, Evo 3D",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "LG Optimus 2X, Optimus 3D, Optimus Black",
|
||||
width: 320,
|
||||
height: 533,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.2; en-us; LG-P990/V08c Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "LG Optimus G",
|
||||
width: 384,
|
||||
height: 640,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; Android 4.0; LG-E975 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "LG Optimus LTE, Optimus 4X HD",
|
||||
width: 424,
|
||||
height: 753,
|
||||
pixelRatio: 1.7,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.3; en-us; LG-P930 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "LG Optimus One",
|
||||
width: 213,
|
||||
height: 320,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; LG-MS690 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Motorola Defy, Droid, Droid X, Milestone",
|
||||
width: 320,
|
||||
height: 569,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.0; en-us; Milestone Build/ SHOLS_U2_01.03.1) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Motorola Droid 3, Droid 4, Droid Razr, Atrix 4G, Atrix 2",
|
||||
width: 540,
|
||||
height: 960,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Droid Build/FRG22D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Motorola Droid Razr HD",
|
||||
width: 720,
|
||||
height: 1280,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.3; en-us; DROID RAZR 4G Build/6.5.1-73_DHD-11_M1-29) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Nokia C5, C6, C7, N97, N8, X7",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 1,
|
||||
userAgent: "NokiaN97/21.1.107 (SymbianOS/9.4; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebkit/525 (KHTML, like Gecko) BrowserNG/7.1.4",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Nokia Lumia 7X0, Lumia 8XX, Lumia 900, N800, N810, N900",
|
||||
width: 320,
|
||||
height: 533,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 820)",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Samsung Galaxy Note 3",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 3,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Samsung Galaxy Note II",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Samsung Galaxy Note",
|
||||
width: 400,
|
||||
height: 640,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.3; en-us; SAMSUNG-SGH-I717 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Samsung Galaxy S III, Galaxy Nexus",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Samsung Galaxy S, S II, W",
|
||||
width: 320,
|
||||
height: 533,
|
||||
pixelRatio: 1.5,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.1; en-us; GT-I9000 Build/ECLAIR) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Samsung Galaxy S4",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 3,
|
||||
userAgent: "Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Sony Xperia S, Ion",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 4.0; en-us; LT28at Build/6.1.C.1.111) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Sony Xperia Sola, U",
|
||||
width: 480,
|
||||
height: 854,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.3; en-us; SonyEricssonST25i Build/6.0.B.1.564) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Sony Xperia Z, Z1",
|
||||
width: 360,
|
||||
height: 640,
|
||||
pixelRatio: 3,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 4.2; en-us; SonyC6903 Build/14.1.G.1.518) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
|
||||
touch: true,
|
||||
},
|
||||
],
|
||||
tablets: [
|
||||
{
|
||||
name: "Amazon Kindle Fire HDX 7″",
|
||||
width: 1920,
|
||||
height: 1200,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Amazon Kindle Fire HDX 8.9″",
|
||||
width: 2560,
|
||||
height: 1600,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Amazon Kindle Fire (First Generation)",
|
||||
width: 1024,
|
||||
height: 600,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.141.16-Gen4_11004310) AppleWebkit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Apple iPad 1 / 2 / iPad Mini",
|
||||
width: 1024,
|
||||
height: 768,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (iPad; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8L1 Safari/6533.18.5",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Apple iPad 3 / 4",
|
||||
width: 1024,
|
||||
height: 768,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "BlackBerry PlayBook",
|
||||
width: 1024,
|
||||
height: 600,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Google Nexus 10",
|
||||
width: 1280,
|
||||
height: 800,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Google Nexus 7 2",
|
||||
width: 960,
|
||||
height: 600,
|
||||
pixelRatio: 2,
|
||||
userAgent: "Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Google Nexus 7",
|
||||
width: 966,
|
||||
height: 604,
|
||||
pixelRatio: 1.325,
|
||||
userAgent: "Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Motorola Xoom, Xyboard",
|
||||
width: 1280,
|
||||
height: 800,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/525.10 (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Samsung Galaxy Tab 7.7, 8.9, 10.1",
|
||||
width: 1280,
|
||||
height: 800,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Samsung Galaxy Tab",
|
||||
width: 1024,
|
||||
height: 600,
|
||||
pixelRatio: 1,
|
||||
userAgent: "Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
touch: true,
|
||||
},
|
||||
],
|
||||
notebooks: [
|
||||
{
|
||||
name: "Notebook with touch",
|
||||
width: 1280,
|
||||
height: 950,
|
||||
pixelRatio: 1,
|
||||
userAgent: "",
|
||||
touch: true,
|
||||
},
|
||||
{
|
||||
name: "Notebook with HiDPI screen",
|
||||
width: 1440,
|
||||
height: 900,
|
||||
pixelRatio: 2,
|
||||
userAgent: "",
|
||||
touch: false,
|
||||
},
|
||||
{
|
||||
name: "Generic notebook",
|
||||
width: 1280,
|
||||
height: 800,
|
||||
pixelRatio: 1,
|
||||
userAgent: "",
|
||||
touch: false,
|
||||
},
|
||||
],
|
||||
televisions: [
|
||||
],
|
||||
watches: [
|
||||
],
|
||||
};
|
|
@ -48,6 +48,7 @@ EXTRA_JS_MODULES.devtools.shared.timeline += [
|
|||
EXTRA_JS_MODULES.devtools.shared += [
|
||||
'autocomplete-popup.js',
|
||||
'd3.js',
|
||||
'devices.js',
|
||||
'doorhanger.js',
|
||||
'frame-script-utils.js',
|
||||
'inplace-editor.js',
|
||||
|
|
|
@ -37,7 +37,6 @@ add_task(function*() {
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
function* testLivePreviewData(data, ruleView, selector) {
|
||||
let testElement = getNode(selector);
|
||||
let idRuleEditor = getRuleViewRuleEditor(ruleView, 1);
|
||||
|
@ -57,10 +56,13 @@ function* testLivePreviewData(data, ruleView, selector) {
|
|||
EventUtils.synthesizeKey("VK_RETURN", {});
|
||||
}
|
||||
|
||||
// This wait is an orange waiting to happen, but it might take a few event
|
||||
// loop spins in either the client or parent process before we see the
|
||||
// updated value.
|
||||
yield wait(1);
|
||||
// Wait for the modifyproperties request to complete before
|
||||
// checking the computed style.
|
||||
for (let rule of ruleView._elementStyle.rules) {
|
||||
if (rule._applyingModifications) {
|
||||
yield rule._applyingModifications;
|
||||
}
|
||||
}
|
||||
|
||||
// While the editor is still focused in, the display should have changed already
|
||||
is((yield getComputedStyleProperty(selector, null, "display")),
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
# 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/.
|
||||
|
||||
# LOCALIZATION NOTE These strings are used inside Device Emulation developer
|
||||
# tools. The correct localization of this file might be to keep it in English,
|
||||
# or another language commonly spoken among web developers. You want to make
|
||||
# that choice consistent across the developer tools. A good criteria is the
|
||||
# language in which you'd find the best documentation on web development on the
|
||||
# web.
|
||||
|
||||
# LOCALIZATION NOTE:
|
||||
# These strings are category names in a list of devices that a user can choose
|
||||
# to simulate (e.g. "ZTE Open C", "VIA Vixen", "720p HD Television", etc).
|
||||
device.phones=Phones
|
||||
device.tablets=Tablets
|
||||
device.notebooks=Notebooks
|
||||
device.televisions=TVs
|
||||
device.watches=Watches
|
|
@ -33,6 +33,7 @@
|
|||
locale/browser/devtools/appcacheutils.properties (%chrome/browser/devtools/appcacheutils.properties)
|
||||
locale/browser/devtools/debugger.dtd (%chrome/browser/devtools/debugger.dtd)
|
||||
locale/browser/devtools/debugger.properties (%chrome/browser/devtools/debugger.properties)
|
||||
locale/browser/devtools/device.properties (%chrome/browser/devtools/device.properties)
|
||||
locale/browser/devtools/netmonitor.dtd (%chrome/browser/devtools/netmonitor.dtd)
|
||||
locale/browser/devtools/netmonitor.properties (%chrome/browser/devtools/netmonitor.properties)
|
||||
locale/browser/devtools/shadereditor.dtd (%chrome/browser/devtools/shadereditor.dtd)
|
||||
|
|
|
@ -355,6 +355,14 @@ body {
|
|||
background-position: center;
|
||||
background-size: 30px 24px;
|
||||
background-repeat: no-repeat;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Remove dotted border when button is focused */
|
||||
.button::-moz-focus-inner {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
|
|
|
@ -557,20 +557,49 @@ var LoginManagerContent = {
|
|||
/*
|
||||
* _fillform
|
||||
*
|
||||
* Fill the form with login information if we can find it. This will find
|
||||
* an array of logins if not given any, otherwise it will use the logins
|
||||
* passed in. The logins are returned so they can be reused for
|
||||
* Fill the form with the provided login information.
|
||||
* The logins are returned so they can be reused for
|
||||
* optimization. Success of action is also returned in format
|
||||
* [success, foundLogins].
|
||||
*
|
||||
* - autofillForm denotes if we should fill the form in automatically
|
||||
* - userTriggered is an indication of whether this filling was triggered by
|
||||
* the user
|
||||
* - foundLogins is an array of nsILoginInfo for optimization
|
||||
* - foundLogins is an array of nsILoginInfo
|
||||
*/
|
||||
_fillForm : function (form, autofillForm, clobberPassword,
|
||||
userTriggered, foundLogins) {
|
||||
let ignoreAutocomplete = true;
|
||||
const AUTOFILL_RESULT = {
|
||||
FILLED: 0,
|
||||
NO_PASSWORD_FIELD: 1,
|
||||
PASSWORD_DISABLED_READONLY: 2,
|
||||
NO_LOGINS_FIT: 3,
|
||||
NO_SAVED_LOGINS: 4,
|
||||
EXISTING_PASSWORD: 5,
|
||||
EXISTING_USERNAME: 6,
|
||||
MULTIPLE_LOGINS: 7,
|
||||
NO_AUTOFILL_FORMS: 8,
|
||||
AUTOCOMPLETE_OFF: 9,
|
||||
UNKNOWN_FAILURE: 10,
|
||||
};
|
||||
|
||||
function recordAutofillResult(result) {
|
||||
if (userTriggered) {
|
||||
// Ignore fills as a result of user action.
|
||||
return;
|
||||
}
|
||||
const autofillResultHist = Services.telemetry.getHistogramById("PWMGR_FORM_AUTOFILL_RESULT");
|
||||
autofillResultHist.add(result);
|
||||
}
|
||||
|
||||
// Nothing to do if we have no matching logins available.
|
||||
if (foundLogins.length == 0) {
|
||||
// We don't log() here since this is a very common case.
|
||||
recordAutofillResult(AUTOFILL_RESULT.NO_SAVED_LOGINS);
|
||||
return [false, foundLogins];
|
||||
}
|
||||
|
||||
// Heuristically determine what the user/pass fields are
|
||||
// We do this before checking to see if logins are stored,
|
||||
// so that the user isn't prompted for a master password
|
||||
|
@ -579,12 +608,16 @@ var LoginManagerContent = {
|
|||
this._getFormFields(form, false);
|
||||
|
||||
// Need a valid password field to do anything.
|
||||
if (passwordField == null)
|
||||
if (passwordField == null) {
|
||||
log("not filling form, no password field found");
|
||||
recordAutofillResult(AUTOFILL_RESULT.NO_PASSWORD_FIELD);
|
||||
return [false, foundLogins];
|
||||
}
|
||||
|
||||
// If the password field is disabled or read-only, there's nothing to do.
|
||||
if (passwordField.disabled || passwordField.readOnly) {
|
||||
log("not filling form, password field disabled or read-only");
|
||||
recordAutofillResult(AUTOFILL_RESULT.PASSWORD_DISABLED_READONLY);
|
||||
return [false, foundLogins];
|
||||
}
|
||||
|
||||
|
@ -619,11 +652,11 @@ var LoginManagerContent = {
|
|||
return fit;
|
||||
}, this);
|
||||
|
||||
|
||||
// Nothing to do if we have no matching logins available.
|
||||
if (logins.length == 0)
|
||||
if (logins.length == 0) {
|
||||
log("form not filled, none of the logins fit in the field");
|
||||
recordAutofillResult(AUTOFILL_RESULT.NO_LOGINS_FIT);
|
||||
return [false, foundLogins];
|
||||
|
||||
}
|
||||
|
||||
// The reason we didn't end up filling the form, if any. We include
|
||||
// this in the formInfo object we send with the passwordmgr-found-logins
|
||||
|
@ -641,6 +674,8 @@ var LoginManagerContent = {
|
|||
didntFillReason = "existingPassword";
|
||||
this._notifyFoundLogins(didntFillReason, usernameField,
|
||||
passwordField, foundLogins, null);
|
||||
log("form not filled, the password field was already filled");
|
||||
recordAutofillResult(AUTOFILL_RESULT.EXISTING_PASSWORD);
|
||||
return [false, foundLogins];
|
||||
}
|
||||
|
||||
|
@ -744,6 +779,28 @@ var LoginManagerContent = {
|
|||
this._notifyFoundLogins(didntFillReason, usernameField, passwordField,
|
||||
foundLogins, selectedLogin);
|
||||
|
||||
if (didFillForm) {
|
||||
recordAutofillResult(AUTOFILL_RESULT.FILLED);
|
||||
} else {
|
||||
let autofillResult = AUTOFILL_RESULT.UNKNOWN_FAILURE;
|
||||
switch (didntFillReason) {
|
||||
// existingPassword is already handled above
|
||||
case "existingUsername":
|
||||
autofillResult = AUTOFILL_RESULT.EXISTING_USERNAME;
|
||||
break;
|
||||
case "multipleLogins":
|
||||
autofillResult = AUTOFILL_RESULT.MULTIPLE_LOGINS;
|
||||
break;
|
||||
case "noAutofillForms":
|
||||
autofillResult = AUTOFILL_RESULT.NO_AUTOFILL_FORMS;
|
||||
break;
|
||||
case "autocompleteOff":
|
||||
autofillResult = AUTOFILL_RESULT.AUTOCOMPLETE_OFF;
|
||||
break;
|
||||
}
|
||||
recordAutofillResult(autofillResult);
|
||||
}
|
||||
|
||||
return [didFillForm, foundLogins];
|
||||
},
|
||||
|
||||
|
|
|
@ -25,10 +25,10 @@
|
|||
</div>
|
||||
|
||||
<ul id="reader-toolbar" class="toolbar toolbar-hidden">
|
||||
<li><a id="close-button" class="button close-button" href="#"></a></li>
|
||||
<li><a id="share-button" class="button share-button" href="#"></a></li>
|
||||
<li><button id="close-button" class="button close-button"/></li>
|
||||
<li><button id="share-button" class="button share-button"/></li>
|
||||
<ul id="style-dropdown" class="dropdown">
|
||||
<li><a class="dropdown-toggle button style-button" href="#"></a></li>
|
||||
<li><button class="dropdown-toggle button style-button"/></li>
|
||||
<li class="dropdown-popup">
|
||||
<ul id="font-type-buttons"></ul>
|
||||
<hr></hr>
|
||||
|
@ -38,8 +38,8 @@
|
|||
<div class="dropdown-arrow"/>
|
||||
</li>
|
||||
</ul>
|
||||
<li><a id="toggle-button" class="button toggle-button" href="#"></a></li>
|
||||
<li><a id="list-button" class="button list-button" href="#"></a></li>
|
||||
<li><button id="toggle-button" class="button toggle-button"/></li>
|
||||
<li><button id="list-button" class="button list-button"/></li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
|
|
|
@ -7363,6 +7363,12 @@
|
|||
"extended_statistics_ok": true,
|
||||
"description": "The number of sites for which the user has explicitly rejected saving logins"
|
||||
},
|
||||
"PWMGR_FORM_AUTOFILL_RESULT": {
|
||||
"expires_in_version": "never",
|
||||
"kind": "enumerated",
|
||||
"n_values" : 20,
|
||||
"description": "The result of auto-filling a login form. See http://mzl.la/1Mbs6jL for bucket descriptions."
|
||||
},
|
||||
"PWMGR_NUM_PASSWORDS_PER_HOSTNAME": {
|
||||
"expires_in_version": "never",
|
||||
"kind": "linear",
|
||||
|
|
|
@ -5319,6 +5319,12 @@ ThreadSources.prototype = {
|
|||
}
|
||||
} catch(ex) {
|
||||
// Not a valid URI.
|
||||
|
||||
// bug 1124536: fix getSourceText on scripts associated "javascript:SOURCE" urls
|
||||
// (e.g. 'evaluate(sandbox, sourcecode, "javascript:"+sourcecode)' )
|
||||
if (url.indexOf("javascript:") === 0) {
|
||||
spec.contentType = "text/javascript";
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -239,9 +239,12 @@ body {
|
|||
background-position: center;
|
||||
background-size: 24px 24px;
|
||||
background-repeat: no-repeat;
|
||||
padding: 4px;
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
background-color: transparent;
|
||||
height: 40px;
|
||||
width: 40px;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #c1c1c1;
|
||||
}
|
||||
|
||||
|
@ -265,7 +268,6 @@ body {
|
|||
background-color: #FBFBFB;
|
||||
font-size: 14px;
|
||||
visibility: hidden;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #B5B5B5;
|
||||
box-shadow: 0px 1px 12px #666;
|
||||
|
@ -376,7 +378,7 @@ body {
|
|||
|
||||
.close-button {
|
||||
background-image: url("chrome://global/skin/reader/RM-Close-24x24.svg");
|
||||
height: 60px;
|
||||
height: 68px;
|
||||
background-position: center 8px;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче