Bug 1429964 - Re-enable browser_packaged_as_locales.js with dynamically testing app locales. r=gandalf draft
authorEd Lee <edilee@mozilla.com>
Thu, 08 Mar 2018 11:12:50 -0800
changeset 765030 e87f92cb69d747947993fcf12e06eedefc405c52
parent 764977 55d91695f4bb951c224005155baef054a786c1f7
push id101941
push userbmo:edilee@mozilla.com
push dateThu, 08 Mar 2018 21:52:11 +0000
reviewersgandalf
bugs1429964
milestone60.0a1
Bug 1429964 - Re-enable browser_packaged_as_locales.js with dynamically testing app locales. r=gandalf MozReview-Commit-ID: FDyzUg0sq3W
browser/components/newtab/aboutNewTabService.js
browser/components/newtab/tests/browser/browser.ini
browser/components/newtab/tests/browser/browser_packaged_as_locales.js
--- a/browser/components/newtab/aboutNewTabService.js
+++ b/browser/components/newtab/aboutNewTabService.js
@@ -12,17 +12,17 @@ ChromeUtils.import("resource://gre/modul
 
 ChromeUtils.defineModuleGetter(this, "AboutNewTab",
                                "resource:///modules/AboutNewTab.jsm");
 
 // Dummy references to the files that this service no longer allows loading.
 // Bug 1409054 to remove "chrome://browser/content/abouthome/aboutHome.xhtml"
 
 const TOPIC_APP_QUIT = "quit-application-granted";
-const TOPIC_LOCALES_CHANGE = "intl:requested-locales-changed";
+const TOPIC_LOCALES_CHANGE = "intl:app-locales-changed";
 
 // Automated tests ensure packaged locales are in this list. Copied output of:
 // https://github.com/mozilla/activity-stream/blob/master/bin/render-activity-stream-html.js
 const ACTIVITY_STREAM_LOCALES = "en-US ach an ar ast az be bg bn-BD bn-IN br bs ca cak cs cy da de dsb el en-GB eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM ia id it ja ka kab kk km kn ko lij lo lt ltg lv mk ml mr ms my nb-NO ne-NP nl nn-NO pa-IN pl pt-BR pt-PT rm ro ru si sk sl sq sr sv-SE ta te th tl tr uk ur uz vi zh-CN zh-TW".split(" ");
 
 const ABOUT_URL = "about:newtab";
 
 const IS_MAIN_PROCESS = Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_DEFAULT;
--- a/browser/components/newtab/tests/browser/browser.ini
+++ b/browser/components/newtab/tests/browser/browser.ini
@@ -1,7 +1,8 @@
 [DEFAULT]
+prefs =
+  browser.newtabpage.activity-stream.debug=false
 
 [browser_activity_stream_strings.js]
 [browser_enabled_newtabpage.js]
+[browser_newtab_overrides.js]
 [browser_packaged_as_locales.js]
-skip-if=true # bug 1423703 comment 20
-[browser_newtab_overrides.js]
--- a/browser/components/newtab/tests/browser/browser_packaged_as_locales.js
+++ b/browser/components/newtab/tests/browser/browser_packaged_as_locales.js
@@ -1,17 +1,31 @@
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 XPCOMUtils.defineLazyServiceGetter(this, "aboutNewTabService",
                                    "@mozilla.org/browser/aboutnewtab-service;1",
                                    "nsIAboutNewTabService");
 
+// Tests are by default run with non-debug en-US configuration
 const DEFAULT_URL = "resource://activity-stream/prerendered/en-US/activity-stream-prerendered.html";
+
+/**
+ * Temporarily change the app locale to get the localized activity stream url
+ */
 async function getUrlForLocale(locale) {
-  Services.locale.setRequestedLocales([locale]);
-  return aboutNewTabService.defaultURL;
+  const origAvailable = Services.locale.getAvailableLocales();
+  const origRequested = Services.locale.getRequestedLocales();
+  try {
+    Services.locale.setAvailableLocales([locale]);
+    Services.locale.setRequestedLocales([locale]);
+    return aboutNewTabService.defaultURL;
+  } finally {
+    // Always clean up after returning the url
+    Services.locale.setAvailableLocales(origAvailable);
+    Services.locale.setRequestedLocales(origRequested);
+  }
 }
 
 /**
  * Test that an unknown locale defaults to en-US
  */
 add_task(async function test_unknown_locale() {
   const url = await getUrlForLocale("und");
   Assert.equal(url, DEFAULT_URL);