Merge mozilla-central to mozilla-inbound

This commit is contained in:
Carsten "Tomcat" Book 2015-07-23 13:33:36 +02:00
commit a75608405a
51 changed files with 349 additions and 190 deletions

View File

@ -180,7 +180,7 @@
children: [
{
// #document ("about:newtab" preloaded)
role: ROLE_APPLICATION
role: ROLE_DOCUMENT
// children: [ ... ] // Ignore document content.
}
]

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="e862ab9177af664f00b4522e2350f4cb13866d73">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="e862ab9177af664f00b4522e2350f4cb13866d73">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
@ -38,7 +38,7 @@
<project name="platform/bootable/recovery" path="bootable/recovery" revision="286354e69491f7cba5b9ec6b551831fe6f85ad0d"/>
<project name="platform/external/aac" path="external/aac" revision="fa3eba16446cc8f2f5e2dfc20d86a49dbd37299e"/>
<project name="platform/external/bison" path="external/bison" revision="c2418b886165add7f5a31fc5609f0ce2d004a90e"/>
<project name="platform/external/bluetooth/bluedroid" path="external/bluetooth/bluedroid" revision="3e5570325187f5cd9f8a944cbe4a93822e8c6328"/>
<project name="platform/external/bluetooth/bluedroid" path="external/bluetooth/bluedroid" revision="d6cfe067653ee2625827b08b3e8b3662c51f575b"/>
<project name="platform/external/bsdiff" path="external/bsdiff" revision="23e322ab19fb7d74c2c37e40ce364d9f709bdcee"/>
<project name="platform/external/bzip2" path="external/bzip2" revision="1cb636bd8e9e5cdfd5d5b2909a122f6e80db62de"/>
<project name="platform/external/checkpolicy" path="external/checkpolicy" revision="0d73ef7049feee794f14cf1af88d05dae8139914"/>
@ -105,7 +105,7 @@
<project name="platform/frameworks/native" path="frameworks/native" revision="8d54940d9bdad8fec3208ff58ddab590be9fe0d4"/>
<project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="dbbe673145107e99883f62bafd70c5f43f11065c"/>
<project name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="aac6c4bb59a6577c97cbda68699829b507b7490d"/>
<project name="platform/hardware/libhardware" path="hardware/libhardware" revision="fbeca55f4695dd07c0291213403533b8fbca4885"/>
<project name="platform/hardware/libhardware" path="hardware/libhardware" revision="264e408d639c94a922965e3cbee5b1819674992b"/>
<project name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="68b0c269fd1889f47ecfb9119c05281e9b6db0af"/>
<project name="platform/libcore" path="libcore" revision="e195beab082c09217318fc19250caeaf4c1bd800"/>
<project name="platform/libnativehelper" path="libnativehelper" revision="feeb36c2bd4adfe285f98f5de92e0f3771b2c115"/>

View File

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="8bc59310552179f9a8bc6cdd0188e2475df52fb7"/>

View File

@ -17,7 +17,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="657894b4a1dc0a926117f4812e0940229f9f676f"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b587ca868ee75758959c2470a9c35a21299377f"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="e862ab9177af664f00b4522e2350f4cb13866d73">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="61e82f99bb8bc78d52b5717e9a2481ec7267fa33">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

View File

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="8bc59310552179f9a8bc6cdd0188e2475df52fb7"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="e862ab9177af664f00b4522e2350f4cb13866d73">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

View File

@ -1,9 +1,9 @@
{
"git": {
"git_revision": "f04fdbfa1943dddeab8ecd1299a76ab56e590d00",
"git_revision": "aa1698251e86c820c50c045b0a3ff65fd6b0eee7",
"remote": "https://git.mozilla.org/releases/gaia.git",
"branch": ""
},
"revision": "01d6b677af341b70496c9ae304bd07b2697f9410",
"revision": "0cf27fd21b9b89578d2114bfd5a397e4352748f6",
"repo_path": "integration/gaia-central"
}

View File

@ -17,7 +17,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="657894b4a1dc0a926117f4812e0940229f9f676f"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b587ca868ee75758959c2470a9c35a21299377f"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="61e82f99bb8bc78d52b5717e9a2481ec7267fa33">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f04fdbfa1943dddeab8ecd1299a76ab56e590d00"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="aa1698251e86c820c50c045b0a3ff65fd6b0eee7"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9f45c1988fe72749f0659409e6e3320fabf7b79a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

View File

