merge fx-team to mozilla-central a=merge
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Mon, 02 Nov 2015 11:51:09 +0100
changeset 270741 fc0b155bdac7a43d28c13e0cdd281a7928e64e09
parent 270735 b28ff18cfcdc507c675ae59ae872cd64e89fcdc5 (current diff)
parent 270740 e3afc3186d856cec63a8207de506326a9ea24751 (diff)
child 270742 451a185791433bce1a6a894c27f3da60a3119431
push id67436
push usercbook@mozilla.com
push dateMon, 02 Nov 2015 11:04:40 +0000
treeherdermozilla-inbound@f45fb9a0db0e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone45.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
merge fx-team to mozilla-central a=merge
--- a/browser/base/content/test/alerts/head.js
+++ b/browser/base/content/test/alerts/head.js
@@ -1,29 +1,32 @@
 function promiseAlertWindow() {
   return new Promise(function(resolve) {
     let listener = {
       onOpenWindow(window) {
         let alertWindow = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow);
         alertWindow.addEventListener("load", function onLoad() {
           alertWindow.removeEventListener("load", onLoad);
           let windowType = alertWindow.document.documentElement.getAttribute("windowtype");
-          if (windowType == "alert:alert") {
-            Services.wm.removeListener(listener);
-            resolve(alertWindow);
+          if (windowType != "alert:alert") {
+            return;
           }
+          Services.wm.removeListener(listener);
+          resolve(alertWindow);
         });
       },
     };
     Services.wm.addListener(listener);
   });
 }
 
