From 0591e76929fd139f6125ee4ddc0e9470e8e9219c Mon Sep 17 00:00:00 2001 From: Marco Bonardo Date: Thu, 11 Jun 2015 13:20:46 -0700 Subject: [PATCH 01/56] Bug 1162140 - Allow user to select search suggestions in Awesome Bar. r=adw --- toolkit/components/places/UnifiedComplete.js | 9 +++-- toolkit/content/autocomplete.css | 4 ++ toolkit/content/widgets/autocomplete.xml | 38 ++++++++++++++----- .../chrome/global/autocomplete.properties | 5 --- 4 files changed, 37 insertions(+), 19 deletions(-) diff --git a/toolkit/components/places/UnifiedComplete.js b/toolkit/components/places/UnifiedComplete.js index f59938a5dd31..34b36da48505 100644 --- a/toolkit/components/places/UnifiedComplete.js +++ b/toolkit/components/places/UnifiedComplete.js @@ -966,7 +966,7 @@ Search.prototype = { match.engineAlias = alias; let query = this._searchTokens.slice(1).join(" "); - yield this._addSearchEngineMatch(match, query); + this._addSearchEngineMatch(match, query); return true; }, @@ -976,16 +976,17 @@ Search.prototype = { return; let query = this._originalSearchString; - - yield this._addSearchEngineMatch(match, query); + this._addSearchEngineMatch(match, query); }, - _addSearchEngineMatch: function* (match, query) { + _addSearchEngineMatch(match, query, suggestion) { let actionURLParams = { engineName: match.engineName, input: this._originalSearchString, searchQuery: query, }; + if (suggestion) + actionURLParams.searchSuggestion = suggestion; if (match.engineAlias) { actionURLParams.alias = match.engineAlias; } diff --git a/toolkit/content/autocomplete.css b/toolkit/content/autocomplete.css index 249c7ebf9c10..960bdc456d24 100644 --- a/toolkit/content/autocomplete.css +++ b/toolkit/content/autocomplete.css @@ -11,3 +11,7 @@ image-rendering: -moz-crisp-edges; } } + +richlistitem > .ac-title-box > .ac-title > .ac-comment:not([selected]) > html|span.ac-selected-text { + display: none; +} diff --git a/toolkit/content/widgets/autocomplete.xml b/toolkit/content/widgets/autocomplete.xml index 529023e12e11..19aff79695f9 100644 --- a/toolkit/content/widgets/autocomplete.xml +++ b/toolkit/content/widgets/autocomplete.xml @@ -1539,11 +1539,10 @@ extends="chrome://global/content/bindings/popup.xml#popup"> let index = (match[1] || 1) - 1; if (index >= 0 && index < aReplacements.length) { - let replacement = aReplacements[index]; - pairs.push([...replacement]); + pairs.push([...aReplacements[index]]); } } else { - pairs.push([part, false]); + pairs.push([part]); } } @@ -1572,8 +1571,15 @@ extends="chrome://global/content/bindings/popup.xml#popup"> if (emphasise) { let span = aDescriptionElement.appendChild( document.createElementNS("http://www.w3.org/1999/xhtml", "span")); - span.className = "ac-emphasize-text"; span.textContent = text; + switch(emphasise) { + case "match": + span.className = "ac-emphasize-text"; + break; + case "selected": + span.className = "ac-selected-text"; + break; + } } else { aDescriptionElement.appendChild(document.createTextNode(text)); } @@ -1629,10 +1635,22 @@ extends="chrome://global/content/bindings/popup.xml#popup"> } else if (action.type == "searchengine") { emphasiseUrl = false; - let sourceStr = this._stringBundle.GetStringFromName("searchWithEngineForQuery"); - title = this._generateEmphasisPairs(sourceStr, [ - [action.params.engineName, false], - [action.params.searchQuery, true] + // The order here is not localizable, we default to appending + // "- Search with Engine" to the search string, to be able to + // properly generate emphasis pairs. That said, no localization + // changed the order while it was possible, so doesn't look like + // there's a strong need for that. + let {engineName, searchSuggestion, searchQuery} = action.params; + let engineStr = "- " + + this._stringBundle.formatStringFromName("searchWithEngine", + [engineName], 1); + let suggestedPart = ""; + if (searchSuggestion) { + suggestedPart = searchSuggestion.substr(searchQuery.length); + } + title = this._generateEmphasisPairs(`%1$S${suggestedPart} %2$S`, [ + [searchQuery, "match"], + [engineStr, "selected"], ]); // If this is a default search match, we remove the image so we // can style it ourselves with a generic search icon. @@ -1649,7 +1667,7 @@ extends="chrome://global/content/bindings/popup.xml#popup"> let sourceStr = this._stringBundle.GetStringFromName("visitURL"); title = this._generateEmphasisPairs(sourceStr, [ - [displayUrl, true], + [displayUrl, "match"], ]); } @@ -1679,7 +1697,7 @@ extends="chrome://global/content/bindings/popup.xml#popup"> let sourceStr = this._stringBundle.GetStringFromName("visitURL"); title = this._generateEmphasisPairs(sourceStr, [ - [displayUrl, true], + [displayUrl, "match"], ]); types.delete("autofill"); diff --git a/toolkit/locales/en-US/chrome/global/autocomplete.properties b/toolkit/locales/en-US/chrome/global/autocomplete.properties index 93342831c67e..e06dff3d565f 100644 --- a/toolkit/locales/en-US/chrome/global/autocomplete.properties +++ b/toolkit/locales/en-US/chrome/global/autocomplete.properties @@ -6,11 +6,6 @@ # the search engine provider's name. This format was chosen because # the provider can also end with "Search" (e.g.: MSN Search). searchWithEngine = Search with %S -# LOCALIZATION NOTE (searchWithEngineForQuery): -# %1$S is the search engine's name, %2$S is the search query. -# This format was chosen because the provider can also end with "Search" -# (e.g.: MSN Search). -searchWithEngineForQuery = %2$S — Search with %1$S switchToTab = Switch to tab # LOCALIZATION NOTE (visitURL): # %S is the URL to visit. From 728a40075d1e8897912be57d689b96adfed4dbea Mon Sep 17 00:00:00 2001 From: Drew Willcoxon Date: Thu, 11 Jun 2015 13:20:48 -0700 Subject: [PATCH 02/56] Bug 959594 - Add search suggestions to UnifiedComplete. r=mak --- browser/app/profile/firefox.js | 1 + browser/base/content/browser.js | 17 ++-- testing/profiles/prefs_general.js | 4 + .../PlacesSearchAutocompleteProvider.jsm | 66 +++++++++++++++ toolkit/components/places/UnifiedComplete.js | 81 ++++++++++++++++++- .../places/mozIPlacesAutoComplete.idl | 7 +- 6 files changed, 165 insertions(+), 11 deletions(-) diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index 1d81509b584e..8092c6543cab 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -347,6 +347,7 @@ pref("browser.urlbar.match.url", "@"); pref("browser.urlbar.suggest.history", true); pref("browser.urlbar.suggest.bookmark", true); pref("browser.urlbar.suggest.openpage", true); +pref("browser.urlbar.suggest.searches", true); // Restrictions to current suggestions can also be applied (intersection). // Typed suggestion works only if history is set to true. diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index f062a8218299..0f4b5f7b6c88 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -7189,15 +7189,18 @@ let gPrivateBrowsingUI = { } } - if (gURLBar && - !PrivateBrowsingUtils.permanentPrivateBrowsing) { - // Disable switch to tab autocompletion for private windows. - // We leave it enabled for permanent private browsing mode though. + if (gURLBar) { let value = gURLBar.getAttribute("autocompletesearchparam") || ""; - if (!value.includes("disable-private-actions")) { - gURLBar.setAttribute("autocompletesearchparam", - value + " disable-private-actions"); + if (!PrivateBrowsingUtils.permanentPrivateBrowsing && + !value.includes("disable-private-actions")) { + // Disable switch to tab autocompletion for private windows. + // We leave it enabled for permanent private browsing mode though. + value += " disable-private-actions"; } + if (!value.includes("private-window")) { + value += " private-window"; + } + gURLBar.setAttribute("autocompletesearchparam", value); } } }; diff --git a/testing/profiles/prefs_general.js b/testing/profiles/prefs_general.js index 029854cc6b76..d28f100888c6 100644 --- a/testing/profiles/prefs_general.js +++ b/testing/profiles/prefs_general.js @@ -327,3 +327,7 @@ user_pref("dom.serviceWorkers.periodic-updates.enabled", false); // Enable speech synth test service, and disable built in platform services. user_pref("media.webspeech.synth.test", true); + +// Turn off search suggestions in the location bar so as not to trigger network +// connections. +user_pref("browser.urlbar.suggest.searches", false); diff --git a/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm b/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm index 9d32366a7d5a..2a1a274be27c 100644 --- a/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm +++ b/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm @@ -17,6 +17,9 @@ Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/Task.jsm"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "SearchSuggestionController", + "resource://gre/modules/SearchSuggestionController.jsm"); + const SEARCH_ENGINE_TOPIC = "browser-search-engine-modified"; const SearchAutocompleteProviderInternal = { @@ -110,10 +113,65 @@ const SearchAutocompleteProviderInternal = { } }, + getSuggestionController(searchToken, inPrivateContext, maxResults) { + let engine = Services.search.currentEngine; + if (!engine) { + return null; + } + return new SearchSuggestionControllerWrapper(engine, searchToken, + inPrivateContext, maxResults); + }, + QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]), } +function SearchSuggestionControllerWrapper(engine, searchToken, + inPrivateContext, maxResults) { + this._controller = new SearchSuggestionController(); + this._controller.maxLocalResults = 0; + this._controller.maxRemoteResults = maxResults; + let promise = this._controller.fetch(searchToken, inPrivateContext, engine); + this._suggestions = []; + this._promise = promise.then(results => { + this._suggestions = (results ? results.remote : null) || []; + }).catch(err => { + // fetch() rejects its promise if there's a pending request. + }); +} + +SearchSuggestionControllerWrapper.prototype = { + + /** + * Resolved when all suggestions have been fetched. + */ + get fetchCompletePromise() { + return this._promise; + }, + + /** + * Returns one suggestion, if any are available. The returned value is an + * array [match, suggestion]. If none are available, returns [null, null]. + * Note that there are two reasons that suggestions might not be available: + * all suggestions may have been fetched and consumed, or the fetch may not + * have completed yet. + * + * @return An array [match, suggestion]. + */ + consume() { + return !this._suggestions.length ? [null, null] : + [SearchAutocompleteProviderInternal.defaultMatch, + this._suggestions.shift()]; + }, + + /** + * Stops the fetch. + */ + stop() { + this._controller.stop(); + }, +}; + let gInitializationPromise = null; this.PlacesSearchAutocompleteProvider = Object.freeze({ @@ -214,4 +272,12 @@ this.PlacesSearchAutocompleteProvider = Object.freeze({ terms: parseUrlResult.terms, }; }, + + getSuggestionController(searchToken, inPrivateContext, maxResults) { + if (!SearchAutocompleteProviderInternal.initialized) { + throw new Error("The component has not been initialized."); + } + return SearchAutocompleteProviderInternal.getSuggestionController( + searchToken, inPrivateContext, maxResults); + }, }); diff --git a/toolkit/components/places/UnifiedComplete.js b/toolkit/components/places/UnifiedComplete.js index 34b36da48505..b560a9b1343c 100644 --- a/toolkit/components/places/UnifiedComplete.js +++ b/toolkit/components/places/UnifiedComplete.js @@ -35,6 +35,7 @@ const PREF_SUGGEST_HISTORY = [ "suggest.history", true ]; const PREF_SUGGEST_BOOKMARK = [ "suggest.bookmark", true ]; const PREF_SUGGEST_OPENPAGE = [ "suggest.openpage", true ]; const PREF_SUGGEST_HISTORY_ONLYTYPED = [ "suggest.history.onlyTyped", false ]; +const PREF_SUGGEST_SEARCHES = [ "suggest.searches", true ]; // Match type constants. // These indicate what type of search function we should be using. @@ -65,6 +66,13 @@ const TELEMETRY_6_FIRST_RESULTS = "PLACES_AUTOCOMPLETE_6_FIRST_RESULTS_TIME_MS"; // The default frecency value used when inserting matches with unknown frecency. const FRECENCY_DEFAULT = 1000; +// Search suggestion results are mixed in with all other results after they +// become available, but they're only inserted once every N results whose +// frecencies are less than FRECENCY_DEFAULT. In other words, for every N +// results that fall below that frecency threshold, one search suggestion is +// inserted. This value = N. +const SEARCH_SUGGESTION_INSERT_INTERVAL = 2; + // A regex that matches "single word" hostnames for whitelisting purposes. // The hostname will already have been checked for general validity, so we // don't need to be exhaustive here, so allow dashes anywhere. @@ -344,10 +352,15 @@ XPCOMUtils.defineLazyGetter(this, "SwitchToTabStorage", () => Object.seal({ */ XPCOMUtils.defineLazyGetter(this, "Prefs", () => { let prefs = new Preferences(PREF_BRANCH); - let types = ["History", "Bookmark", "Openpage", "Typed"]; + let types = ["History", "Bookmark", "Openpage", "Typed", "Searches"]; function syncEnabledPref(init = false) { - let suggestPrefs = [PREF_SUGGEST_HISTORY, PREF_SUGGEST_BOOKMARK, PREF_SUGGEST_OPENPAGE]; + let suggestPrefs = [ + PREF_SUGGEST_HISTORY, + PREF_SUGGEST_BOOKMARK, + PREF_SUGGEST_OPENPAGE, + PREF_SUGGEST_SEARCHES, + ]; if (init) { // Make sure to initialize the properties when first called with init = true. @@ -356,6 +369,7 @@ XPCOMUtils.defineLazyGetter(this, "Prefs", () => { store.suggestBookmark = prefs.get(...PREF_SUGGEST_BOOKMARK); store.suggestOpenpage = prefs.get(...PREF_SUGGEST_OPENPAGE); store.suggestTyped = prefs.get(...PREF_SUGGEST_HISTORY_ONLYTYPED); + store.suggestSearches = prefs.get(...PREF_SUGGEST_SEARCHES); } if (store.enabled) { @@ -395,6 +409,7 @@ XPCOMUtils.defineLazyGetter(this, "Prefs", () => { store.suggestBookmark = prefs.get(...PREF_SUGGEST_BOOKMARK); store.suggestOpenpage = prefs.get(...PREF_SUGGEST_OPENPAGE); store.suggestTyped = prefs.get(...PREF_SUGGEST_HISTORY_ONLYTYPED); + store.suggestSearches = prefs.get(...PREF_SUGGEST_SEARCHES); // If history is not set, onlyTyped value should be ignored. if (!store.suggestHistory) { @@ -566,6 +581,7 @@ function Search(searchString, searchParam, autocompleteListener, let params = new Set(searchParam.split(" ")); this._enableActions = params.has("enable-actions"); this._disablePrivateActions = params.has("disable-private-actions"); + this._inPrivateWindow = params.has("private-window"); this._searchTokens = this.filterTokens(getUnfilteredSearchTokens(this._searchString)); @@ -599,6 +615,8 @@ function Search(searchString, searchParam, autocompleteListener, // These are used to avoid adding duplicate entries to the results. this._usedURLs = new Set(); this._usedPlaceIds = new Set(); + + this._searchSuggestionInsertCounter = 0; } Search.prototype = { @@ -704,6 +722,10 @@ Search.prototype = { this._sleepDeferred.resolve(); this._sleepDeferred = null; } + if (this._searchSuggestionController) { + this._searchSuggestionController.stop(); + this._searchSuggestionController = null; + } this.pending = false; }, @@ -806,7 +828,22 @@ Search.prototype = { // IMPORTANT: No other first result heuristics should run after // _matchHeuristicFallback(). - yield this._sleep(Prefs.delay); + yield this._sleep(Math.round(Prefs.delay / 2)); + if (!this.pending) + return; + + // Start fetching search suggestions a little earlier than Prefs.delay since + // they're remote and will probably take longer to arrive. + if (this.hasBehavior("searches")) { + this._searchSuggestionController = + PlacesSearchAutocompleteProvider.getSuggestionController( + this._originalSearchString, + this._inPrivateWindow, + Prefs.maxRichResults + ); + } + + yield this._sleep(Math.round(Prefs.delay / 2)); if (!this.pending) return; @@ -837,6 +874,13 @@ Search.prototype = { return; } } + + // If we still don't have enough results, fill the remaining space with + // search suggestions. + if (this._searchSuggestionController && this.pending) { + yield this._searchSuggestionController.fetchCompletePromise; + while (this.pending && this._maybeAddSearchSuggestionMatch()); + } }), _matchKnownUrl: function* (conn, queries) { @@ -1130,12 +1174,43 @@ Search.prototype = { parseResult.engineName; }, + _maybeAddSearchSuggestionMatch() { + if (this._searchSuggestionController) { + let [match, suggestion] = this._searchSuggestionController.consume(); + if (suggestion) { + this._addSearchEngineMatch(match, this._originalSearchString, + suggestion); + return true; + } + } + return false; + }, + _addMatch: function (match) { // A search could be canceled between a query start and its completion, // in such a case ensure we won't notify any result for it. if (!this.pending) return; + // Mix in search suggestions. Insert one suggestion every N non-suggestion + // matches that fall below the default frecency, and start inserting them as + // soon as they become available. N = SEARCH_SUGGESTION_INSERT_INTERVAL. + if (match.frecency < FRECENCY_DEFAULT) { + if (this._searchSuggestionInsertCounter % + SEARCH_SUGGESTION_INSERT_INTERVAL == 0) { + // Search engine matches are created with FRECENCY_DEFAULT, so there's + // no danger of infinite indirect recursion. + if (this._maybeAddSearchSuggestionMatch()) { + if (!this.pending) { + return; + } + this._searchSuggestionInsertCounter++; + } + } else { + this._searchSuggestionInsertCounter++; + } + } + let notifyResults = false; // Must check both id and url, cause keywords dinamically modify the url. diff --git a/toolkit/components/places/mozIPlacesAutoComplete.idl b/toolkit/components/places/mozIPlacesAutoComplete.idl index 9294f3838ec8..6ff82e667467 100644 --- a/toolkit/components/places/mozIPlacesAutoComplete.idl +++ b/toolkit/components/places/mozIPlacesAutoComplete.idl @@ -13,7 +13,7 @@ interface nsIURI; * search provider as well as methods to track opened pages for AutoComplete * purposes. */ -[scriptable, uuid(6e252399-77f9-4f11-98cc-6fa9fab96f92)] +[scriptable, uuid(61b6348a-09e1-4810-8057-f8cb3cec6ef8)] interface mozIPlacesAutoComplete : nsISupports { ////////////////////////////////////////////////////////////////////////////// @@ -102,6 +102,11 @@ interface mozIPlacesAutoComplete : nsISupports */ const long BEHAVIOR_RESTRICT = 1 << 8; + /** + * Include search suggestions from the currently selected search provider. + */ + const long BEHAVIOR_SEARCHES = 1 << 9; + /** * Mark a page as being currently open. * From 2dbc879889bc6899fd4ffb0981542bd54d0c109a Mon Sep 17 00:00:00 2001 From: Marco Bonardo Date: Thu, 11 Jun 2015 13:20:50 -0700 Subject: [PATCH 03/56] Bug 1173745 - Add Search suggestion toggle to location bar preferences. r=adw --- browser/components/preferences/in-content/privacy.js | 4 ++-- browser/components/preferences/in-content/privacy.xul | 7 +++++++ .../preferences/in-content/tests/browser_privacypane_5.js | 3 ++- browser/components/preferences/privacy.js | 4 ++-- browser/components/preferences/privacy.xul | 7 +++++++ .../components/preferences/tests/browser_privacypane_5.js | 3 ++- .../locales/en-US/chrome/browser/preferences/privacy.dtd | 2 ++ 7 files changed, 24 insertions(+), 6 deletions(-) diff --git a/browser/components/preferences/in-content/privacy.js b/browser/components/preferences/in-content/privacy.js index 97fa72316b4f..c498c7ca5ab3 100644 --- a/browser/components/preferences/in-content/privacy.js +++ b/browser/components/preferences/in-content/privacy.js @@ -358,12 +358,12 @@ var gPrivacyPane = { * Update browser.urlbar.autocomplete.enabled when a * browser.urlbar.suggest.* pref is changed from the ui. */ - writeSuggestionPref: function () { + writeSuggestionPref() { let getVal = (aPref) => { return document.getElementById("browser.urlbar.suggest." + aPref).value; } // autocomplete.enabled is true if any of the suggestions is true - let enabled = ["history", "bookmark", "openpage"].map(getVal).some(v => v); + let enabled = ["history", "bookmark", "openpage", "searches"].map(getVal).some(v => v); Services.prefs.setBoolPref("browser.urlbar.autocomplete.enabled", enabled); }, diff --git a/browser/components/preferences/in-content/privacy.xul b/browser/components/preferences/in-content/privacy.xul index 0f13aaf7ed1f..557c1d8b7365 100644 --- a/browser/components/preferences/in-content/privacy.xul +++ b/browser/components/preferences/in-content/privacy.xul @@ -38,6 +38,9 @@ + + diff --git a/browser/components/preferences/in-content/tests/browser_privacypane_5.js b/browser/components/preferences/in-content/tests/browser_privacypane_5.js index 5225337d5805..5143231156c5 100644 --- a/browser/components/preferences/in-content/tests/browser_privacypane_5.js +++ b/browser/components/preferences/in-content/tests/browser_privacypane_5.js @@ -15,6 +15,7 @@ function test() { run_test_subset([ test_locbar_suggestion_retention("history", true), test_locbar_suggestion_retention("bookmark", true), + test_locbar_suggestion_retention("searches", true), test_locbar_suggestion_retention("openpage", false), test_locbar_suggestion_retention("history", true), test_locbar_suggestion_retention("history", false), @@ -22,4 +23,4 @@ function test() { // reset all preferences to their default values once we're done reset_preferences ]); -} \ No newline at end of file +} diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js index 701a4cfb1c19..d7dadba42498 100644 --- a/browser/components/preferences/privacy.js +++ b/browser/components/preferences/privacy.js @@ -325,12 +325,12 @@ var gPrivacyPane = { * Update browser.urlbar.autocomplete.enabled when a * browser.urlbar.suggest.* pref is changed from the ui. */ - writeSuggestionPref: function PPP_writeSuggestionPref() { + writeSuggestionPref() { let getVal = (aPref) => { return document.getElementById("browser.urlbar.suggest." + aPref).value; } // autocomplete.enabled is true if any of the suggestions is true - let enabled = ["history", "bookmark", "openpage"].map(getVal).some(v => v); + let enabled = ["history", "bookmark", "openpage", "searches"].map(getVal).some(v => v); Services.prefs.setBoolPref("browser.urlbar.autocomplete.enabled", enabled); }, diff --git a/browser/components/preferences/privacy.xul b/browser/components/preferences/privacy.xul index d6f9a0c1b737..f91e145ca961 100644 --- a/browser/components/preferences/privacy.xul +++ b/browser/components/preferences/privacy.xul @@ -51,6 +51,9 @@ + + diff --git a/browser/components/preferences/tests/browser_privacypane_5.js b/browser/components/preferences/tests/browser_privacypane_5.js index 5225337d5805..5143231156c5 100644 --- a/browser/components/preferences/tests/browser_privacypane_5.js +++ b/browser/components/preferences/tests/browser_privacypane_5.js @@ -15,6 +15,7 @@ function test() { run_test_subset([ test_locbar_suggestion_retention("history", true), test_locbar_suggestion_retention("bookmark", true), + test_locbar_suggestion_retention("searches", true), test_locbar_suggestion_retention("openpage", false), test_locbar_suggestion_retention("history", true), test_locbar_suggestion_retention("history", false), @@ -22,4 +23,4 @@ function test() { // reset all preferences to their default values once we're done reset_preferences ]); -} \ No newline at end of file +} diff --git a/browser/locales/en-US/chrome/browser/preferences/privacy.dtd b/browser/locales/en-US/chrome/browser/preferences/privacy.dtd index 6b72352e8077..622c80dbdfb4 100644 --- a/browser/locales/en-US/chrome/browser/preferences/privacy.dtd +++ b/browser/locales/en-US/chrome/browser/preferences/privacy.dtd @@ -22,6 +22,8 @@ + + From 0f73c8a6768cc65cb0f6e55f3d84e29ca12a1060 Mon Sep 17 00:00:00 2001 From: Ryan VanderMeulen Date: Thu, 11 Jun 2015 16:37:34 -0400 Subject: [PATCH 04/56] Bug 1173950 - Disable browser_projecteditor_contextmenu_02.js and browser_projecteditor_menubar_02.js for being prone to bouts of intermittent permafail. --- browser/devtools/projecteditor/test/browser.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/browser/devtools/projecteditor/test/browser.ini b/browser/devtools/projecteditor/test/browser.ini index b28677a73b4e..bc447f15144f 100644 --- a/browser/devtools/projecteditor/test/browser.ini +++ b/browser/devtools/projecteditor/test/browser.ini @@ -11,6 +11,7 @@ skip-if = buildapp == 'mulet' [browser_projecteditor_confirm_unsaved.js] [browser_projecteditor_contextmenu_01.js] [browser_projecteditor_contextmenu_02.js] +skip-if = true # Bug 1173950 [browser_projecteditor_delete_file.js] skip-if = e10s # Frequent failures in e10s - Bug 1020027 [browser_projecteditor_rename_file.js] @@ -23,6 +24,7 @@ skip-if = buildapp == 'mulet' [browser_projecteditor_init.js] [browser_projecteditor_menubar_01.js] [browser_projecteditor_menubar_02.js] +skip-if = true # Bug 1173950 [browser_projecteditor_new_file.js] [browser_projecteditor_stores.js] [browser_projecteditor_tree_selection_01.js] From ba06ad77637fc9e90620761732014c7daaad68cc Mon Sep 17 00:00:00 2001 From: Panos Astithas Date: Thu, 11 Jun 2015 16:38:13 -0400 Subject: [PATCH 05/56] Bug 1160837 - The network panel should only record beacons from the monitored page. r=ochameau This reverts commit bb89c9ca50a8302ada661e4d10e5090936587fad. --- .../devtools/netmonitor/netmonitor-view.js | 4 ++ browser/devtools/netmonitor/test/browser.ini | 3 ++ .../test/browser_net_send-beacon-other-tab.js | 31 +++++++++++++++ .../test/browser_net_send-beacon.js | 27 +++++++++++++ browser/devtools/netmonitor/test/head.js | 1 + .../netmonitor/test/html_send-beacon.html | 23 +++++++++++ .../devtools/webconsole/network-monitor.js | 39 +++++++++++++++---- 7 files changed, 120 insertions(+), 8 deletions(-) create mode 100644 browser/devtools/netmonitor/test/browser_net_send-beacon-other-tab.js create mode 100644 browser/devtools/netmonitor/test/browser_net_send-beacon.js create mode 100644 browser/devtools/netmonitor/test/html_send-beacon.html diff --git a/browser/devtools/netmonitor/netmonitor-view.js b/browser/devtools/netmonitor/netmonitor-view.js index 268aab1b5860..4da2c7a57250 100644 --- a/browser/devtools/netmonitor/netmonitor-view.js +++ b/browser/devtools/netmonitor/netmonitor-view.js @@ -193,6 +193,10 @@ let NetMonitorView = { * @return string (e.g, "network-inspector-view" or "network-statistics-view") */ get currentFrontendMode() { + // The getter may be called from a timeout after the panel is destroyed. + if (!this._body.selectedPanel) { + return null; + } return this._body.selectedPanel.id; }, diff --git a/browser/devtools/netmonitor/test/browser.ini b/browser/devtools/netmonitor/test/browser.ini index 89766e7aae07..d86b41e9e3c5 100644 --- a/browser/devtools/netmonitor/test/browser.ini +++ b/browser/devtools/netmonitor/test/browser.ini @@ -21,6 +21,7 @@ support-files = html_post-raw-test-page.html html_post-raw-with-headers-test-page.html html_simple-test-page.html + html_send-beacon.html html_sorting-test-page.html html_statistics-test-page.html html_status-codes-test-page.html @@ -99,6 +100,8 @@ skip-if = e10s # Bug 1091612 [browser_net_security-tab-deselect.js] [browser_net_security-tab-visibility.js] [browser_net_security-warnings.js] +[browser_net_send-beacon.js] +[browser_net_send-beacon-other-tab.js] [browser_net_simple-init.js] [browser_net_simple-request-data.js] [browser_net_simple-request-details.js] diff --git a/browser/devtools/netmonitor/test/browser_net_send-beacon-other-tab.js b/browser/devtools/netmonitor/test/browser_net_send-beacon-other-tab.js new file mode 100644 index 000000000000..aad9e550cff9 --- /dev/null +++ b/browser/devtools/netmonitor/test/browser_net_send-beacon-other-tab.js @@ -0,0 +1,31 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Tests if beacons from other tabs are properly ignored. + */ + +let test = Task.async(function*() { + let [, debuggee, monitor] = yield initNetMonitor(SIMPLE_URL); + let { RequestsMenu } = monitor.panelWin.NetMonitorView; + RequestsMenu.lazyUpdate = false; + + let tab = yield addTab(SEND_BEACON_URL); + let beaconDebuggee = tab.linkedBrowser.contentWindow.wrappedJSObject; + info("Beacon tab added successfully."); + + is(RequestsMenu.itemCount, 0, "The requests menu should be empty."); + + beaconDebuggee.performRequest(); + debuggee.location.reload(); + + yield waitForNetworkEvents(monitor, 1); + is(RequestsMenu.itemCount, 1, "Only the reload should be recorded."); + let request = RequestsMenu.getItemAtIndex(0); + is(request.attachment.method, "GET", "The method is correct."); + is(request.attachment.status, "200", "The status is correct."); + + yield teardown(monitor); + removeTab(tab); + finish(); +}); diff --git a/browser/devtools/netmonitor/test/browser_net_send-beacon.js b/browser/devtools/netmonitor/test/browser_net_send-beacon.js new file mode 100644 index 000000000000..d37f92a3e6cd --- /dev/null +++ b/browser/devtools/netmonitor/test/browser_net_send-beacon.js @@ -0,0 +1,27 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Tests if beacons are handled correctly. + */ + +let test = Task.async(function*() { + let [, debuggee, monitor] = yield initNetMonitor(SEND_BEACON_URL); + let { RequestsMenu } = monitor.panelWin.NetMonitorView; + + RequestsMenu.lazyUpdate = false; + + is(RequestsMenu.itemCount, 0, "The requests menu should be empty."); + + debuggee.performRequest(); + + yield waitForNetworkEvents(monitor, 1); + is(RequestsMenu.itemCount, 1, "The beacon should be recorded."); + let request = RequestsMenu.getItemAtIndex(0); + is(request.attachment.method, "POST", "The method is correct."); + ok(request.attachment.url.endsWith("beacon_request"), "The URL is correct."); + is(request.attachment.status, "404", "The status is correct."); + + yield teardown(monitor); + finish(); +}); diff --git a/browser/devtools/netmonitor/test/head.js b/browser/devtools/netmonitor/test/head.js index 75e30b3cfabf..d555d113e144 100644 --- a/browser/devtools/netmonitor/test/head.js +++ b/browser/devtools/netmonitor/test/head.js @@ -40,6 +40,7 @@ const SINGLE_GET_URL = EXAMPLE_URL + "html_single-get-page.html"; const STATISTICS_URL = EXAMPLE_URL + "html_statistics-test-page.html"; const CURL_URL = EXAMPLE_URL + "html_copy-as-curl.html"; const CURL_UTILS_URL = EXAMPLE_URL + "html_curl-utils.html"; +const SEND_BEACON_URL = EXAMPLE_URL + "html_send-beacon.html"; const SIMPLE_SJS = EXAMPLE_URL + "sjs_simple-test-server.sjs"; const CONTENT_TYPE_SJS = EXAMPLE_URL + "sjs_content-type-test-server.sjs"; diff --git a/browser/devtools/netmonitor/test/html_send-beacon.html b/browser/devtools/netmonitor/test/html_send-beacon.html new file mode 100644 index 000000000000..95cc005bd4db --- /dev/null +++ b/browser/devtools/netmonitor/test/html_send-beacon.html @@ -0,0 +1,23 @@ + + + + + + + + + + Network Monitor test page + + + +

Send beacon test

+ + + + diff --git a/toolkit/devtools/webconsole/network-monitor.js b/toolkit/devtools/webconsole/network-monitor.js index d1fd4cbdc8e6..d7a419140439 100644 --- a/toolkit/devtools/webconsole/network-monitor.js +++ b/toolkit/devtools/webconsole/network-monitor.js @@ -15,7 +15,18 @@ loader.lazyImporter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); loader.lazyServiceGetter(this, "gActivityDistributor", "@mozilla.org/network/http-activity-distributor;1", "nsIHttpActivityDistributor"); -loader.lazyImporter(this, "gDevTools", "resource:///modules/devtools/gDevTools.jsm"); +let _testing = false; +Object.defineProperty(this, "gTesting", { + get: function() { + try { + const { gDevTools } = require("resource:///modules/devtools/gDevTools.jsm"); + _testing = gDevTools.testing; + } catch (e) { + // gDevTools is not present on B2G. + } + return _testing; + } +}); /////////////////////////////////////////////////////////////////////////////// // Network logging @@ -747,7 +758,7 @@ NetworkMonitor.prototype = { // TODO: one particular test (browser_styleeditor_fetch-from-cache.js) needs // the gDevTools.testing check. We will move to a better way to serve its // needs in bug 1167188, where this check should be removed. - if (!gDevTools.testing && aChannel.loadInfo && + if (!gTesting && aChannel.loadInfo && aChannel.loadInfo.loadingDocument === null && aChannel.loadInfo.loadingPrincipal === Services.scriptSecurityManager.getSystemPrincipal()) { return false; @@ -768,12 +779,6 @@ NetworkMonitor.prototype = { } } - if (aChannel.loadInfo) { - if (aChannel.loadInfo.contentPolicyType == Ci.nsIContentPolicy.TYPE_BEACON) { - return true; - } - } - if (this.topFrame) { let topFrame = NetworkHelper.getTopFrameForRequest(aChannel); if (topFrame && topFrame === this.topFrame) { @@ -788,6 +793,24 @@ NetworkMonitor.prototype = { } } + // The following check is necessary because beacon channels don't come + // associated with a load group. Bug 1160837 will hopefully introduce a + // platform fix that will render the following code entirely useless. + if (aChannel.loadInfo && + aChannel.loadInfo.contentPolicyType == Ci.nsIContentPolicy.TYPE_BEACON) { + let nonE10sMatch = this.window && + aChannel.loadInfo.loadingDocument === this.window.document; + let e10sMatch = this.topFrame && + this.topFrame.contentPrincipal && + this.topFrame.contentPrincipal.equals(aChannel.loadInfo.loadingPrincipal) && + this.topFrame.contentPrincipal.URI.spec == aChannel.referrer.spec; + let b2gMatch = this.appId && + aChannel.loadInfo.loadingPrincipal.appId === this.appId; + if (nonE10sMatch || e10sMatch || b2gMatch) { + return true; + } + } + return false; }, From 0cd7ec4f037c1f78fd4fda71b1c36dc0285a0cb2 Mon Sep 17 00:00:00 2001 From: Margaret Leibovic Date: Mon, 8 Jun 2015 14:31:48 -0400 Subject: [PATCH 06/56] Bug 1170843 - Show a warning when a user attempts to install an unsigned add-on. r=mfinkle --HG-- extra : rebase_source : b7b79ad208be296733185be3601ebb8bd36f3ae9 --- mobile/android/components/XPIDialogService.js | 12 +++++++++++- .../android/locales/en-US/chrome/browser.properties | 3 +++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/mobile/android/components/XPIDialogService.js b/mobile/android/components/XPIDialogService.js index 3d180e63bb1f..2a33d4ddffad 100644 --- a/mobile/android/components/XPIDialogService.js +++ b/mobile/android/components/XPIDialogService.js @@ -8,6 +8,8 @@ const Cu = Components.utils; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm"); + // ----------------------------------------------------------------------- // Web Install Prompt service // ----------------------------------------------------------------------- @@ -27,7 +29,15 @@ WebInstallPrompt.prototype = { let button = bundle.GetStringFromName("addonsConfirmInstall.install"); aInstalls.forEach(function(install) { - let result = (prompt.confirmEx(aBrowser.contentWindow, title, install.name, flags, button, null, null, null, {value: false}) == 0); + let message; + if (install.addon.signedState <= AddonManager.SIGNEDSTATE_MISSING) { + title = bundle.GetStringFromName("addonsConfirmInstallUnsigned.title") + message = bundle.GetStringFromName("addonsConfirmInstallUnsigned.message") + "\n\n" + install.name; + } else { + message = install.name; + } + + let result = (prompt.confirmEx(aBrowser.contentWindow, title, message, flags, button, null, null, null, {value: false}) == 0); if (result) install.install(); else diff --git a/mobile/android/locales/en-US/chrome/browser.properties b/mobile/android/locales/en-US/chrome/browser.properties index eec51d36e491..3b1dd48e8812 100644 --- a/mobile/android/locales/en-US/chrome/browser.properties +++ b/mobile/android/locales/en-US/chrome/browser.properties @@ -5,6 +5,9 @@ addonsConfirmInstall.title=Installing Add-on addonsConfirmInstall.install=Install +addonsConfirmInstallUnsigned.title=Unverified add-on +addonsConfirmInstallUnsigned.message=This site would like to install an unverified add-on. Proceed at your own risk. + # Alerts alertAddonsDownloading=Downloading add-on alertAddonsInstalledNoRestart.message=Installation complete From d1e3b845dac39a9a8dcce639c9c286a506cd68c9 Mon Sep 17 00:00:00 2001 From: Victor Porof Date: Thu, 11 Jun 2015 16:48:17 -0400 Subject: [PATCH 07/56] Bug 1169352 - Reenable assertion, r=me --- .../performance/test/browser_timeline-waterfall-rerender.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/browser/devtools/performance/test/browser_timeline-waterfall-rerender.js b/browser/devtools/performance/test/browser_timeline-waterfall-rerender.js index eb12551142a8..66d74bd71b9c 100644 --- a/browser/devtools/performance/test/browser_timeline-waterfall-rerender.js +++ b/browser/devtools/performance/test/browser_timeline-waterfall-rerender.js @@ -65,10 +65,8 @@ function* spawnTest() { is(afterResizeBarsCount, beforeResizeBarsCount, "The same subset of the total markers remained visible."); - // Temporarily disable the following assertion; intermittent failures. - // Bug 1169352. - // is(Array.indexOf($$(".waterfall-tree-item"), $(".waterfall-tree-item:focus")), 2, - // "The correct item is still focused in the tree."); + is(Array.indexOf($$(".waterfall-tree-item"), $(".waterfall-tree-item:focus")), 2, + "The correct item is still focused in the tree."); ok(!$("#waterfall-details").hidden, "The waterfall sidebar is still visible."); From bf0fe0ca08777e2473b93fa0fe52fdc035c3e139 Mon Sep 17 00:00:00 2001 From: Victor Porof Date: Thu, 11 Jun 2015 17:26:35 -0400 Subject: [PATCH 08/56] Bug 1155558 - Split browser_perf_recordings-io-01.js into two different tests, r=me --- browser/devtools/performance/test/browser.ini | 1 + .../test/browser_perf_recordings-io-01.js | 20 --------- .../test/browser_perf_recordings-io-05.js | 41 +++++++++++++++++++ 3 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 browser/devtools/performance/test/browser_perf_recordings-io-05.js diff --git a/browser/devtools/performance/test/browser.ini b/browser/devtools/performance/test/browser.ini index 7c21b500542c..6aedd0b6b465 100644 --- a/browser/devtools/performance/test/browser.ini +++ b/browser/devtools/performance/test/browser.ini @@ -114,6 +114,7 @@ support-files = [browser_perf_recordings-io-02.js] [browser_perf_recordings-io-03.js] [browser_perf_recordings-io-04.js] +[browser_perf_recordings-io-05.js] [browser_perf-range-changed-render.js] [browser_perf-recording-selected-01.js] [browser_perf-recording-selected-02.js] diff --git a/browser/devtools/performance/test/browser_perf_recordings-io-01.js b/browser/devtools/performance/test/browser_perf_recordings-io-01.js index 0e69e0e28d03..2faa1a7f01c5 100644 --- a/browser/devtools/performance/test/browser_perf_recordings-io-01.js +++ b/browser/devtools/performance/test/browser_perf_recordings-io-01.js @@ -29,7 +29,6 @@ let test = Task.async(function*() { yield DetailsView.selectView("memory-calltree"); yield DetailsView.selectView("memory-flamegraph"); - // Verify original recording. let originalData = PerformanceController.getCurrentRecording().getAllData(); @@ -81,25 +80,6 @@ let test = Task.async(function*() { is(importedData.configuration.withMemory, originalData.configuration.withMemory, "The imported data is identical to the original data (9)."); - yield teardown(panel); - - // Test that when importing and no graphs rendered yet, - // we do not get a getMappedSelection error - // bug 1160828 - var { target, panel, toolbox } = yield initPerformance(SIMPLE_URL); - var { EVENTS, PerformanceController, DetailsView, DetailsSubview, OverviewView, WaterfallView } = panel.panelWin; - yield PerformanceController.clearRecordings(); - - rerendered = once(WaterfallView, EVENTS.WATERFALL_RENDERED); - imported = once(PerformanceController, EVENTS.RECORDING_IMPORTED); - yield PerformanceController.importRecording("", file); - - yield imported; - ok(true, "The recording data appears to have been successfully imported."); - - yield rerendered; - ok(true, "The imported data was re-rendered."); - yield teardown(panel); finish(); }); diff --git a/browser/devtools/performance/test/browser_perf_recordings-io-05.js b/browser/devtools/performance/test/browser_perf_recordings-io-05.js new file mode 100644 index 000000000000..388e4d5a6dca --- /dev/null +++ b/browser/devtools/performance/test/browser_perf_recordings-io-05.js @@ -0,0 +1,41 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Test that when importing and no graphs rendered yet, we do not get a + * `getMappedSelection` error. + */ + +let test = Task.async(function*() { + var { target, panel, toolbox } = yield initPerformance(SIMPLE_URL); + var { EVENTS, PerformanceController, WaterfallView } = panel.panelWin; + + yield startRecording(panel); + yield stopRecording(panel); + + // Save recording. + + let file = FileUtils.getFile("TmpD", ["tmpprofile.json"]); + file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, parseInt("666", 8)); + + let exported = once(PerformanceController, EVENTS.RECORDING_EXPORTED); + yield PerformanceController.exportRecording("", PerformanceController.getCurrentRecording(), file); + + yield exported; + ok(true, "The recording data appears to have been successfully saved."); + + // Clear and re-import. + + yield PerformanceController.clearRecordings(); + + let rendered = once(WaterfallView, EVENTS.WATERFALL_RENDERED); + let imported = once(PerformanceController, EVENTS.RECORDING_IMPORTED); + yield PerformanceController.importRecording("", file); + yield imported; + yield rendered; + + ok(true, "No error was thrown."); + + yield teardown(panel); + finish(); +}); From 1c38587e7f87595c2d4704cec4f2a5227d125400 Mon Sep 17 00:00:00 2001 From: Drew Willcoxon Date: Thu, 11 Jun 2015 15:38:43 -0700 Subject: [PATCH 09/56] Back out c465d65204b7 bug 1173745 for bustage on a CLOSED TREE. --- browser/components/preferences/in-content/privacy.js | 4 ++-- browser/components/preferences/in-content/privacy.xul | 7 ------- .../preferences/in-content/tests/browser_privacypane_5.js | 3 +-- browser/components/preferences/privacy.js | 4 ++-- browser/components/preferences/privacy.xul | 7 ------- .../components/preferences/tests/browser_privacypane_5.js | 3 +-- .../locales/en-US/chrome/browser/preferences/privacy.dtd | 2 -- 7 files changed, 6 insertions(+), 24 deletions(-) diff --git a/browser/components/preferences/in-content/privacy.js b/browser/components/preferences/in-content/privacy.js index c498c7ca5ab3..97fa72316b4f 100644 --- a/browser/components/preferences/in-content/privacy.js +++ b/browser/components/preferences/in-content/privacy.js @@ -358,12 +358,12 @@ var gPrivacyPane = { * Update browser.urlbar.autocomplete.enabled when a * browser.urlbar.suggest.* pref is changed from the ui. */ - writeSuggestionPref() { + writeSuggestionPref: function () { let getVal = (aPref) => { return document.getElementById("browser.urlbar.suggest." + aPref).value; } // autocomplete.enabled is true if any of the suggestions is true - let enabled = ["history", "bookmark", "openpage", "searches"].map(getVal).some(v => v); + let enabled = ["history", "bookmark", "openpage"].map(getVal).some(v => v); Services.prefs.setBoolPref("browser.urlbar.autocomplete.enabled", enabled); }, diff --git a/browser/components/preferences/in-content/privacy.xul b/browser/components/preferences/in-content/privacy.xul index 557c1d8b7365..0f13aaf7ed1f 100644 --- a/browser/components/preferences/in-content/privacy.xul +++ b/browser/components/preferences/in-content/privacy.xul @@ -38,9 +38,6 @@ - - diff --git a/browser/components/preferences/in-content/tests/browser_privacypane_5.js b/browser/components/preferences/in-content/tests/browser_privacypane_5.js index 5143231156c5..5225337d5805 100644 --- a/browser/components/preferences/in-content/tests/browser_privacypane_5.js +++ b/browser/components/preferences/in-content/tests/browser_privacypane_5.js @@ -15,7 +15,6 @@ function test() { run_test_subset([ test_locbar_suggestion_retention("history", true), test_locbar_suggestion_retention("bookmark", true), - test_locbar_suggestion_retention("searches", true), test_locbar_suggestion_retention("openpage", false), test_locbar_suggestion_retention("history", true), test_locbar_suggestion_retention("history", false), @@ -23,4 +22,4 @@ function test() { // reset all preferences to their default values once we're done reset_preferences ]); -} +} \ No newline at end of file diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js index d7dadba42498..701a4cfb1c19 100644 --- a/browser/components/preferences/privacy.js +++ b/browser/components/preferences/privacy.js @@ -325,12 +325,12 @@ var gPrivacyPane = { * Update browser.urlbar.autocomplete.enabled when a * browser.urlbar.suggest.* pref is changed from the ui. */ - writeSuggestionPref() { + writeSuggestionPref: function PPP_writeSuggestionPref() { let getVal = (aPref) => { return document.getElementById("browser.urlbar.suggest." + aPref).value; } // autocomplete.enabled is true if any of the suggestions is true - let enabled = ["history", "bookmark", "openpage", "searches"].map(getVal).some(v => v); + let enabled = ["history", "bookmark", "openpage"].map(getVal).some(v => v); Services.prefs.setBoolPref("browser.urlbar.autocomplete.enabled", enabled); }, diff --git a/browser/components/preferences/privacy.xul b/browser/components/preferences/privacy.xul index f91e145ca961..d6f9a0c1b737 100644 --- a/browser/components/preferences/privacy.xul +++ b/browser/components/preferences/privacy.xul @@ -51,9 +51,6 @@ - - diff --git a/browser/components/preferences/tests/browser_privacypane_5.js b/browser/components/preferences/tests/browser_privacypane_5.js index 5143231156c5..5225337d5805 100644 --- a/browser/components/preferences/tests/browser_privacypane_5.js +++ b/browser/components/preferences/tests/browser_privacypane_5.js @@ -15,7 +15,6 @@ function test() { run_test_subset([ test_locbar_suggestion_retention("history", true), test_locbar_suggestion_retention("bookmark", true), - test_locbar_suggestion_retention("searches", true), test_locbar_suggestion_retention("openpage", false), test_locbar_suggestion_retention("history", true), test_locbar_suggestion_retention("history", false), @@ -23,4 +22,4 @@ function test() { // reset all preferences to their default values once we're done reset_preferences ]); -} +} \ No newline at end of file diff --git a/browser/locales/en-US/chrome/browser/preferences/privacy.dtd b/browser/locales/en-US/chrome/browser/preferences/privacy.dtd index 622c80dbdfb4..6b72352e8077 100644 --- a/browser/locales/en-US/chrome/browser/preferences/privacy.dtd +++ b/browser/locales/en-US/chrome/browser/preferences/privacy.dtd @@ -22,8 +22,6 @@ - - From d97a19b468e6ed8e5a692be55cd2aeb08ee584b8 Mon Sep 17 00:00:00 2001 From: Drew Willcoxon Date: Thu, 11 Jun 2015 15:39:23 -0700 Subject: [PATCH 10/56] Back out 471f236c32cb bug 959594 for bustage on a CLOSED TREE. --- browser/app/profile/firefox.js | 1 - browser/base/content/browser.js | 17 ++-- testing/profiles/prefs_general.js | 4 - .../PlacesSearchAutocompleteProvider.jsm | 66 --------------- toolkit/components/places/UnifiedComplete.js | 81 +------------------ .../places/mozIPlacesAutoComplete.idl | 7 +- 6 files changed, 11 insertions(+), 165 deletions(-) diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index 8092c6543cab..1d81509b584e 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -347,7 +347,6 @@ pref("browser.urlbar.match.url", "@"); pref("browser.urlbar.suggest.history", true); pref("browser.urlbar.suggest.bookmark", true); pref("browser.urlbar.suggest.openpage", true); -pref("browser.urlbar.suggest.searches", true); // Restrictions to current suggestions can also be applied (intersection). // Typed suggestion works only if history is set to true. diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 0f4b5f7b6c88..f062a8218299 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -7189,18 +7189,15 @@ let gPrivateBrowsingUI = { } } - if (gURLBar) { + if (gURLBar && + !PrivateBrowsingUtils.permanentPrivateBrowsing) { + // Disable switch to tab autocompletion for private windows. + // We leave it enabled for permanent private browsing mode though. let value = gURLBar.getAttribute("autocompletesearchparam") || ""; - if (!PrivateBrowsingUtils.permanentPrivateBrowsing && - !value.includes("disable-private-actions")) { - // Disable switch to tab autocompletion for private windows. - // We leave it enabled for permanent private browsing mode though. - value += " disable-private-actions"; + if (!value.includes("disable-private-actions")) { + gURLBar.setAttribute("autocompletesearchparam", + value + " disable-private-actions"); } - if (!value.includes("private-window")) { - value += " private-window"; - } - gURLBar.setAttribute("autocompletesearchparam", value); } } }; diff --git a/testing/profiles/prefs_general.js b/testing/profiles/prefs_general.js index d28f100888c6..029854cc6b76 100644 --- a/testing/profiles/prefs_general.js +++ b/testing/profiles/prefs_general.js @@ -327,7 +327,3 @@ user_pref("dom.serviceWorkers.periodic-updates.enabled", false); // Enable speech synth test service, and disable built in platform services. user_pref("media.webspeech.synth.test", true); - -// Turn off search suggestions in the location bar so as not to trigger network -// connections. -user_pref("browser.urlbar.suggest.searches", false); diff --git a/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm b/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm index 2a1a274be27c..9d32366a7d5a 100644 --- a/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm +++ b/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm @@ -17,9 +17,6 @@ Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/Task.jsm"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "SearchSuggestionController", - "resource://gre/modules/SearchSuggestionController.jsm"); - const SEARCH_ENGINE_TOPIC = "browser-search-engine-modified"; const SearchAutocompleteProviderInternal = { @@ -113,65 +110,10 @@ const SearchAutocompleteProviderInternal = { } }, - getSuggestionController(searchToken, inPrivateContext, maxResults) { - let engine = Services.search.currentEngine; - if (!engine) { - return null; - } - return new SearchSuggestionControllerWrapper(engine, searchToken, - inPrivateContext, maxResults); - }, - QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]), } -function SearchSuggestionControllerWrapper(engine, searchToken, - inPrivateContext, maxResults) { - this._controller = new SearchSuggestionController(); - this._controller.maxLocalResults = 0; - this._controller.maxRemoteResults = maxResults; - let promise = this._controller.fetch(searchToken, inPrivateContext, engine); - this._suggestions = []; - this._promise = promise.then(results => { - this._suggestions = (results ? results.remote : null) || []; - }).catch(err => { - // fetch() rejects its promise if there's a pending request. - }); -} - -SearchSuggestionControllerWrapper.prototype = { - - /** - * Resolved when all suggestions have been fetched. - */ - get fetchCompletePromise() { - return this._promise; - }, - - /** - * Returns one suggestion, if any are available. The returned value is an - * array [match, suggestion]. If none are available, returns [null, null]. - * Note that there are two reasons that suggestions might not be available: - * all suggestions may have been fetched and consumed, or the fetch may not - * have completed yet. - * - * @return An array [match, suggestion]. - */ - consume() { - return !this._suggestions.length ? [null, null] : - [SearchAutocompleteProviderInternal.defaultMatch, - this._suggestions.shift()]; - }, - - /** - * Stops the fetch. - */ - stop() { - this._controller.stop(); - }, -}; - let gInitializationPromise = null; this.PlacesSearchAutocompleteProvider = Object.freeze({ @@ -272,12 +214,4 @@ this.PlacesSearchAutocompleteProvider = Object.freeze({ terms: parseUrlResult.terms, }; }, - - getSuggestionController(searchToken, inPrivateContext, maxResults) { - if (!SearchAutocompleteProviderInternal.initialized) { - throw new Error("The component has not been initialized."); - } - return SearchAutocompleteProviderInternal.getSuggestionController( - searchToken, inPrivateContext, maxResults); - }, }); diff --git a/toolkit/components/places/UnifiedComplete.js b/toolkit/components/places/UnifiedComplete.js index b560a9b1343c..34b36da48505 100644 --- a/toolkit/components/places/UnifiedComplete.js +++ b/toolkit/components/places/UnifiedComplete.js @@ -35,7 +35,6 @@ const PREF_SUGGEST_HISTORY = [ "suggest.history", true ]; const PREF_SUGGEST_BOOKMARK = [ "suggest.bookmark", true ]; const PREF_SUGGEST_OPENPAGE = [ "suggest.openpage", true ]; const PREF_SUGGEST_HISTORY_ONLYTYPED = [ "suggest.history.onlyTyped", false ]; -const PREF_SUGGEST_SEARCHES = [ "suggest.searches", true ]; // Match type constants. // These indicate what type of search function we should be using. @@ -66,13 +65,6 @@ const TELEMETRY_6_FIRST_RESULTS = "PLACES_AUTOCOMPLETE_6_FIRST_RESULTS_TIME_MS"; // The default frecency value used when inserting matches with unknown frecency. const FRECENCY_DEFAULT = 1000; -// Search suggestion results are mixed in with all other results after they -// become available, but they're only inserted once every N results whose -// frecencies are less than FRECENCY_DEFAULT. In other words, for every N -// results that fall below that frecency threshold, one search suggestion is -// inserted. This value = N. -const SEARCH_SUGGESTION_INSERT_INTERVAL = 2; - // A regex that matches "single word" hostnames for whitelisting purposes. // The hostname will already have been checked for general validity, so we // don't need to be exhaustive here, so allow dashes anywhere. @@ -352,15 +344,10 @@ XPCOMUtils.defineLazyGetter(this, "SwitchToTabStorage", () => Object.seal({ */ XPCOMUtils.defineLazyGetter(this, "Prefs", () => { let prefs = new Preferences(PREF_BRANCH); - let types = ["History", "Bookmark", "Openpage", "Typed", "Searches"]; + let types = ["History", "Bookmark", "Openpage", "Typed"]; function syncEnabledPref(init = false) { - let suggestPrefs = [ - PREF_SUGGEST_HISTORY, - PREF_SUGGEST_BOOKMARK, - PREF_SUGGEST_OPENPAGE, - PREF_SUGGEST_SEARCHES, - ]; + let suggestPrefs = [PREF_SUGGEST_HISTORY, PREF_SUGGEST_BOOKMARK, PREF_SUGGEST_OPENPAGE]; if (init) { // Make sure to initialize the properties when first called with init = true. @@ -369,7 +356,6 @@ XPCOMUtils.defineLazyGetter(this, "Prefs", () => { store.suggestBookmark = prefs.get(...PREF_SUGGEST_BOOKMARK); store.suggestOpenpage = prefs.get(...PREF_SUGGEST_OPENPAGE); store.suggestTyped = prefs.get(...PREF_SUGGEST_HISTORY_ONLYTYPED); - store.suggestSearches = prefs.get(...PREF_SUGGEST_SEARCHES); } if (store.enabled) { @@ -409,7 +395,6 @@ XPCOMUtils.defineLazyGetter(this, "Prefs", () => { store.suggestBookmark = prefs.get(...PREF_SUGGEST_BOOKMARK); store.suggestOpenpage = prefs.get(...PREF_SUGGEST_OPENPAGE); store.suggestTyped = prefs.get(...PREF_SUGGEST_HISTORY_ONLYTYPED); - store.suggestSearches = prefs.get(...PREF_SUGGEST_SEARCHES); // If history is not set, onlyTyped value should be ignored. if (!store.suggestHistory) { @@ -581,7 +566,6 @@ function Search(searchString, searchParam, autocompleteListener, let params = new Set(searchParam.split(" ")); this._enableActions = params.has("enable-actions"); this._disablePrivateActions = params.has("disable-private-actions"); - this._inPrivateWindow = params.has("private-window"); this._searchTokens = this.filterTokens(getUnfilteredSearchTokens(this._searchString)); @@ -615,8 +599,6 @@ function Search(searchString, searchParam, autocompleteListener, // These are used to avoid adding duplicate entries to the results. this._usedURLs = new Set(); this._usedPlaceIds = new Set(); - - this._searchSuggestionInsertCounter = 0; } Search.prototype = { @@ -722,10 +704,6 @@ Search.prototype = { this._sleepDeferred.resolve(); this._sleepDeferred = null; } - if (this._searchSuggestionController) { - this._searchSuggestionController.stop(); - this._searchSuggestionController = null; - } this.pending = false; }, @@ -828,22 +806,7 @@ Search.prototype = { // IMPORTANT: No other first result heuristics should run after // _matchHeuristicFallback(). - yield this._sleep(Math.round(Prefs.delay / 2)); - if (!this.pending) - return; - - // Start fetching search suggestions a little earlier than Prefs.delay since - // they're remote and will probably take longer to arrive. - if (this.hasBehavior("searches")) { - this._searchSuggestionController = - PlacesSearchAutocompleteProvider.getSuggestionController( - this._originalSearchString, - this._inPrivateWindow, - Prefs.maxRichResults - ); - } - - yield this._sleep(Math.round(Prefs.delay / 2)); + yield this._sleep(Prefs.delay); if (!this.pending) return; @@ -874,13 +837,6 @@ Search.prototype = { return; } } - - // If we still don't have enough results, fill the remaining space with - // search suggestions. - if (this._searchSuggestionController && this.pending) { - yield this._searchSuggestionController.fetchCompletePromise; - while (this.pending && this._maybeAddSearchSuggestionMatch()); - } }), _matchKnownUrl: function* (conn, queries) { @@ -1174,43 +1130,12 @@ Search.prototype = { parseResult.engineName; }, - _maybeAddSearchSuggestionMatch() { - if (this._searchSuggestionController) { - let [match, suggestion] = this._searchSuggestionController.consume(); - if (suggestion) { - this._addSearchEngineMatch(match, this._originalSearchString, - suggestion); - return true; - } - } - return false; - }, - _addMatch: function (match) { // A search could be canceled between a query start and its completion, // in such a case ensure we won't notify any result for it. if (!this.pending) return; - // Mix in search suggestions. Insert one suggestion every N non-suggestion - // matches that fall below the default frecency, and start inserting them as - // soon as they become available. N = SEARCH_SUGGESTION_INSERT_INTERVAL. - if (match.frecency < FRECENCY_DEFAULT) { - if (this._searchSuggestionInsertCounter % - SEARCH_SUGGESTION_INSERT_INTERVAL == 0) { - // Search engine matches are created with FRECENCY_DEFAULT, so there's - // no danger of infinite indirect recursion. - if (this._maybeAddSearchSuggestionMatch()) { - if (!this.pending) { - return; - } - this._searchSuggestionInsertCounter++; - } - } else { - this._searchSuggestionInsertCounter++; - } - } - let notifyResults = false; // Must check both id and url, cause keywords dinamically modify the url. diff --git a/toolkit/components/places/mozIPlacesAutoComplete.idl b/toolkit/components/places/mozIPlacesAutoComplete.idl index 6ff82e667467..9294f3838ec8 100644 --- a/toolkit/components/places/mozIPlacesAutoComplete.idl +++ b/toolkit/components/places/mozIPlacesAutoComplete.idl @@ -13,7 +13,7 @@ interface nsIURI; * search provider as well as methods to track opened pages for AutoComplete * purposes. */ -[scriptable, uuid(61b6348a-09e1-4810-8057-f8cb3cec6ef8)] +[scriptable, uuid(6e252399-77f9-4f11-98cc-6fa9fab96f92)] interface mozIPlacesAutoComplete : nsISupports { ////////////////////////////////////////////////////////////////////////////// @@ -102,11 +102,6 @@ interface mozIPlacesAutoComplete : nsISupports */ const long BEHAVIOR_RESTRICT = 1 << 8; - /** - * Include search suggestions from the currently selected search provider. - */ - const long BEHAVIOR_SEARCHES = 1 << 9; - /** * Mark a page as being currently open. * From 008a1bf78e92af29c320adb9fd0484c31ec699ac Mon Sep 17 00:00:00 2001 From: Drew Willcoxon Date: Thu, 11 Jun 2015 15:39:49 -0700 Subject: [PATCH 11/56] Back out fba4dc82c929 bug 1162140 for bustage on a CLOSED TREE. --- toolkit/components/places/UnifiedComplete.js | 9 ++--- toolkit/content/autocomplete.css | 4 -- toolkit/content/widgets/autocomplete.xml | 38 +++++-------------- .../chrome/global/autocomplete.properties | 5 +++ 4 files changed, 19 insertions(+), 37 deletions(-) diff --git a/toolkit/components/places/UnifiedComplete.js b/toolkit/components/places/UnifiedComplete.js index 34b36da48505..f59938a5dd31 100644 --- a/toolkit/components/places/UnifiedComplete.js +++ b/toolkit/components/places/UnifiedComplete.js @@ -966,7 +966,7 @@ Search.prototype = { match.engineAlias = alias; let query = this._searchTokens.slice(1).join(" "); - this._addSearchEngineMatch(match, query); + yield this._addSearchEngineMatch(match, query); return true; }, @@ -976,17 +976,16 @@ Search.prototype = { return; let query = this._originalSearchString; - this._addSearchEngineMatch(match, query); + + yield this._addSearchEngineMatch(match, query); }, - _addSearchEngineMatch(match, query, suggestion) { + _addSearchEngineMatch: function* (match, query) { let actionURLParams = { engineName: match.engineName, input: this._originalSearchString, searchQuery: query, }; - if (suggestion) - actionURLParams.searchSuggestion = suggestion; if (match.engineAlias) { actionURLParams.alias = match.engineAlias; } diff --git a/toolkit/content/autocomplete.css b/toolkit/content/autocomplete.css index 960bdc456d24..249c7ebf9c10 100644 --- a/toolkit/content/autocomplete.css +++ b/toolkit/content/autocomplete.css @@ -11,7 +11,3 @@ image-rendering: -moz-crisp-edges; } } - -richlistitem > .ac-title-box > .ac-title > .ac-comment:not([selected]) > html|span.ac-selected-text { - display: none; -} diff --git a/toolkit/content/widgets/autocomplete.xml b/toolkit/content/widgets/autocomplete.xml index 19aff79695f9..529023e12e11 100644 --- a/toolkit/content/widgets/autocomplete.xml +++ b/toolkit/content/widgets/autocomplete.xml @@ -1539,10 +1539,11 @@ extends="chrome://global/content/bindings/popup.xml#popup"> let index = (match[1] || 1) - 1; if (index >= 0 && index < aReplacements.length) { - pairs.push([...aReplacements[index]]); + let replacement = aReplacements[index]; + pairs.push([...replacement]); } } else { - pairs.push([part]); + pairs.push([part, false]); } } @@ -1571,15 +1572,8 @@ extends="chrome://global/content/bindings/popup.xml#popup"> if (emphasise) { let span = aDescriptionElement.appendChild( document.createElementNS("http://www.w3.org/1999/xhtml", "span")); + span.className = "ac-emphasize-text"; span.textContent = text; - switch(emphasise) { - case "match": - span.className = "ac-emphasize-text"; - break; - case "selected": - span.className = "ac-selected-text"; - break; - } } else { aDescriptionElement.appendChild(document.createTextNode(text)); } @@ -1635,22 +1629,10 @@ extends="chrome://global/content/bindings/popup.xml#popup"> } else if (action.type == "searchengine") { emphasiseUrl = false; - // The order here is not localizable, we default to appending - // "- Search with Engine" to the search string, to be able to - // properly generate emphasis pairs. That said, no localization - // changed the order while it was possible, so doesn't look like - // there's a strong need for that. - let {engineName, searchSuggestion, searchQuery} = action.params; - let engineStr = "- " + - this._stringBundle.formatStringFromName("searchWithEngine", - [engineName], 1); - let suggestedPart = ""; - if (searchSuggestion) { - suggestedPart = searchSuggestion.substr(searchQuery.length); - } - title = this._generateEmphasisPairs(`%1$S${suggestedPart} %2$S`, [ - [searchQuery, "match"], - [engineStr, "selected"], + let sourceStr = this._stringBundle.GetStringFromName("searchWithEngineForQuery"); + title = this._generateEmphasisPairs(sourceStr, [ + [action.params.engineName, false], + [action.params.searchQuery, true] ]); // If this is a default search match, we remove the image so we // can style it ourselves with a generic search icon. @@ -1667,7 +1649,7 @@ extends="chrome://global/content/bindings/popup.xml#popup"> let sourceStr = this._stringBundle.GetStringFromName("visitURL"); title = this._generateEmphasisPairs(sourceStr, [ - [displayUrl, "match"], + [displayUrl, true], ]); } @@ -1697,7 +1679,7 @@ extends="chrome://global/content/bindings/popup.xml#popup"> let sourceStr = this._stringBundle.GetStringFromName("visitURL"); title = this._generateEmphasisPairs(sourceStr, [ - [displayUrl, "match"], + [displayUrl, true], ]); types.delete("autofill"); diff --git a/toolkit/locales/en-US/chrome/global/autocomplete.properties b/toolkit/locales/en-US/chrome/global/autocomplete.properties index e06dff3d565f..93342831c67e 100644 --- a/toolkit/locales/en-US/chrome/global/autocomplete.properties +++ b/toolkit/locales/en-US/chrome/global/autocomplete.properties @@ -6,6 +6,11 @@ # the search engine provider's name. This format was chosen because # the provider can also end with "Search" (e.g.: MSN Search). searchWithEngine = Search with %S +# LOCALIZATION NOTE (searchWithEngineForQuery): +# %1$S is the search engine's name, %2$S is the search query. +# This format was chosen because the provider can also end with "Search" +# (e.g.: MSN Search). +searchWithEngineForQuery = %2$S — Search with %1$S switchToTab = Switch to tab # LOCALIZATION NOTE (visitURL): # %S is the URL to visit. From cba59000ab955e3efa227ad4e8321e96bacd175c Mon Sep 17 00:00:00 2001 From: Mike de Boer Date: Fri, 12 Jun 2015 11:18:12 +0200 Subject: [PATCH 12/56] Bug 1164510: show a globe favicon as default when no favicon can be found for a Hello context in conversation. r=Standard8 --- browser/base/content/browser-loop.js | 58 +++++++++---------- browser/components/loop/content/css/panel.css | 4 -- .../loop/content/js/conversationViews.js | 2 +- .../loop/content/js/conversationViews.jsx | 2 +- browser/components/loop/content/js/panel.js | 8 +-- browser/components/loop/content/js/panel.jsx | 8 +-- .../components/loop/content/js/roomViews.js | 2 +- .../components/loop/content/js/roomViews.jsx | 4 +- .../loop/content/shared/css/conversation.css | 9 +-- .../loop/content/shared/img/icons-16x16.svg | 4 ++ .../loop/content/shared/js/mixins.js | 7 +++ .../content/js/standaloneRoomViews.js | 2 +- .../content/js/standaloneRoomViews.jsx | 2 +- .../loop/test/desktop-local/panel_test.js | 18 ++++++ .../loop/test/desktop-local/roomViews_test.js | 13 +++++ .../test/mochitest/browser_mozLoop_context.js | 16 ++++- .../loop/test/shared/mixins_test.js | 3 +- .../standalone/standaloneRoomViews_test.js | 14 +++++ browser/components/loop/ui/ui-showcase.css | 6 +- browser/components/loop/ui/ui-showcase.js | 13 ++--- browser/components/loop/ui/ui-showcase.jsx | 13 ++--- 21 files changed, 130 insertions(+), 78 deletions(-) diff --git a/browser/base/content/browser-loop.js b/browser/base/content/browser-loop.js index 6f77579ef804..ad3b9d829be0 100644 --- a/browser/base/content/browser-loop.js +++ b/browser/base/content/browser-loop.js @@ -522,38 +522,38 @@ let LoopUI; * has been fetched. */ getFavicon: function(callback) { - let favicon = gBrowser.getIcon(gBrowser.selectedTab); - // If the tab image's url starts with http(s), fetch icon from favicon - // service via the moz-anno protocol. - if (/^https?:/.test(favicon)) { - let faviconURI = makeURI(favicon); - favicon = this.favIconService.getFaviconLinkForIcon(faviconURI).spec; - } - if (!favicon) { - callback(new Error("No favicon found")); + let pageURI = gBrowser.selectedTab.linkedBrowser.currentURI.spec; + // If the tab page’s url starts with http(s), fetch icon. + if (!/^https?:/.test(pageURI)) { + callback(); return; } - favicon = this.PlacesUtils.getImageURLForResolution(window, favicon); - // We XHR the favicon to get a File object, which we can pass to the FileReader - // object. The FileReader turns the File object into a data-uri. - let xhr = new XMLHttpRequest(); - xhr.open("get", favicon, true); - xhr.responseType = "blob"; - xhr.overrideMimeType("image/x-icon"); - xhr.onload = () => { - if (xhr.status != 200) { - callback(new Error("Invalid status code received for favicon XHR: " + xhr.status)); - return; - } + this.PlacesUtils.promiseFaviconLinkUrl(pageURI).then(uri => { + uri = this.PlacesUtils.getImageURLForResolution(window, uri.spec); - let reader = new FileReader(); - reader.onload = () => callback(null, reader.result); - reader.onerror = callback; - reader.readAsDataURL(xhr.response); - }; - xhr.onerror = callback; - xhr.send(); + // We XHR the favicon to get a File object, which we can pass to the FileReader + // object. The FileReader turns the File object into a data-uri. + let xhr = new XMLHttpRequest(); + xhr.open("get", uri, true); + xhr.responseType = "blob"; + xhr.overrideMimeType("image/x-icon"); + xhr.onload = () => { + if (xhr.status != 200) { + callback(new Error("Invalid status code received for favicon XHR: " + xhr.status)); + return; + } + + let reader = new FileReader(); + reader.onload = reader.onload = () => callback(null, reader.result); + reader.onerror = callback; + reader.readAsDataURL(xhr.response); + }; + xhr.onerror = callback; + xhr.send(); + }).catch(err => { + callback(err || new Error("No favicon found")); + }); } }; })(); @@ -563,5 +563,3 @@ XPCOMUtils.defineLazyModuleGetter(LoopUI, "LoopRooms", "resource:///modules/loop XPCOMUtils.defineLazyModuleGetter(LoopUI, "MozLoopService", "resource:///modules/loop/MozLoopService.jsm"); XPCOMUtils.defineLazyModuleGetter(LoopUI, "PanelFrame", "resource:///modules/PanelFrame.jsm"); XPCOMUtils.defineLazyModuleGetter(LoopUI, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); -XPCOMUtils.defineLazyServiceGetter(LoopUI, "favIconService", - "@mozilla.org/browser/favicon-service;1", "nsIFaviconService"); diff --git a/browser/components/loop/content/css/panel.css b/browser/components/loop/content/css/panel.css index 15962edfd5a4..24846996b30a 100644 --- a/browser/components/loop/content/css/panel.css +++ b/browser/components/loop/content/css/panel.css @@ -269,10 +269,6 @@ html[dir="rtl"] .new-room-view > .context > .context-content > .context-preview float: left; } -.new-room-view > .context > .context-content > .context-preview[src=""] { - display: none; -} - .new-room-view > .context > .context-content > .context-description { flex: 0 1 auto; display: block; diff --git a/browser/components/loop/content/js/conversationViews.js b/browser/components/loop/content/js/conversationViews.js index 29b2d7fb1148..e05dd3f088e4 100644 --- a/browser/components/loop/content/js/conversationViews.js +++ b/browser/components/loop/content/js/conversationViews.js @@ -29,7 +29,7 @@ loop.conversationViews = (function(mozL10n) { if (!contact.email || contact.email.length === 0) { return { value: "" }; } - return contact.email.find(e => e.pref) || contact.email[0]; + return contact.email.find(function find(e) { return e.pref; }) || contact.email[0]; } function _getContactDisplayName(contact) { diff --git a/browser/components/loop/content/js/conversationViews.jsx b/browser/components/loop/content/js/conversationViews.jsx index 891b299e4143..1a118829581d 100644 --- a/browser/components/loop/content/js/conversationViews.jsx +++ b/browser/components/loop/content/js/conversationViews.jsx @@ -29,7 +29,7 @@ loop.conversationViews = (function(mozL10n) { if (!contact.email || contact.email.length === 0) { return { value: "" }; } - return contact.email.find(e => e.pref) || contact.email[0]; + return contact.email.find(function find(e) { return e.pref; }) || contact.email[0]; } function _getContactDisplayName(contact) { diff --git a/browser/components/loop/content/js/panel.js b/browser/components/loop/content/js/panel.js index d43204819e1e..885f13de71bf 100644 --- a/browser/components/loop/content/js/panel.js +++ b/browser/components/loop/content/js/panel.js @@ -500,9 +500,8 @@ loop.panel = (function(_, mozL10n) { return ( React.createElement("div", {className: "room-entry-context-item"}, - React.createElement("a", {href: roomUrl.location, onClick: this.handleClick}, - React.createElement("img", {title: roomUrl.description, - src: roomUrl.thumbnail}) + React.createElement("a", {href: roomUrl.location, title: roomUrl.description, onClick: this.handleClick}, + React.createElement("img", {src: roomUrl.thumbnail || "loop/shared/img/icons-16x16.svg#globe"}) ) ) ); @@ -766,6 +765,7 @@ loop.panel = (function(_, mozL10n) { hide: !hostname || !this.props.mozLoop.getLoopPref("contextInConversations.enabled") }); + var thumbnail = this.state.previewImage || "loop/shared/img/icons-16x16.svg#globe"; return ( React.createElement("div", {className: "new-room-view"}, @@ -773,7 +773,7 @@ loop.panel = (function(_, mozL10n) { React.createElement(Checkbox, {label: mozL10n.get("context_inroom_label"), onChange: this.onCheckboxChange}), React.createElement("div", {className: "context-content"}, - React.createElement("img", {className: "context-preview", src: this.state.previewImage}), + React.createElement("img", {className: "context-preview", src: thumbnail}), React.createElement("span", {className: "context-description"}, this.state.description, React.createElement("span", {className: "context-url"}, hostname) diff --git a/browser/components/loop/content/js/panel.jsx b/browser/components/loop/content/js/panel.jsx index 160a0938f6cb..58f71ac55de0 100644 --- a/browser/components/loop/content/js/panel.jsx +++ b/browser/components/loop/content/js/panel.jsx @@ -500,9 +500,8 @@ loop.panel = (function(_, mozL10n) { return ( ); @@ -766,6 +765,7 @@ loop.panel = (function(_, mozL10n) { hide: !hostname || !this.props.mozLoop.getLoopPref("contextInConversations.enabled") }); + var thumbnail = this.state.previewImage || "loop/shared/img/icons-16x16.svg#globe"; return (
@@ -773,7 +773,7 @@ loop.panel = (function(_, mozL10n) {
- + {this.state.description} {hostname} diff --git a/browser/components/loop/content/js/roomViews.js b/browser/components/loop/content/js/roomViews.js index ba5cf743e305..81e5ff4e1353 100644 --- a/browser/components/loop/content/js/roomViews.js +++ b/browser/components/loop/content/js/roomViews.js @@ -480,7 +480,7 @@ loop.roomViews = (function(mozL10n) { } var url = this._getURL(); - var thumbnail = url && url.thumbnail || ""; + var thumbnail = url && url.thumbnail || "loop/shared/img/icons-16x16.svg#globe"; var urlDescription = url && url.description || ""; var location = url && url.location || ""; var locationData = null; diff --git a/browser/components/loop/content/js/roomViews.jsx b/browser/components/loop/content/js/roomViews.jsx index c46fa85fb4bb..dff6428bd622 100644 --- a/browser/components/loop/content/js/roomViews.jsx +++ b/browser/components/loop/content/js/roomViews.jsx @@ -480,7 +480,7 @@ loop.roomViews = (function(mozL10n) { } var url = this._getURL(); - var thumbnail = url && url.thumbnail || ""; + var thumbnail = url && url.thumbnail || "loop/shared/img/icons-16x16.svg#globe"; var urlDescription = url && url.description || ""; var location = url && url.location || ""; var locationData = null; @@ -553,7 +553,7 @@ loop.roomViews = (function(mozL10n) {
{mozL10n.get("context_inroom_label")}
- +
{this._truncate(urlDescription)} diff --git a/browser/components/loop/content/shared/css/conversation.css b/browser/components/loop/content/shared/css/conversation.css index 06c4d4a4a186..06ad57072cdb 100644 --- a/browser/components/loop/content/shared/css/conversation.css +++ b/browser/components/loop/content/shared/css/conversation.css @@ -969,10 +969,6 @@ body[platform="win"] .share-service-dropdown.overflow > .dropdown-menu-item { flex: 0 1 auto; } -.room-context-thumbnail[src=""] { - display: none; -} - .room-context > .error-display-area.error { display: block; background-color: rgba(215,67,69,.8); @@ -1211,9 +1207,8 @@ html[dir="rtl"] .room-context-btn-edit { .standalone-context-url > img { margin: 1em auto; - max-width: 50%; - /* allows 20% for the description wrapper plus the margins */ - max-height: calc(80% - 2em); + width: 16px; + height: 16px; } .standalone-context-url-description-wrapper { diff --git a/browser/components/loop/content/shared/img/icons-16x16.svg b/browser/components/loop/content/shared/img/icons-16x16.svg index ac23b5c58789..fc0bcc4f70b4 100644 --- a/browser/components/loop/content/shared/img/icons-16x16.svg +++ b/browser/components/loop/content/shared/img/icons-16x16.svg @@ -84,6 +84,9 @@ + + + @@ -100,6 +103,7 @@ + diff --git a/browser/components/loop/content/shared/js/mixins.js b/browser/components/loop/content/shared/js/mixins.js index d5801ec84ef5..a08518189bbd 100644 --- a/browser/components/loop/content/shared/js/mixins.js +++ b/browser/components/loop/content/shared/js/mixins.js @@ -255,6 +255,10 @@ loop.shared.mixins = (function() { */ var DocumentVisibilityMixin = { _onDocumentVisibilityChanged: function(event) { + if (!this.isMounted()) { + return; + } + var hidden = event.target.hidden; if (hidden && typeof this.onDocumentHidden === "function") { this.onDocumentHidden(); @@ -267,6 +271,9 @@ loop.shared.mixins = (function() { componentDidMount: function() { rootObject.document.addEventListener( "visibilitychange", this._onDocumentVisibilityChanged); + // Assume that the consumer components is only mounted when the document + // has become visible. + this._onDocumentVisibilityChanged({ target: rootObject.document }); }, componentWillUnmount: function() { diff --git a/browser/components/loop/standalone/content/js/standaloneRoomViews.js b/browser/components/loop/standalone/content/js/standaloneRoomViews.js index 7f954cdf5411..39d0d07ac4c1 100644 --- a/browser/components/loop/standalone/content/js/standaloneRoomViews.js +++ b/browser/components/loop/standalone/content/js/standaloneRoomViews.js @@ -262,7 +262,7 @@ loop.standaloneRoomViews = (function(mozL10n) { return ( React.createElement("div", {className: classes}, - React.createElement("img", {src: this.props.roomContextUrl.thumbnail}), + React.createElement("img", {src: this.props.roomContextUrl.thumbnail || "shared/img/icons-16x16.svg#globe"}), React.createElement("div", {className: "standalone-context-url-description-wrapper"}, this.props.roomContextUrl.description, React.createElement("br", null), React.createElement("a", {href: locationInfo.location, diff --git a/browser/components/loop/standalone/content/js/standaloneRoomViews.jsx b/browser/components/loop/standalone/content/js/standaloneRoomViews.jsx index 71f850b5edc9..83031cc3f700 100644 --- a/browser/components/loop/standalone/content/js/standaloneRoomViews.jsx +++ b/browser/components/loop/standalone/content/js/standaloneRoomViews.jsx @@ -262,7 +262,7 @@ loop.standaloneRoomViews = (function(mozL10n) { return (
- +
{this.props.roomContextUrl.description}
img").src) + .to.match(/shared\/img\/icons-16x16.svg#globe$/); + }); }); describe("StandaloneRoomHeader", function() { diff --git a/browser/components/loop/ui/ui-showcase.css b/browser/components/loop/ui/ui-showcase.css index 621bfd965ff4..a8d3100c27f2 100644 --- a/browser/components/loop/ui/ui-showcase.css +++ b/browser/components/loop/ui/ui-showcase.css @@ -148,10 +148,6 @@ body { .svg-icon { display: inline-block; - width: 16px; - height: 16px; margin-left: .5rem; - background-repeat: no-repeat; - background-size: 16px 16px; - background-position: center; + border: 0; } diff --git a/browser/components/loop/ui/ui-showcase.js b/browser/components/loop/ui/ui-showcase.js index 767ae0eb66ee..3daf6302133a 100644 --- a/browser/components/loop/ui/ui-showcase.js +++ b/browser/components/loop/ui/ui-showcase.js @@ -300,13 +300,12 @@ var SVGIcon = React.createClass({displayName: "SVGIcon", render: function() { - var sizeUnit = this.props.size.split("x")[0] + "px"; + var sizeUnit = this.props.size.split("x"); return ( - React.createElement("span", {className: "svg-icon", style: { - "backgroundImage": "url(../content/shared/img/icons-" + this.props.size + - ".svg#" + this.props.shapeId + ")", - "backgroundSize": sizeUnit + " " + sizeUnit - }}) + React.createElement("img", {className: "svg-icon", + src: "../content/shared/img/icons-" + this.props.size + ".svg#" + this.props.shapeId, + width: sizeUnit[0], + height: sizeUnit[1]}) ); } }); @@ -328,7 +327,7 @@ ], "16x16": ["add", "add-hover", "add-active", "audio", "audio-hover", "audio-active", "block", "block-red", "block-hover", "block-active", "contacts", "contacts-hover", - "contacts-active", "copy", "checkmark", "delete", "google", "google-hover", + "contacts-active", "copy", "checkmark", "delete", "globe", "google", "google-hover", "google-active", "history", "history-hover", "history-active", "leave", "precall", "precall-hover", "precall-active", "screen-white", "screenmute-white", "settings", "settings-hover", "settings-active", "share-darkgrey", "tag", diff --git a/browser/components/loop/ui/ui-showcase.jsx b/browser/components/loop/ui/ui-showcase.jsx index aef30a864a10..bc2bb9056aa9 100644 --- a/browser/components/loop/ui/ui-showcase.jsx +++ b/browser/components/loop/ui/ui-showcase.jsx @@ -300,13 +300,12 @@ var SVGIcon = React.createClass({ render: function() { - var sizeUnit = this.props.size.split("x")[0] + "px"; + var sizeUnit = this.props.size.split("x"); return ( - + ); } }); @@ -328,7 +327,7 @@ ], "16x16": ["add", "add-hover", "add-active", "audio", "audio-hover", "audio-active", "block", "block-red", "block-hover", "block-active", "contacts", "contacts-hover", - "contacts-active", "copy", "checkmark", "delete", "google", "google-hover", + "contacts-active", "copy", "checkmark", "delete", "globe", "google", "google-hover", "google-active", "history", "history-hover", "history-active", "leave", "precall", "precall-hover", "precall-active", "screen-white", "screenmute-white", "settings", "settings-hover", "settings-active", "share-darkgrey", "tag", From 393b9d5a26f7365e7804a500b0a1aa058732afd5 Mon Sep 17 00:00:00 2001 From: Mike de Boer Date: Fri, 12 Jun 2015 11:21:35 +0200 Subject: [PATCH 13/56] Bug 1168833: introduce different sizing modes to docked social chat windows and re-style text chat UI indide the Hello conversation window. r=Standard8 --- browser/base/content/browser.css | 41 ++++++++- browser/base/content/socialchat.xml | 36 +++++++- .../components/loop/content/js/roomViews.js | 4 +- .../components/loop/content/js/roomViews.jsx | 2 +- .../loop/content/shared/css/conversation.css | 91 ++++++++++++------- .../loop/content/shared/js/textChatStore.js | 40 ++++---- .../loop/content/shared/js/textChatView.js | 34 ++++--- .../loop/content/shared/js/textChatView.jsx | 34 ++++--- .../loop/modules/MozLoopService.jsm | 40 +++++++- .../content/l10n/en-US/loop.properties | 4 + .../loop/test/shared/textChatStore_test.js | 35 +++++++ .../loop/test/shared/textChatView_test.js | 27 ++++++ .../en-US/chrome/browser/loop/loop.properties | 4 + browser/themes/shared/social/chat.inc.css | 1 - 14 files changed, 308 insertions(+), 85 deletions(-) diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css index 7e9bd61cb862..7539adaa6158 100644 --- a/browser/base/content/browser.css +++ b/browser/base/content/browser.css @@ -34,8 +34,8 @@ * along any dimension beyond the point at which an overflow event would * occur". But none of -moz-{fit,max,min}-content do what we want here. So.. */ - min-width: 320px; - min-height: 280px; + min-width: 260px; + min-height: 315px; } #main-window[customize-entered] { @@ -907,8 +907,32 @@ chatbox { width: 260px; /* CHAT_WIDTH_OPEN in socialchat.xml */ } -chatbox[large="true"] { - width: 300px; +chatbox[customSize] { + width: 300px; /* CHAT_WIDTH_OPEN_ALT in socialchat.xml */ +} + +#chat-window[customSize] { + min-width: 300px; +} + +chatbox[customSize="loopChatEnabled"] { + /* 325px as defined per UX */ + height: 325px; +} + +#chat-window[customSize="loopChatEnabled"] { + /* 325px + 30px top bar height. */ + min-height: calc(325px + 30px); +} + +chatbox[customSize="loopChatMessageAppended"] { + /* 445px as defined per UX */ + height: 445px; +} + +#chat-window[customSize="loopChatMessageAppended"] { + /* 445px + 30px top bar height. */ + min-height: calc(445px + 30px); } chatbox[minimized="true"] { @@ -922,6 +946,15 @@ chatbar { max-height: 0; } +.chatbar-innerbox { + margin: -285px 0 0; +} + +chatbar[customSize] > .chatbar-innerbox { + /* 425px to make room for the maximum custom-size chatbox; currently 'loopChatMessageAppended'. */ + margin-top: -425px; +} + /* Apply crisp rendering for favicons at exactly 2dppx resolution */ @media (resolution: 2dppx) { #social-sidebar-favico, diff --git a/browser/base/content/socialchat.xml b/browser/base/content/socialchat.xml index 656ebc08e861..e82cdba9c49f 100644 --- a/browser/base/content/socialchat.xml +++ b/browser/base/content/socialchat.xml @@ -160,8 +160,7 @@ + + + + + { this.swapDocShells(cb); @@ -225,6 +236,12 @@ chatbar.chatboxForURL.delete("about:blank"); chatbar.chatboxForURL.set(this.src, Cu.getWeakReference(cb)); + let attachEvent = new cb.contentWindow.CustomEvent("socialFrameAttached", { + bubbles: true, + cancelable: true, + }); + cb.contentDocument.dispatchEvent(attachEvent); + deferred.resolve(cb); } ); @@ -457,8 +474,10 @@ // These are from the CSS for the chatbox and must be kept in sync. // We can't use calcTotalWidthOf due to the transitions... const CHAT_WIDTH_OPEN = 260; + const CHAT_WIDTH_OPEN_ALT = 300; const CHAT_WIDTH_MINIMIZED = 160; - let openWidth = aChatbox.hasAttribute("large") ? 300 : CHAT_WIDTH_OPEN; + let openWidth = aChatbox.hasAttribute("customSize") ? + CHAT_WIDTH_OPEN_ALT : CHAT_WIDTH_OPEN; return aChatbox.minimized ? CHAT_WIDTH_MINIMIZED : openWidth; ]]> @@ -684,18 +703,27 @@ if (event.target != otherWin.document) return; + if (aChatbox.hasAttribute("customSize")) { + otherWin.document.getElementById("chat-window"). + setAttribute("customSize", aChatbox.getAttribute("customSize")); + } + + let document = aChatbox.contentDocument; let detachEvent = new aChatbox.contentWindow.CustomEvent("socialFrameDetached", { bubbles: true, cancelable: true, }); - aChatbox.contentDocument.dispatchEvent(detachEvent); otherWin.removeEventListener("load", _chatLoad, true); let otherChatbox = otherWin.document.getElementById("chatter"); + aChatbox.setDecorationAttributes(otherChatbox); aChatbox.swapDocShells(otherChatbox); aChatbox.close(); chatbar.chatboxForURL.set(aChatbox.src, Cu.getWeakReference(otherChatbox)); + // All processing is done, now we can fire the event. + document.dispatchEvent(detachEvent); + deferred.resolve(otherChatbox); }, true); return deferred.promise; diff --git a/browser/components/loop/content/js/roomViews.js b/browser/components/loop/content/js/roomViews.js index 81e5ff4e1353..e51894afbd9c 100644 --- a/browser/components/loop/content/js/roomViews.js +++ b/browser/components/loop/content/js/roomViews.js @@ -718,7 +718,6 @@ loop.roomViews = (function(mozL10n) { return ( React.createElement("div", {className: "room-conversation-wrapper"}, - React.createElement(sharedViews.TextChatView, {dispatcher: this.props.dispatcher}), React.createElement(DesktopRoomInvitationView, { dispatcher: this.props.dispatcher, error: this.state.error, @@ -761,7 +760,8 @@ loop.roomViews = (function(mozL10n) { savingContext: this.state.savingContext, mozLoop: this.props.mozLoop, roomData: roomData, - show: !shouldRenderInvitationOverlay && shouldRenderContextView}) + show: !shouldRenderInvitationOverlay && shouldRenderContextView}), + React.createElement(sharedViews.TextChatView, {dispatcher: this.props.dispatcher}) ) ); } diff --git a/browser/components/loop/content/js/roomViews.jsx b/browser/components/loop/content/js/roomViews.jsx index dff6428bd622..1f56bfe1c8ff 100644 --- a/browser/components/loop/content/js/roomViews.jsx +++ b/browser/components/loop/content/js/roomViews.jsx @@ -718,7 +718,6 @@ loop.roomViews = (function(mozL10n) { return (
- +
); } diff --git a/browser/components/loop/content/shared/css/conversation.css b/browser/components/loop/content/shared/css/conversation.css index 06ad57072cdb..eadc0a9f9ef0 100644 --- a/browser/components/loop/content/shared/css/conversation.css +++ b/browser/components/loop/content/shared/css/conversation.css @@ -651,27 +651,6 @@ html, .fx-embedded, #main, height: 100%; } -/** - * The .fx-embbeded .text-chat-* styles are very temporarily whilst we work on - * text chat (bug 1108892 and dependencies). - */ -.fx-embedded .text-chat-view { - height: 60px; - color: white; - background-color: black; -} - -.fx-embedded .text-chat-entries { - /* XXX Should use flex, this is just for the initial implementation. */ - height: calc(100% - 2em); - width: 100%; -} - -.fx-embedded .text-chat-box { - width: 100%; - margin: auto; -} - /* We use 641px rather than 640, as min-width and max-width are inclusive */ @media screen and (min-width:641px) { .standalone .conversation-toolbar { @@ -681,10 +660,6 @@ html, .fx-embedded, #main, right: 0; } - .fx-embedded .local-stream { - position: fixed; - } - .standalone .local-stream, .standalone .remote-inset-stream { position: absolute; @@ -697,7 +672,7 @@ html, .fx-embedded, #main, } /* Nested video elements */ - .conversation .media.nested { + .standalone .conversation .media.nested { position: relative; height: 100%; } @@ -744,7 +719,7 @@ html, .fx-embedded, #main, } /* Nested video elements */ - .conversation .media.nested { + .standalone .conversation .media.nested { display: flex; flex-direction: column; align-items: center; @@ -1239,18 +1214,64 @@ html[dir="rtl"] .room-context-btn-edit { height: auto; } +/* Text chat in rooms styles */ + +.fx-embedded .room-conversation-wrapper { + display: flex; + flex-flow: column nowrap; +} + +.fx-embedded .video-layout-wrapper { + flex: 1 1 auto; +} + +.text-chat-view { + background: #fff; +} + +.fx-embedded .text-chat-view { + flex: 1 0 auto; + display: flex; + flex-flow: column nowrap; +} + +.fx-embedded .text-chat-entries { + flex: 1 1 auto; + max-height: 120px; + min-height: 60px; + padding: .7em .5em 0; +} + +.fx-embedded .text-chat-box { + flex: 0 0 auto; + max-height: 40px; + min-height: 40px; + width: 100%; +} + .text-chat-entries { - margin: auto; overflow: scroll; - border: 1px solid red; } .text-chat-entry { - text-align: left; + text-align: end; + margin-bottom: 1.5em; +} + +.text-chat-entry > span { + border-width: 1px; + border-style: solid; + border-color: #0095dd; + border-radius: 10000px; + padding: .5em 1em; } .text-chat-entry.received { - text-align: right; + text-align: start; +} + +.text-chat-entry.received > span { + border-color: #d8d8d8; } .text-chat-box { @@ -1259,6 +1280,14 @@ html[dir="rtl"] .room-context-btn-edit { .text-chat-box > form > input { width: 100%; + height: 40px; + padding: 0 .5em .5em; + font-size: 1.1em; +} + +.fx-embedded .text-chat-box > form > input { + border: 0; + border-top: 1px solid #999; } @media screen and (max-width:640px) { diff --git a/browser/components/loop/content/shared/js/textChatStore.js b/browser/components/loop/content/shared/js/textChatStore.js index 7fbc8c8f5bf8..2876f57390fb 100644 --- a/browser/components/loop/content/shared/js/textChatStore.js +++ b/browser/components/loop/content/shared/js/textChatStore.js @@ -68,6 +68,27 @@ loop.store.TextChatStore = (function() { */ dataChannelsAvailable: function() { this.setStoreState({ textChatEnabled: true }); + window.dispatchEvent(new CustomEvent("LoopChatEnabled")); + }, + + /** + * Appends a message to the store, which may be of type 'sent' or 'received'. + * + * @param {String} type + * @param {sharedActions.ReceivedTextChatMessage|sharedActions.SendTextChatMessage} actionData + */ + _appendTextChatMessage: function(type, actionData) { + // We create a new list to avoid updating the store's state directly, + // which confuses the views. + var message = { + type: type, + contentType: actionData.contentType, + message: actionData.message + }; + var newList = this._storeState.messageList.concat(message); + this.setStoreState({ messageList: newList }); + + window.dispatchEvent(new CustomEvent("LoopChatMessageAppended")); }, /** @@ -81,14 +102,8 @@ loop.store.TextChatStore = (function() { if (actionData.contentType != CHAT_CONTENT_TYPES.TEXT) { return; } - // We create a new list to avoid updating the store's state directly, - // which confuses the views. - var newList = this._storeState.messageList.concat({ - type: CHAT_MESSAGE_TYPES.RECEIVED, - contentType: actionData.contentType, - message: actionData.message - }); - this.setStoreState({ messageList: newList }); + + this._appendTextChatMessage(CHAT_MESSAGE_TYPES.RECEIVED, actionData); }, /** @@ -97,15 +112,8 @@ loop.store.TextChatStore = (function() { * @param {sharedActions.SendTextChatMessage} actionData */ sendTextChatMessage: function(actionData) { - // We create a new list to avoid updating the store's state directly, - // which confuses the views. - var newList = this._storeState.messageList.concat({ - type: CHAT_MESSAGE_TYPES.SENT, - contentType: actionData.contentType, - message: actionData.message - }); + this._appendTextChatMessage(CHAT_MESSAGE_TYPES.SENT, actionData); this._sdkDriver.sendTextChatMessage(actionData); - this.setStoreState({ messageList: newList }); } }); diff --git a/browser/components/loop/content/shared/js/textChatView.js b/browser/components/loop/content/shared/js/textChatView.js index 6e148f9fcba9..5b0c3b8efbde 100644 --- a/browser/components/loop/content/shared/js/textChatView.js +++ b/browser/components/loop/content/shared/js/textChatView.js @@ -29,7 +29,7 @@ loop.shared.views.TextChatView = (function(mozl10n) { return ( React.createElement("div", {className: classes}, - this.props.message + React.createElement("span", null, this.props.message) ) ); } @@ -49,6 +49,9 @@ loop.shared.views.TextChatView = (function(mozl10n) { componentWillUpdate: function() { var node = this.getDOMNode(); + if (!node) { + return; + } // Scroll only if we're right at the bottom of the display. this.shouldScroll = node.scrollHeight === node.scrollTop + node.clientHeight; }, @@ -64,17 +67,23 @@ loop.shared.views.TextChatView = (function(mozl10n) { }, render: function() { + if (!this.props.messageList.length) { + return null; + } + return ( React.createElement("div", {className: "text-chat-entries"}, - - this.props.messageList.map(function(entry, i) { - return ( - React.createElement(TextChatEntry, {key: i, - message: entry.message, - type: entry.type}) - ); - }, this) - + React.createElement("div", {className: "text-chat-scroller"}, + + this.props.messageList.map(function(entry, i) { + return ( + React.createElement(TextChatEntry, {key: i, + message: entry.message, + type: entry.type}) + ); + }, this) + + ) ) ); } @@ -134,12 +143,15 @@ loop.shared.views.TextChatView = (function(mozl10n) { return null; } + var messageList = this.state.messageList; + return ( React.createElement("div", {className: "text-chat-view"}, - React.createElement(TextChatEntriesView, {messageList: this.state.messageList}), + React.createElement(TextChatEntriesView, {messageList: messageList}), React.createElement("div", {className: "text-chat-box"}, React.createElement("form", {onSubmit: this.handleFormSubmit}, React.createElement("input", {type: "text", + placeholder: messageList.length ? "" : mozl10n.get("chat_textbox_placeholder"), onKeyDown: this.handleKeyDown, valueLink: this.linkState("messageDetail")}) ) diff --git a/browser/components/loop/content/shared/js/textChatView.jsx b/browser/components/loop/content/shared/js/textChatView.jsx index 4d83d3b8b74f..0c47a8a148c1 100644 --- a/browser/components/loop/content/shared/js/textChatView.jsx +++ b/browser/components/loop/content/shared/js/textChatView.jsx @@ -29,7 +29,7 @@ loop.shared.views.TextChatView = (function(mozl10n) { return (
- {this.props.message} + {this.props.message}
); } @@ -49,6 +49,9 @@ loop.shared.views.TextChatView = (function(mozl10n) { componentWillUpdate: function() { var node = this.getDOMNode(); + if (!node) { + return; + } // Scroll only if we're right at the bottom of the display. this.shouldScroll = node.scrollHeight === node.scrollTop + node.clientHeight; }, @@ -64,17 +67,23 @@ loop.shared.views.TextChatView = (function(mozl10n) { }, render: function() { + if (!this.props.messageList.length) { + return null; + } + return (
- { - this.props.messageList.map(function(entry, i) { - return ( - - ); - }, this) - } +
+ { + this.props.messageList.map(function(entry, i) { + return ( + + ); + }, this) + } +
); } @@ -134,12 +143,15 @@ loop.shared.views.TextChatView = (function(mozl10n) { return null; } + var messageList = this.state.messageList; + return (
- +
diff --git a/browser/components/loop/modules/MozLoopService.jsm b/browser/components/loop/modules/MozLoopService.jsm index 5369ee8546b7..aaab711b3c7c 100644 --- a/browser/components/loop/modules/MozLoopService.jsm +++ b/browser/components/loop/modules/MozLoopService.jsm @@ -853,27 +853,51 @@ let MozLoopServiceInternal = { return; } - chatbox.setAttribute("dark", true); - chatbox.setAttribute("large", true); - chatbox.addEventListener("DOMContentLoaded", function loaded(event) { if (event.target != chatbox.contentDocument) { return; } chatbox.removeEventListener("DOMContentLoaded", loaded, true); + let chatbar = chatbox.parentNode; let window = chatbox.contentWindow; function socialFrameChanged(eventName) { UITour.availableTargetsCache.clear(); UITour.notify(eventName); + + if (eventName == "Loop:ChatWindowDetached" || eventName == "Loop:ChatWindowAttached") { + // After detach, re-attach of the chatbox, refresh its reference so + // we can keep using it here. + let ref = chatbar.chatboxForURL.get(chatbox.src); + chatbox = ref && ref.get() || chatbox; + } } window.addEventListener("socialFrameHide", socialFrameChanged.bind(null, "Loop:ChatWindowHidden")); window.addEventListener("socialFrameShow", socialFrameChanged.bind(null, "Loop:ChatWindowShown")); window.addEventListener("socialFrameDetached", socialFrameChanged.bind(null, "Loop:ChatWindowDetached")); + window.addEventListener("socialFrameAttached", socialFrameChanged.bind(null, "Loop:ChatWindowAttached")); window.addEventListener("unload", socialFrameChanged.bind(null, "Loop:ChatWindowClosed")); + const kSizeMap = { + LoopChatEnabled: "loopChatEnabled", + LoopChatMessageAppended: "loopChatMessageAppended" + }; + + function onChatEvent(event) { + // When the chat box or messages are shown, resize the panel or window + // to be slightly higher to accomodate them. + let customSize = kSizeMap[event.type]; + if (customSize) { + chatbox.setAttribute("customSize", customSize); + chatbox.parentNode.setAttribute("customSize", customSize); + } + } + + window.addEventListener("LoopChatEnabled", onChatEvent); + window.addEventListener("LoopChatMessageAppended", onChatEvent); + injectLoopAPI(window); let ourID = window.QueryInterface(Ci.nsIInterfaceRequestor) @@ -918,8 +942,16 @@ let MozLoopServiceInternal = { }.bind(this), true); }; - if (!Chat.open(null, origin, "", url, undefined, undefined, callback)) { + let chatbox = Chat.open(null, origin, "", url, undefined, undefined, callback); + if (!chatbox) { return null; + // It's common for unit tests to overload Chat.open. + } else if (chatbox.setAttribute) { + // Set properties that influence visual appeara nce of the chatbox right + // away to circumvent glitches. + chatbox.setAttribute("dark", true); + chatbox.setAttribute("customSize", "loopDefault"); + chatbox.parentNode.setAttribute("customSize", "loopDefault"); } return windowId; }, diff --git a/browser/components/loop/standalone/content/l10n/en-US/loop.properties b/browser/components/loop/standalone/content/l10n/en-US/loop.properties index 72be5628af09..0b38b1ee54b1 100644 --- a/browser/components/loop/standalone/content/l10n/en-US/loop.properties +++ b/browser/components/loop/standalone/content/l10n/en-US/loop.properties @@ -137,3 +137,7 @@ status_in_conversation=In conversation status_conversation_ended=Conversation ended status_error=Something went wrong support_link=Get Help + +# Text chat strings + +chat_textbox_placeholder=Type here… diff --git a/browser/components/loop/test/shared/textChatStore_test.js b/browser/components/loop/test/shared/textChatStore_test.js index f1f73a9211dd..7b193e72a780 100644 --- a/browser/components/loop/test/shared/textChatStore_test.js +++ b/browser/components/loop/test/shared/textChatStore_test.js @@ -25,6 +25,11 @@ describe("loop.store.TextChatStore", function () { store = new loop.store.TextChatStore(dispatcher, { sdkDriver: fakeSdkDriver }); + + sandbox.stub(window, "dispatchEvent"); + sandbox.stub(window, "CustomEvent", function(name) { + this.name = name; + }); }); afterEach(function() { @@ -37,6 +42,14 @@ describe("loop.store.TextChatStore", function () { expect(store.getStoreState("textChatEnabled")).eql(true); }); + + it("should dispatch a LoopChatEnabled event", function() { + store.dataChannelsAvailable(); + + sinon.assert.calledOnce(window.dispatchEvent); + sinon.assert.calledWithExactly(window.dispatchEvent, + new CustomEvent("LoopChatEnabled")); + }); }); describe("#receivedTextChatMessage", function() { @@ -63,6 +76,17 @@ describe("loop.store.TextChatStore", function () { expect(store.getStoreState("messageList").length).eql(0); }); + + it("should dispatch a LoopChatMessageAppended event", function() { + store.receivedTextChatMessage({ + contentType: CHAT_CONTENT_TYPES.TEXT, + message: "Hello!" + }); + + sinon.assert.calledOnce(window.dispatchEvent); + sinon.assert.calledWithExactly(window.dispatchEvent, + new CustomEvent("LoopChatMessageAppended")); + }); }); describe("#sendTextChatMessage", function() { @@ -92,5 +116,16 @@ describe("loop.store.TextChatStore", function () { message: messageData.message }]); }); + + it("should dipatch a LoopChatMessageAppended event", function() { + store.sendTextChatMessage({ + contentType: CHAT_CONTENT_TYPES.TEXT, + message: "Hello!" + }); + + sinon.assert.calledOnce(window.dispatchEvent); + sinon.assert.calledWithExactly(window.dispatchEvent, + new CustomEvent("LoopChatMessageAppended")); + }); }); }); diff --git a/browser/components/loop/test/shared/textChatView_test.js b/browser/components/loop/test/shared/textChatView_test.js index 112713660e19..22d811850968 100644 --- a/browser/components/loop/test/shared/textChatView_test.js +++ b/browser/components/loop/test/shared/textChatView_test.js @@ -80,5 +80,32 @@ describe("loop.shared.views.TextChatView", function () { message: "Hello!" })); }); + + it("should not render message entries when none are sent/ received yet", function() { + view = mountTestComponent(); + + expect(view.getDOMNode().querySelector(".text-chat-entries")).to.eql(null); + }); + + it("should render message entries when message were sent/ received", function() { + view = mountTestComponent(); + + store.receivedTextChatMessage({ + contentType: CHAT_CONTENT_TYPES.TEXT, + message: "Hello!" + }); + store.sendTextChatMessage({ + contentType: CHAT_CONTENT_TYPES.TEXT, + message: "Is it me you're looking for?" + }); + + var node = view.getDOMNode(); + expect(node.querySelector(".text-chat-entries")).to.not.eql(null); + + var entries = node.querySelectorAll(".text-chat-entry"); + expect(entries.length).to.eql(2); + expect(entries[0].classList.contains("received")).to.eql(true); + expect(entries[1].classList.contains("received")).to.not.eql(true); + }); }); }); diff --git a/browser/locales/en-US/chrome/browser/loop/loop.properties b/browser/locales/en-US/chrome/browser/loop/loop.properties index 25e9fc2d93d0..91dc10b46c9c 100644 --- a/browser/locales/en-US/chrome/browser/loop/loop.properties +++ b/browser/locales/en-US/chrome/browser/loop/loop.properties @@ -354,3 +354,7 @@ context_show_tooltip=Show Context context_save_label2=Save context_link_modified=This link was modified. context_learn_more_link_label=Learn more. + +# Text chat strings + +chat_textbox_placeholder=Type here… diff --git a/browser/themes/shared/social/chat.inc.css b/browser/themes/shared/social/chat.inc.css index 1da11e96dbf5..6047104aa943 100644 --- a/browser/themes/shared/social/chat.inc.css +++ b/browser/themes/shared/social/chat.inc.css @@ -195,7 +195,6 @@ chatbox[dark=true] > .chat-titlebar > hbox > .chat-title { .chatbar-innerbox { background: transparent; - margin: -285px 0 0; overflow: hidden; } From f6fca5dfa15f668d9bff640e495c3a33e5755cf4 Mon Sep 17 00:00:00 2001 From: Mike de Boer Date: Fri, 12 Jun 2015 11:40:31 +0200 Subject: [PATCH 14/56] Bug 1142532: fix the Loop/Hello email body texts punctuation. rs=me DONTBUILD --- browser/locales/en-US/chrome/browser/loop/loop.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/locales/en-US/chrome/browser/loop/loop.properties b/browser/locales/en-US/chrome/browser/loop/loop.properties index 91dc10b46c9c..3f5937b069ee 100644 --- a/browser/locales/en-US/chrome/browser/loop/loop.properties +++ b/browser/locales/en-US/chrome/browser/loop/loop.properties @@ -63,10 +63,10 @@ share_email_subject5={{clientShortname2}} — Join the conversation share_email_subject_context={{clientShortname2}} conversation: {{title}} ## LOCALIZATION NOTE (share_email_body4): In this item, don't translate the ## part between {{..}} and leave the \n\n part alone -share_email_body5=Hello!\n\nJoin me for a video conversation on {{clientShortname2}}.\n\nIt's the easiest way to connect by video with anyone anywhere. With {{clientSuperShortname}}, you don't have to download or install anything. Just click or paste this link into your {{brandShortname}}, Opera, or Chrome browser to join the conversation:\n\n{{callUrl}}\n\nIf you'd like to learn more about {{clientSuperShortname}} and how you can start your own free video conversations, visit {{learnMoreUrl}}\n\nTalk to you soon! +share_email_body5=Hello!\n\nJoin me for a video conversation on {{clientShortname2}}.\n\nIt's the easiest way to connect by video with anyone anywhere. With {{clientSuperShortname}}, you don't have to download or install anything. Just click or paste this link into your {{brandShortname}}, Opera or Chrome browser to join the conversation:\n\n{{callUrl}}\n\nIf you'd like to learn more about {{clientSuperShortname}} and how you can start your own free video conversations, visit {{learnMoreUrl}}\n\nTalk to you soon! ## LOCALIZATION NOTE (share_email_body_context): In this item, don't translate ## the part between {{..}} and leave the \n\n part alone. -share_email_body_context=Hello!\n\nJoin me for a video conversation on {{clientShortname2}} about:\n{{title}}.\n\nIt's the easiest way to connect by video with anyone anywhere. With {{clientSuperShortname}}, you don't have to download or install anything. Just click or paste this link into your {{brandShortname}}, Opera, or Chrome browser to join the conversation:\n\n{{callUrl}}\n\nIf you'd like to learn more about {{clientSuperShortname}} and how you can start your own free video conversations, visit {{learnMoreUrl}}\n\nTalk to you soon! +share_email_body_context=Hello!\n\nJoin me for a video conversation on {{clientShortname2}} about:\n{{title}}.\n\nIt's the easiest way to connect by video with anyone anywhere. With {{clientSuperShortname}}, you don't have to download or install anything. Just click or paste this link into your {{brandShortname}}, Opera or Chrome browser to join the conversation:\n\n{{callUrl}}\n\nIf you'd like to learn more about {{clientSuperShortname}} and how you can start your own free video conversations, visit {{learnMoreUrl}}\n\nTalk to you soon! ## LOCALIZATION NOTE (share_tweeet): In this item, don't translate the part ## between {{..}}. Please keep the text below 117 characters to make sure it fits ## in a tweet. From 9357540cc31745db46e53fe2e147fa63cb89203d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Fri, 12 Jun 2015 12:42:17 +0200 Subject: [PATCH 15/56] Bug 1173746 - Remove Windows Vista / 7 style hover effect from autocomplete items on Windows 8 and 10. r=gijs --- browser/themes/windows/browser.css | 19 +++++---- .../themes/windows/global/autocomplete.css | 39 ++++++++----------- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css index 0a4216e15a63..354a8cfc4191 100644 --- a/browser/themes/windows/browser.css +++ b/browser/themes/windows/browser.css @@ -1508,16 +1508,19 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action- padding: 0 3px; } -@media (-moz-os-version: windows-xp), +@media not all and (-moz-os-version: windows-vista), not all and (-moz-windows-default-theme) { - richlistitem[type~="action"][actiontype="switchtab"][selected="true"] > .ac-url-box > .ac-action-icon { - -moz-image-region: rect(11px, 16px, 22px, 0); - } + @media not all and (-moz-os-version: windows-win7), + not all and (-moz-windows-default-theme) { + richlistitem[type~="action"][actiontype="switchtab"][selected="true"] > .ac-url-box > .ac-action-icon { + -moz-image-region: rect(11px, 16px, 22px, 0); + } - .ac-comment[selected="true"], - .ac-url-text[selected="true"], - .ac-action-text[selected="true"] { - color: inherit !important; + .ac-comment[selected="true"], + .ac-url-text[selected="true"], + .ac-action-text[selected="true"] { + color: inherit !important; + } } } diff --git a/toolkit/themes/windows/global/autocomplete.css b/toolkit/themes/windows/global/autocomplete.css index 0d935bba91d6..b43147227f65 100644 --- a/toolkit/themes/windows/global/autocomplete.css +++ b/toolkit/themes/windows/global/autocomplete.css @@ -106,28 +106,23 @@ treechildren.autocomplete-treebody::-moz-tree-cell-text(selected) { } %ifdef XP_WIN -@media not all and (-moz-os-version: windows-xp) { - @media (-moz-windows-default-theme) { - /* - -moz-appearance: menuitem is almost right, but the hover effect is not - transparent and is lighter than desired. - */ - .autocomplete-richlistitem[selected="true"] { - color: inherit; - background-color: transparent; - /* four gradients for the bevel highlights on each edge, one for blue background */ - background-image: - linear-gradient(to bottom, rgba(255,255,255,0.9) 3px, transparent 3px), - linear-gradient(to right, rgba(255,255,255,0.5) 3px, transparent 3px), - linear-gradient(to left, rgba(255,255,255,0.5) 3px, transparent 3px), - linear-gradient(to top, rgba(255,255,255,0.4) 3px, transparent 3px), - linear-gradient(to bottom, rgba(163,196,247,0.3), rgba(122,180,246,0.3)); - background-clip: content-box; - border-radius: 6px; - outline: 1px solid rgb(124,163,206); - -moz-outline-radius: 3px; - outline-offset: -2px; - } +@media (-moz-os-version: windows-vista) and (-moz-windows-default-theme), + (-moz-os-version: windows-win7) and (-moz-windows-default-theme) { + .autocomplete-richlistitem[selected="true"] { + color: inherit; + background-color: transparent; + /* four gradients for the bevel highlights on each edge, one for blue background */ + background-image: + linear-gradient(to bottom, rgba(255,255,255,0.9) 3px, transparent 3px), + linear-gradient(to right, rgba(255,255,255,0.5) 3px, transparent 3px), + linear-gradient(to left, rgba(255,255,255,0.5) 3px, transparent 3px), + linear-gradient(to top, rgba(255,255,255,0.4) 3px, transparent 3px), + linear-gradient(to bottom, rgba(163,196,247,0.3), rgba(122,180,246,0.3)); + background-clip: content-box; + border-radius: 6px; + outline: 1px solid rgb(124,163,206); + -moz-outline-radius: 3px; + outline-offset: -2px; } } %endif From 285d263f77ac88eedd2acbdc10f1d10970ad7bb0 Mon Sep 17 00:00:00 2001 From: Gijs Kruitbosch Date: Thu, 11 Jun 2015 11:53:05 +0100 Subject: [PATCH 16/56] Bug 1173711 - fix unhovered/inactive hidpi close icons, r=jaws --HG-- extra : rebase_source : a40931e09975e55864611190e3233d630ca1e078 extra : histedit_source : dfb074490feb66a14b2cfa622c204e52772c06a7 --- browser/themes/windows/browser.css | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css index 354a8cfc4191..b2a317c18953 100644 --- a/browser/themes/windows/browser.css +++ b/browser/themes/windows/browser.css @@ -1075,7 +1075,7 @@ toolbarbutton[constrain-size="true"][cui-areatype="toolbar"] > .toolbarbutton-ba list-style-image: url(chrome://browser/skin/undoCloseTab.png); } -@media (min-resolution: 1.25dppx) { +@media (min-resolution: 1.1dppx) { #alltabs_undoCloseTab { list-style-image: url(chrome://browser/skin/undoCloseTab@2x.png); } @@ -1895,7 +1895,7 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action- %include ../shared/tabs.inc.css -@media (min-resolution: 1.25dppx) { +@media (min-resolution: 1.1dppx) { /* image preloading hack from shared/tabs.inc.css */ #tabbrowser-tabs::before { background-image: @@ -1937,8 +1937,17 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action- } } -#TabsToolbar[brighttext] .tab-close-button:not(:hover):not([visuallyselected="true"]) { - -moz-image-region: rect(0, 64px, 16px, 48px) !important; +/* Invert the unhovered close tab icons on bright-text tabs */ +@media not all and (min-resolution: 1.1dppx) { + #TabsToolbar[brighttext] .tab-close-button:not(:hover):not([visuallyselected="true"]) { + -moz-image-region: rect(0, 64px, 16px, 48px) !important; + } +} + +@media (min-resolution: 1.1dppx) { + #TabsToolbar[brighttext] .tab-close-button:not(:hover):not([visuallyselected="true"]) { + -moz-image-region: rect(0, 128px, 32px, 96px) !important; + } } /* tabbrowser-tab focus ring */ From 5c7e525b8956ba353452d5fa0a0d3c48273dde10 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 15:15:15 -0700 Subject: [PATCH 17/56] Bumping gaia.json for 1 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/2cbc102f5b67 Author: spark-bot Desc: Bump Spark apps --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index c16cb694f0b5..ab9865d5275f 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "9f36b711af7597a6a32471c3305cf1e2d6947d39", + "git_revision": "339d10071da581d6c4ad53d9bb86e7f7c805df7a", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "8583025b84cda74c63e83bbbdfd7a4f33b917f20", + "revision": "2cbc102f5b676bc0dba7465335ea992a56cc3768", "repo_path": "integration/gaia-central" } From 90f6b42829f2d8d2c1f0980aa357e38bb03874c5 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 15:17:11 -0700 Subject: [PATCH 18/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 1f24f52db2ee..823fdff58e09 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 538c910cf731..3800dcae0584 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 abccedca66da..213613248511 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 d857864bd497..a2329effa6f5 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 cf65d9a7d91a..9f3d9de36893 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index da9c38ebfa10..1314e9f0be6f 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index abccedca66da..213613248511 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 bcdf30a7b530..e5b21664c5ed 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index fd9c117f0f1c..84cc5972ba01 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 7429963e6a11..44126a85a3fb 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 628d32ea6e1d19a6faf248664759e9dfbe1f11e4 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 15:35:25 -0700 Subject: [PATCH 19/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/e81e401cca58 Author: Douglas Sherk Desc: Merge pull request #30526 from jedireza/software-home-dead-space Bug 1171235 - style changes to the software home button ======== https://hg.mozilla.org/integration/gaia-central/rev/a521d84a67b9 Author: jedireza Desc: Bug 1171235 - style changes to the software home button --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index ab9865d5275f..4b609b5d416a 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "339d10071da581d6c4ad53d9bb86e7f7c805df7a", + "git_revision": "d5de92b9dc1cf9cfe37cc79de4c69598b61d9b5d", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "2cbc102f5b676bc0dba7465335ea992a56cc3768", + "revision": "e81e401cca583980c24008806e162201c440502b", "repo_path": "integration/gaia-central" } From 20938803a5594d6cf4e125249f9356c792c9a441 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 15:37:21 -0700 Subject: [PATCH 20/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 823fdff58e09..19cdcc034364 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 3800dcae0584..51d2ec945376 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 213613248511..268f16d73c05 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 a2329effa6f5..13a8917fe250 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 9f3d9de36893..067124bc2f62 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index 1314e9f0be6f..fd0d46ac7247 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 213613248511..268f16d73c05 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 e5b21664c5ed..3278d55f7b10 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 84cc5972ba01..1410d5f5d083 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 44126a85a3fb..635ebdefc135 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 2241d7ca01fa574e008fba337f0133c2b78a9bbf Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 16:10:30 -0700 Subject: [PATCH 21/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/9e8d67501574 Author: Douglas Sherk Desc: Merge pull request #30551 from DouglasSherk/1173231-bzlite Bug 1173231 - Switch BzLite to v2, swap around some other apps. r=daleharvey ======== https://hg.mozilla.org/integration/gaia-central/rev/876e26e87a78 Author: Doug Sherk Desc: Bug 1173231 - Switch BzLite to v2, swap around some other apps. r=daleharvey --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 4b609b5d416a..b7c1836bd617 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "d5de92b9dc1cf9cfe37cc79de4c69598b61d9b5d", + "git_revision": "c3b15607bfdc53fd4fb7ff1d26b39ba38b3f1b41", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "e81e401cca583980c24008806e162201c440502b", + "revision": "9e8d675015746274cca5257db15fdcc5fb50e246", "repo_path": "integration/gaia-central" } From 185936c5c5c8db73bed3ca7cca5d432414ba738c Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 16:12:51 -0700 Subject: [PATCH 22/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 19cdcc034364..631cd4428b26 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 51d2ec945376..15243d4c32c6 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 268f16d73c05..bec6402cedb0 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 13a8917fe250..0b6f07ac43c8 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 067124bc2f62..cb63726f091c 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index fd0d46ac7247..843c4d91a483 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 268f16d73c05..bec6402cedb0 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 3278d55f7b10..502a3afe1ccd 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 1410d5f5d083..b415c041e1b1 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 635ebdefc135..880b1ced680a 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 0f49f8c00f6f582fb0b4ca22028a22aeba4bbc12 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 16:56:26 -0700 Subject: [PATCH 23/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/30a94c416c3d Author: Ghislain 'Aus' Lacroix Desc: Merge pull request #30556 from nullaus/bug1173540 Bug 1173540 - Add sanity check to gaia_marionette_retry. r=gaye ======== https://hg.mozilla.org/integration/gaia-central/rev/c04c5f85bbd3 Author: Ghislain 'Aus' Lacroix Desc: Bug 1173540 - Add sanity check to gaia_marionette_retry. r=gaye --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index b7c1836bd617..294ad83c7061 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "c3b15607bfdc53fd4fb7ff1d26b39ba38b3f1b41", + "git_revision": "ea3596e28f503e7c606effc0848f48b1151a819e", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "9e8d675015746274cca5257db15fdcc5fb50e246", + "revision": "30a94c416c3df3976a3ceb63cfa1668df169e844", "repo_path": "integration/gaia-central" } From 6eabb25b0add22e657c0b04e73ff7a44d746a9c1 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 16:58:21 -0700 Subject: [PATCH 24/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 631cd4428b26..d7a98ecf6182 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 15243d4c32c6..c63fd2157d4e 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 bec6402cedb0..7f7e56f413fb 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 0b6f07ac43c8..910068c839f0 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 cb63726f091c..f80db96a7dca 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index 843c4d91a483..c5a8d23f4cec 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index bec6402cedb0..7f7e56f413fb 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 502a3afe1ccd..9fe05a4a8a67 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index b415c041e1b1..f317ce168d37 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 880b1ced680a..4e661ed53eed 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 22e817b9e03229eb68ffcc0072c877e8a2e2509a Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 17:35:28 -0700 Subject: [PATCH 25/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/9370bc843fde Author: Douglas Sherk Desc: Merge pull request #30558 from DouglasSherk/1171556-workaround Bug 1171556 - [Spark] Enable MTP by default, workaround for feature detection. r=dhylands ======== https://hg.mozilla.org/integration/gaia-central/rev/dc1720f7132b Author: Doug Sherk Desc: Bug 1171556 - [Spark] Enable MTP by default, workaround for feature detection. r=dhylands --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 294ad83c7061..100c42cf814b 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "ea3596e28f503e7c606effc0848f48b1151a819e", + "git_revision": "05240fe5bcd785eab4f009c90527c87040503812", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "30a94c416c3df3976a3ceb63cfa1668df169e844", + "revision": "9370bc843fde15721de3ef71286be6b42f2efd61", "repo_path": "integration/gaia-central" } From 087bebee9601ee39b4f7f6eb213a99bea69681aa Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 17:37:25 -0700 Subject: [PATCH 26/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index d7a98ecf6182..833ffdf959c8 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index c63fd2157d4e..30c6373b4de0 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 7f7e56f413fb..8fed2ceafb8a 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 910068c839f0..cdfa857e3099 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 f80db96a7dca..4b138f120c5d 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index c5a8d23f4cec..ee9111cc2518 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 7f7e56f413fb..8fed2ceafb8a 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 9fe05a4a8a67..60eecb8ffd5f 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index f317ce168d37..675eb42b58d3 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 4e661ed53eed..066305d4502d 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 45411373232ec80073509d3cb070ba3ee8ae3560 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 18:15:25 -0700 Subject: [PATCH 27/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ======== https://hg.mozilla.org/integration/gaia-central/rev/00338153b5db Author: Hubert Figuière Desc: Merge pull request #30163 from hfiguiere/bug1164148 Bug 1164148 - Make sure the progress doesn't show -0:01 if we don't have a duration. ======== https://hg.mozilla.org/integration/gaia-central/rev/d1c719c9ad40 Author: Hubert Figuière Desc: Bug 1164148 - Make sure the progress doesn't show -0:01 if we don't have a duration. Also this.seekBar.min doesn't exist, so remove it. --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 100c42cf814b..5afd0bfeb01c 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "05240fe5bcd785eab4f009c90527c87040503812", + "git_revision": "47ebdd5d942e980bfac9fe097d28ffdd7645a107", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "9370bc843fde15721de3ef71286be6b42f2efd61", + "revision": "00338153b5dbd96f41f596f46a0642c2d044bcce", "repo_path": "integration/gaia-central" } From 39c77ed808aeddcd1fa2babef12a9bfcc942c1f3 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 18:17:20 -0700 Subject: [PATCH 28/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 4 ++-- b2g/config/dolphin/sources.xml | 4 ++-- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 4 ++-- b2g/config/emulator-kk/sources.xml | 4 ++-- b2g/config/emulator-l/sources.xml | 4 ++-- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 4 ++-- b2g/config/nexus-4/sources.xml | 4 ++-- b2g/config/nexus-5-l/sources.xml | 4 ++-- 10 files changed, 18 insertions(+), 18 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 833ffdf959c8..cb169d9d52b2 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 30c6373b4de0..4f4bf8b7daa8 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 8fed2ceafb8a..bd8e43c11eee 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 cdfa857e3099..0d8bb64cc9ae 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,10 +17,10 @@ - + - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 4b138f120c5d..c3bd74e728c8 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/emulator-l/sources.xml b/b2g/config/emulator-l/sources.xml index ee9111cc2518..63897ecb68f2 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 8fed2ceafb8a..bd8e43c11eee 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 60eecb8ffd5f..857abda27cbd 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 675eb42b58d3..8f663d4dde9e 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,10 +17,10 @@ - + - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 066305d4502d..85e2123afa0f 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@ - + From f5cca86bcb4f4a2f263225903a25f9cb64b47519 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Thu, 11 Jun 2015 18:23:26 -0700 Subject: [PATCH 29/56] Bug 1174046 - Fix PLDHashTable::Iterator in chaos mode again. r=froydnj, a=philor CLOSED TREE If you use PLDHashTable::Iterator in chaos mode with a table with zero capacity, a |% 0| operation takes place in randomUint32LessThan. This change avoids that. --- mfbt/ChaosMode.h | 1 + xpcom/glue/pldhash.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mfbt/ChaosMode.h b/mfbt/ChaosMode.h index 9378f6651548..ca943a1e76f5 100644 --- a/mfbt/ChaosMode.h +++ b/mfbt/ChaosMode.h @@ -81,6 +81,7 @@ public: */ static uint32_t randomUint32LessThan(uint32_t aBound) { + MOZ_ASSERT(aBound != 0); return uint32_t(rand()) % aBound; } }; diff --git a/xpcom/glue/pldhash.cpp b/xpcom/glue/pldhash.cpp index ac3f080d79f6..c7f22d837362 100644 --- a/xpcom/glue/pldhash.cpp +++ b/xpcom/glue/pldhash.cpp @@ -910,7 +910,7 @@ PLDHashTable::Iterator::Iterator(const PLDHashTable* aTable) // mEntryAddr, respectively. uint32_t capacity = mTable->Capacity(); - if (ChaosMode::isActive(ChaosMode::HashTableIteration)) { + if (ChaosMode::isActive(ChaosMode::HashTableIteration) && capacity > 0) { // Start iterating at a random point in the hashtable. It would be // even more chaotic to iterate in fully random order, but that's a lot // more work. From db13a196fc1ea0cb2e043b5ff125cba49b6e7c0b Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 19:05:26 -0700 Subject: [PATCH 30/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/3ba1ad9491a0 Author: Gareth Aye Desc: Merge pull request #30441 from chenpighead/Bug1168326_PR_to_jsmarionette Bug 1168326 - Enable sandbox option for marionette.client.executeScript in jsmarionette. ======== https://hg.mozilla.org/integration/gaia-central/rev/4973bfa49e88 Author: Jeremy Chen Desc: Bug 1168326 - Enable sandbox option for marionette.client.executeScript in jsmarionette. --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 5afd0bfeb01c..3ad53948ccc8 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "47ebdd5d942e980bfac9fe097d28ffdd7645a107", + "git_revision": "37868e7816290f1c92e180fda4dad6f5c0cee855", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "00338153b5dbd96f41f596f46a0642c2d044bcce", + "revision": "3ba1ad9491a08a8617c3475078870528b8be4eae", "repo_path": "integration/gaia-central" } From 5df57faa1157fb96936a706c91ac78a697f9c1d4 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 19:07:23 -0700 Subject: [PATCH 31/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index cb169d9d52b2..54508a977de0 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 4f4bf8b7daa8..30e740fe502b 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 bd8e43c11eee..db027a11acaf 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 0d8bb64cc9ae..550f329dde84 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 c3bd74e728c8..9620084bab6d 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index 63897ecb68f2..da2bb3c99ecb 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index bd8e43c11eee..db027a11acaf 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 857abda27cbd..0481fa5d2a9d 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 8f663d4dde9e..8037eede3c4f 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 85e2123afa0f..93d2f78588b4 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 1987adc406ab23491d37e0d8f69e0bc6c0a3a566 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 20:10:32 -0700 Subject: [PATCH 32/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ======== https://hg.mozilla.org/integration/gaia-central/rev/87138d022b62 Author: Douglas Sherk Desc: Merge pull request #30542 from yzen/bug-1156786-ux-refinements Bug 1156786 - ux refinements from Amy also removed bugzilla achieveme… ======== https://hg.mozilla.org/integration/gaia-central/rev/5173c7b34971 Author: Yura Zenevich Desc: Bug 1156786 - ux refinements from Amy also removed bugzilla achievement from the list. --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 3ad53948ccc8..d53c18222ae4 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "37868e7816290f1c92e180fda4dad6f5c0cee855", + "git_revision": "d7dfdab49ec2346e61b221f85ce08726aabc3634", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "3ba1ad9491a08a8617c3475078870528b8be4eae", + "revision": "87138d022b62a8d763f9fb7469b7058f293d072f", "repo_path": "integration/gaia-central" } From d008ebfae404a964499b42e3dc70220b14f51210 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 20:12:53 -0700 Subject: [PATCH 33/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 54508a977de0..bc28ace67478 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 30e740fe502b..263acd959404 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 db027a11acaf..9d8f220418a4 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 550f329dde84..18fe0fa7d5e8 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 9620084bab6d..90fdc6b1d5d1 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index da2bb3c99ecb..2b5c0e57cbf2 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index db027a11acaf..9d8f220418a4 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 0481fa5d2a9d..19ecc768fe0e 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 8037eede3c4f..fb3a0d956a2d 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 93d2f78588b4..13764e2eeb48 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 1b4b75e31ec1027ae022db15fa5b1793ca8e5f6c Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 21:39:09 -0700 Subject: [PATCH 34/56] Bumping gaia.json for 1 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/873f6bc49af5 Author: spark-bot Desc: Bump Spark apps --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index d53c18222ae4..f77922ed655f 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "d7dfdab49ec2346e61b221f85ce08726aabc3634", + "git_revision": "fcd90a021a58e3630e4dd64f581c15f9f1875921", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "87138d022b62a8d763f9fb7469b7058f293d072f", + "revision": "873f6bc49af516742afc95bd62352b81f5dc308d", "repo_path": "integration/gaia-central" } From 6d2bf26f5e21d815f143d0414cd04218c8b57112 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 21:39:29 -0700 Subject: [PATCH 35/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index bc28ace67478..728f2a482212 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 263acd959404..afb1ac729cb3 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 9d8f220418a4..a056000e68d7 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 18fe0fa7d5e8..8cdd64a1c3bf 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 90fdc6b1d5d1..10bd801e8bf1 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index 2b5c0e57cbf2..00ebb31a3d5c 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 9d8f220418a4..a056000e68d7 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 19ecc768fe0e..4ca11899764b 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index fb3a0d956a2d..2bafdbca38fc 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 13764e2eeb48..f91bcafd9fe7 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From f00e093f91468c24ac30c0c17b2377aa6e5240f4 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 22:45:13 -0700 Subject: [PATCH 36/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/c50686e24f77 Author: albertopq Desc: Merge pull request #30554 from albertopq/1109580-intermitent-icc2 Bug 1109580 - Fixing intermitent icc test r=testonly ======== https://hg.mozilla.org/integration/gaia-central/rev/dd98e25ddec1 Author: albertopq Desc: Bug 1109580 - Fixing intermitent icc test --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index f77922ed655f..d573c4320e28 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "fcd90a021a58e3630e4dd64f581c15f9f1875921", + "git_revision": "403a9cdee1db7b199b16475af7c5f28e40254cc4", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "873f6bc49af516742afc95bd62352b81f5dc308d", + "revision": "c50686e24f77bf7adb00de969619c84d5e213c88", "repo_path": "integration/gaia-central" } From 6853f3a3293399a9f0cb9b4201d057a1aac4f1af Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 22:47:08 -0700 Subject: [PATCH 37/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 728f2a482212..1e73d5f35e93 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index afb1ac729cb3..eb60a4572253 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 a056000e68d7..6f99019911cb 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 8cdd64a1c3bf..57cfda1a64f2 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 10bd801e8bf1..1044bd10f0ff 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index 00ebb31a3d5c..3d4c9437464a 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index a056000e68d7..6f99019911cb 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 4ca11899764b..e402b99329d3 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 2bafdbca38fc..82af88fabfc3 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index f91bcafd9fe7..def4e1c9f871 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 84f26c6930685f3561e0c764bdcc792dcae46f55 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 23:05:23 -0700 Subject: [PATCH 38/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/d413a0477906 Author: George Desc: Merge pull request #30546 from cctuan/1169470-2 Bug 1169470 - we should remove the old dogfood apps ======== https://hg.mozilla.org/integration/gaia-central/rev/7ec49eec745c Author: cctuan Desc: Bug 1169470 - we should remove the old dogfood apps --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index d573c4320e28..4cf149d01212 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "403a9cdee1db7b199b16475af7c5f28e40254cc4", + "git_revision": "5804506d493e1eb1546f25192a329acb71834e7c", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "c50686e24f77bf7adb00de969619c84d5e213c88", + "revision": "d413a047790645470f92d2a99853ddfd4ebc4014", "repo_path": "integration/gaia-central" } From 8f2020229031354af53ab70ee457a08f8ea8e9c1 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 11 Jun 2015 23:07:19 -0700 Subject: [PATCH 39/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 1e73d5f35e93..63c08f14e24c 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index eb60a4572253..c4feefed9f45 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 6f99019911cb..725e8e092622 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 57cfda1a64f2..6a824b703812 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 1044bd10f0ff..2809ef8844bf 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index 3d4c9437464a..633ed53acb5f 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 6f99019911cb..725e8e092622 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 e402b99329d3..9e0c93d058e1 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 82af88fabfc3..efadc3368405 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index def4e1c9f871..d91c3ef1e1e4 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From ff308d4e3aae079ac123ea812b80fbfe307e2562 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 01:40:25 -0700 Subject: [PATCH 40/56] Bumping gaia.json for 1 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/97694d96d107 Author: spark-bot Desc: Bump Spark apps --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 4cf149d01212..177ee252013f 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "5804506d493e1eb1546f25192a329acb71834e7c", + "git_revision": "14c0c8eba35f2c838d0cef68cf3b1bf4d29678d5", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "d413a047790645470f92d2a99853ddfd4ebc4014", + "revision": "97694d96d10795e27f8a02e6726b29ed400d5eb0", "repo_path": "integration/gaia-central" } From 1625d56b7513f28515e9862c2324173c25a23620 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 01:42:46 -0700 Subject: [PATCH 41/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 63c08f14e24c..0a219f8b9680 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index c4feefed9f45..aec37d847fe2 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 725e8e092622..4265009bfcd4 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 6a824b703812..a13f1578e405 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 2809ef8844bf..b4f291253bc0 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index 633ed53acb5f..a8dd2d63b1ff 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 725e8e092622..4265009bfcd4 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 9e0c93d058e1..136e4d549c65 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index efadc3368405..c079c8fa54c6 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index d91c3ef1e1e4..bd4e0fd7d29c 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From ed6217ca25a5f1b4cd0511bbd4a5238d0b8e67a0 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 02:30:23 -0700 Subject: [PATCH 42/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ======== https://hg.mozilla.org/integration/gaia-central/rev/79b5fb16d663 Author: Etienne Segonzac Desc: Merge pull request #30447 from etiennesegonzac/bug-1164123 Bug 1164123 - meta theme-color should match the gaia-header theme col… ======== https://hg.mozilla.org/integration/gaia-central/rev/cba5fe73fda7 Author: Etienne Segonzac Desc: Bug 1164123 - meta theme-color should match the gaia-header theme color when possible r=gmarty r=gaye for calendar r=francisco for contacts r=gsvelto for dialer r=dkuo for music r=arthurchen for settings r=julienw for sms --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 177ee252013f..ded2203af71d 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "14c0c8eba35f2c838d0cef68cf3b1bf4d29678d5", + "git_revision": "830eb9552419fbf5ed743fb085c1cc82f0bcbdde", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "97694d96d10795e27f8a02e6726b29ed400d5eb0", + "revision": "79b5fb16d66390791c3f49d9c0b167b1c14a2142", "repo_path": "integration/gaia-central" } From adecded791e8eadbb5181d5198efe952c99a6eba Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 02:32:18 -0700 Subject: [PATCH 43/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 0a219f8b9680..70ca5a033cdc 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index aec37d847fe2..0eeaa2a15491 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 4265009bfcd4..785d9517e7c4 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 a13f1578e405..1aa9fca28fad 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 b4f291253bc0..5f18a0c5a4ea 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index a8dd2d63b1ff..1f54a90f1dbe 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 4265009bfcd4..785d9517e7c4 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 136e4d549c65..fa11eb72dbe8 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index c079c8fa54c6..2e8eb4b70c7d 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index bd4e0fd7d29c..d775c090254d 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From e89a0313a27dde5bf273358cb6911cb3624f9485 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 02:38:14 -0700 Subject: [PATCH 44/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 70ca5a033cdc..17d143ab9371 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -122,7 +122,7 @@ - + From d0164742b7730b2971ca37eb22dd094fe43b564a Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 04:18:19 -0700 Subject: [PATCH 45/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator-l/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 17d143ab9371..221b69d75065 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 0eeaa2a15491..bddd44f4bbf3 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 1aa9fca28fad..c2d0f1917672 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -20,7 +20,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 5f18a0c5a4ea..8fe971234ec1 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/emulator-l/sources.xml b/b2g/config/emulator-l/sources.xml index 1f54a90f1dbe..6a089133f29d 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index fa11eb72dbe8..04e812fb1cd5 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 2e8eb4b70c7d..9400bdfa4fd7 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -20,7 +20,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index d775c090254d..e2af891f14cf 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -23,7 +23,7 @@ - + From addfc97036a3ac523d0ea3704fd27a1c04131da1 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 05:25:10 -0700 Subject: [PATCH 46/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/4b259fb7f630 Author: Johan Lorenzo Desc: Merge pull request #30236 from JohanLorenzo/bug-1168118 Bug 1168118 - Migrate test_sms_contact_input_validation.py to Gij ======== https://hg.mozilla.org/integration/gaia-central/rev/d078636a5842 Author: Johan Lorenzo Desc: Bug 1168118 - Migrate test_sms_contact_input_validation.py to Gij --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index ded2203af71d..21d1f4e3c3cd 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "830eb9552419fbf5ed743fb085c1cc82f0bcbdde", + "git_revision": "16729c45da3d3ed9640d6ae323bdc0080ad5ddc9", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "79b5fb16d66390791c3f49d9c0b167b1c14a2142", + "revision": "4b259fb7f630b77cba252a0e05e0697370d16879", "repo_path": "integration/gaia-central" } From edaa4e5efb604e35b39e31024bef0a6f48122279 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 05:27:05 -0700 Subject: [PATCH 47/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 221b69d75065..eeb29ed367d0 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index bddd44f4bbf3..dae013a42a65 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 785d9517e7c4..8df3eab80d5f 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 c2d0f1917672..9e76c4f4b57c 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 8fe971234ec1..4f986ef8d9e7 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index 6a089133f29d..e2cb75d06073 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 785d9517e7c4..8df3eab80d5f 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 04e812fb1cd5..49afdc8d58ca 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 9400bdfa4fd7..0f8d60ce03bb 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index e2af891f14cf..3ab9f573687c 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 656897d8bb08095e499e480e83b4fb14b91859d1 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 06:50:14 -0700 Subject: [PATCH 48/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ======== https://hg.mozilla.org/integration/gaia-central/rev/b1bd47066ec6 Author: Yura Zenevich Desc: Merge pull request #30550 from yzen/bug-1173816 Bug 1173816 - adding reboot/restart notification if addon requires it… ======== https://hg.mozilla.org/integration/gaia-central/rev/b737ae3b5fe3 Author: Yura Zenevich Desc: Bug 1173816 - adding reboot/restart notification if addon requires it upon deletion. --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 21d1f4e3c3cd..00953b0b6bac 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "16729c45da3d3ed9640d6ae323bdc0080ad5ddc9", + "git_revision": "9be8b8637a3cc5ed52aa12838d864bef2f460122", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "4b259fb7f630b77cba252a0e05e0697370d16879", + "revision": "b1bd47066ec68491792faff823f31fd3818f4f9c", "repo_path": "integration/gaia-central" } From 1a72eaf25826441429b8b05347faac961701543f Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 06:52:10 -0700 Subject: [PATCH 49/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index eeb29ed367d0..5855e3abe14d 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index dae013a42a65..23c6bf9f6101 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 8df3eab80d5f..0c0bed8abb20 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 9e76c4f4b57c..1f307aa4ba8f 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 4f986ef8d9e7..434713bf8ea1 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index e2cb75d06073..ee4a07011aee 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 8df3eab80d5f..0c0bed8abb20 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 49afdc8d58ca..12b029b2a63a 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 0f8d60ce03bb..818ce32d348c 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 3ab9f573687c..dcd93a24835b 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From 91e4ce6e741484d7f528a205f3744feaba747607 Mon Sep 17 00:00:00 2001 From: Gregory Arndt Date: Fri, 12 Jun 2015 08:42:18 -0500 Subject: [PATCH 50/56] Bug 1174157 - Update dsds tests to request 2 sim devices r=wcosta --HG-- extra : rebase_source : c07cc48012bf33d455a07ce1753fc0aa778298f4 --- .../tasks/tests/flame_kk_gaia_ui_test_functional_dsds.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/taskcluster/tasks/tests/flame_kk_gaia_ui_test_functional_dsds.yml b/testing/taskcluster/tasks/tests/flame_kk_gaia_ui_test_functional_dsds.yml index 10bf2f8e2547..be6eadda5ac2 100644 --- a/testing/taskcluster/tasks/tests/flame_kk_gaia_ui_test_functional_dsds.yml +++ b/testing/taskcluster/tasks/tests/flame_kk_gaia_ui_test_functional_dsds.yml @@ -13,7 +13,7 @@ task: phone: type: 'flame' memory: '319' - sims: '1' + sims: '2' build: '{{{img_url}}}' features: testdroidProxy: true From 9833d8ecc6fa77d42d116b93658a17a627c24f2e Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 07:05:25 -0700 Subject: [PATCH 51/56] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/b3fe414049b7 Author: Wilson Page Desc: Merge pull request #30545 from wilsonpage/1173836 Bug 1173836 - [quick-settings] Icons aren't vertically aligned ======== https://hg.mozilla.org/integration/gaia-central/rev/f9b290ace29f Author: Wilson Page Desc: Bug 1173836 - [quick-settings] Icons aren't vertically aligned --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 00953b0b6bac..6116a0938d06 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "9be8b8637a3cc5ed52aa12838d864bef2f460122", + "git_revision": "26f74fb58e573616912ddbc11464f88e33afea63", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "b1bd47066ec68491792faff823f31fd3818f4f9c", + "revision": "b3fe414049b7a660fe94a79a00b133cad77396ee", "repo_path": "integration/gaia-central" } From c64976d18f739b860bf4cc7c1f9b2838e166f765 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 07:07:20 -0700 Subject: [PATCH 52/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 5855e3abe14d..2961fe7f3ac4 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 23c6bf9f6101..f3ddc2d307c5 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 0c0bed8abb20..88b2ed75399b 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 1f307aa4ba8f..19f94a7ddd71 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 434713bf8ea1..f2450bc37f23 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index ee4a07011aee..e9ccba194b82 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 0c0bed8abb20..88b2ed75399b 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 12b029b2a63a..cb2e364b3e52 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 818ce32d348c..c485cf8fa678 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index dcd93a24835b..39cd4dd3ca6b 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - + From b47876dbcac4c9bcd52854ec565087867762db43 Mon Sep 17 00:00:00 2001 From: Bruce Sun Date: Fri, 12 Jun 2015 10:44:57 +0800 Subject: [PATCH 53/56] Bug 1161945 - Fix empty characteristics and descriptors after searching services. f=elin, r=jocelyn --- .../bluedroid/BluetoothGattManager.cpp | 38 ++++---- dom/bluetooth/bluetooth2/BluetoothGatt.cpp | 77 +++++++++++++++++ dom/bluetooth/bluetooth2/BluetoothGatt.h | 44 ++++++++++ .../BluetoothGattCharacteristic.cpp | 17 ++-- .../bluetooth2/BluetoothGattCharacteristic.h | 7 +- .../bluetooth2/BluetoothGattService.cpp | 86 +++++-------------- .../bluetooth2/BluetoothGattService.h | 35 +++++--- 7 files changed, 198 insertions(+), 106 deletions(-) diff --git a/dom/bluetooth/bluedroid/BluetoothGattManager.cpp b/dom/bluetooth/bluedroid/BluetoothGattManager.cpp index 146f7bb397fc..4c8ef57a7283 100644 --- a/dom/bluetooth/bluedroid/BluetoothGattManager.cpp +++ b/dom/bluetooth/bluedroid/BluetoothGattManager.cpp @@ -1642,13 +1642,15 @@ BluetoothGattManager::GetCharacteristicNotification( aCharId, new DiscoverResultHandler(client)); } else { // all characteristics of this service are discovered - // Notify BluetoothGattService to create characteristics then proceed - nsString path; - GeneratePathFromGattId(aServiceId.mId, path); + // Notify BluetoothGatt to make BluetoothGattService create characteristics + // then proceed + nsTArray values; + BT_APPEND_NAMED_VALUE(values, "serviceId", aServiceId); + BT_APPEND_NAMED_VALUE(values, "characteristics", client->mCharacteristics); bs->DistributeSignal(NS_LITERAL_STRING("CharacteristicsDiscovered"), - path, - BluetoothValue(client->mCharacteristics)); + client->mAppUuid, + BluetoothValue(values)); ProceedDiscoverProcess(client, aServiceId); } @@ -1686,13 +1688,16 @@ BluetoothGattManager::GetDescriptorNotification( aDescriptorId, new DiscoverResultHandler(client)); } else { // all descriptors of this characteristic are discovered - // Notify BluetoothGattCharacteristic to create descriptors then proceed - nsString path; - GeneratePathFromGattId(aCharId, path); + // Notify BluetoothGatt to make BluetoothGattCharacteristic create + // descriptors then proceed + nsTArray values; + BT_APPEND_NAMED_VALUE(values, "serviceId", aServiceId); + BT_APPEND_NAMED_VALUE(values, "characteristicId", aCharId); + BT_APPEND_NAMED_VALUE(values, "descriptors", client->mDescriptors); bs->DistributeSignal(NS_LITERAL_STRING("DescriptorsDiscovered"), - path, - BluetoothValue(client->mDescriptors)); + client->mAppUuid, + BluetoothValue(values)); client->mDescriptors.Clear(); ProceedDiscoverProcess(client, aServiceId); @@ -1729,13 +1734,16 @@ BluetoothGattManager::GetIncludedServiceNotification( aIncludedServId, new DiscoverResultHandler(client)); } else { // all included services of this service are discovered - // Notify BluetoothGattService to create included services - nsString path; - GeneratePathFromGattId(aServiceId.mId, path); + // Notify BluetoothGatt to make BluetoothGattService create included + // services + nsTArray values; + BT_APPEND_NAMED_VALUE(values, "serviceId", aServiceId); + BT_APPEND_NAMED_VALUE(values, "includedServices", + client->mIncludedServices); bs->DistributeSignal(NS_LITERAL_STRING("IncludedServicesDiscovered"), - path, - BluetoothValue(client->mIncludedServices)); + client->mAppUuid, + BluetoothValue(values)); client->mIncludedServices.Clear(); // Start to discover characteristics of this service diff --git a/dom/bluetooth/bluetooth2/BluetoothGatt.cpp b/dom/bluetooth/bluetooth2/BluetoothGatt.cpp index e7c71ac3b2c8..9a13c40de4d5 100644 --- a/dom/bluetooth/bluetooth2/BluetoothGatt.cpp +++ b/dom/bluetooth/bluetooth2/BluetoothGatt.cpp @@ -281,6 +281,77 @@ BluetoothGatt::HandleServicesDiscovered(const BluetoothValue& aValue) BluetoothGattBinding::ClearCachedServicesValue(this); } +void +BluetoothGatt::HandleIncludedServicesDiscovered(const BluetoothValue& aValue) +{ + MOZ_ASSERT(aValue.type() == BluetoothValue::TArrayOfBluetoothNamedValue); + + const InfallibleTArray& values = + aValue.get_ArrayOfBluetoothNamedValue(); + MOZ_ASSERT(values.Length() == 2); // ServiceId, IncludedServices + MOZ_ASSERT(values[0].name().EqualsLiteral("serviceId")); + MOZ_ASSERT(values[0].value().type() == + BluetoothValue::TBluetoothGattServiceId); + MOZ_ASSERT(values[1].name().EqualsLiteral("includedServices")); + MOZ_ASSERT(values[1].value().type() == + BluetoothValue::TArrayOfBluetoothGattServiceId); + + size_t index = mServices.IndexOf( + values[0].value().get_BluetoothGattServiceId()); + NS_ENSURE_TRUE_VOID(index != mServices.NoIndex); + + nsRefPtr service = mServices.ElementAt(index); + service->AssignIncludedServices( + values[1].value().get_ArrayOfBluetoothGattServiceId()); +} + +void +BluetoothGatt::HandleCharacteristicsDiscovered(const BluetoothValue& aValue) +{ + MOZ_ASSERT(aValue.type() == BluetoothValue::TArrayOfBluetoothNamedValue); + + const InfallibleTArray& values = + aValue.get_ArrayOfBluetoothNamedValue(); + MOZ_ASSERT(values.Length() == 2); // ServiceId, Characteristics + MOZ_ASSERT(values[0].name().EqualsLiteral("serviceId")); + MOZ_ASSERT(values[0].value().type() == BluetoothValue::TBluetoothGattServiceId); + MOZ_ASSERT(values[1].name().EqualsLiteral("characteristics")); + MOZ_ASSERT(values[1].value().type() == + BluetoothValue::TArrayOfBluetoothGattCharAttribute); + + size_t index = mServices.IndexOf( + values[0].value().get_BluetoothGattServiceId()); + NS_ENSURE_TRUE_VOID(index != mServices.NoIndex); + + nsRefPtr service = mServices.ElementAt(index); + service->AssignCharacteristics( + values[1].value().get_ArrayOfBluetoothGattCharAttribute()); +} + +void +BluetoothGatt::HandleDescriptorsDiscovered(const BluetoothValue& aValue) +{ + MOZ_ASSERT(aValue.type() == BluetoothValue::TArrayOfBluetoothNamedValue); + + const InfallibleTArray& values = + aValue.get_ArrayOfBluetoothNamedValue(); + MOZ_ASSERT(values.Length() == 3); // ServiceId, CharacteristicId, Descriptors + MOZ_ASSERT(values[0].name().EqualsLiteral("serviceId")); + MOZ_ASSERT(values[0].value().type() == BluetoothValue::TBluetoothGattServiceId); + MOZ_ASSERT(values[1].name().EqualsLiteral("characteristicId")); + MOZ_ASSERT(values[1].value().type() == BluetoothValue::TBluetoothGattId); + MOZ_ASSERT(values[2].name().EqualsLiteral("descriptors")); + MOZ_ASSERT(values[2].value().type() == BluetoothValue::TArrayOfBluetoothGattId); + + size_t index = mServices.IndexOf( + values[0].value().get_BluetoothGattServiceId()); + NS_ENSURE_TRUE_VOID(index != mServices.NoIndex); + + nsRefPtr service = mServices.ElementAt(index); + service->AssignDescriptors(values[1].value().get_BluetoothGattId(), + values[2].value().get_ArrayOfBluetoothGattId()); +} + void BluetoothGatt::HandleCharacteristicChanged(const BluetoothValue& aValue) { @@ -348,6 +419,12 @@ BluetoothGatt::Notify(const BluetoothSignal& aData) } mDiscoveringServices = false; + } else if (aData.name().EqualsLiteral("IncludedServicesDiscovered")) { + HandleIncludedServicesDiscovered(v); + } else if (aData.name().EqualsLiteral("CharacteristicsDiscovered")) { + HandleCharacteristicsDiscovered(v); + } else if (aData.name().EqualsLiteral("DescriptorsDiscovered")) { + HandleDescriptorsDiscovered(v); } else if (aData.name().EqualsLiteral(GATT_CHARACTERISTIC_CHANGED_ID)) { HandleCharacteristicChanged(v); } else { diff --git a/dom/bluetooth/bluetooth2/BluetoothGatt.h b/dom/bluetooth/bluetooth2/BluetoothGatt.h index c897c604ad93..2f494f2a3ac7 100644 --- a/dom/bluetooth/bluetooth2/BluetoothGatt.h +++ b/dom/bluetooth/bluetooth2/BluetoothGatt.h @@ -96,6 +96,50 @@ private: */ void HandleServicesDiscovered(const BluetoothValue& aValue); + /** + * Add newly discovered GATT included services into mIncludedServices of + * BluetoothGattService and update the cache value of mIncludedServices. + * + * @param aValue [in] BluetoothValue which contains an array of + * BluetoothNamedValue. There are exact two elements in + * the array. The first element uses 'serviceId' as the + * name and uses BluetoothGattServiceId as the value. The + * second element uses 'includedServices' as the name and + * uses an array of BluetoothGattServiceId of all + * discovered included services as the value. + */ + void HandleIncludedServicesDiscovered(const BluetoothValue& aValue); + + /** + * Add newly discovered GATT characteristics into mCharacteristics of + * BluetoothGattService and update the cache value of mCharacteristics. + * + * @param aValue [in] BluetoothValue which contains an array of + * BluetoothNamedValue. There are exact two elements in + * the array. The first element uses 'serviceId' as the + * name and uses BluetoothGattServiceId as the value. The + * second element uses 'characteristics' as the name and + * uses an array of BluetoothGattCharAttribute of all + * discovered characteristics as the value. + */ + void HandleCharacteristicsDiscovered(const BluetoothValue& aValue); + + /** + * Add newly discovered GATT descriptors into mDescriptors of + * BluetoothGattCharacteristic and update the cache value of mDescriptors. + * + * @param aValue [in] BluetoothValue which contains an array of + * BluetoothNamedValue. There are exact three elements in + * the array. The first element uses 'serviceId' as the + * name and uses BluetoothGattServiceId as the value. The + * second element uses 'characteristicId' as the name and + * uses BluetoothGattId as the value. The third element + * uses 'descriptors' as the name and uses an array of + * BluetoothGattId of all discovered descriptors as the + * value. + */ + void HandleDescriptorsDiscovered(const BluetoothValue& aValue); + /** * The value of a GATT characteristic has changed. In the mean time, the * cached value of this GATT characteristic has already been updated. An diff --git a/dom/bluetooth/bluetooth2/BluetoothGattCharacteristic.cpp b/dom/bluetooth/bluetooth2/BluetoothGattCharacteristic.cpp index 6ffde7262f26..11546d30a4c8 100644 --- a/dom/bluetooth/bluetooth2/BluetoothGattCharacteristic.cpp +++ b/dom/bluetooth/bluetooth2/BluetoothGattCharacteristic.cpp @@ -142,18 +142,13 @@ BluetoothGattCharacteristic::StopNotifications(ErrorResult& aRv) } void -BluetoothGattCharacteristic::HandleDescriptorsDiscovered( - const BluetoothValue& aValue) +BluetoothGattCharacteristic::AssignDescriptors( + const nsTArray& aDescriptorIds) { - MOZ_ASSERT(aValue.type() == BluetoothValue::TArrayOfBluetoothGattId); - - const InfallibleTArray& descriptorIds = - aValue.get_ArrayOfBluetoothGattId(); - mDescriptors.Clear(); - for (uint32_t i = 0; i < descriptorIds.Length(); i++) { + for (uint32_t i = 0; i < aDescriptorIds.Length(); i++) { mDescriptors.AppendElement(new BluetoothGattDescriptor( - GetParentObject(), this, descriptorIds[i])); + GetParentObject(), this, aDescriptorIds[i])); } BluetoothGattCharacteristicBinding::ClearCachedDescriptorsValue(this); @@ -175,9 +170,7 @@ BluetoothGattCharacteristic::Notify(const BluetoothSignal& aData) NS_ENSURE_TRUE_VOID(mSignalRegistered); BluetoothValue v = aData.value(); - if (aData.name().EqualsLiteral("DescriptorsDiscovered")) { - HandleDescriptorsDiscovered(v); - } else if (aData.name().EqualsLiteral("CharacteristicValueUpdated")) { + if (aData.name().EqualsLiteral("CharacteristicValueUpdated")) { HandleCharacteristicValueUpdated(v); } else { BT_WARNING("Not handling GATT Characteristic signal: %s", diff --git a/dom/bluetooth/bluetooth2/BluetoothGattCharacteristic.h b/dom/bluetooth/bluetooth2/BluetoothGattCharacteristic.h index b5d197c43662..61682aea10e2 100644 --- a/dom/bluetooth/bluetooth2/BluetoothGattCharacteristic.h +++ b/dom/bluetooth/bluetooth2/BluetoothGattCharacteristic.h @@ -32,6 +32,7 @@ class BluetoothGattCharacteristic final : public nsISupports , public nsWrapperCache , public BluetoothSignalObserver { + friend class BluetoothGattService; public: NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(BluetoothGattCharacteristic) @@ -106,10 +107,10 @@ private: * Add newly discovered GATT descriptors into mDescriptors and update the * cache value of mDescriptors. * - * @param aValue [in] BluetoothValue which contains an array of - * BluetoothGattId of all discovered descriptors. + * @param aDescriptorIds [in] An array of BluetoothGattId for each descriptor + * that belongs to this characteristic. */ - void HandleDescriptorsDiscovered(const BluetoothValue& aValue); + void AssignDescriptors(const nsTArray& aDescriptorIds); /** * Update the value of this characteristic. diff --git a/dom/bluetooth/bluetooth2/BluetoothGattService.cpp b/dom/bluetooth/bluetooth2/BluetoothGattService.cpp index 50e05a6c8ead..91fd66a4f8c9 100644 --- a/dom/bluetooth/bluetooth2/BluetoothGattService.cpp +++ b/dom/bluetooth/bluetooth2/BluetoothGattService.cpp @@ -17,33 +17,10 @@ using namespace mozilla::dom; USING_BLUETOOTH_NAMESPACE -NS_IMPL_CYCLE_COLLECTION_CLASS(BluetoothGattService) - -NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(BluetoothGattService) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mOwner) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mIncludedServices) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mCharacteristics) - NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER - - /** - * Unregister the bluetooth signal handler after unlinked. - * - * This is needed to avoid ending up with exposing a deleted object to JS or - * accessing deleted objects while receiving signals from parent process - * after unlinked. Please see Bug 1138267 for detail informations. - */ - nsString path; - GeneratePathFromGattId(tmp->mServiceId.mId, path); - UnregisterBluetoothSignalHandler(path, tmp); -NS_IMPL_CYCLE_COLLECTION_UNLINK_END - -NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(BluetoothGattService) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOwner) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mIncludedServices) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCharacteristics) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS -NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END -NS_IMPL_CYCLE_COLLECTION_TRACE_WRAPPERCACHE(BluetoothGattService) +NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(BluetoothGattService, + mOwner, + mIncludedServices, + mCharacteristics) NS_IMPL_CYCLE_COLLECTING_ADDREF(BluetoothGattService) NS_IMPL_CYCLE_COLLECTING_RELEASE(BluetoothGattService) @@ -63,72 +40,49 @@ BluetoothGattService::BluetoothGattService( MOZ_ASSERT(!mAppUuid.IsEmpty()); UuidToString(mServiceId.mId.mUuid, mUuidStr); - - // Generate bluetooth signal path of this service to applications - nsString path; - GeneratePathFromGattId(mServiceId.mId, path); - RegisterBluetoothSignalHandler(path, this); } BluetoothGattService::~BluetoothGattService() { - nsString path; - GeneratePathFromGattId(mServiceId.mId, path); - UnregisterBluetoothSignalHandler(path, this); } void -BluetoothGattService::HandleIncludedServicesDiscovered( - const BluetoothValue& aValue) +BluetoothGattService::AssignIncludedServices( + const nsTArray& aServiceIds) { - MOZ_ASSERT(aValue.type() == BluetoothValue::TArrayOfBluetoothGattServiceId); - - const InfallibleTArray& includedServIds = - aValue.get_ArrayOfBluetoothGattServiceId(); - mIncludedServices.Clear(); - for (uint32_t i = 0; i < includedServIds.Length(); i++) { + for (uint32_t i = 0; i < aServiceIds.Length(); i++) { mIncludedServices.AppendElement(new BluetoothGattService( - GetParentObject(), mAppUuid, includedServIds[i])); + GetParentObject(), mAppUuid, aServiceIds[i])); } BluetoothGattServiceBinding::ClearCachedIncludedServicesValue(this); } void -BluetoothGattService::HandleCharacteristicsDiscovered( - const BluetoothValue& aValue) +BluetoothGattService::AssignCharacteristics( + const nsTArray& aCharacteristics) { - MOZ_ASSERT(aValue.type() == - BluetoothValue::TArrayOfBluetoothGattCharAttribute); - - const InfallibleTArray& characteristics = - aValue.get_ArrayOfBluetoothGattCharAttribute(); - mCharacteristics.Clear(); - for (uint32_t i = 0; i < characteristics.Length(); i++) { + for (uint32_t i = 0; i < aCharacteristics.Length(); i++) { mCharacteristics.AppendElement(new BluetoothGattCharacteristic( - GetParentObject(), this, characteristics[i])); + GetParentObject(), this, aCharacteristics[i])); } BluetoothGattServiceBinding::ClearCachedCharacteristicsValue(this); } void -BluetoothGattService::Notify(const BluetoothSignal& aData) +BluetoothGattService::AssignDescriptors( + const BluetoothGattId& aCharacteristicId, + const nsTArray& aDescriptorIds) { - BT_LOGD("[D] %s", NS_ConvertUTF16toUTF8(aData.name()).get()); - NS_ENSURE_TRUE_VOID(mSignalRegistered); + size_t index = mCharacteristics.IndexOf(aCharacteristicId); + NS_ENSURE_TRUE_VOID(index != mCharacteristics.NoIndex); - BluetoothValue v = aData.value(); - if (aData.name().EqualsLiteral("IncludedServicesDiscovered")) { - HandleIncludedServicesDiscovered(v); - } else if (aData.name().EqualsLiteral("CharacteristicsDiscovered")) { - HandleCharacteristicsDiscovered(v); - } else { - BT_WARNING("Not handling GATT Service signal: %s", - NS_ConvertUTF16toUTF8(aData.name()).get()); - } + nsRefPtr characteristic = + mCharacteristics.ElementAt(index); + characteristic->AssignDescriptors(aDescriptorIds); } JSObject* diff --git a/dom/bluetooth/bluetooth2/BluetoothGattService.h b/dom/bluetooth/bluetooth2/BluetoothGattService.h index 16eebef4c4c5..2199ff63b3da 100644 --- a/dom/bluetooth/bluetooth2/BluetoothGattService.h +++ b/dom/bluetooth/bluetooth2/BluetoothGattService.h @@ -17,13 +17,14 @@ BEGIN_BLUETOOTH_NAMESPACE +class BluetoothGatt; class BluetoothSignal; class BluetoothValue; class BluetoothGattService final : public nsISupports , public nsWrapperCache - , public BluetoothSignalObserver { + friend class BluetoothGatt; public: NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(BluetoothGattService) @@ -71,8 +72,6 @@ public: return mServiceId; } - void Notify(const BluetoothSignal& aData); // BluetoothSignalObserver - nsPIDOMWindow* GetParentObject() const { return mOwner; @@ -92,20 +91,36 @@ private: * Add newly discovered GATT included services into mIncludedServices and * update the cache value of mIncludedServices. * - * @param aValue [in] BluetoothValue which contains an array of - * BluetoothGattServiceId of all discovered included - * services. + * @param aServiceIds [in] An array of BluetoothGattServiceId for each + * included service that belongs to this service. */ - void HandleIncludedServicesDiscovered(const BluetoothValue& aValue); + void AssignIncludedServices( + const nsTArray& aServiceIds); /** * Add newly discovered GATT characteristics into mCharacteristics and * update the cache value of mCharacteristics. * - * @param aValue [in] BluetoothValue which contains an array of - * BluetoothGattId of all discovered characteristics. + * @param aCharacteristics [in] An array of BluetoothGattCharAttribute for + * each characteristic that belongs to this + * service. */ - void HandleCharacteristicsDiscovered(const BluetoothValue& aValue); + void AssignCharacteristics( + const nsTArray& aCharacteristics); + + /** + * Add newly discovered GATT descriptors into mDescriptors of + * BluetoothGattCharacteristic and update the cache value of mDescriptors. + * + * @param aCharacteristicId [in] BluetoothGattId of a characteristic that + * belongs to this service. + * @param aDescriptorIds [in] An array of BluetoothGattId for each descriptor + * that belongs to the characteristic referred by + * aCharacteristicId. + */ + void AssignDescriptors( + const BluetoothGattId& aCharacteristicId, + const nsTArray& aDescriptorIds); /**************************************************************************** * Variables From cc1d086109032730afcffb4fd47453568729f939 Mon Sep 17 00:00:00 2001 From: Rudy Lu Date: Fri, 12 Jun 2015 01:41:00 -0400 Subject: [PATCH 54/56] Bug 1162680 - Notify Keyboard.jsm to send blur event when the message manager is closed first. r=timdream --- dom/inputmethod/Keyboard.jsm | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/dom/inputmethod/Keyboard.jsm b/dom/inputmethod/Keyboard.jsm index 32cbdec3229a..c0af5e7f2579 100644 --- a/dom/inputmethod/Keyboard.jsm +++ b/dom/inputmethod/Keyboard.jsm @@ -94,6 +94,7 @@ this.Keyboard = { Services.obs.addObserver(this, 'inprocess-browser-shown', false); Services.obs.addObserver(this, 'remote-browser-shown', false); Services.obs.addObserver(this, 'oop-frameloader-crashed', false); + Services.obs.addObserver(this, 'message-manager-close', false); for (let name of this._messageNames) { ppmm.addMessageListener('Keyboard:' + name, this); @@ -107,10 +108,18 @@ this.Keyboard = { }, observe: function keyboardObserve(subject, topic, data) { - let frameLoader = subject.QueryInterface(Ci.nsIFrameLoader); - let mm = frameLoader.messageManager; + let frameLoader = null; + let mm = null; - if (topic == 'oop-frameloader-crashed') { + if (topic == 'message-manager-close') { + mm = subject; + } else { + frameLoader = subject.QueryInterface(Ci.nsIFrameLoader); + mm = frameLoader.messageManager; + } + + if (topic == 'oop-frameloader-crashed' || + topic == 'message-manager-close') { if (this.formMM == mm) { // The application has been closed unexpectingly. Let's tell the // keyboard app that the focus has been lost. @@ -290,6 +299,8 @@ this.Keyboard = { if (mm !== this.formMM) { return false; } + + this.formMM = null; } } From 84519121648e8b1de0e014c7a464e3eec88618fe Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 07:55:24 -0700 Subject: [PATCH 55/56] Bumping gaia.json for 6 gaia revision(s) a=gaia-bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ======== https://hg.mozilla.org/integration/gaia-central/rev/7dbfef98a254 Author: Sherman Chen Desc: Merge pull request #30442 from shamenchens/Bug1169508-UseInputInPromptDialog Bug 1169508 - Use input text box in prompt dialog, r=johu ======== https://hg.mozilla.org/integration/gaia-central/rev/ebddd4500bf5 Author: Sherman Chen Desc: Bug 1169508 - Use input text box in prompt dialog ======== https://hg.mozilla.org/integration/gaia-central/rev/b2421c40e287 Author: Ryan VanderMeulen Desc: Merge pull request #30544 from zbraniecki/1173828-correct-fm-performance-marks Bug 1173828 - Correct FM performance marks ======== https://hg.mozilla.org/integration/gaia-central/rev/ced1019fb469 Author: Zibi Braniecki Desc: Bug 1173828 - Correct FM performance marks ======== https://hg.mozilla.org/integration/gaia-central/rev/61b07d9931bd Author: Ryan VanderMeulen Desc: Merge pull request #30505 from rsajdok/bug#1157458 Bug 1157458 - [E-Mail][RTL] Deleting an active account shows odd e-ma… ======== https://hg.mozilla.org/integration/gaia-central/rev/6ba5ee9ac8f5 Author: Robert Sajdok Desc: Bug 1157458 - [E-Mail][RTL] Deleting an active account shows odd e-mail text alignment in confirmation dialog --- b2g/config/gaia.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 6116a0938d06..f90c90834880 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { - "git_revision": "26f74fb58e573616912ddbc11464f88e33afea63", + "git_revision": "b387bcad9bf8389580a8ae133b071053cfc9c30f", "remote": "https://git.mozilla.org/releases/gaia.git", "branch": "" }, - "revision": "b3fe414049b7a660fe94a79a00b133cad77396ee", + "revision": "7dbfef98a254a3d56b8d38e003c988f9d19771a4", "repo_path": "integration/gaia-central" } From 5e3522641aa83e386d7e3a2f0cc454015bbeeaaa Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 12 Jun 2015 07:57:21 -0700 Subject: [PATCH 56/56] Bumping manifests a=b2g-bump --- b2g/config/aries/sources.xml | 2 +- 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-l/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/nexus-5-l/sources.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/aries/sources.xml b/b2g/config/aries/sources.xml index 2961fe7f3ac4..973b18fea208 100644 --- a/b2g/config/aries/sources.xml +++ b/b2g/config/aries/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index f3ddc2d307c5..7c5d8d530678 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 88b2ed75399b..a4f09b58b5aa 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 19f94a7ddd71..613ce7c33918 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 f2450bc37f23..908af9d2f341 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-l/sources.xml b/b2g/config/emulator-l/sources.xml index e9ccba194b82..9bed28d377e4 100644 --- a/b2g/config/emulator-l/sources.xml +++ b/b2g/config/emulator-l/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 88b2ed75399b..a4f09b58b5aa 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 cb2e364b3e52..893c579324af 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index c485cf8fa678..473c3756d10c 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml index 39cd4dd3ca6b..2c7f829e11df 100644 --- a/b2g/config/nexus-5-l/sources.xml +++ b/b2g/config/nexus-5-l/sources.xml @@ -15,7 +15,7 @@ - +