@ -110,14 +110,7 @@ let gFxAccounts = {
// notified of fxa-migration:state-changed in response if necessary.
Services.obs.notifyObservers(null, "fxa-migration:state-request", null);
let contentUri = Services.urlFormatter.formatURLPref("identity.fxaccounts.remote.webchannel.uri");
// The FxAccountsWebChannel listens for events and updates
// the state machine accordingly.
let fxAccountsWebChannel = new FxAccountsWebChannel({
content_uri: contentUri,
channel_id: this.FxAccountsCommon.WEBCHANNEL_ID
});
EnsureFxAccountsWebChannel();
this._initialized = true;
this.updateUI();
@ -482,5 +475,5 @@ XPCOMUtils.defineLazyGetter(gFxAccounts, "FxAccountsCommon", function () {
XPCOMUtils.defineLazyModuleGetter(gFxAccounts, "fxaMigrator",
"resource://services-sync/FxaMigrator.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "FxAccountsWebChannel",
XPCOMUtils.defineLazyModuleGetter(this, "EnsureFxAccountsWebChannel",
"resource://gre/modules/FxAccountsWebChannel.jsm");

View File

@ -140,7 +140,7 @@ let gDrag = {
// drag image with its default opacity.
let dragElement = document.createElementNS(HTML_NAMESPACE, "div");
dragElement.classList.add("newtab-drag");
let scrollbox = document.getElementById("newtab-scrollbox");
let scrollbox = document.getElementById("newtab-vertical-margin");
scrollbox.appendChild(dragElement);
dt.setDragImage(dragElement, 0, 0);

View File

@ -2,6 +2,25 @@
* 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/. */
html {
width: 100%;
height: 100%;
}
body {
font: message-box;
width: 100%;
height: 100%;
padding: 0;
margin: 0;
background-color: #F9F9F9;
display: -moz-box;
position: relative;
-moz-box-flex: 1;
-moz-user-focus: normal;
-moz-box-orient: vertical;
}
input {
font: message-box !important;
font-size: 16px !important;
@ -11,23 +30,9 @@ input[type=button] {
cursor: pointer;
}
/* SCROLLBOX */
#newtab-scrollbox {
display: -moz-box;
position: relative;
-moz-box-flex: 1;
-moz-user-focus: normal;
-moz-box-orient: vertical;
}
#newtab-scrollbox:not([page-disabled]) {
overflow: auto;
}
/* UNDO */
#newtab-undo-container {
transition: opacity 100ms ease-out;
display: -moz-box;
-moz-box-align: center;
-moz-box-pack: center;
}
@ -45,7 +50,7 @@ input[type=button] {
z-index: 101;
}
#newtab-customize-button:-moz-locale-dir(rtl) {
#newtab-customize-button:-moz-dir(rtl) {
left: 20px;
right: auto;
}
@ -66,11 +71,15 @@ input[type=button] {
z-index: 1;
}
#newtab-margin-undo-container:-moz-locale-dir(rtl) {
#newtab-margin-undo-container:-moz-dir(rtl) {
left: auto;
right: 6px;
}
#newtab-undo-close-button:-moz-dir(rtl) {
float:left;
}
#newtab-horizontal-margin {
display: -moz-box;
-moz-box-flex: 1;
@ -238,7 +247,7 @@ input[type=button] {
background-color: #000000;
}
.newtab-sponsored:-moz-locale-dir(rtl) {
.newtab-sponsored:-moz-dir(rtl) {
right: 0;
left: auto;
}
@ -302,13 +311,13 @@ input[type=button] {
}
}
.newtab-control-pin:-moz-locale-dir(ltr),
.newtab-control-block:-moz-locale-dir(rtl) {
.newtab-control-pin:-moz-dir(ltr),
.newtab-control-block:-moz-dir(rtl) {
left: 4px;
}
.newtab-control-block:-moz-locale-dir(ltr),
.newtab-control-pin:-moz-locale-dir(rtl) {
.newtab-control-block:-moz-dir(ltr),
.newtab-control-pin:-moz-dir(rtl) {
right: 4px;
}
@ -442,6 +451,7 @@ input[type=button] {
transition-duration: 0ms;
}
/* CUSTOMIZE */
#newtab-customize-overlay {
opacity: 0;
display: none;
@ -456,6 +466,12 @@ input[type=button] {
.newtab-customize-panel-container {
position: absolute;
margin-right: 40px;
right: 0;
}
.newtab-customize-panel-container:-moz-dir(rtl) {
right: auto;
left: 0;
}
#newtab-customize-panel {
@ -471,12 +487,12 @@ input[type=button] {
transform: translate(-30px, -20px) scale(0) translate(30px, 20px);
}
#newtab-customize-panel:-moz-locale-dir(rtl) {
#newtab-customize-panel:-moz-dir(rtl) {
transform-origin: 40px top 20px;
}
#newtab-customize-panel:-moz-locale-dir(rtl),
#newtab-customize-panel-anchor:-moz-locale-dir(rtl) {
#newtab-customize-panel:-moz-dir(rtl),
#newtab-customize-panel-anchor:-moz-dir(rtl) {
left: 15px;
right: auto;
}

View File

@ -44,7 +44,7 @@ function newTabString(name, args) {
}
function inPrivateBrowsingMode() {
return PrivateBrowsingUtils.isWindowPrivate(window);
return PrivateBrowsingUtils.isContentWindowPrivate(window);
}
const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";

View File

@ -4,21 +4,27 @@
- 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/. -->
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/contentSearchUI.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/newtab/newTab.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/newtab/newTab.css" type="text/css"?>
<!DOCTYPE window [
<!DOCTYPE html [
<!ENTITY % newTabDTD SYSTEM "chrome://browser/locale/newTab.dtd">
%newTabDTD;
<!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd">
%browserDTD;
<!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
%globalDTD;
]>
<xul:window id="newtab-window" xmlns="http://www.w3.org/1999/xhtml"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
title="&newtab.pageTitle;">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>&newtab.pageTitle;</title>
<link rel="stylesheet" type="text/css" media="all" href="chrome://global/skin/" />
<link rel="stylesheet" type="text/css" media="all" href="chrome://browser/content/contentSearchUI.css" />
<link rel="stylesheet" type="text/css" media="all" href="chrome://browser/content/newtab/newTab.css" />
<link rel="stylesheet" type="text/css" media="all" href="chrome://browser/skin/newtab/newTab.css" />
</head>
<body dir="&locale.dir;">
<div id="newtab-customize-overlay"></div>
<div class="newtab-customize-panel-container">
<div id="newtab-customize-panel" orient="vertical">
@ -47,8 +53,6 @@
</div>
</div>
<div id="newtab-customize-overlay"></div>
<div id="newtab-intro-mask">
<div id="newtab-intro-modal">
<div id="newtab-intro-header"/>
@ -70,27 +74,18 @@
</div>
</div>
<div id="newtab-scrollbox">
<div id="newtab-vertical-margin">
<div id="newtab-margin-top"/>
<div id="newtab-margin-undo-container">
<div id="newtab-undo-container" undo-disabled="true">
<xul:label id="newtab-undo-label"
value="&newtab.undo.removedLabel;" />
<xul:button id="newtab-undo-button" tabindex="-1"
label="&newtab.undo.undoButton;"
class="newtab-undo-button" />
<xul:button id="newtab-undo-restore-button" tabindex="-1"
label="&newtab.undo.restoreButton;"
class="newtab-undo-button" />
<xul:toolbarbutton id="newtab-undo-close-button" tabindex="-1"
class="close-icon tabbable"
tooltiptext="&newtab.undo.closeTooltip;" />
<div id="newtab-margin-undo-container">
<div id="newtab-undo-container" undo-disabled="true">
<label id="newtab-undo-label">&newtab.undo.removedLabel;</label>
<button id="newtab-undo-button" tabindex="-1"
class="newtab-undo-button">&newtab.undo.undoButton;</button>
<button id="newtab-undo-restore-button" tabindex="-1"
class="newtab-undo-button">&newtab.undo.restoreButton;</button>
<button id="newtab-undo-close-button" tabindex="-1" title="&newtab.undo.closeTooltip;"/>
</div>
</div>
</div>
<div id="newtab-search-container">
<div id="newtab-search-form">
@ -112,13 +107,9 @@
</div>
<div id="newtab-margin-bottom"/>
</div>
<input id="newtab-customize-button" type="button" title="&newtab.customize.title;"/>
</div>
<xul:script type="text/javascript;version=1.8"
src="chrome://browser/content/contentSearchUI.js"/>
<xul:script type="text/javascript;version=1.8"
src="chrome://browser/content/newtab/newTab.js"/>
</xul:window>
<input id="newtab-customize-button" type="button" dir="&locale.dir;" title="&newtab.customize.title;"/>
</body>
<script type="text/javascript;version=1.8" src="chrome://browser/content/contentSearchUI.js"/>
<script type="text/javascript;version=1.8" src="chrome://browser/content/newtab/newTab.js"/>
</html>

View File

@ -146,7 +146,7 @@ let gPage = {
*/
_updateAttributes: function Page_updateAttributes(aValue) {
// Set the nodes' states.
let nodeSelector = "#newtab-scrollbox, #newtab-grid, #newtab-search-container";
let nodeSelector = "#newtab-grid, #newtab-search-container";
for (let node of document.querySelectorAll(nodeSelector)) {
if (aValue)
node.removeAttribute("page-disabled");
@ -157,7 +157,7 @@ let gPage = {
// Enables/disables the control and link elements.
let inputSelector = ".newtab-control, .newtab-link";
for (let input of document.querySelectorAll(inputSelector)) {
if (aValue)
if (aValue)
input.removeAttribute("tabindex");
else
input.setAttribute("tabindex", "-1");

View File

@ -103,7 +103,7 @@ let gTransformation = {
let style = aSite.node.style;
let comp = getComputedStyle(aSite.node, null);
style.width = comp.getPropertyValue("width")
style.width = comp.getPropertyValue("width");
style.height = comp.getPropertyValue("height");
aSite.node.setAttribute("frozen", "true");

View File

@ -5658,6 +5658,44 @@
<implementation>
<!--
This code is the same as in toolkit/content/widgets/tabbox.xml,
except for the _tabAttrModified call. If you modify it, tabbox.xml
might also need to be modified.
-->
<property name="_visuallySelected">
<setter>
<![CDATA[
if (val)
this.setAttribute("visuallyselected", "true");
else
this.removeAttribute("visuallyselected");
gBrowser._tabAttrModified(this, ["visuallyselected"]);
if (this.previousSibling && this.previousSibling.localName == "tab") {
if (val)
this.previousSibling.setAttribute("beforeselected", "true");
else
this.previousSibling.removeAttribute("beforeselected");
this.removeAttribute("first-tab");
}
else
this.setAttribute("first-tab", "true");
if (this.nextSibling && this.nextSibling.localName == "tab") {
if (val)
this.nextSibling.setAttribute("afterselected", "true");
else
this.nextSibling.removeAttribute("afterselected");
this.removeAttribute("last-tab");
}
else
this.setAttribute("last-tab", "true");
return val;
]]>
</setter>
</property>
<property name="_selected">
<setter>
<![CDATA[

View File

@ -12,8 +12,9 @@ XPCOMUtils.defineLazyGetter(this, "FxAccountsCommon", function () {
XPCOMUtils.defineLazyModuleGetter(this, "WebChannel",
"resource://gre/modules/WebChannel.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "FxAccountsWebChannel",
"resource://gre/modules/FxAccountsWebChannel.jsm");
// FxAccountsWebChannel isn't explicitly exported by FxAccountsWebChannel.jsm
// but we can get it here via a backstage pass.
let {FxAccountsWebChannel} = Components.utils.import("resource://gre/modules/FxAccountsWebChannel.jsm", {});
const TEST_HTTP_PATH = "http://example.com";
const TEST_BASE_URL = TEST_HTTP_PATH + "/browser/browser/base/content/test/general/browser_fxa_web_channel.html";

View File

@ -105,7 +105,7 @@ browser.jar:
content/browser/gcli_sec_bad.svg (content/gcli_sec_bad.svg)
content/browser/gcli_sec_good.svg (content/gcli_sec_good.svg)
content/browser/gcli_sec_moderate.svg (content/gcli_sec_moderate.svg)
content/browser/newtab/newTab.xul (content/newtab/newTab.xul)
content/browser/newtab/newTab.xhtml (content/newtab/newTab.xhtml)
* content/browser/newtab/newTab.js (content/newtab/newTab.js)
content/browser/newtab/newTab.css (content/newtab/newTab.css)
content/browser/newtab/newTab.inadjacent.json (content/newtab/newTab.inadjacent.json)

View File

@ -89,7 +89,7 @@ static RedirEntry kRedirMap[] = {
nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
nsIAboutModule::ALLOW_SCRIPT |
nsIAboutModule::ENABLE_INDEXED_DB },
{ "newtab", "chrome://browser/content/newtab/newTab.xul",
{ "newtab", "chrome://browser/content/newtab/newTab.xhtml",
nsIAboutModule::ALLOW_SCRIPT },
{ "permissions", "chrome://browser/content/preferences/aboutPermissions.xul",
nsIAboutModule::ALLOW_SCRIPT },

View File

@ -47,10 +47,8 @@
"no-console": 0, // Leave as 0. We use console logging in content code.
"no-empty": 0, // TODO: Remove (use default)
"no-extra-bind": 0, // Leave as 0
"no-extra-boolean-cast": 0, // TODO: Remove (use default)
"no-multi-spaces": 0, // TBD.
"no-new": 0, // TODO: Remove (use default)
"no-redeclare": 0, // TODO: Remove (use default)
"no-return-assign": 0, // TODO: Remove (use default)
"no-underscore-dangle": 0, // Leave as 0. Commonly used for private variables.
"no-unexpected-multiline": 2,

View File

@ -700,7 +700,7 @@ loop.contacts = (function(_, mozL10n) {
category: ["local"]
};
var tel = this.state.tel.trim();
if (!!tel) {
if (tel) {
contact.tel = [{
pref: true,
type: ["fxos"],

View File

@ -700,7 +700,7 @@ loop.contacts = (function(_, mozL10n) {
category: ["local"]
};
var tel = this.state.tel.trim();
if (!!tel) {
if (tel) {
contact.tel = [{
pref: true,
type: ["fxos"],

View File

@ -151,8 +151,8 @@ loop.shared.mixins = (function() {
boundingRect.width -= boundOffset;
boundingRect.height -= boundOffset;
var x = menuNodeRect.left;
var y = menuNodeRect.top;
x = menuNodeRect.left;
y = menuNodeRect.top;
// If there's an anchor present, position it relative to it first.
var anchor = this.refs.anchor && this.refs.anchor.getDOMNode();
@ -472,8 +472,8 @@ loop.shared.mixins = (function() {
// Supply some sensible defaults for the remoteVideoDimensions if no remote
// stream is connected (yet).
if (!remoteVideoDimensions) {
var node = this._getElement(".remote");
var width = node.offsetWidth;
node = this._getElement(".remote");
width = node.offsetWidth;
var height = node.offsetHeight;
remoteVideoDimensions = {
width: width,

View File

@ -173,13 +173,13 @@ XPCOMUtils.defineLazyGetter(this, "log", () => {
});
function setJSONPref(aName, aValue) {
let value = !!aValue ? JSON.stringify(aValue) : "";
let value = aValue ? JSON.stringify(aValue) : "";
Services.prefs.setCharPref(aName, value);
}
function getJSONPref(aName) {
let value = Services.prefs.getCharPref(aName);
return !!value ? JSON.parse(value) : null;
return value ? JSON.parse(value) : null;
}
let gHawkClient = null;

View File

@ -1286,7 +1286,7 @@
var warningsMismatch = caughtWarnings.length !== expectedWarningsCount;
if (uncaughtError || warningsMismatch) {
$("#results").append("<div class='failures'><em>" +
(!!(uncaughtError && warningsMismatch) ? 2 : 1) + "</em></div>");
((uncaughtError && warningsMismatch) ? 2 : 1) + "</em></div>");
if (warningsMismatch) {
$("#results").append("<li class='test fail'>" +
"<h2>Unexpected number of warnings detected in UI-Showcase</h2>" +

View File

@ -1286,7 +1286,7 @@
var warningsMismatch = caughtWarnings.length !== expectedWarningsCount;
if (uncaughtError || warningsMismatch) {
$("#results").append("<div class='failures'><em>" +
(!!(uncaughtError && warningsMismatch) ? 2 : 1) + "</em></div>");
((uncaughtError && warningsMismatch) ? 2 : 1) + "</em></div>");
if (warningsMismatch) {
$("#results").append("<li class='test fail'>" +
"<h2>Unexpected number of warnings detected in UI-Showcase</h2>" +

View File

@ -8,16 +8,6 @@
background-color: transparent;
}
/* SCROLLBOX */
#newtab-scrollbox:not([page-disabled]) {
color: rgb(0,0,0);
background-color: #f9f9f9;
}
#newtab-scrollbox:not([page-disabled]) #newtab-margin-bottom {
background: inherit;
}
/* UNDO */
#newtab-undo-container {
padding: 4px 3px;
@ -57,8 +47,24 @@
border: none;
}
#newtab-undo-close-button:-moz-focusring {
outline: 1px dotted;
#newtab-undo-close-button {
-moz-appearance: none;
padding: 0;
border: none;
height: 16px;
width: 16px;
float: right;
right: 0;
background-image: -moz-image-rect(url(chrome://global/skin/icons/close.png), 0, 16, 16, 0);
background-color: transparent;
}
#newtab-undo-close-button:hover {
background-image: -moz-image-rect(url(chrome://global/skin/icons/close.png), 0, 32, 16, 16);
}
#newtab-undo-close-button:active {
background-image: -moz-image-rect(url(chrome://global/skin/icons/close.png), 0, 48, 16, 32);
}
/* CUSTOMIZE */
@ -180,7 +186,7 @@
margin-top: 6px;
}
.newtab-site[pinned] .newtab-title:-moz-locale-dir(rtl)::before {
.newtab-site[pinned] .newtab-title:-moz-dir(rtl)::before {
left: auto;
right: 0;
}

View File

@ -57,13 +57,13 @@ extern bool gBluetoothDebugFlag;
*/
#define BT_LOGR(msg, ...) \
__android_log_print(ANDROID_LOG_INFO, "GeckoBluetooth", \
"%s: " msg, __FUNCTION__, ##__VA_ARGS__) \
"%s: " msg, __FUNCTION__, ##__VA_ARGS__)
/**
* Prints DEBUG build warnings, which show in DEBUG build only.
*/
#define BT_WARNING(args...) \
NS_WARNING(nsPrintfCString(args).get()) \
NS_WARNING(nsPrintfCString(args).get())
#else
#define BT_LOGD(msg, ...) \
@ -88,11 +88,25 @@ extern bool gBluetoothDebugFlag;
/**
* Wrap literal name and value into a BluetoothNamedValue
* and insert it to the array.
*
* TODO: remove with bluetooth1
*/
#define BT_INSERT_NAMED_VALUE(array, index, name, value) \
array.InsertElementAt(index, BluetoothNamedValue(NS_LITERAL_STRING(name), \
BluetoothValue(value)))
/**
* Convert an enum value to string and append it to a fallible array.
*/
#define BT_APPEND_ENUM_STRING_FALLIBLE(array, enumType, enumValue) \
do { \
uint32_t index = uint32_t(enumValue); \
nsAutoString name; \
name.AssignASCII(enumType##Values::strings[index].value, \
enumType##Values::strings[index].length); \
array.AppendElement(name, mozilla::fallible); \
} while(0)
/**
* Ensure success of system message broadcast with void return.
*/
@ -105,30 +119,6 @@ extern bool gBluetoothDebugFlag;
} \
} while(0)
/**
* Convert an enum value to string then append it to an array.
*/
#define BT_APPEND_ENUM_STRING(array, enumType, enumValue) \
do { \
uint32_t index = uint32_t(enumValue); \
nsAutoString name; \
name.AssignASCII(enumType##Values::strings[index].value, \
enumType##Values::strings[index].length); \
array.AppendElement(name); \
} while(0) \
/**
* Convert an enum value to string then append it to a fallible array.
*/
#define BT_APPEND_ENUM_STRING_FALLIBLE(array, enumType, enumValue) \
do { \
uint32_t index = uint32_t(enumValue); \
nsAutoString name; \
name.AssignASCII(enumType##Values::strings[index].value, \
enumType##Values::strings[index].length); \
array.AppendElement(name, mozilla::fallible); \
} while(0) \
/**
* Resolve |promise| with |ret| if |x| is false.
*/
@ -153,6 +143,12 @@ extern bool gBluetoothDebugFlag;
} \
} while(0)
/**
* Reject |promise| with |ret| if nsresult |rv| is not successful.
*/
#define BT_ENSURE_SUCCESS_REJECT(rv, promise, ret) \
BT_ENSURE_TRUE_REJECT(NS_SUCCEEDED(rv), promise, ret)
#define BEGIN_BLUETOOTH_NAMESPACE \
namespace mozilla { namespace dom { namespace bluetooth {
#define END_BLUETOOTH_NAMESPACE \

View File

@ -399,7 +399,7 @@ BluetoothRilListener::ServiceChanged(uint32_t aClientId, bool aRegistered)
// Restart listening
ListenMobileConnAndIccInfo(true);
BT_LOGR("%d client %d. new mClientId %d", aRegistered, aClientId,
BT_LOGD("%d client %d. new mClientId %d", aRegistered, aClientId,
(mClientId < mMobileConnListeners.Length()) ? mClientId : -1);
}

View File

@ -409,10 +409,9 @@ BluetoothAdapter::SetPropertyByValue(const BluetoothNamedValue& aValue)
= value.get_ArrayOfnsString();
for (uint32_t i = 0; i < pairedDeviceAddresses.Length(); i++) {
// Check whether or not the address exists in mDevices.
if (mDevices.Contains(pairedDeviceAddresses[i])) {
// If the paired device exists in mDevices, it would handle
// 'PropertyChanged' signal in BluetoothDevice::Notify().
// Existing paired devices handle 'PropertyChanged' signal
// in BluetoothDevice::Notify()
continue;
}
@ -420,12 +419,9 @@ BluetoothAdapter::SetPropertyByValue(const BluetoothNamedValue& aValue)
BT_APPEND_NAMED_VALUE(props, "Address", pairedDeviceAddresses[i]);
BT_APPEND_NAMED_VALUE(props, "Paired", true);
// Create paired device with 'address' and 'paired' attributes
nsRefPtr<BluetoothDevice> pairedDevice =
BluetoothDevice::Create(GetOwner(), BluetoothValue(props));
// Append to adapter's device array
mDevices.AppendElement(pairedDevice);
// Create paired device and append to adapter's device array
mDevices.AppendElement(
BluetoothDevice::Create(GetOwner(), BluetoothValue(props)));
}
// Retrieve device properties, result will be handled by device objects.
@ -693,12 +689,10 @@ BluetoothAdapter::SetName(const nsAString& aName, ErrorResult& aRv)
nsString name(aName);
BluetoothNamedValue property(NS_LITERAL_STRING("Name"),
BluetoothValue(name));
BT_ENSURE_TRUE_REJECT(
NS_SUCCEEDED(
bs->SetProperty(BluetoothObjectType::TYPE_ADAPTER, property,
new BluetoothVoidReplyRunnable(nullptr, promise))),
promise,
NS_ERROR_DOM_OPERATION_ERR);
BT_ENSURE_SUCCESS_REJECT(
bs->SetProperty(BluetoothObjectType::TYPE_ADAPTER, property,
new BluetoothVoidReplyRunnable(nullptr, promise)),
promise, NS_ERROR_DOM_OPERATION_ERR);
return promise.forget();
}
@ -733,12 +727,10 @@ BluetoothAdapter::SetDiscoverable(bool aDiscoverable, ErrorResult& aRv)
// Wrap property to set and runnable to handle result
BluetoothNamedValue property(NS_LITERAL_STRING("Discoverable"),
BluetoothValue(aDiscoverable));
BT_ENSURE_TRUE_REJECT(
NS_SUCCEEDED(
bs->SetProperty(BluetoothObjectType::TYPE_ADAPTER, property,
new BluetoothVoidReplyRunnable(nullptr, promise))),
promise,
NS_ERROR_DOM_OPERATION_ERR);
BT_ENSURE_SUCCESS_REJECT(
bs->SetProperty(BluetoothObjectType::TYPE_ADAPTER, property,
new BluetoothVoidReplyRunnable(nullptr, promise)),
promise, NS_ERROR_DOM_OPERATION_ERR);
return promise.forget();
}

View File

@ -152,7 +152,7 @@ private:
*
* @param aAdvData [in] advertising data which provided by the LeScan result.
*/
void UpdatePropertiesFromAdvData(const nsTArray<uint8_t>& aAdvData);
void UpdatePropertiesFromAdvData(const nsTArray<uint8_t>& aAdvData);
/****************************************************************************
* Variables

View File

@ -143,7 +143,7 @@ BluetoothPairingListener::TryListeningToBluetoothSignal()
!HasListenersFor(nsGkAtoms::onenterpincodereq) ||
!HasListenersFor(nsGkAtoms::onpairingconfirmationreq) ||
!HasListenersFor(nsGkAtoms::onpairingconsentreq)) {
BT_LOGR("Pairing listener is not ready to handle pairing requests!");
BT_LOGD("Pairing listener is not ready to handle pairing requests!");
return;
}

View File

@ -9,6 +9,7 @@ import org.mozilla.gecko.AppConstants.Versions;
import org.mozilla.gecko.db.BrowserDB;
import org.mozilla.gecko.db.BrowserContract;
import org.mozilla.gecko.favicons.Favicons;
import org.mozilla.gecko.home.ImageLoader;
import org.mozilla.gecko.util.ThreadUtils;
import android.content.BroadcastReceiver;
@ -179,6 +180,7 @@ class MemoryMonitor extends BroadcastReceiver {
}
Favicons.clearMemCache();
ImageLoader.clearLruCache();
}
return true;
}

View File

@ -10,6 +10,7 @@ import android.net.Uri;
import android.util.DisplayMetrics;
import android.util.Log;
import com.squareup.picasso.LruCache;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Downloader.Response;
import com.squareup.picasso.UrlConnectionDownloader;
@ -46,11 +47,14 @@ public class ImageLoader {
}
}
// Picasso instance and LruCache lrucache are protected by synchronization.
private static Picasso instance;
private static LruCache lrucache;
public static synchronized Picasso with(Context context) {
if (instance == null) {
Picasso.Builder builder = new Picasso.Builder(context);
lrucache = new LruCache(context);
Picasso.Builder builder = new Picasso.Builder(context).memoryCache(lrucache);
final Distribution distribution = Distribution.getInstance(context);
builder.downloader(new ImageDownloader(context, distribution));
@ -60,6 +64,12 @@ public class ImageLoader {
return instance;
}
public static synchronized void clearLruCache() {
if (lrucache != null) {
lrucache.evictAll();
}
}
/**
* Custom Downloader built on top of Picasso's UrlConnectionDownloader
* that supports loading images from custom URIs.

View File

@ -49,7 +49,7 @@ public class SendTabList extends ListView {
// The maximum number of target devices to show in the main list. Further devices are available
// from a secondary menu.
public static final int MAXIMUM_INLINE_ELEMENTS = 2;
public static final int MAXIMUM_INLINE_ELEMENTS = R.integer.number_of_inline_share_devices;
private SendTabDeviceListArrayAdapter clientListAdapter;

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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/. -->
<resources>
<integer name="number_of_inline_share_devices">3</integer>
</resources>

View File

@ -8,5 +8,6 @@
<integer name="number_of_top_sites">9</integer>
<integer name="number_of_top_sites_cols">3</integer>
<integer name="panel_icon_grid_view_columns">6</integer>
<integer name="number_of_inline_share_devices">4</integer>
</resources>

View File

@ -9,5 +9,6 @@
<integer name="number_of_top_sites_cols">2</integer>
<integer name="max_icon_grid_columns">4</integer>
<integer name="panel_icon_grid_view_columns">3</integer>
<integer name="number_of_inline_share_devices">2</integer>
</resources>

View File

@ -45,6 +45,7 @@ let Logins = {
_getLogins: function() {
let logins;
this._toggleListBody(true);
try {
logins = Services.logins.getAllLogins();
} catch(e) {
@ -52,11 +53,25 @@ let Logins = {
debug("Master password permissions error: " + e);
logins = [];
}
this._toggleListBody(false);
logins.sort((a, b) => a.hostname.localeCompare(b.hostname));
return this._logins = logins;
},
_toggleListBody: function(isLoading) {
let nonemptyBody = document.getElementById("logins-list-nonempty-body");
let loadingBody = document.getElementById("logins-list-loading-body");
if (isLoading) {
nonemptyBody.classList.add("hidden");
loadingBody.classList.remove("hidden");
} else {
loadingBody.classList.add("hidden");
nonemptyBody.classList.remove("hidden");
}
},
init: function () {
window.addEventListener("popstate", this , false);

View File

@ -36,6 +36,11 @@
<div id="filter-clear"/>
</div>
</div>
<div id="logins-list-loading-body" class="hidden">
<div id="loading-img-container">
<object type="image/svg+xml" id="spinner" data="chrome://browser/skin/images/spinning_throbber.svg"/>
</div>
</div>
</div>
<div id="edit-login-page" class="hidden">

View File

@ -184,3 +184,15 @@ body {
background-image: url("resource://android/res/drawable-xhdpi-v4/favicon_globe.png");
}
}
#loading-img-container{
display: flex;
align-items: center;
justify-content: center;
}
#spinner {
margin-top: 60px;
height: 60px;
width: 60px;
}

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- 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/. -->
<svg class="spinner" width="65px" height="65px" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
<style type="text/css">
.spinner {
animation: rotator 1.4s linear infinite;
}
@keyframes rotator {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(270deg);
}
}
.path {
stroke-dasharray: 187;
stroke-dashoffset: 0;
transform-origin: center;
animation: dash 1.4s ease-in-out infinite, colors 5.6s ease-in-out infinite;
}
@keyframes colors {
0% {
stroke: #FF9500;
}
25% {
stroke: #FF9500;
}
50% {
stroke: #FF9500;
}
75% {
stroke: #FF9500;
}
100% {
stroke: #FF9500;
}
}
@keyframes dash {
0% {
stroke-dashoffset: 187;
}
50% {
stroke-dashoffset: 46.75;
transform: rotate(135deg);
}
100% {
stroke-dashoffset: 187;
transform: rotate(450deg);
}
}
</style>
<circle class="path" fill="none" stroke-width="6" stroke-linecap="round" cx="33" cy="33" r="30"></circle>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -45,6 +45,7 @@ chrome.jar:
#ifdef NIGHTLY_BUILD
* skin/aboutLogins.css (aboutLogins.css)
skin/images/spinning_throbber.svg (images/spinning_throbber.svg)
#endif
skin/images/search.png (images/search.png)

View File

@ -471,15 +471,6 @@ HostDB_ClearEntry(PLDHashTable *table,
}
}
#endif
{
MutexAutoLock lock(he->rec->addr_info_lock);
if (he->rec->addr_info) {
delete hr->addr_info;
he->rec->addr_info = nullptr;
}
}
NS_RELEASE(he->rec);
}
@ -862,12 +853,8 @@ nsHostResolver::ResolveHost(const char *host,
LOG((" Trying AF_UNSPEC entry for host [%s%s%s] af: %s.\n",
LOG_HOST(host, netInterface),
(af == PR_AF_INET) ? "AF_INET" : "AF_INET6"));
// Ensure existing `addr_info` in `he` is cleared before
// copying from `unSpecHe`.
if (he->rec->addr_info) {
delete he->rec->addr_info;
he->rec->addr_info = nullptr;
}
he->rec->addr_info = nullptr;
if (unspecHe->rec->negative) {
he->rec->negative = unspecHe->rec->negative;
he->rec->CopyExpirationTimesAndFlagsFrom(unspecHe->rec);

View File

@ -9,7 +9,7 @@
* about account state changes.
*/
this.EXPORTED_SYMBOLS = ["FxAccountsWebChannel"];
this.EXPORTED_SYMBOLS = ["EnsureFxAccountsWebChannel"];
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
@ -311,3 +311,21 @@ this.FxAccountsWebChannelHelpers.prototype = {
return pressed === 0; // 0 is the "continue" button
}
};
let singleton;
// The entry-point for this module, which ensures only one of our channels is
// ever created - we require this because the WebChannel is global in scope
// (eg, it uses the observer service to tell interested parties of interesting
// things) and allowing multiple channels would cause such notifications to be
// sent multiple times.
this.EnsureFxAccountsWebChannel = function() {
if (!singleton) {
let contentUri = Services.urlFormatter.formatURLPref("identity.fxaccounts.remote.webchannel.uri");
// The FxAccountsWebChannel listens for events and updates
// the state machine accordingly.
singleton = new this.FxAccountsWebChannel({
content_uri: contentUri,
channel_id: WEBCHANNEL_ID,
});
}
}

View File

@ -1,4 +1,4 @@
{
"repo": "https://hg.mozilla.org/build/mozharness",
"revision": "239491bc393a"
"revision": "565f7f26ec17"
}

View File

@ -727,6 +727,11 @@
<property name="selected" readonly="true"
onget="return this.getAttribute('selected') == 'true';"/>
<!--
This code is the same as in browser/base/content/tabbrowser.xml,
except for the _tabAttrModified call. If you modify it, tabbrowser.xml
should probably also be modified.
-->
<property name="_visuallySelected">
<setter>
<![CDATA[