-// `promiseWindowClosed` is similar to `BrowserTestUtils.closeWindow`, but
-// doesn't call `window.close()`.
+/**
+ * Similar to `BrowserTestUtils.closeWindow`, but
+ * doesn't call `window.close()`.
+ */
 function promiseWindowClosed(window) {
   return new Promise(function(resolve) {
     Services.ww.registerNotification(function observer(subject, topic, data) {
       if (topic == "domwindowclosed" && subject == window) {
         Services.ww.unregisterNotification(observer);
         resolve();
       }
     });
--- a/browser/components/preferences/in-content/content.js
+++ b/browser/components/preferences/in-content/content.js
@@ -122,17 +122,17 @@ var gContentPane = {
    * Displays the notifications exceptions dialog where specific site notification
    * preferences can be set.
    */
   showNotificationExceptions()
   {
     let bundlePreferences = document.getElementById("bundlePreferences");
     let params = { permissionType: "desktop-notification" };
     params.windowTitle = bundlePreferences.getString("notificationspermissionstitle");
-    params.introText = bundlePreferences.getString("notificationspermissionstext3");
+    params.introText = bundlePreferences.getString("notificationspermissionstext4");
 
     gSubDialog.open("chrome://browser/content/preferences/permissions.xul",
                     "resizable=yes", params);
   },
 
 
   // POP-UPS
 
--- a/browser/components/preferences/in-content/content.xul
+++ b/browser/components/preferences/in-content/content.xul
@@ -65,17 +65,17 @@
   <grid>
     <columns>
       <column flex="1"/>
       <column/>
     </columns>
     <rows>
       <row id="notificationsPolicyRow" align="center">
         <hbox align="start">
-          <label id="notificationsPolicy">&notificationsPolicyDesc2.label;</label>
+          <label id="notificationsPolicy">&notificationsPolicyDesc3.label;</label>
           <label id="notificationsPolicyLearnMore"
                  class="text-link"
                  value="&notificationsPolicyLearnMore.label;"/>
         </hbox>
         <hbox pack="end">
           <button id="notificationsPolicyButton" label="&notificationsPolicyButton.label;"
                   accesskey="&notificationsPolicyButton.accesskey;"/>
         </hbox>
--- a/browser/locales/en-US/chrome/browser/browser.properties
+++ b/browser/locales/en-US/chrome/browser/browser.properties
@@ -377,17 +377,19 @@ geolocation.shareWithFile2=Would you lik
 
 webNotifications.receiveForSession=Receive for this session
 webNotifications.receiveForSession.accesskey=s
 webNotifications.alwaysReceive=Always Receive Notifications
 webNotifications.alwaysReceive.accesskey=A
 webNotifications.neverShow=Always Block Notifications
 webNotifications.neverShow.accesskey=N
 webNotifications.receiveFromSite=Would you like to receive notifications from this site?
+# LOCALIZATION NOTE (webNotifications.upgradeTitle): When using native notifications on OS X, the title may be truncated around 32 characters.
 webNotifications.upgradeTitle=Upgraded notifications
+# LOCALIZATION NOTE (webNotifications.upgradeInfo): When using native notifications on OS X, the body may be truncated around 100 characters in some views.
 webNotifications.upgradeInfo=You will receive notifications from sites, even those not open in a tab. Click to learn more.
 
 # Pointer lock UI
 
 pointerLock.allow2=Hide pointer
 pointerLock.allow2.accesskey=H
 pointerLock.alwaysAllow=Always allow hiding
 pointerLock.alwaysAllow.accesskey=A
--- a/browser/locales/en-US/chrome/browser/preferences/content.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/content.dtd
@@ -4,17 +4,17 @@
 
 <!ENTITY  popups.label                "Pop-ups">
 
 <!ENTITY  blockPopups.label           "Block pop-up windows">
 <!ENTITY  blockPopups.accesskey       "B">
 
 <!ENTITY  notificationsPolicy.label            "Notifications">
 <!ENTITY  notificationsPolicyLearnMore.label   "Learn more">
-<!ENTITY  notificationsPolicyDesc2.label       "Choose which sites are allowed to receive notifications">
+<!ENTITY  notificationsPolicyDesc3.label       "Choose which sites are allowed to send you notifications">
 <!ENTITY  notificationsPolicyButton.accesskey  "h">
 <!ENTITY  notificationsPolicyButton.label      "Choose…">
 <!ENTITY  notificationsDoNotDisturb.label      "Do not disturb me">
 <!ENTITY  notificationsDoNotDisturb.accesskey  "n">
 <!ENTITY  notificationsDoNotDisturbDetails.value "No notification will be shown until you restart &brandShortName;">
 
 <!ENTITY  popupExceptions.label       "Exceptions…">
 <!ENTITY  popupExceptions.accesskey   "E">
--- a/browser/locales/en-US/chrome/browser/preferences/preferences.properties
+++ b/browser/locales/en-US/chrome/browser/preferences/preferences.properties
@@ -20,17 +20,17 @@ acceptVeryLargeMinimumFont=Keep my chang
 #### Permissions Manager
 
 cookiepermissionstext=You can specify which websites are always or never allowed to use cookies.  Type the exact address of the site you want to manage and then click Block, Allow for Session, or Allow.
 cookiepermissionstitle=Exceptions - Cookies
 addonspermissionstext=You can specify which websites are allowed to install add-ons. Type the exact address of the site you want to allow and then click Allow.
 addons_permissions_title=Allowed Sites - Add-ons Installation
 popuppermissionstext=You can specify which websites are allowed to open pop-up windows. Type the exact address of the site you want to allow and then click Allow.
 popuppermissionstitle=Allowed Sites - Pop-ups
-notificationspermissionstext3=Control which websites are always or never allowed to receive notifications. If you remove a site, it will need to request permission again.
+notificationspermissionstext4=Control which websites are always or never allowed to send you notifications. If you remove a site, it will need to request permission again.
 notificationspermissionstitle=Notification Permissions
 invalidURI=Please enter a valid hostname
 invalidURITitle=Invalid Hostname Entered
 
 #### Block List Manager
 
 blockliststext=You can choose which list Firefox will use to block Web elements that may track your browsing activity.
 blockliststitle=Block Lists
--- a/toolkit/components/url-classifier/content/listmanager.js
+++ b/toolkit/components/url-classifier/content/listmanager.js
@@ -254,18 +254,20 @@ PROT_ListManager.prototype.kickoffUpdate
       log("No updates needed or already initialized for " + updateUrl);
     }
   }
 }
 
 PROT_ListManager.prototype.stopUpdateCheckers = function() {
   log("Stopping updates");
   for (var updateUrl in this.updateCheckers_) {
-    this.updateCheckers_[updateUrl].cancel();
-    this.updateCheckers_[updateUrl] = null;
+    if (this.updateCheckers_[updateUrl]) {
+      this.updateCheckers_[updateUrl].cancel();
+      this.updateCheckers_[updateUrl] = null;
+    }
   }
 }
 
 /**
  * Determine if we have any tables that require updating.  Different
  * Wardens may call us with new tables that need to be updated.
  */
 PROT_ListManager.prototype.maybeToggleUpdateChecking = function() {