From 3af8f01fd08abe56ec063672115586dabc10b6df Mon Sep 17 00:00:00 2001 From: Blake Winton Date: Thu, 18 Dec 2014 15:25:21 -0500 Subject: [PATCH 01/18] Bug 1106432 - Allow search bar icon to indicate when a page offers OpenSearch. ui-r=shorlander, r=florian. --- browser/base/content/browser.css | 7 +++++ browser/base/content/browser.js | 27 +++++++++++++++++- browser/base/content/urlbarBindings.xml | 7 +++++ browser/components/search/content/search.xml | 3 ++ browser/themes/linux/jar.mn | 1 + browser/themes/linux/searchbar.css | 13 ++++++++- browser/themes/osx/jar.mn | 2 ++ browser/themes/osx/searchbar.css | 21 +++++++++++++- .../search/search-indicator-badge-add.png | Bin 0 -> 1000 bytes .../search/search-indicator-badge-add@2x.png | Bin 0 -> 2263 bytes browser/themes/windows/jar.mn | 2 ++ browser/themes/windows/searchbar.css | 13 ++++++++- 12 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 browser/themes/shared/search/search-indicator-badge-add.png create mode 100644 browser/themes/shared/search/search-indicator-badge-add@2x.png diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css index 7fe4d7e3ad76..453abae56694 100644 --- a/browser/base/content/browser.css +++ b/browser/base/content/browser.css @@ -444,6 +444,13 @@ panel[noactions] > richlistbox > richlistitem[type~="action"] > .ac-url-box > .a margin-left: -23px; } +/* Overlay a badge on top of the icon of additional open search providers + in the search panel. */ +.addengine-item > .button-box > .button-icon { + -moz-binding: url("chrome://browser/content/urlbarBindings.xml#addengine-icon"); + display: -moz-stack; +} + searchbar[oneoffui] { -moz-binding: url("chrome://browser/content/search/search.xml#searchbar-flare") !important; } diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 692f008f8f0c..d6e4b1de03a3 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -3308,8 +3308,32 @@ const BrowserSearch = { if (hidden) browser.hiddenEngines = engines; - else + else { browser.engines = engines; + if (browser == gBrowser.selectedBrowser) + this.updateSearchButton(); + } + }, + + /** + * Update the browser UI to show whether or not additional engines are + * available when a page is loaded or the user switches tabs to a page that + * has search engines. + */ + updateSearchButton: function() { + var searchBar = this.searchBar; + + // The search bar binding might not be applied even though the element is + // in the document (e.g. when the navigation toolbar is hidden), so check + // for .searchButton specifically. + if (!searchBar || !searchBar.searchButton) + return; + + var engines = gBrowser.selectedBrowser.engines; + if (engines && engines.length > 0) + searchBar.setAttribute("addengines", "true"); + else + searchBar.removeAttribute("addengines"); }, /** @@ -4326,6 +4350,7 @@ var XULBrowserWindow = { asyncUpdateUI: function () { FeedHandler.updateFeeds(); + BrowserSearch.updateSearchButton(); }, // Left here for add-on compatibility, see bug 752434 diff --git a/browser/base/content/urlbarBindings.xml b/browser/base/content/urlbarBindings.xml index 27ce86023ea8..0194b95005b7 100644 --- a/browser/base/content/urlbarBindings.xml +++ b/browser/base/content/urlbarBindings.xml @@ -1234,6 +1234,13 @@ + + + + + + + diff --git a/browser/components/search/content/search.xml b/browser/components/search/content/search.xml index ddc1dcf65ec7..72613cee2b9d 100644 --- a/browser/components/search/content/search.xml +++ b/browser/components/search/content/search.xml @@ -270,6 +270,7 @@ } } } + BrowserSearch.updateSearchButton(); ]]> @@ -295,6 +296,7 @@ } } } + BrowserSearch.updateSearchButton(); ]]> @@ -605,6 +607,7 @@ .toolbarbutton-icon color: HighlightText; } -.addengine-item > .button-box > .button-icon { +.addengine-icon { width: 16px; } +.addengine-badge { + width: 16px; + height: 16px; + margin: -7px -9px 7px 9px; + list-style-image: url("chrome://browser/skin/badge-add-engine.png"); +} + .addengine-item > .button-box > .button-text { -moz-box-flex: 1; text-align: start; diff --git a/browser/themes/osx/jar.mn b/browser/themes/osx/jar.mn index 798b10140283..6d57576a65a9 100644 --- a/browser/themes/osx/jar.mn +++ b/browser/themes/osx/jar.mn @@ -113,6 +113,8 @@ browser.jar: skin/classic/browser/search-engine-placeholder@2x.png (../shared/search/search-engine-placeholder@2x.png) skin/classic/browser/badge-add-engine.png (../shared/search/badge-add-engine.png) skin/classic/browser/badge-add-engine@2x.png (../shared/search/badge-add-engine@2x.png) + skin/classic/browser/search-indicator-badge-add.png (../shared/search/search-indicator-badge-add.png) + skin/classic/browser/search-indicator-badge-add@2x.png (../shared/search/search-indicator-badge-add@2x.png) skin/classic/browser/Secure-Glyph.png skin/classic/browser/Secure-Glyph@2x.png skin/classic/browser/slowStartup-16.png diff --git a/browser/themes/osx/searchbar.css b/browser/themes/osx/searchbar.css index 12d299722d4e..7e5736fd2334 100644 --- a/browser/themes/osx/searchbar.css +++ b/browser/themes/osx/searchbar.css @@ -63,6 +63,10 @@ margin: 0 -3px; } +.searchbar-search-button[addengines="true"] { + list-style-image: url("chrome://browser/skin/search-indicator-badge-add.png"); +} + .searchbar-search-button:hover { -moz-image-region: rect(0, 40px, 20px, 20px); } @@ -105,6 +109,10 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon -moz-image-region: rect(0, 40px, 40px, 0); } + .searchbar-search-button[addengines="true"] { + list-style-image: url("chrome://browser/skin/search-indicator-badge-add@2x.png"); + } + .searchbar-search-button:hover { -moz-image-region: rect(0, 80px, 40px, 40px); } @@ -213,10 +221,17 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon color: HighlightText; } -.addengine-item > .button-box > .button-icon { +.addengine-icon { width: 16px; } +.addengine-badge { + width: 16px; + height: 16px; + margin: -7px -9px 7px 9px; + list-style-image: url("chrome://browser/skin/badge-add-engine.png"); +} + .addengine-item > .button-box > .button-text { -moz-box-flex: 1; text-align: start; @@ -228,6 +243,10 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon } @media (min-resolution: 2dppx) { + .addengine-badge { + list-style-image: url("chrome://browser/skin/badge-add-engine@2x.png"); + } + .addengine-item:not([image]) { list-style-image: url("chrome://browser/skin/search-engine-placeholder@2x.png"); } diff --git a/browser/themes/shared/search/search-indicator-badge-add.png b/browser/themes/shared/search/search-indicator-badge-add.png new file mode 100644 index 0000000000000000000000000000000000000000..62bf01b3da95aa43fb8fe2f0366926f5e23425f9 GIT binary patch literal 1000 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 literal 0 HcmV?d00001 diff --git a/browser/themes/windows/jar.mn b/browser/themes/windows/jar.mn index d1722cccdf7b..ef1711a6b7f4 100644 --- a/browser/themes/windows/jar.mn +++ b/browser/themes/windows/jar.mn @@ -87,6 +87,7 @@ browser.jar: skin/classic/browser/search-indicator-add-engine.png (../shared/search/search-indicator-add-engine.png) skin/classic/browser/search-engine-placeholder.png (../shared/search/search-engine-placeholder.png) skin/classic/browser/badge-add-engine.png (../shared/search/badge-add-engine.png) + skin/classic/browser/search-indicator-badge-add.png (../shared/search/search-indicator-badge-add.png) skin/classic/browser/Secure24.png skin/classic/browser/setDesktopBackground.css skin/classic/browser/slowStartup-16.png @@ -538,6 +539,7 @@ browser.jar: skin/classic/aero/browser/search-indicator-add-engine.png (../shared/search/search-indicator-add-engine.png) skin/classic/aero/browser/search-engine-placeholder.png (../shared/search/search-engine-placeholder.png) skin/classic/aero/browser/badge-add-engine.png (../shared/search/badge-add-engine.png) + skin/classic/aero/browser/search-indicator-badge-add.png (../shared/search/search-indicator-badge-add.png) skin/classic/aero/browser/Secure24.png (Secure24-aero.png) skin/classic/aero/browser/setDesktopBackground.css skin/classic/aero/browser/slowStartup-16.png diff --git a/browser/themes/windows/searchbar.css b/browser/themes/windows/searchbar.css index c6b912e5b348..ff8961e96e8e 100644 --- a/browser/themes/windows/searchbar.css +++ b/browser/themes/windows/searchbar.css @@ -93,6 +93,10 @@ margin: -2px -2px; } +.searchbar-search-button[addengines="true"] { + list-style-image: url("chrome://browser/skin/search-indicator-badge-add.png"); +} + .searchbar-search-button:hover { -moz-image-region: rect(0, 40px, 20px, 20px); } @@ -212,10 +216,17 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon color: HighlightText; } -.addengine-item > .button-box > .button-icon { +.addengine-icon { width: 16px; } +.addengine-badge { + width: 16px; + height: 16px; + margin: -7px -9px 7px 9px; + list-style-image: url("chrome://browser/skin/badge-add-engine.png"); +} + .addengine-item > .button-box > .button-text { -moz-box-flex: 1; text-align: start; From f93032daaef3c9277d56ab49d66fa0440cb8393f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Qu=C3=A8ze?= Date: Sun, 21 Dec 2014 01:10:46 +0100 Subject: [PATCH 02/18] Bug 1106432 - Search bar icon should indicate when a page offers open search - fix leak caused by XBL in toolbarless popups, r=Gijs. --- browser/components/search/content/search.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/browser/components/search/content/search.xml b/browser/components/search/content/search.xml index 72613cee2b9d..ddde37d51314 100644 --- a/browser/components/search/content/search.xml +++ b/browser/components/search/content/search.xml @@ -121,13 +121,17 @@ // Make sure to break the cycle from _textbox to us. Otherwise we leak // the world. But make sure it's actually pointing to us. - if (this._textbox.mController.input == this) + // Also make sure the textbox has ever been constructed, otherwise the + // _textbox getter will cause the textbox constructor to run, add an + // observer, and leak the world too. + if (this._textboxInitialized && this._textbox.mController.input == this) this._textbox.mController.input = null; ]]> document.getAnonymousElementByAttribute(this, "anonid", "searchbar-stringbundle"); + false document.getAnonymousElementByAttribute(this, "anonid", "searchbar-textbox"); document.getAnonymousElementByAttribute(this, @@ -780,6 +784,7 @@ cxmenu.appendChild(element); this.controllers.appendController(this.searchbarController); + BrowserSearch.searchBar._textboxInitialized = true; // Add observer for suggest preference var prefs = Components.classes["@mozilla.org/preferences-service;1"] From 3f06242a486a162189adcffd42648abe3680cfc0 Mon Sep 17 00:00:00 2001 From: abdelrhman Date: Sun, 21 Dec 2014 01:11:58 +0100 Subject: [PATCH 03/18] Bug 1113096 - Low quality favicons in new search preferences, r=florian. --- browser/components/preferences/in-content/search.js | 13 +++++++++---- browser/components/preferences/search.js | 13 +++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/browser/components/preferences/in-content/search.js b/browser/components/preferences/in-content/search.js index d200acf183d7..bba23ad1bdb7 100644 --- a/browser/components/preferences/in-content/search.js +++ b/browser/components/preferences/in-content/search.js @@ -3,6 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); +Components.utils.import("resource://gre/modules/PlacesUtils.jsm"); const ENGINE_FLAVOR = "text/x-moz-search-engine"; @@ -52,8 +53,10 @@ var gSearchPane = { gEngineView._engineStore._engines.forEach(e => { let item = list.appendItem(e.name); item.setAttribute("class", "menuitem-iconic searchengine-menuitem menuitem-with-favicon"); - if (e.iconURI) - item.setAttribute("image", e.iconURI.spec); + if (e.iconURI) { + let uri = PlacesUtils.getImageURLForResolution(window, e.iconURI.spec); + item.setAttribute("image", uri); + } item.engine = e; if (e.name == currentEngine) list.selectedItem = item; @@ -362,8 +365,10 @@ EngineView.prototype = { }, getImageSrc: function(index, column) { - if (column.id == "engineName" && this._engineStore.engines[index].iconURI) - return this._engineStore.engines[index].iconURI.spec; + if (column.id == "engineName" && this._engineStore.engines[index].iconURI) { + let uri = this._engineStore.engines[index].iconURI.spec; + return PlacesUtils.getImageURLForResolution(window, uri); + } return ""; }, diff --git a/browser/components/preferences/search.js b/browser/components/preferences/search.js index 194265523489..78275ac7de23 100644 --- a/browser/components/preferences/search.js +++ b/browser/components/preferences/search.js @@ -3,6 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); +Components.utils.import("resource://gre/modules/PlacesUtils.jsm"); const ENGINE_FLAVOR = "text/x-moz-search-engine"; @@ -45,8 +46,10 @@ var gSearchPane = { gEngineView._engineStore._engines.forEach(e => { let item = list.appendItem(e.name); item.setAttribute("class", "menuitem-iconic searchengine-menuitem menuitem-with-favicon"); - if (e.iconURI) - item.setAttribute("image", e.iconURI.spec); + if (e.iconURI) { + let uri = PlacesUtils.getImageURLForResolution(window, e.iconURI.spec); + item.setAttribute("image", uri); + } item.engine = e; if (e.name == currentEngine) list.selectedItem = item; @@ -433,8 +436,10 @@ EngineView.prototype = { }, getImageSrc: function(index, column) { - if (column.id == "engineName" && this._engineStore.engines[index].iconURI) - return this._engineStore.engines[index].iconURI.spec; + if (column.id == "engineName" && this._engineStore.engines[index].iconURI) { + let uri = this._engineStore.engines[index].iconURI.spec; + return PlacesUtils.getImageURLForResolution(window, uri); + } return ""; }, From c4f3360e09c555f4472b5627df9adf1dabbb4655 Mon Sep 17 00:00:00 2001 From: Phil Ringnalda Date: Sat, 20 Dec 2014 17:58:08 -0800 Subject: [PATCH 04/18] Backed out 2 changesets (bug 1106432) for mochitest-a11y failures CLOSED TREE Backed out changeset 513130bd59ed (bug 1106432) Backed out changeset 4dbb2ddd0093 (bug 1106432) --- browser/base/content/browser.css | 7 ----- browser/base/content/browser.js | 27 +----------------- browser/base/content/urlbarBindings.xml | 7 ----- browser/components/search/content/search.xml | 10 +------ browser/themes/linux/jar.mn | 1 - browser/themes/linux/searchbar.css | 13 +-------- browser/themes/osx/jar.mn | 2 -- browser/themes/osx/searchbar.css | 21 +------------- .../search/search-indicator-badge-add.png | Bin 1000 -> 0 bytes .../search/search-indicator-badge-add@2x.png | Bin 2263 -> 0 bytes browser/themes/windows/jar.mn | 2 -- browser/themes/windows/searchbar.css | 13 +-------- 12 files changed, 5 insertions(+), 98 deletions(-) delete mode 100644 browser/themes/shared/search/search-indicator-badge-add.png delete mode 100644 browser/themes/shared/search/search-indicator-badge-add@2x.png diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css index 453abae56694..7fe4d7e3ad76 100644 --- a/browser/base/content/browser.css +++ b/browser/base/content/browser.css @@ -444,13 +444,6 @@ panel[noactions] > richlistbox > richlistitem[type~="action"] > .ac-url-box > .a margin-left: -23px; } -/* Overlay a badge on top of the icon of additional open search providers - in the search panel. */ -.addengine-item > .button-box > .button-icon { - -moz-binding: url("chrome://browser/content/urlbarBindings.xml#addengine-icon"); - display: -moz-stack; -} - searchbar[oneoffui] { -moz-binding: url("chrome://browser/content/search/search.xml#searchbar-flare") !important; } diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index d6e4b1de03a3..692f008f8f0c 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -3308,32 +3308,8 @@ const BrowserSearch = { if (hidden) browser.hiddenEngines = engines; - else { - browser.engines = engines; - if (browser == gBrowser.selectedBrowser) - this.updateSearchButton(); - } - }, - - /** - * Update the browser UI to show whether or not additional engines are - * available when a page is loaded or the user switches tabs to a page that - * has search engines. - */ - updateSearchButton: function() { - var searchBar = this.searchBar; - - // The search bar binding might not be applied even though the element is - // in the document (e.g. when the navigation toolbar is hidden), so check - // for .searchButton specifically. - if (!searchBar || !searchBar.searchButton) - return; - - var engines = gBrowser.selectedBrowser.engines; - if (engines && engines.length > 0) - searchBar.setAttribute("addengines", "true"); else - searchBar.removeAttribute("addengines"); + browser.engines = engines; }, /** @@ -4350,7 +4326,6 @@ var XULBrowserWindow = { asyncUpdateUI: function () { FeedHandler.updateFeeds(); - BrowserSearch.updateSearchButton(); }, // Left here for add-on compatibility, see bug 752434 diff --git a/browser/base/content/urlbarBindings.xml b/browser/base/content/urlbarBindings.xml index 0194b95005b7..27ce86023ea8 100644 --- a/browser/base/content/urlbarBindings.xml +++ b/browser/base/content/urlbarBindings.xml @@ -1234,13 +1234,6 @@ - - - - - - - diff --git a/browser/components/search/content/search.xml b/browser/components/search/content/search.xml index ddde37d51314..ddc1dcf65ec7 100644 --- a/browser/components/search/content/search.xml +++ b/browser/components/search/content/search.xml @@ -121,17 +121,13 @@ // Make sure to break the cycle from _textbox to us. Otherwise we leak // the world. But make sure it's actually pointing to us. - // Also make sure the textbox has ever been constructed, otherwise the - // _textbox getter will cause the textbox constructor to run, add an - // observer, and leak the world too. - if (this._textboxInitialized && this._textbox.mController.input == this) + if (this._textbox.mController.input == this) this._textbox.mController.input = null; ]]> document.getAnonymousElementByAttribute(this, "anonid", "searchbar-stringbundle"); - false document.getAnonymousElementByAttribute(this, "anonid", "searchbar-textbox"); document.getAnonymousElementByAttribute(this, @@ -274,7 +270,6 @@ } } } - BrowserSearch.updateSearchButton(); ]]> @@ -300,7 +295,6 @@ } } } - BrowserSearch.updateSearchButton(); ]]> @@ -611,7 +605,6 @@ .toolbarbutton-icon color: HighlightText; } -.addengine-icon { +.addengine-item > .button-box > .button-icon { width: 16px; } -.addengine-badge { - width: 16px; - height: 16px; - margin: -7px -9px 7px 9px; - list-style-image: url("chrome://browser/skin/badge-add-engine.png"); -} - .addengine-item > .button-box > .button-text { -moz-box-flex: 1; text-align: start; diff --git a/browser/themes/osx/jar.mn b/browser/themes/osx/jar.mn index 6d57576a65a9..798b10140283 100644 --- a/browser/themes/osx/jar.mn +++ b/browser/themes/osx/jar.mn @@ -113,8 +113,6 @@ browser.jar: skin/classic/browser/search-engine-placeholder@2x.png (../shared/search/search-engine-placeholder@2x.png) skin/classic/browser/badge-add-engine.png (../shared/search/badge-add-engine.png) skin/classic/browser/badge-add-engine@2x.png (../shared/search/badge-add-engine@2x.png) - skin/classic/browser/search-indicator-badge-add.png (../shared/search/search-indicator-badge-add.png) - skin/classic/browser/search-indicator-badge-add@2x.png (../shared/search/search-indicator-badge-add@2x.png) skin/classic/browser/Secure-Glyph.png skin/classic/browser/Secure-Glyph@2x.png skin/classic/browser/slowStartup-16.png diff --git a/browser/themes/osx/searchbar.css b/browser/themes/osx/searchbar.css index 7e5736fd2334..12d299722d4e 100644 --- a/browser/themes/osx/searchbar.css +++ b/browser/themes/osx/searchbar.css @@ -63,10 +63,6 @@ margin: 0 -3px; } -.searchbar-search-button[addengines="true"] { - list-style-image: url("chrome://browser/skin/search-indicator-badge-add.png"); -} - .searchbar-search-button:hover { -moz-image-region: rect(0, 40px, 20px, 20px); } @@ -109,10 +105,6 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon -moz-image-region: rect(0, 40px, 40px, 0); } - .searchbar-search-button[addengines="true"] { - list-style-image: url("chrome://browser/skin/search-indicator-badge-add@2x.png"); - } - .searchbar-search-button:hover { -moz-image-region: rect(0, 80px, 40px, 40px); } @@ -221,17 +213,10 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon color: HighlightText; } -.addengine-icon { +.addengine-item > .button-box > .button-icon { width: 16px; } -.addengine-badge { - width: 16px; - height: 16px; - margin: -7px -9px 7px 9px; - list-style-image: url("chrome://browser/skin/badge-add-engine.png"); -} - .addengine-item > .button-box > .button-text { -moz-box-flex: 1; text-align: start; @@ -243,10 +228,6 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon } @media (min-resolution: 2dppx) { - .addengine-badge { - list-style-image: url("chrome://browser/skin/badge-add-engine@2x.png"); - } - .addengine-item:not([image]) { list-style-image: url("chrome://browser/skin/search-engine-placeholder@2x.png"); } diff --git a/browser/themes/shared/search/search-indicator-badge-add.png b/browser/themes/shared/search/search-indicator-badge-add.png deleted file mode 100644 index 62bf01b3da95aa43fb8fe2f0366926f5e23425f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 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 diff --git a/browser/themes/windows/jar.mn b/browser/themes/windows/jar.mn index ef1711a6b7f4..d1722cccdf7b 100644 --- a/browser/themes/windows/jar.mn +++ b/browser/themes/windows/jar.mn @@ -87,7 +87,6 @@ browser.jar: skin/classic/browser/search-indicator-add-engine.png (../shared/search/search-indicator-add-engine.png) skin/classic/browser/search-engine-placeholder.png (../shared/search/search-engine-placeholder.png) skin/classic/browser/badge-add-engine.png (../shared/search/badge-add-engine.png) - skin/classic/browser/search-indicator-badge-add.png (../shared/search/search-indicator-badge-add.png) skin/classic/browser/Secure24.png skin/classic/browser/setDesktopBackground.css skin/classic/browser/slowStartup-16.png @@ -539,7 +538,6 @@ browser.jar: skin/classic/aero/browser/search-indicator-add-engine.png (../shared/search/search-indicator-add-engine.png) skin/classic/aero/browser/search-engine-placeholder.png (../shared/search/search-engine-placeholder.png) skin/classic/aero/browser/badge-add-engine.png (../shared/search/badge-add-engine.png) - skin/classic/aero/browser/search-indicator-badge-add.png (../shared/search/search-indicator-badge-add.png) skin/classic/aero/browser/Secure24.png (Secure24-aero.png) skin/classic/aero/browser/setDesktopBackground.css skin/classic/aero/browser/slowStartup-16.png diff --git a/browser/themes/windows/searchbar.css b/browser/themes/windows/searchbar.css index ff8961e96e8e..c6b912e5b348 100644 --- a/browser/themes/windows/searchbar.css +++ b/browser/themes/windows/searchbar.css @@ -93,10 +93,6 @@ margin: -2px -2px; } -.searchbar-search-button[addengines="true"] { - list-style-image: url("chrome://browser/skin/search-indicator-badge-add.png"); -} - .searchbar-search-button:hover { -moz-image-region: rect(0, 40px, 20px, 20px); } @@ -216,17 +212,10 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon color: HighlightText; } -.addengine-icon { +.addengine-item > .button-box > .button-icon { width: 16px; } -.addengine-badge { - width: 16px; - height: 16px; - margin: -7px -9px 7px 9px; - list-style-image: url("chrome://browser/skin/badge-add-engine.png"); -} - .addengine-item > .button-box > .button-text { -moz-box-flex: 1; text-align: start; From af75271daf9219f1163848278e5b78a2ea35dd47 Mon Sep 17 00:00:00 2001 From: Blake Winton Date: Thu, 18 Dec 2014 15:25:21 -0500 Subject: [PATCH 05/18] Bug 1106432 - Allow search bar icon to indicate when a page offers OpenSearch. ui-r=shorlander, r=florian. --- browser/base/content/browser.css | 7 +++++ browser/base/content/browser.js | 27 +++++++++++++++++- browser/base/content/urlbarBindings.xml | 7 +++++ browser/components/search/content/search.xml | 3 ++ browser/themes/linux/jar.mn | 1 + browser/themes/linux/searchbar.css | 13 ++++++++- browser/themes/osx/jar.mn | 2 ++ browser/themes/osx/searchbar.css | 21 +++++++++++++- .../search/search-indicator-badge-add.png | Bin 0 -> 1000 bytes .../search/search-indicator-badge-add@2x.png | Bin 0 -> 2263 bytes browser/themes/windows/jar.mn | 2 ++ browser/themes/windows/searchbar.css | 13 ++++++++- 12 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 browser/themes/shared/search/search-indicator-badge-add.png create mode 100644 browser/themes/shared/search/search-indicator-badge-add@2x.png diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css index 7fe4d7e3ad76..453abae56694 100644 --- a/browser/base/content/browser.css +++ b/browser/base/content/browser.css @@ -444,6 +444,13 @@ panel[noactions] > richlistbox > richlistitem[type~="action"] > .ac-url-box > .a margin-left: -23px; } +/* Overlay a badge on top of the icon of additional open search providers + in the search panel. */ +.addengine-item > .button-box > .button-icon { + -moz-binding: url("chrome://browser/content/urlbarBindings.xml#addengine-icon"); + display: -moz-stack; +} + searchbar[oneoffui] { -moz-binding: url("chrome://browser/content/search/search.xml#searchbar-flare") !important; } diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 692f008f8f0c..d6e4b1de03a3 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -3308,8 +3308,32 @@ const BrowserSearch = { if (hidden) browser.hiddenEngines = engines; - else + else { browser.engines = engines; + if (browser == gBrowser.selectedBrowser) + this.updateSearchButton(); + } + }, + + /** + * Update the browser UI to show whether or not additional engines are + * available when a page is loaded or the user switches tabs to a page that + * has search engines. + */ + updateSearchButton: function() { + var searchBar = this.searchBar; + + // The search bar binding might not be applied even though the element is + // in the document (e.g. when the navigation toolbar is hidden), so check + // for .searchButton specifically. + if (!searchBar || !searchBar.searchButton) + return; + + var engines = gBrowser.selectedBrowser.engines; + if (engines && engines.length > 0) + searchBar.setAttribute("addengines", "true"); + else + searchBar.removeAttribute("addengines"); }, /** @@ -4326,6 +4350,7 @@ var XULBrowserWindow = { asyncUpdateUI: function () { FeedHandler.updateFeeds(); + BrowserSearch.updateSearchButton(); }, // Left here for add-on compatibility, see bug 752434 diff --git a/browser/base/content/urlbarBindings.xml b/browser/base/content/urlbarBindings.xml index 27ce86023ea8..0194b95005b7 100644 --- a/browser/base/content/urlbarBindings.xml +++ b/browser/base/content/urlbarBindings.xml @@ -1234,6 +1234,13 @@ + + + + + + + diff --git a/browser/components/search/content/search.xml b/browser/components/search/content/search.xml index ddc1dcf65ec7..72613cee2b9d 100644 --- a/browser/components/search/content/search.xml +++ b/browser/components/search/content/search.xml @@ -270,6 +270,7 @@ } } } + BrowserSearch.updateSearchButton(); ]]> @@ -295,6 +296,7 @@ } } } + BrowserSearch.updateSearchButton(); ]]> @@ -605,6 +607,7 @@ .toolbarbutton-icon color: HighlightText; } -.addengine-item > .button-box > .button-icon { +.addengine-icon { width: 16px; } +.addengine-badge { + width: 16px; + height: 16px; + margin: -7px -9px 7px 9px; + list-style-image: url("chrome://browser/skin/badge-add-engine.png"); +} + .addengine-item > .button-box > .button-text { -moz-box-flex: 1; text-align: start; diff --git a/browser/themes/osx/jar.mn b/browser/themes/osx/jar.mn index 798b10140283..6d57576a65a9 100644 --- a/browser/themes/osx/jar.mn +++ b/browser/themes/osx/jar.mn @@ -113,6 +113,8 @@ browser.jar: skin/classic/browser/search-engine-placeholder@2x.png (../shared/search/search-engine-placeholder@2x.png) skin/classic/browser/badge-add-engine.png (../shared/search/badge-add-engine.png) skin/classic/browser/badge-add-engine@2x.png (../shared/search/badge-add-engine@2x.png) + skin/classic/browser/search-indicator-badge-add.png (../shared/search/search-indicator-badge-add.png) + skin/classic/browser/search-indicator-badge-add@2x.png (../shared/search/search-indicator-badge-add@2x.png) skin/classic/browser/Secure-Glyph.png skin/classic/browser/Secure-Glyph@2x.png skin/classic/browser/slowStartup-16.png diff --git a/browser/themes/osx/searchbar.css b/browser/themes/osx/searchbar.css index 12d299722d4e..7e5736fd2334 100644 --- a/browser/themes/osx/searchbar.css +++ b/browser/themes/osx/searchbar.css @@ -63,6 +63,10 @@ margin: 0 -3px; } +.searchbar-search-button[addengines="true"] { + list-style-image: url("chrome://browser/skin/search-indicator-badge-add.png"); +} + .searchbar-search-button:hover { -moz-image-region: rect(0, 40px, 20px, 20px); } @@ -105,6 +109,10 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon -moz-image-region: rect(0, 40px, 40px, 0); } + .searchbar-search-button[addengines="true"] { + list-style-image: url("chrome://browser/skin/search-indicator-badge-add@2x.png"); + } + .searchbar-search-button:hover { -moz-image-region: rect(0, 80px, 40px, 40px); } @@ -213,10 +221,17 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon color: HighlightText; } -.addengine-item > .button-box > .button-icon { +.addengine-icon { width: 16px; } +.addengine-badge { + width: 16px; + height: 16px; + margin: -7px -9px 7px 9px; + list-style-image: url("chrome://browser/skin/badge-add-engine.png"); +} + .addengine-item > .button-box > .button-text { -moz-box-flex: 1; text-align: start; @@ -228,6 +243,10 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon } @media (min-resolution: 2dppx) { + .addengine-badge { + list-style-image: url("chrome://browser/skin/badge-add-engine@2x.png"); + } + .addengine-item:not([image]) { list-style-image: url("chrome://browser/skin/search-engine-placeholder@2x.png"); } diff --git a/browser/themes/shared/search/search-indicator-badge-add.png b/browser/themes/shared/search/search-indicator-badge-add.png new file mode 100644 index 0000000000000000000000000000000000000000..62bf01b3da95aa43fb8fe2f0366926f5e23425f9 GIT binary patch literal 1000 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 literal 0 HcmV?d00001 diff --git a/browser/themes/windows/jar.mn b/browser/themes/windows/jar.mn index d1722cccdf7b..ef1711a6b7f4 100644 --- a/browser/themes/windows/jar.mn +++ b/browser/themes/windows/jar.mn @@ -87,6 +87,7 @@ browser.jar: skin/classic/browser/search-indicator-add-engine.png (../shared/search/search-indicator-add-engine.png) skin/classic/browser/search-engine-placeholder.png (../shared/search/search-engine-placeholder.png) skin/classic/browser/badge-add-engine.png (../shared/search/badge-add-engine.png) + skin/classic/browser/search-indicator-badge-add.png (../shared/search/search-indicator-badge-add.png) skin/classic/browser/Secure24.png skin/classic/browser/setDesktopBackground.css skin/classic/browser/slowStartup-16.png @@ -538,6 +539,7 @@ browser.jar: skin/classic/aero/browser/search-indicator-add-engine.png (../shared/search/search-indicator-add-engine.png) skin/classic/aero/browser/search-engine-placeholder.png (../shared/search/search-engine-placeholder.png) skin/classic/aero/browser/badge-add-engine.png (../shared/search/badge-add-engine.png) + skin/classic/aero/browser/search-indicator-badge-add.png (../shared/search/search-indicator-badge-add.png) skin/classic/aero/browser/Secure24.png (Secure24-aero.png) skin/classic/aero/browser/setDesktopBackground.css skin/classic/aero/browser/slowStartup-16.png diff --git a/browser/themes/windows/searchbar.css b/browser/themes/windows/searchbar.css index c6b912e5b348..ff8961e96e8e 100644 --- a/browser/themes/windows/searchbar.css +++ b/browser/themes/windows/searchbar.css @@ -93,6 +93,10 @@ margin: -2px -2px; } +.searchbar-search-button[addengines="true"] { + list-style-image: url("chrome://browser/skin/search-indicator-badge-add.png"); +} + .searchbar-search-button:hover { -moz-image-region: rect(0, 40px, 20px, 20px); } @@ -212,10 +216,17 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon color: HighlightText; } -.addengine-item > .button-box > .button-icon { +.addengine-icon { width: 16px; } +.addengine-badge { + width: 16px; + height: 16px; + margin: -7px -9px 7px 9px; + list-style-image: url("chrome://browser/skin/badge-add-engine.png"); +} + .addengine-item > .button-box > .button-text { -moz-box-flex: 1; text-align: start; From 110e6a2debe34c1b27d90760164081632053d5e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Qu=C3=A8ze?= Date: Sun, 21 Dec 2014 01:10:46 +0100 Subject: [PATCH 06/18] Bug 1106432 - Search bar icon should indicate when a page offers open search - fix leak caused by XBL in toolbarless popups, r=Gijs. --- browser/components/search/content/search.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/browser/components/search/content/search.xml b/browser/components/search/content/search.xml index 72613cee2b9d..d1d4b5892dd4 100644 --- a/browser/components/search/content/search.xml +++ b/browser/components/search/content/search.xml @@ -121,13 +121,17 @@ // Make sure to break the cycle from _textbox to us. Otherwise we leak // the world. But make sure it's actually pointing to us. - if (this._textbox.mController.input == this) + // Also make sure the textbox has ever been constructed, otherwise the + // _textbox getter will cause the textbox constructor to run, add an + // observer, and leak the world too. + if (this._textboxInitialized && this._textbox.mController.input == this) this._textbox.mController.input = null; ]]> document.getAnonymousElementByAttribute(this, "anonid", "searchbar-stringbundle"); + false document.getAnonymousElementByAttribute(this, "anonid", "searchbar-textbox"); document.getAnonymousElementByAttribute(this, @@ -780,6 +784,7 @@ cxmenu.appendChild(element); this.controllers.appendController(this.searchbarController); + document.getBindingParent(this)._textboxInitialized = true; // Add observer for suggest preference var prefs = Components.classes["@mozilla.org/preferences-service;1"] From e33d4616a3874a3706e276d86a3c73d678324606 Mon Sep 17 00:00:00 2001 From: Gijs Kruitbosch Date: Mon, 22 Dec 2014 00:13:16 +0000 Subject: [PATCH 07/18] Bug 1104755 - disable test on Linux only to avoid the very-frequent-orange, implied-rs=mak --HG-- extra : rebase_source : bc91fc98dc395e701599e7bb04dd96dc29f12b8c --- browser/base/content/test/general/browser.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/base/content/test/general/browser.ini b/browser/base/content/test/general/browser.ini index 317df6f578d4..7322e5b95d66 100644 --- a/browser/base/content/test/general/browser.ini +++ b/browser/base/content/test/general/browser.ini @@ -410,7 +410,7 @@ skip-if = buildapp == 'mulet' || e10s [browser_tabMatchesInAwesomebar.js] skip-if = e10s # Bug 1093206 - need to re-enable tests relying on swapFrameLoaders et al for e10s (test calls gBrowser.swapBrowsersAndCloseOther) [browser_tabMatchesInAwesomebar_perwindowpb.js] -skip-if = e10s # Bug 1093373 +skip-if = e10s || linux # Bug 1093373, bug 1104755 [browser_tab_drag_drop_perwindow.js] skip-if = buildapp == 'mulet' [browser_tab_dragdrop.js] From b34989f53181abdbfe89fbe111741b3d37628b03 Mon Sep 17 00:00:00 2001 From: Mike Conley Date: Mon, 24 Nov 2014 12:05:45 -0800 Subject: [PATCH 08/18] Bug 1068349 - IPC message handlers that return false cause child process to crash without a crash report. r=ted --HG-- extra : rebase_source : b1cf6381b9a4f74cab75be8a2a903d26d83797dd --- dom/ipc/ContentParent.cpp | 44 ++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp index 7cfd823bf1c2..e7fc4d59cf9e 100755 --- a/dom/ipc/ContentParent.cpp +++ b/dom/ipc/ContentParent.cpp @@ -214,6 +214,10 @@ static const char* sClipboardTextFlavors[] = { kUnicodeMime }; using base::ChildPrivileges; using base::KillProcess; + +#ifdef MOZ_CRASHREPORTER +using namespace CrashReporter; +#endif using namespace mozilla::dom::bluetooth; using namespace mozilla::dom::cellbroadcast; using namespace mozilla::dom::devicestorage; @@ -1797,7 +1801,16 @@ ContentParent::ActorDestroy(ActorDestroyReason why) NS_ConvertUTF16toUTF8(mAppManifestURL)); } - crashReporter->GenerateCrashReport(this, nullptr); + if (mCalledKillHard) { + // We killed the child with KillHard, so two minidumps should already + // exist - one for the content process, and one for the browser process. + // The "main" minidump of this crash report is the content processes, + // and we use GenerateChildData to annotate our crash report with + // information about the child process. + crashReporter->GenerateChildData(nullptr); + } else { + crashReporter->GenerateCrashReport(this, nullptr); + } nsAutoString dumpID(crashReporter->ChildDumpID()); props->SetPropertyAsAString(NS_LITERAL_STRING("dumpID"), dumpID); @@ -3090,10 +3103,31 @@ ContentParent::KillHard() } mCalledKillHard = true; mForceKillTask = nullptr; - // This ensures the process is eventually killed, but doesn't - // immediately KILLITWITHFIRE because we want to get a minidump if - // possible. After a timeout though, the process is forceably - // killed. + +#ifdef MOZ_CRASHREPORTER + if (ManagedPCrashReporterParent().Length() > 0) { + CrashReporterParent* crashReporter = + static_cast(ManagedPCrashReporterParent()[0]); + + // We're about to kill the child process associated with this + // ContentParent. Something has gone wrong to get us here, + // so we generate a minidump to be potentially submitted in + // a crash report. ContentParent::ActorDestroy is where the + // actual report gets generated, once the child process has + // finally died. + if (crashReporter->GeneratePairedMinidump(this)) { + // GeneratePairedMinidump created two minidumps for us - the main + // one is for the content process we're about to kill, and the other + // one is for the main browser process. That second one is the extra + // minidump tagging along, so we have to tell the crash reporter that + // it exists and is being appended. + nsAutoCString additionalDumps("browser"); + crashReporter->AnnotateCrashReport( + NS_LITERAL_CSTRING("additional_minidumps"), + additionalDumps); + } + } +#endif if (!KillProcess(OtherProcess(), 1, false)) { NS_WARNING("failed to kill subprocess!"); } From 39adb2a0d00129e0ee3b566f384ac9c7722dc34d Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 20 Dec 2014 11:13:57 -0800 Subject: [PATCH 09/18] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index ed800acaad0d..0cced2ac9a0a 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -129,7 +129,7 @@ - + From 4c3e8339c99bdcafacdd30031e7160dfd8d2af50 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 20 Dec 2014 22:42:18 -0800 Subject: [PATCH 10/18] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/0e90f6962a39 Author: Ricky Chien Desc: Merge pull request #26813 from RickyChien/bug-1021567 Bug 1021567 - Coverage threshold check in test agent file watcher r=@julienw ======== https://hg.mozilla.org/integration/gaia-central/rev/408b9a80934b Author: Ricky Chien Desc: Bug 1021567 - Coverage threshold check in test agent file watcher --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index b1071ce78309..70446495bb60 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "3d66911e8f085901b6302ec2b40bc89bc5322db4", + "revision": "0e90f6962a39448ecfd7b51915eda81699f37c6a", "repo_path": "integration/gaia-central" } From fc8733e72e6cdb96030a1a32386a6484b4f1bb68 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 20 Dec 2014 22:51:58 -0800 Subject: [PATCH 11/18] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 0cced2ac9a0a..e104d6e2be15 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index dd1396055758..66fa13c10dd3 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 6d5b8671f4dd..ee03afb51a34 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index de6cae8849a1..fce65237a42e 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index dd1396055758..66fa13c10dd3 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 1ba58f7c0a09..3ba52bf76e13 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 7a264449e2ec..0406d5175a80 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 51c7c6b3d4ee..d898548bcbfb 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 97544698683d..57735a453a54 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 535a6fa55431..8fa5a36dfa45 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index a10311f50fca..227ef160e536 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From c8dad26ee7c0ce78ee068178bf12704cdaf603f8 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 21 Dec 2014 20:27:19 -0800 Subject: [PATCH 12/18] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/389511f8e115 Author: John Hu Desc: Merge pull request #26736 from huchengtw-moz/bug-1110652-base Bug 1110652 - [Stingray] create and use interactive notification to show..., r=rexboy ======== https://hg.mozilla.org/integration/gaia-central/rev/de9abf5bd8cb Author: John Hu Desc: Bug 1110652 - [Stingray] create and use interactive notification to show desktop-notification --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 70446495bb60..74524158c56d 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "0e90f6962a39448ecfd7b51915eda81699f37c6a", + "revision": "389511f8e11581ec63e6072f12c4a94b4842c453", "repo_path": "integration/gaia-central" } From f555c06324ac77bf7e782fd5a31592d4ee0a1b6c Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 21 Dec 2014 20:31:59 -0800 Subject: [PATCH 13/18] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index e104d6e2be15..a931de7c7c18 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 66fa13c10dd3..cfa15d9f8284 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index ee03afb51a34..7ec3583ec1b8 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index fce65237a42e..7f3333b0a170 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 66fa13c10dd3..cfa15d9f8284 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 3ba52bf76e13..09225559826c 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 0406d5175a80..5f86c6ec9142 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index d898548bcbfb..7bfe472cad2f 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 57735a453a54..4aacdc8af9b7 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 8fa5a36dfa45..95d59bca5f50 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 227ef160e536..46d0fef4070e 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From c264c6db73649ada187e467154012694c64743c0 Mon Sep 17 00:00:00 2001 From: Hsin-Yi Tsai Date: Wed, 17 Dec 2014 19:37:36 +0800 Subject: [PATCH 14/18] Bug 1112550 - [RIL] handle the case of unknown last_call_fail_cause_code. r=aknow --- dom/system/gonk/ril_consts.js | 218 +++++++++++++++++++++++++++------- dom/system/gonk/ril_worker.js | 14 ++- 2 files changed, 190 insertions(+), 42 deletions(-) diff --git a/dom/system/gonk/ril_consts.js b/dom/system/gonk/ril_consts.js index c1922e5bb745..8eb042953bbd 100644 --- a/dom/system/gonk/ril_consts.js +++ b/dom/system/gonk/ril_consts.js @@ -2491,26 +2491,75 @@ this.GECKO_NETWORK_STATE_CONNECTED = 1; this.GECKO_NETWORK_STATE_DISCONNECTING = 2; this.GECKO_NETWORK_STATE_DISCONNECTED = 3; +// 3GPP 24.008 Annex H. this.CALL_FAIL_UNOBTAINABLE_NUMBER = 1; +this.CALL_FAIL_NO_ROUTE_TO_DESTINATION = 3; +this.CALL_FAIL_CHANNEL_UNACCEPTABLE = 6; +this.CALL_FAIL_OPERATOR_DETERMINED_BARRING = 8; this.CALL_FAIL_NORMAL = 16; this.CALL_FAIL_BUSY = 17; this.CALL_FAIL_NO_USER_RESPONDING = 18; this.CALL_FAIL_USER_ALERTING = 19; this.CALL_FAIL_CALL_REJECTED = 21; this.CALL_FAIL_NUMBER_CHANGED = 22; +this.CALL_FAIL_CALL_REJECTED_DESTINATION_FEATURE = 24; this.CALL_FAIL_CALL_PRE_EMPTION = 25; this.CALL_FAIL_DEST_OUT_OF_ORDER = 27; this.CALL_FAIL_INVALID_FORMAT = 28; this.CALL_FAIL_FACILITY_REJECTED = 29; +this.CALL_FAIL_RESPONSE_TO_STATUS_ENQUIRY = 30; +this.CALL_FAIL_NORMAL_UNSPECIFIED = 31; this.CALL_FAIL_CONGESTION = 34; this.CALL_FAIL_NETWORK_OUT_OF_ORDER = 38; this.CALL_FAIL_NETWORK_TEMP_FAILURE = 41; +this.CALL_FAIL_SWITCHING_EQUIP_CONGESTION = 42; +this.CALL_FAIL_ACCESS_INFO_DISCARDED = 43; +this.CALL_FAIL_REQUESTED_CHANNEL_NOT_AVAILABLE = 44; +this.CALL_FAIL_RESOURCE_UNAVAILABLE = 47; +this.CALL_FAIL_QOS_UNAVAILABLE = 49; +this.CALL_FAIL_REQUESTED_FACILITY_NOT_SUBSCRIBED = 50; +this.CALL_FAIL_INCOMING_CALLS_BARRED_WITHIN_CUG = 55; +this.CALL_FAIL_BEARER_CAPABILITY_NOT_AUTHORIZED = 57; +this.CALL_FAIL_BEARER_CAPABILITY_NOT_AVAILABLE = 58; +this.CALL_FAIL_SERVICE_NOT_AVAILABLE = 63; +this.CALL_FAIL_BEARER_NOT_IMPLEMENTED = 65; this.CALL_FAIL_ACM_LIMIT_EXCEEDED = 68; +this.CALL_FAIL_REQUESTED_FACILITY_NOT_IMPLEMENTED = 69; +this.CALL_FAIL_UNRESTRICTED_BEARER_NOT_AVAILABLE = 70; +this.CALL_FAIL_SERVICE_NOT_IMPLEMENTED = 79; +this.CALL_FAIL_INVALID_TRANSACTION_ID = 81; +this.CALL_FAIL_USER_NOT_CUG_MEMBER = 87; +this.CALL_FAIL_INCOMPATIBLE_DESTINATION = 88; +this.CALL_FAIL_INVALID_TRANSIT_NETWORK_SELECTION = 91; +this.CALL_FAIL_SEMANTICALLY_INCORRECT_MESSAGE = 95; +this.CALL_FAIL_INVALID_MANDATORY_INFO = 96; +this.CALL_FAIL_MESSAGE_TYPE_NOT_IMPLEMENTED = 97; +this.CALL_FAIL_MESSAGE_TYPE_INCOMPATIBLE_PROTOCOL_STATE = 98; +this.CALL_FAIL_INFO_ELEMENT_NOT_IMPLEMENTED = 99; +this.CALL_FAIL_CONDITIONAL_IE_ERROR = 100; +this.CALL_FAIL_MESSAGE_INCOMPABITLE_PROTOCOL_STATE = 101; +this.CALL_FAIL_RECOVERY_ON_TIMER_EXPIRY = 102; +this.CALL_FAIL_PROTOCOL_ERROR = 111; +this.CALL_FAIL_INTERWORKING = 127; +// AOSP ril.h this.CALL_FAIL_CALL_BARRED = 240; this.CALL_FAIL_FDN_BLOCKED = 241; this.CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242; this.CALL_FAIL_IMEI_NOT_ACCEPTED = 243; +this.CALL_FAIL_DIAL_MODIFIED_TO_USSD = 244; // STK Call Control +this.CALL_FAIL_DIAL_MODIFIED_TO_SS = 245; this.CALL_FAIL_DIAL_MODIFIED_TO_DIAL = 246; +this.CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000; +this.CALL_FAIL_CDMA_DROP = 1001; +this.CALL_FAIL_CDMA_INTERCEPT = 1002; +this.CALL_FAIL_CDMA_REORDER = 1003; +this.CALL_FAIL_CDMA_SO_REJECT = 1004; +this.CALL_FAIL_CDMA_RETRY_ORDER = 1005; +this.CALL_FAIL_CDMA_ACCESS_FAILURE = 1006; +this.CALL_FAIL_CDMA_PREEMPTED = 1007; +this.CALL_FAIL_CDMA_NOT_EMERGENCY = 1008; // For non-emergency number dialed + // during emergency callback mode +this.CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009; this.CALL_FAIL_ERROR_UNSPECIFIED = 0xffff; // See nsIMobileConnection::MOBILE_RADIO_STATE_* @@ -2666,50 +2715,139 @@ NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_DENIED_EMERGENC NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_UNKNOWN_EMERGENCY_CALLS] = GECKO_MOBILE_CONNECTION_STATE_UNKNOWN; -this.GECKO_CALL_ERROR_BAD_NUMBER = "BadNumberError"; -this.GECKO_CALL_ERROR_NORMAL_CALL_CLEARING = "NormalCallClearingError"; -this.GECKO_CALL_ERROR_BUSY = "BusyError"; -this.GECKO_CALL_ERROR_NO_USER_RESPONDING = "NoUserRespondingError"; -this.GECKO_CALL_ERROR_USER_ALERTING = "UserAlertingNoAnswerError"; -this.GECKO_CALL_ERROR_REJECTED = "CallRejectedError"; -this.GECKO_CALL_ERROR_NUMBER_CHANGED = "NumberChangedError"; -this.GECKO_CALL_ERROR_PRE_EMPTION = "PreEmptionError"; -this.GECKO_CALL_ERROR_DEST_OUT_OF_ORDER = "DestinationOutOfOrderError"; -this.GECKO_CALL_ERROR_INVALID_NUMBER_FORMAT = "InvalidNumberFormatError"; -this.GECKO_CALL_ERROR_FACILITY_REJECTED = "FacilityRejectedError"; -this.GECKO_CALL_ERROR_CONGESTION = "CongestionError"; -this.GECKO_CALL_ERROR_NETWORK_OUT_OF_ORDER = "NetworkOutOfOrderError"; -this.GECKO_CALL_ERROR_NETWORK_TEMP_FAILURE = "NetworkTempFailureError"; -this.GECKO_CALL_ERROR_INCOMING_CALL_EXCEEDED = "IncomingCallExceededError"; -this.GECKO_CALL_ERROR_BARRED = "BarredError"; -this.GECKO_CALL_ERROR_FDN_BLOCKED = "FDNBlockedError"; -this.GECKO_CALL_ERROR_SUBSCRIBER_UNKNOWN = "SubscriberUnknownError"; -this.GECKO_CALL_ERROR_DEVICE_NOT_ACCEPTED = "DeviceNotAcceptedError"; +this.GECKO_CALL_ERROR_BAD_NUMBER = "BadNumberError"; +this.GECKO_CALL_ERROR_NO_ROUTE_TO_DESTINATION = "NoRouteToDestinationError"; +this.GECKO_CALL_ERROR_CHANNEL_UNACCEPTABLE = "ChannelUnacceptableError"; +this.GECKO_CALL_ERROR_OPERATOR_DETERMINED_BARRING = "OperatorDeterminedBarringError"; +this.GECKO_CALL_ERROR_NORMAL_CALL_CLEARING = "NormalCallClearingError"; +this.GECKO_CALL_ERROR_BUSY = "BusyError"; +this.GECKO_CALL_ERROR_NO_USER_RESPONDING = "NoUserRespondingError"; +this.GECKO_CALL_ERROR_USER_ALERTING = "UserAlertingNoAnswerError"; +this.GECKO_CALL_ERROR_REJECTED = "CallRejectedError"; +this.GECKO_CALL_ERROR_NUMBER_CHANGED = "NumberChangedError"; +this.GECKO_CALL_ERROR_REJECTED_DETINATION_FEATURE = "CallRejectedDestinationFeature"; +this.GECKO_CALL_ERROR_PRE_EMPTION = "PreEmptionError"; +this.GECKO_CALL_ERROR_DEST_OUT_OF_ORDER = "DestinationOutOfOrderError"; +this.GECKO_CALL_ERROR_INVALID_NUMBER_FORMAT = "InvalidNumberFormatError"; +this.GECKO_CALL_ERROR_FACILITY_REJECTED = "FacilityRejectedError"; +this.GECKO_CALL_ERROR_RESPONSE_TO_STATUS_ENQUIRY = "ResponseToStatusEnquiryError"; +this.GECKO_CALL_ERROR_CONGESTION = "CongestionError"; +this.GECKO_CALL_ERROR_NETWORK_OUT_OF_ORDER = "NetworkOutOfOrderError"; +this.GECKO_CALL_ERROR_NETWORK_TEMP_FAILURE = "NetworkTempFailureError"; +this.GECKO_CALL_ERROR_SWITCHING_EQUIP_CONGESTION = "SwitchingEquipCongestionError"; +this.GECKO_CALL_ERROR_ACCESS_INFO_DISCARDED = "AccessInfoDiscardedError"; +this.GECKO_CALL_ERROR_REQUESTED_CHANNEL_NOT_AVAILABLE = "RequestedChannelNotAvailableError"; +this.GECKO_CALL_ERROR_RESOURCE_UNAVAILABLE = "ResourceUnavailableError"; +this.GECKO_CALL_ERROR_QOS_UNAVAILABLE = "QosUnavailableError"; +this.GECKO_CALL_ERROR_REQUESTED_FACILITY_NOT_SUBSCRIBED = "RequestedFacilityNotSubscribedError"; +this.GECKO_CALL_ERROR_INCOMING_CALLS_BARRED_WITHIN_CUG = "IncomingCallsBarredWithinCugError"; +this.GECKO_CALL_ERROR_BEARER_CAPABILITY_NOT_AUTHORIZED = "BearerCapabilityNotAuthorizedError"; +this.GECKO_CALL_ERROR_BEARER_CAPABILITY_NOT_AVAILABLE = "BearerCapabilityNotAvailableError"; +this.GECKO_CALL_ERROR_BEARER_NOT_IMPLEMENTED = "BearerNotImplementedError"; +this.GECKO_CALL_ERROR_SERVICE_NOT_AVAILABLE = "ServiceNotAvailableError"; +this.GECKO_CALL_ERROR_INCOMING_CALL_EXCEEDED = "IncomingCallExceededError"; +this.GECKO_CALL_ERROR_REQUESTED_FACILITY_NOT_IMPLEMENTED = "RequestedFacilityNotImplementedError"; +this.GECKO_CALL_ERROR_UNRESTRICTED_BEARER_NOT_AVAILABLE = "UnrestrictedBearerNotAvailableError"; +this.GECKO_CALL_ERROR_SERVICE_NOT_IMPLEMENTED = "ServiceNotImplementedError"; +this.GECKO_CALL_ERROR_INVALID_TRANSACTION_ID = "InvalidTransactionIdError"; +this.GECKO_CALL_ERROR_USER_NOT_CUG_MEMBER = "NotCugMemberError"; +this.GECKO_CALL_ERROR_INCOMPATIBLE_DESTINATION = "IncompatibleDestinationError"; +this.GECKO_CALL_ERROR_INVALID_TRANSIT_NETWORK_SELECTION = "InvalidTransitNetworkSelectionError"; +this.GECKO_CALL_ERROR_SEMANTICALLY_INCORRECT_MESSAGE = "SemanticallyIncorrectMessageError"; +this.GECKO_CALL_ERROR_INVALID_MANDATORY_INFO = "InvalidMandatoryInfoError"; +this.GECKO_CALL_ERROR_MESSAGE_TYPE_NOT_IMPLEMENTED = "MessageTypeNotImplementedError"; +this.GECKO_CALL_ERROR_MESSAGE_TYPE_INCOMPATIBLE_PROTOCOL_STATE = "MessageTypeIncompatibleProtocolStateError"; +this.GECKO_CALL_ERROR_INFO_ELEMENT_NOT_IMPLEMENTED = "InfoElementNotImplementedError"; +this.GECKO_CALL_ERROR_CONDITIONAL_IE = "ConditionalIeError"; +this.GECKO_CALL_ERROR_MESSAGE_INCOMPATIBLE_PROTOCOL_STATE = "MessageIncompatibleProtocolStateError"; +this.GECKO_CALL_ERROR_RECOVERY_ON_TIMER_EXPIRY = "RecoveryOnTimerExpiryError"; +this.GECKO_CALL_ERROR_PROTOCOL = "ProtocolError"; +this.GECKO_CALL_ERROR_INTERWORKING = "InterworkingError"; +this.GECKO_CALL_ERROR_BARRED = "BarredError"; +this.GECKO_CALL_ERROR_FDN_BLOCKED = "FDNBlockedError"; +this.GECKO_CALL_ERROR_SUBSCRIBER_UNKNOWN = "SubscriberUnknownError"; +this.GECKO_CALL_ERROR_DEVICE_NOT_ACCEPTED = "DeviceNotAcceptedError"; this.GECKO_CALL_ERROR_MODIFIED_TO_DIAL_FAILED = "ModifiedDialError"; -this.GECKO_CALL_ERROR_UNSPECIFIED = "UnspecifiedError"; +this.GECKO_CALL_ERROR_CDMA_LOCKED_UNTIL_POWER_CYCLE = "CdmaLockedUntilPowerCycleError"; +this.GECKO_CALL_ERROR_CDMA_DROP = "CdmaDropError"; +this.GECKO_CALL_ERROR_CDMA_INTERCEPT = "CdmaInterceptError"; +this.GECKO_CALL_ERROR_CDMA_REORDER = "CdmaReorderError"; +this.GECKO_CALL_ERROR_CDMA_SO_REJECT = "CdmaSoRejectError"; +this.GECKO_CALL_ERROR_CDMA_RETRY_ORDER = "CdmaRetryOrderError"; +this.GECKO_CALL_ERROR_CDMA_ACCESS_FAILURE = "CdmaAcessError"; +this.GECKO_CALL_ERROR_CDMA_PREEMPTED = "CdmaPreemptedError"; +this.GECKO_CALL_ERROR_CDMA_NOT_EMERGENCY = "CdmaNotEmergencyError"; +this.GECKO_CALL_ERROR_CDMA_ACCESS_BLOCKED = "CdmaAccessBlockedError"; +this.GECKO_CALL_ERROR_UNSPECIFIED = "UnspecifiedError"; this.RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR = {}; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_UNOBTAINABLE_NUMBER] = GECKO_CALL_ERROR_BAD_NUMBER; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NORMAL] = GECKO_CALL_ERROR_NORMAL_CALL_CLEARING; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_BUSY] = GECKO_CALL_ERROR_BUSY; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NO_USER_RESPONDING] = GECKO_CALL_ERROR_NO_USER_RESPONDING; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_USER_ALERTING] = GECKO_CALL_ERROR_USER_ALERTING; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_REJECTED] = GECKO_CALL_ERROR_REJECTED; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NUMBER_CHANGED] = GECKO_CALL_ERROR_NUMBER_CHANGED; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_PRE_EMPTION] = GECKO_CALL_ERROR_PRE_EMPTION; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_DEST_OUT_OF_ORDER] = GECKO_CALL_ERROR_DEST_OUT_OF_ORDER; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INVALID_FORMAT] = GECKO_CALL_ERROR_INVALID_NUMBER_FORMAT; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_FACILITY_REJECTED] = GECKO_CALL_ERROR_FACILITY_REJECTED; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CONGESTION] = GECKO_CALL_ERROR_CONGESTION; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NETWORK_OUT_OF_ORDER] = GECKO_CALL_ERROR_NETWORK_OUT_OF_ORDER; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NETWORK_TEMP_FAILURE] = GECKO_CALL_ERROR_NETWORK_TEMP_FAILURE; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_ACM_LIMIT_EXCEEDED] = GECKO_CALL_ERROR_INCOMING_CALL_EXCEEDED; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_BARRED] = GECKO_CALL_ERROR_BARRED; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_FDN_BLOCKED] = GECKO_CALL_ERROR_FDN_BLOCKED; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_IMSI_UNKNOWN_IN_VLR] = GECKO_CALL_ERROR_SUBSCRIBER_UNKNOWN; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_IMEI_NOT_ACCEPTED] = GECKO_CALL_ERROR_DEVICE_NOT_ACCEPTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_UNOBTAINABLE_NUMBER] = GECKO_CALL_ERROR_BAD_NUMBER; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NO_ROUTE_TO_DESTINATION] = GECKO_CALL_ERROR_NO_ROUTE_TO_DESTINATION; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CHANNEL_UNACCEPTABLE] = GECKO_CALL_ERROR_CHANNEL_UNACCEPTABLE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_OPERATOR_DETERMINED_BARRING] = GECKO_CALL_ERROR_OPERATOR_DETERMINED_BARRING; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NORMAL] = GECKO_CALL_ERROR_NORMAL_CALL_CLEARING; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_BUSY] = GECKO_CALL_ERROR_BUSY; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NO_USER_RESPONDING] = GECKO_CALL_ERROR_NO_USER_RESPONDING; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_USER_ALERTING] = GECKO_CALL_ERROR_USER_ALERTING; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_REJECTED] = GECKO_CALL_ERROR_REJECTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NUMBER_CHANGED] = GECKO_CALL_ERROR_NUMBER_CHANGED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_REJECTED_DESTINATION_FEATURE] = GECKO_CALL_ERROR_REJECTED_DETINATION_FEATURE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_PRE_EMPTION] = GECKO_CALL_ERROR_PRE_EMPTION; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_DEST_OUT_OF_ORDER] = GECKO_CALL_ERROR_DEST_OUT_OF_ORDER; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INVALID_FORMAT] = GECKO_CALL_ERROR_INVALID_NUMBER_FORMAT; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_FACILITY_REJECTED] = GECKO_CALL_ERROR_FACILITY_REJECTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_RESPONSE_TO_STATUS_ENQUIRY] = GECKO_CALL_ERROR_RESPONSE_TO_STATUS_ENQUIRY; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NORMAL_UNSPECIFIED] = GECKO_CALL_ERROR_NORMAL_CALL_CLEARING; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CONGESTION] = GECKO_CALL_ERROR_CONGESTION; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NETWORK_OUT_OF_ORDER] = GECKO_CALL_ERROR_NETWORK_OUT_OF_ORDER; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NETWORK_TEMP_FAILURE] = GECKO_CALL_ERROR_NETWORK_TEMP_FAILURE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_SWITCHING_EQUIP_CONGESTION] = GECKO_CALL_ERROR_SWITCHING_EQUIP_CONGESTION; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_ACCESS_INFO_DISCARDED] = GECKO_CALL_ERROR_ACCESS_INFO_DISCARDED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_REQUESTED_CHANNEL_NOT_AVAILABLE] = GECKO_CALL_ERROR_REQUESTED_CHANNEL_NOT_AVAILABLE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_RESOURCE_UNAVAILABLE] = GECKO_CALL_ERROR_RESOURCE_UNAVAILABLE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_QOS_UNAVAILABLE] = GECKO_CALL_ERROR_QOS_UNAVAILABLE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_REQUESTED_FACILITY_NOT_SUBSCRIBED] = GECKO_CALL_ERROR_REQUESTED_FACILITY_NOT_SUBSCRIBED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INCOMING_CALLS_BARRED_WITHIN_CUG] = GECKO_CALL_ERROR_INCOMING_CALLS_BARRED_WITHIN_CUG; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_BEARER_CAPABILITY_NOT_AUTHORIZED] = GECKO_CALL_ERROR_BEARER_CAPABILITY_NOT_AUTHORIZED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_BEARER_CAPABILITY_NOT_AVAILABLE] = GECKO_CALL_ERROR_BEARER_CAPABILITY_NOT_AVAILABLE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_SERVICE_NOT_AVAILABLE] = GECKO_CALL_ERROR_SERVICE_NOT_AVAILABLE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_BEARER_NOT_IMPLEMENTED] = GECKO_CALL_ERROR_BEARER_NOT_IMPLEMENTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_ACM_LIMIT_EXCEEDED] = GECKO_CALL_ERROR_INCOMING_CALL_EXCEEDED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_REQUESTED_FACILITY_NOT_IMPLEMENTED] = GECKO_CALL_ERROR_REQUESTED_FACILITY_NOT_IMPLEMENTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_UNRESTRICTED_BEARER_NOT_AVAILABLE] = GECKO_CALL_ERROR_UNRESTRICTED_BEARER_NOT_AVAILABLE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_SERVICE_NOT_IMPLEMENTED] = GECKO_CALL_ERROR_SERVICE_NOT_IMPLEMENTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INVALID_TRANSACTION_ID] = GECKO_CALL_ERROR_INVALID_TRANSACTION_ID; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_USER_NOT_CUG_MEMBER] = GECKO_CALL_ERROR_USER_NOT_CUG_MEMBER; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INCOMPATIBLE_DESTINATION] = GECKO_CALL_ERROR_INCOMPATIBLE_DESTINATION; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INVALID_TRANSIT_NETWORK_SELECTION] = GECKO_CALL_ERROR_INVALID_TRANSIT_NETWORK_SELECTION; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_SEMANTICALLY_INCORRECT_MESSAGE] = GECKO_CALL_ERROR_SEMANTICALLY_INCORRECT_MESSAGE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INVALID_MANDATORY_INFO] = GECKO_CALL_ERROR_INVALID_MANDATORY_INFO; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_MESSAGE_TYPE_NOT_IMPLEMENTED] = GECKO_CALL_ERROR_MESSAGE_TYPE_NOT_IMPLEMENTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_MESSAGE_TYPE_INCOMPATIBLE_PROTOCOL_STATE] = GECKO_CALL_ERROR_MESSAGE_TYPE_INCOMPATIBLE_PROTOCOL_STATE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INFO_ELEMENT_NOT_IMPLEMENTED] = GECKO_CALL_ERROR_INFO_ELEMENT_NOT_IMPLEMENTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CONDITIONAL_IE_ERROR] = GECKO_CALL_ERROR_CONDITIONAL_IE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_MESSAGE_INCOMPABITLE_PROTOCOL_STATE] = GECKO_CALL_ERROR_MESSAGE_INCOMPATIBLE_PROTOCOL_STATE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_RECOVERY_ON_TIMER_EXPIRY] = GECKO_CALL_ERROR_RECOVERY_ON_TIMER_EXPIRY; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_PROTOCOL_ERROR] = GECKO_CALL_ERROR_PROTOCOL; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INTERWORKING] = GECKO_CALL_ERROR_INTERWORKING; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_BARRED] = GECKO_CALL_ERROR_BARRED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_FDN_BLOCKED] = GECKO_CALL_ERROR_FDN_BLOCKED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_IMSI_UNKNOWN_IN_VLR] = GECKO_CALL_ERROR_SUBSCRIBER_UNKNOWN; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_IMEI_NOT_ACCEPTED] = GECKO_CALL_ERROR_DEVICE_NOT_ACCEPTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_DIAL_MODIFIED_TO_USSD] = GECKO_CALL_ERROR_MODIFIED_TO_DIAL_FAILED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_DIAL_MODIFIED_TO_SS] = GECKO_CALL_ERROR_MODIFIED_TO_DIAL_FAILED; RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_DIAL_MODIFIED_TO_DIAL] = GECKO_CALL_ERROR_MODIFIED_TO_DIAL_FAILED; -RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_ERROR_UNSPECIFIED] = GECKO_CALL_ERROR_UNSPECIFIED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE] = GECKO_CALL_ERROR_CDMA_LOCKED_UNTIL_POWER_CYCLE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_DROP] = GECKO_CALL_ERROR_CDMA_DROP; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_INTERCEPT] = GECKO_CALL_ERROR_CDMA_INTERCEPT; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_REORDER] = GECKO_CALL_ERROR_CDMA_REORDER; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_SO_REJECT] = GECKO_CALL_ERROR_CDMA_SO_REJECT; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_RETRY_ORDER] = GECKO_CALL_ERROR_CDMA_RETRY_ORDER; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_ACCESS_FAILURE] = GECKO_CALL_ERROR_CDMA_ACCESS_FAILURE; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_PREEMPTED] = GECKO_CALL_ERROR_CDMA_PREEMPTED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_NOT_EMERGENCY] = GECKO_CALL_ERROR_CDMA_NOT_EMERGENCY; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CDMA_ACCESS_BLOCKED] = GECKO_CALL_ERROR_CDMA_ACCESS_BLOCKED; +RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_ERROR_UNSPECIFIED] = GECKO_CALL_ERROR_UNSPECIFIED; this.GECKO_DATACALL_ERROR_OPERATOR_BARRED = "OperatorBarredError"; this.GECKO_DATACALL_ERROR_INSUFFICIENT_RESOURCES = "InsufficientResourcesError"; diff --git a/dom/system/gonk/ril_worker.js b/dom/system/gonk/ril_worker.js index a78d880463b2..a09fbe2ea630 100644 --- a/dom/system/gonk/ril_worker.js +++ b/dom/system/gonk/ril_worker.js @@ -3894,7 +3894,8 @@ RilObject.prototype = { * Helpers for processing call state changes. */ _processCalls: function(newCalls, failCause) { - if (DEBUG) this.context.debug("_processCalls: " + JSON.stringify(newCalls)); + if (DEBUG) this.context.debug("_processCalls: " + JSON.stringify(newCalls) + + " failCause: " + failCause); // Let's get the failCause first if there are removed calls. Otherwise, we // need to trigger another async request when removing call and it cause @@ -5455,7 +5456,16 @@ RilObject.prototype[REQUEST_UDUB] = function REQUEST_UDUB(length, options) { RilObject.prototype[REQUEST_LAST_CALL_FAIL_CAUSE] = function REQUEST_LAST_CALL_FAIL_CAUSE(length, options) { let Buf = this.context.Buf; let num = length ? Buf.readInt32() : 0; - let failCause = num ? RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[Buf.readInt32()] : null; + let failCause = null; + + if (num) { + let causeNum = Buf.readInt32(); + // To make _processCalls work as design, failCause couldn't be "undefined." + // See Bug 1112550 for details. + failCause = RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[causeNum] || null; + } + if (DEBUG) this.context.debug("Last call fail cause: " + failCause); + if (options.callback) { options.callback(failCause); } From 83f352562ca1819f39af384a8781762ac420f427 Mon Sep 17 00:00:00 2001 From: Mike Conley Date: Thu, 18 Dec 2014 13:52:00 -0500 Subject: [PATCH 15/18] Bug 1068349 - Follow-up: Disable KillHard timer for content processes for Mochitests. r=smaug. The KillHard timeout seems to be getting triggered on some of our mochitest machines, which is causing us to leave minidumps behind - so we disable the timeout for mochitests. We also disable KillHard paired minidumps for B2G, because we were getting minidumps for some B2G Desktop tests there for what are likely some intentional KillHard's, and at this point, we don't think it's worth collecting for B2G. --HG-- extra : rebase_source : adcad58bc3b893e30e71992514b8a966257f8bc0 extra : amend_source : 11fd95ac3e3a5ed1dbb55d450f480b9092d31528 --- dom/ipc/ContentParent.cpp | 6 ++++-- dom/ipc/ContentParent.h | 1 + testing/profiles/prefs_b2g_unittest.js | 1 + testing/profiles/prefs_general.js | 2 ++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp index e7fc4d59cf9e..bc492c210e92 100755 --- a/dom/ipc/ContentParent.cpp +++ b/dom/ipc/ContentParent.cpp @@ -1801,7 +1801,7 @@ ContentParent::ActorDestroy(ActorDestroyReason why) NS_ConvertUTF16toUTF8(mAppManifestURL)); } - if (mCalledKillHard) { + if (mCreatedPairedMinidumps) { // We killed the child with KillHard, so two minidumps should already // exist - one for the content process, and one for the browser process. // The "main" minidump of this crash report is the content processes, @@ -1946,6 +1946,7 @@ ContentParent::InitializeMembers() mCalledClose = false; mCalledCloseWithError = false; mCalledKillHard = false; + mCreatedPairedMinidumps = false; } ContentParent::ContentParent(mozIApplication* aApp, @@ -3104,7 +3105,7 @@ ContentParent::KillHard() mCalledKillHard = true; mForceKillTask = nullptr; -#ifdef MOZ_CRASHREPORTER +#if defined(MOZ_CRASHREPORTER) && !defined(MOZ_B2G) if (ManagedPCrashReporterParent().Length() > 0) { CrashReporterParent* crashReporter = static_cast(ManagedPCrashReporterParent()[0]); @@ -3116,6 +3117,7 @@ ContentParent::KillHard() // actual report gets generated, once the child process has // finally died. if (crashReporter->GeneratePairedMinidump(this)) { + mCreatedPairedMinidumps = true; // GeneratePairedMinidump created two minidumps for us - the main // one is for the content process we're about to kill, and the other // one is for the main browser process. That second one is the extra diff --git a/dom/ipc/ContentParent.h b/dom/ipc/ContentParent.h index 70f88647d4fc..f6b723836c5b 100644 --- a/dom/ipc/ContentParent.h +++ b/dom/ipc/ContentParent.h @@ -795,6 +795,7 @@ private: bool mCalledClose; bool mCalledCloseWithError; bool mCalledKillHard; + bool mCreatedPairedMinidumps; friend class CrashReporterParent; diff --git a/testing/profiles/prefs_b2g_unittest.js b/testing/profiles/prefs_b2g_unittest.js index 40df1fd66676..d1885730fb89 100644 --- a/testing/profiles/prefs_b2g_unittest.js +++ b/testing/profiles/prefs_b2g_unittest.js @@ -4,6 +4,7 @@ user_pref("b2g.system_manifest_url","app://test-container.gaiamobile.org/manifes user_pref("b2g.system_startup_url","app://test-container.gaiamobile.org/index.html"); user_pref("dom.ipc.browser_frames.oop_by_default", false); user_pref("dom.ipc.tabs.disabled", false); +user_pref("dom.ipc.tabs.shutdownTimeoutSecs", 0); user_pref("dom.mozBrowserFramesEnabled", "%(OOP)s"); user_pref("dom.mozBrowserFramesWhitelist","app://test-container.gaiamobile.org,http://mochi.test:8888"); user_pref("dom.testing.datastore_enabled_for_hosted_apps", true); diff --git a/testing/profiles/prefs_general.js b/testing/profiles/prefs_general.js index 3e3080ced0bc..32653061639e 100644 --- a/testing/profiles/prefs_general.js +++ b/testing/profiles/prefs_general.js @@ -279,3 +279,5 @@ user_pref("media.eme.enabled", true); user_pref("browser.displayedE10SPrompt.1", 5); // Don't use auto-enabled e10s user_pref("browser.tabs.remote.autostart.1", false); +// Don't forceably kill content processes after a timeout +user_pref("dom.ipc.tabs.shutdownTimeoutSecs", 0); From f9e9be69df324c66b06b2282ec64e11863fd3308 Mon Sep 17 00:00:00 2001 From: Bill McCloskey Date: Sat, 20 Dec 2014 21:15:36 -0800 Subject: [PATCH 16/18] Backout bug 1072980 due to regressions (a=backout) --- .../sessionstore/test/browser_500328.js | 6 +-- dom/base/test/chrome/cpows_parent.xul | 18 --------- js/xpconnect/src/XPCWrappedNative.cpp | 16 -------- .../specialpowers/content/specialpowersAPI.js | 4 +- .../addoncompat/RemoteAddonsChild.jsm | 3 ++ .../addoncompat/RemoteAddonsParent.jsm | 39 +++++++------------ 6 files changed, 21 insertions(+), 65 deletions(-) diff --git a/browser/components/sessionstore/test/browser_500328.js b/browser/components/sessionstore/test/browser_500328.js index 45f784bdc02a..767099bd8f3b 100644 --- a/browser/components/sessionstore/test/browser_500328.js +++ b/browser/components/sessionstore/test/browser_500328.js @@ -42,9 +42,9 @@ function checkState(tab) { // deserialized in the content scope. And in this case, since RegExps are // not currently Xrayable (see bug 1014991), trying to pull |obj3| (a RegExp) // off of an Xrayed Object won't work. So we need to waive. - runInContent(tab.linkedBrowser, function(win, state) { - return Cu.waiveXrays(state).obj3.toString(); - }, aEvent.state).then(function(stateStr) { + runInContent(tab.linkedBrowser, function(win, event) { + return Cu.waiveXrays(event.state).obj3.toString(); + }, aEvent).then(function(stateStr) { is(stateStr, '/^a$/', "second popstate object."); // Make sure that the new-elem node is present in the document. If it's diff --git a/dom/base/test/chrome/cpows_parent.xul b/dom/base/test/chrome/cpows_parent.xul index 556ce2738e40..38f76f88ade7 100644 --- a/dom/base/test/chrome/cpows_parent.xul +++ b/dom/base/test/chrome/cpows_parent.xul @@ -197,24 +197,6 @@ let savedElement = null; function recvDomTest(message) { savedElement = message.objects.element; - - // Test to ensure that we don't pass CPOWs to C++-implemented interfaces. - // See bug 1072980. - if (test_state == "remote") { - let walker = Components.classes["@mozilla.org/inspector/deep-tree-walker;1"] - .createInstance(Components.interfaces.inIDeepTreeWalker); - const SHOW_ELEMENT = Components.interfaces.nsIDOMNodeFilter.SHOW_ELEMENT; - walker.showAnonymousContent = true; - walker.showSubDocuments = false; - - try { - walker.init(savedElement, SHOW_ELEMENT); - ok(false, "expected exception passing CPOW to C++"); - } catch (e) { - is(e.result, Components.results.NS_ERROR_XPC_CANT_PASS_CPOW_TO_NATIVE, - "got exception when passing CPOW to C++"); - } - } } function recvDomTestAfterGC(message) { diff --git a/js/xpconnect/src/XPCWrappedNative.cpp b/js/xpconnect/src/XPCWrappedNative.cpp index b9ecb51a482f..e4ed25ce049d 100644 --- a/js/xpconnect/src/XPCWrappedNative.cpp +++ b/js/xpconnect/src/XPCWrappedNative.cpp @@ -10,7 +10,6 @@ #include "nsWrapperCacheInlines.h" #include "XPCLog.h" #include "jsprf.h" -#include "JavaScriptParent.h" #include "AccessCheck.h" #include "WrapperFactory.h" #include "XrayWrapper.h" @@ -2174,21 +2173,6 @@ CallMethodHelper::ConvertIndependentParam(uint8_t i) return false; } - // Don't allow CPOWs to be passed to native code (in case they try to cast - // to a concrete type). - if (src.isObject() && - jsipc::IsWrappedCPOW(&src.toObject()) && - type_tag == nsXPTType::T_INTERFACE && - !param_iid.Equals(NS_GET_IID(nsISupports))) - { - // Allow passing CPOWs to XPCWrappedJS. - nsCOMPtr wrappedJS(do_QueryInterface(mCallee)); - if (!wrappedJS) { - ThrowBadParam(NS_ERROR_XPC_CANT_PASS_CPOW_TO_NATIVE, i, mCallContext); - return false; - } - } - nsresult err; if (!XPCConvert::JSData2Native(&dp->val, src, type, ¶m_iid, &err)) { ThrowBadParam(err, i, mCallContext); diff --git a/testing/specialpowers/content/specialpowersAPI.js b/testing/specialpowers/content/specialpowersAPI.js index 2bb67a2e98d5..8d6c6b611841 100644 --- a/testing/specialpowers/content/specialpowersAPI.js +++ b/testing/specialpowers/content/specialpowersAPI.js @@ -1587,10 +1587,10 @@ SpecialPowersAPI.prototype = { var xferable = Components.classes["@mozilla.org/widget/transferable;1"]. createInstance(Components.interfaces.nsITransferable); - // in e10s b-c tests |content.window| is a CPOW whereas |window| works fine. + // in e10s b-c tests |content.window| is null whereas |window| works fine. // for some non-e10s mochi tests, |window| is null whereas |content.window| // works fine. So we take whatever is non-null! - xferable.init(this._getDocShell(typeof(window) == "undefined" ? content.window : window) + xferable.init(this._getDocShell(content.window || window) .QueryInterface(Components.interfaces.nsILoadContext)); xferable.addDataFlavor(flavor); this._cb.getData(xferable, whichClipboard); diff --git a/toolkit/components/addoncompat/RemoteAddonsChild.jsm b/toolkit/components/addoncompat/RemoteAddonsChild.jsm index 8ed8c836970f..3ae195fd2bf4 100644 --- a/toolkit/components/addoncompat/RemoteAddonsChild.jsm +++ b/toolkit/components/addoncompat/RemoteAddonsChild.jsm @@ -222,6 +222,9 @@ AboutProtocolChannel.prototype = { let rval = cpmm.sendRpcMessage("Addons:AboutProtocol:OpenChannel", { uri: this.URI.spec, contractID: this._contractID + }, { + notificationCallbacks: this.notificationCallbacks, + loadGroupNotificationCallbacks: this.loadGroup ? this.loadGroup.notificationCallbacks : null, }); if (rval.length != 1) { diff --git a/toolkit/components/addoncompat/RemoteAddonsParent.jsm b/toolkit/components/addoncompat/RemoteAddonsParent.jsm index 82411523ab29..72ab2c3f9afd 100644 --- a/toolkit/components/addoncompat/RemoteAddonsParent.jsm +++ b/toolkit/components/addoncompat/RemoteAddonsParent.jsm @@ -240,8 +240,12 @@ let AboutProtocolParent = { let module = Cc[contractID].getService(Ci.nsIAboutModule); try { let channel = module.newChannel(uri, null); - channel.notificationCallbacks = null; - channel.loadGroup = null; + channel.notificationCallbacks = msg.objects.notificationCallbacks; + if (msg.objects.loadGroupNotificationCallbacks) { + channel.loadGroup = {notificationCallbacks: msg.objects.loadGroupNotificationCallbacks}; + } else { + channel.loadGroup = null; + } let stream = channel.open(); let data = NetUtil.readInputStreamToString(stream, stream.available(), {}); return { @@ -421,17 +425,13 @@ let EventTargetParent = { // If there's already an identical listener, don't do anything. for (let i = 0; i < forType.length; i++) { if (forType[i].listener === listener && - forType[i].target === target && forType[i].useCapture === useCapture && forType[i].wantsUntrusted === wantsUntrusted) { return; } } - forType.push({listener: listener, - target: target, - wantsUntrusted: wantsUntrusted, - useCapture: useCapture}); + forType.push({listener: listener, wantsUntrusted: wantsUntrusted, useCapture: useCapture}); }, removeEventListener: function(addon, target, type, listener, useCapture) { @@ -449,9 +449,7 @@ let EventTargetParent = { let forType = setDefault(listeners, type, []); for (let i = 0; i < forType.length; i++) { - if (forType[i].listener === listener && - forType[i].target === target && - forType[i].useCapture === useCapture) { + if (forType[i].listener === listener && forType[i].useCapture === useCapture) { forType.splice(i, 1); NotificationTracker.remove(["event", type, useCapture, addon]); break; @@ -479,29 +477,18 @@ let EventTargetParent = { // Make a copy in case they call removeEventListener in the listener. let handlers = []; - for (let {listener, target, wantsUntrusted, useCapture} of forType) { + for (let {listener, wantsUntrusted, useCapture} of forType) { if ((wantsUntrusted || isTrusted) && useCapture == capturing) { - handlers.push([listener, target]); + handlers.push(listener); } } - for (let [handler, target] of handlers) { - let EventProxy = { - get: function(actualEvent, name) { - if (name == "currentTarget") { - return target; - } else { - return actualEvent[name]; - } - } - }; - let proxyEvent = new Proxy(event, EventProxy); - + for (let handler of handlers) { try { if ("handleEvent" in handler) { - handler.handleEvent(proxyEvent); + handler.handleEvent(event); } else { - handler.call(event.target, proxyEvent); + handler.call(event.target, event); } } catch (e) { Cu.reportError(e); From ea63c82b31a462ea86a6fe3d8d715e2d125879e8 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 21 Dec 2014 23:47:23 -0800 Subject: [PATCH 17/18] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/24f27472ae6d Author: Yi-Fan Liao Desc: Merge pull request #26932 from begeeben/1113538_text_font_of_app_icon Bug 1113538 - [Stingray] text font of App icon is not correct in App deck, r=tzhuang ======== https://hg.mozilla.org/integration/gaia-central/rev/fdedf9626247 Author: Yi-Fan Liao Desc: Bug 1113538 - [Stingray] text font of App icon is not correct in App deck * Change styles according to the UI spec --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 74524158c56d..268db5789540 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "389511f8e11581ec63e6072f12c4a94b4842c453", + "revision": "24f27472ae6ddb6c819227cb3b7d398a6925ef86", "repo_path": "integration/gaia-central" } From 99e242e4840c2e4babf4092c545fcf72c92e6b43 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 21 Dec 2014 23:52:02 -0800 Subject: [PATCH 18/18] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index a931de7c7c18..4d97b2b66713 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index cfa15d9f8284..b8e313a63f1b 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 7ec3583ec1b8..32afd2fa4ce0 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 7f3333b0a170..6cf8daedb49d 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index cfa15d9f8284..b8e313a63f1b 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 09225559826c..07b0daa266cc 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 5f86c6ec9142..c187faaddb84 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 7bfe472cad2f..c3ccf6c249a8 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 4aacdc8af9b7..4befdd30e25e 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 95d59bca5f50..413f4e5dc31d 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 46d0fef4070e..29a9290d3b16 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - +