Backed out changesets cf64922197ca, 3ae60bdf3fef, and 68960c6bdce3 (bug 906839) for ASAN mochitest-bc perma-orange.
authorRyan VanderMeulen <ryanvm@gmail.com>
Mon, 04 Nov 2013 15:54:55 -0500
changeset 153488 311650f884516d100d36e4d61fedbffe2ca18704
parent 153487 6cbc5a5a177fb33780fd0299b7b59f95505bbe92
child 153489 94a672274c2b319732713e02527a542e6b63ae1b
push id35816
push userkwierso@gmail.com
push dateTue, 05 Nov 2013 05:22:53 +0000
treeherdermozilla-inbound@442b47e9fb80 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs906839
milestone28.0a1
backs outcf64922197ca01ad63d3c621257a83ecb983d85e
3ae60bdf3fef769da4dbed79bf417376648ddaed
68960c6bdce3b3d56fe17e8967de5b8f5ff1da44
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
Backed out changesets cf64922197ca, 3ae60bdf3fef, and 68960c6bdce3 (bug 906839) for ASAN mochitest-bc perma-orange.
browser/app/profile/firefox.js
browser/base/content/test/social/browser_social_chatwindow.js
browser/base/content/test/social/browser_social_flyout.js
browser/base/content/test/social/social_worker.js
browser/modules/Social.jsm
toolkit/components/social/FrameWorker.jsm
toolkit/components/social/test/browser/browser_SocialProvider.js
toolkit/components/social/test/browser/browser_frameworker.js
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -1290,18 +1290,16 @@ pref("shumway.disabled", true);
 pref("image.mem.max_decoded_image_kb", 256000);
 
 // Default social providers
 pref("social.manifest.facebook", "{\"origin\":\"https://www.facebook.com\",\"name\":\"Facebook Messenger\",\"workerURL\":\"https://www.facebook.com/desktop/fbdesktop2/socialfox/fbworker.js.php\",\"shareURL\":\"https://www.facebook.com/sharer/sharer.php?u=%{url}\",\"iconURL\":\"data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAX0lEQVQ4jWP4%2F%2F8%2FAyUYTFhHzjgDxP9JxGeQDSBVMxgTbUBCxer%2Fr999%2BQ8DJBuArJksA9A10s8AXIBoA0B%2BR%2FY%2FjD%2BEwoBoA1yT5v3PbdmCE8MAshhID%2FUMoDgzUYIBj0Cgi7ar4coAAAAASUVORK5CYII%3D\",\"sidebarURL\":\"https://www.facebook.com/desktop/fbdesktop2/?socialfox=true\",\"icon32URL\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAADbklEQVRYCc1Xv08UQRj99tctexAuCEFjRE0kGBEtLDSGqIWNxkYKbTAxNlY2JhaGWltNtNFeKgsKKxITK43/gCYW+IsoRhA4D47bH7fn9+bcvdm5JR7sefolC3Ozu9978+bNN7PayUv3HN3umdY0Y6IWBtSJ0HSTarXqTOiuTep6Lj+tdxAcA8RAgSmwdd2aCDs0clldYALb/FvgYVhjmfliVA2XpjEgWo0Attn42Z6WH1RFor5ehwo9XQIUZMoVn4qlCoVMSo62EvD8Kh0b3U2Xz43R2PBO6mUCGDlAf65V6MadZzT/rUimoccc2kYA4BfPHqJb105RzjJigKhRq9kEJUBIjgYVuXeL7SAI6eD+Abp5dTwVHOmEHxT50d8WBYJqSOdPj5BjW8gZR8UNqFR2xagx/65XFYaMH+BGWwiYpi4UkBPPLxTp9v1Z+lHc4DWvCQXWmIy6EjITgKowVd5Jjv7N3Hd6y5esigoOwpkJIAmMpZpLJGdiaaC4F0UmAj6bD84GCEwmB/qxMmRilmnwb/mpjAocHh4UEoNAt5NLZB7oy9OJo0PxqkAtePdhiSqunyC1LQUwWMPQaOr6GRre258Ajn4cP7KHcEXhsxpXbj+lT19X2TMNGTLVAcjcalS8gDwsQ2UOMhH4k8FkcrEn5E5ub2sKohxLK2VR77Hl9RUcsrgeRIEiVOT6z+tDbIeLy+vk+kGTCbXxycet6xhl//3f6bJEkdHYhA+mLtDIvoH4ieev5+juoxdk5+pjhALYEdXIpEB5w+NlSKSzqVQ/+H7IO6BLtl3fngGMiqhGJgIwlM6qpyUGFjySdk8m0Zg0ubeD7X9OIDEFajltRQgUJaUKx69tdgaQa0FMADuahZPMFtcEwNPm2hA7ZI5sK4aoE2NvYI+o8hkCIe7CwTv68zS0q9Dk5vpbm/8FXxitSzmMFHpsGj0wyLUheTwD2Y9fVgh1Ae0EPUgD9241ZEnld+v5kgnVZ/8fE0brVh5BK+1oCqKKF72Dk7HwBsssB/pklU1dfChy3S659H5+uelgIb+8WRv1/uGTV9Sdb5wJFlfW6fPCalMhwhSU1j2xKwKbP838GcOwJja4TqO0bjdmXxYTy1EYjFdCWoCEYZhseH/GDL3yJPHnuW6YmT7P1SlIA4768Hke4vOcsX8BE346lLHhDUQAAAAASUVORK5CYII=\", \"icon64URL\":\"data:image/png;base64,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\", \"description\":\"Keep up with friends wherever you go on the web.\",\"author\":\"Facebook\",\"homepageURL\":\"https://www.facebook.com/about/messenger-for-firefox\",\"builtin\":\"true\"}");
 
 pref("social.sidebar.open", true);
 pref("social.sidebar.unload_timeout_ms", 10000);
 
-pref("social.allowMultipleWorkers", true);
-
 pref("dom.identity.enabled", false);
 
 // Turn on the CSP 1.0 parser for Content Security Policy headers
 pref("security.csp.speccompliant", true);
 
 // Block insecure active content on https pages
 pref("security.mixed_content.block_active_content", true);
 
--- a/browser/base/content/test/social/browser_social_chatwindow.js
+++ b/browser/base/content/test/social/browser_social_chatwindow.js
@@ -46,37 +46,42 @@ function openChat(provider, callback) {
 
 function waitPrefChange(cb) {
   Services.prefs.addObserver("social.enabled", function prefObserver(subject, topic, data) {
     Services.prefs.removeObserver("social.enabled", prefObserver);
     executeSoon(cb);
   }, false);
 }
 
+function setWorkerMode(multiple, cb) {
+  waitPrefChange(function() {
+    if (multiple)
+      Services.prefs.setBoolPref("social.allowMultipleWorkers", true);
+    else
+      Services.prefs.clearUserPref("social.allowMultipleWorkers");
+    waitPrefChange(cb);
+    Social.enabled = true;
+  });
+  Social.enabled = false;
+}
+
 function test() {
   requestLongerTimeout(2); // only debug builds seem to need more time...
   waitForExplicitFinish();
 
   let oldwidth = window.outerWidth; // we futz with these, so we restore them
   let oldleft = window.screenX;
   window.moveTo(0, window.screenY)
   let postSubTest = function(cb) {
     let chats = document.getElementById("pinnedchats");
     ok(chats.children.length == 0, "no chatty children left behind");
     cb();
   };
-  // always run chat tests with multiple workers.
-  Services.prefs.setBoolPref("social.allowMultipleWorkers", true);
   runSocialTestWithProvider(manifests, function (finishcb) {
-    ok(Social.enabled, "Social is enabled");
-    ok(Social.providers[0].getWorkerPort(), "provider 0 has port");
-    ok(Social.providers[1].getWorkerPort(), "provider 1 has port");
-    ok(Social.providers[2].getWorkerPort(), "provider 2 has port");
     runSocialTests(tests, undefined, postSubTest, function() {
-      Services.prefs.clearUserPref("social.allowMultipleWorkers");
       window.moveTo(oldleft, window.screenY)
       window.resizeTo(oldwidth, window.outerHeight);
       finishcb();
     });
   });
 }
 
 var tests = {
@@ -507,41 +512,40 @@ var tests = {
             });
             window.focus();
           });
         });
       })
     });
   },
   testMultipleProviderChat: function(next) {
-    // test incomming chats from all providers
-    openChat(Social.providers[0], function() {
-      openChat(Social.providers[1], function() {
-        openChat(Social.providers[2], function() {
-          let chats = document.getElementById("pinnedchats");
-          waitForCondition(function() chats.children.length == Social.providers.length,
-            function() {
-              ok(true, "one chat window per provider opened");
-              // test logout of a single provider
-              let provider = Social.providers[2];
-              let port = provider.getWorkerPort();
-              port.postMessage({topic: "test-logout"});
-              waitForCondition(function() chats.children.length == Social.providers.length - 1,
-                function() {
-                  chats.removeAll();
-                  waitForCondition(function() chats.children.length == 0,
-                                   function() {
-                                    ok(!chats.selectedChat, "multiprovider chats are all closed");
-                                    port.close();
-                                    next();
-                                   },
-                                   "chat windows didn't close");
-                },
-                "chat window didn't close");
-            }, "chat windows did not open");
+    // while pref'd off, we need to set the worker mode to multiple providers
+    setWorkerMode(true, function() {
+      // test incomming chats from all providers
+      openChat(Social.providers[0], function() {
+        openChat(Social.providers[1], function() {
+          openChat(Social.providers[2], function() {
+            let chats = document.getElementById("pinnedchats");
+            waitForCondition(function() chats.children.length == Social.providers.length,
+              function() {
+                ok(true, "one chat window per provider opened");
+                // test logout of a single provider
+                let provider = Social.providers[0];
+                let port = provider.getWorkerPort();
+                port.postMessage({topic: "test-logout"});
+                waitForCondition(function() chats.children.length == Social.providers.length - 1,
+                  function() {
+                    port.close();
+                    chats.removeAll();
+                    ok(!chats.selectedChat, "chats are all closed");
+                    setWorkerMode(false, next);
+                  },
+                  "chat window didn't close");
+              }, "chat windows did not open");
+          });
         });
       });
     });
   },
 
   // XXX - note this must be the last test until we restore the login state
   // between tests...
   testCloseOnLogout: function(next) {
@@ -569,15 +573,11 @@ var tests = {
           } else {
             // open a second chat window
             opened = true;
             port.postMessage({topic: "test-worker-chat", data: chatUrl+"?id=1"});
           }
           break;
       }
     }
-    // make sure a user profile is set for this provider as chat windows are
-    // only closed on *change* of the profile data rather than merely setting
-    // profile data.
-    port.postMessage({topic: "test-set-profile"});
     port.postMessage({topic: "test-init"});
   }
 }
--- a/browser/base/content/test/social/browser_social_flyout.js
+++ b/browser/base/content/test/social/browser_social_flyout.js
@@ -108,27 +108,25 @@ var tests = {
     ok(port, "provider has a port");
     port.onmessage = function (e) {
       let topic = e.data.topic;
       switch (topic) {
         case "test-init-done":
           port.postMessage({topic: "test-flyout-open"});
           break;
         case "got-flyout-visibility":
-          if (e.data.result != "shown")
-            return;
           let iframe = panel.firstChild;
           iframe.contentDocument.addEventListener("SocialTest-DoneCloseSelf", function _doneHandler() {
             iframe.contentDocument.removeEventListener("SocialTest-DoneCloseSelf", _doneHandler, false);
-            port.close();
             is(panel.state, "closed", "flyout should have closed itself");
             Services.prefs.setBoolPref(ALLOW_SCRIPTS_TO_CLOSE_PREF, oldAllowScriptsToClose);
             next();
           }, false);
           is(panel.state, "open", "flyout should be open");
+          port.close(); // so we don't get the -visibility message as it hides...
           SocialFlyout.dispatchPanelEvent("socialTest-CloseSelf");
           break;
       }
     }
     port.postMessage({topic: "test-init"});
   },
 
   testCloseOnLinkTraversal: function(next) {
--- a/browser/base/content/test/social/social_worker.js
+++ b/browser/base/content/test/social/social_worker.js
@@ -79,34 +79,32 @@ onconnect = function(e) {
       case "test-worker-chat":
         apiPort.postMessage({topic: "social.request-chat", data: event.data.data });
         break;
       case "social.initialize":
         // This is the workerAPI port, respond and set up a notification icon.
         // For multiprovider tests, we support acting like different providers
         // based on the domain we load from.
         apiPort = port;
-        // purposely fall through and set the profile on initialization
-      case "test-set-profile":
         let profile;
         if (location.href.indexOf("https://test1.example.com") == 0) {
           profile = {
             portrait: "https://test1.example.com/portrait.jpg",
             userName: "tester",
             displayName: "Test1 User",
           };
         } else {
           profile = {
             portrait: "https://example.com/portrait.jpg",
             userName: "trickster",
             displayName: "Kuma Lisa",
             profileURL: "http://en.wikipedia.org/wiki/Kuma_Lisa"
           };
         }
-        apiPort.postMessage({topic: "social.user-profile", data: profile});
+        port.postMessage({topic: "social.user-profile", data: profile});
         break;
       case "test-ambient-notification":
         apiPort.postMessage({topic: "social.ambient-notification", data: event.data.data});
         break;
       case "test-isVisible":
         sidebarPort.postMessage({topic: "test-isVisible"});
         break;
       case "test-isVisible-response":
--- a/browser/modules/Social.jsm
+++ b/browser/modules/Social.jsm
@@ -90,17 +90,18 @@ function promiseGetAnnotation(aURI) {
 
 this.Social = {
   initialized: false,
   lastEventReceived: 0,
   providers: [],
   _disabledForSafeMode: false,
 
   get allowMultipleWorkers() {
-    return Services.prefs.getBoolPref("social.allowMultipleWorkers");
+    return Services.prefs.prefHasUserValue("social.allowMultipleWorkers") &&
+           Services.prefs.getBoolPref("social.allowMultipleWorkers");
   },
 
   get _currentProviderPref() {
     try {
       return Services.prefs.getComplexValue("social.provider.current",
                                             Ci.nsISupportsString).data;
     } catch (ex) {}
     return null;
@@ -135,17 +136,16 @@ this.Social = {
 
     if (this._provider) {
       this._provider.enabled = true;
       this._currentProviderPref = this._provider.origin;
     }
     let enabled = !!provider;
     if (enabled != SocialService.enabled) {
       SocialService.enabled = enabled;
-      this._updateWorkerState(enabled);
     }
 
     let origin = this._provider && this._provider.origin;
     Services.obs.notifyObservers(null, "social:provider-set", origin);
   },
 
   get defaultProvider() {
     if (this.providers.length == 0)
--- a/toolkit/components/social/FrameWorker.jsm
+++ b/toolkit/components/social/FrameWorker.jsm
@@ -194,23 +194,25 @@ function makeRemoteBrowser() {
   // Create a HTML iframe with a chrome URL, then this can host the browser.
   let iframe = hiddenDoc.createElementNS(HTML_NS, "iframe");
   iframe.setAttribute("src", "chrome://global/content/mozilla.xhtml");
   iframe.addEventListener("load", function onLoad() {
     iframe.removeEventListener("load", onLoad, true);
     let browser = iframe.contentDocument.createElementNS(XUL_NS, "browser");
     browser.setAttribute("type", "content");
     browser.setAttribute("disableglobalhistory", "true");
+    let remote;
     // for now we use the same preference that enabled multiple workers - the
     // idea is that there is no point in having people help test multiple
     // "old" frameworkers - so anyone who wants multiple workers is forced to
     // help us test remote frameworkers too.
-    if (Services.prefs.getBoolPref("social.allowMultipleWorkers"))
+    if (Services.prefs.prefHasUserValue("social.allowMultipleWorkers") &&
+        Services.prefs.getBoolPref("social.allowMultipleWorkers")) {
       browser.setAttribute("remote", "true");
-
+    }
     iframe.contentDocument.documentElement.appendChild(browser);
     deferred.resolve(browser);
   }, true);
   hiddenDoc.documentElement.appendChild(iframe);
   return deferred.promise;
 }
 
 function notifyWorkerError(origin) {
--- a/toolkit/components/social/test/browser/browser_SocialProvider.js
+++ b/toolkit/components/social/test/browser/browser_SocialProvider.js
@@ -57,17 +57,17 @@ let tests = {
     // add another provider, test both workers
     let manifest = {
       origin: 'http://test2.example.com',
       name: "Example Provider 2",
       workerURL: "http://test2.example.com/browser/toolkit/components/social/test/browser/worker_social.js"
     };
     SocialService.addProvider(manifest, function (provider2) {
       ok(provider.enabled, "provider is initially enabled");
-      is(provider2.enabled, Services.prefs.getBoolPref("social.allowMultipleWorkers"), "provider2 is enabled status is correct");
+      ok(!provider2.enabled, "provider2 is not initially enabled");
       provider2.enabled = true;
       let port = provider.getWorkerPort();
       let port2 = provider2.getWorkerPort();
       ok(port, "have port for provider");
       ok(port2, "have port for provider2");
       port.onmessage = function(e) {
         if (e.data.topic == "test-initialization-complete") {
           ok(true, "first provider initialized");
--- a/toolkit/components/social/test/browser/browser_frameworker.js
+++ b/toolkit/components/social/test/browser/browser_frameworker.js
@@ -44,35 +44,29 @@ let tests = {
         worker.terminate();
         cbnext();
       }
     }
     worker.port.postMessage({topic: "ping"})
   },
 
   // when the client closes early but the worker tries to send anyway...
-  // XXX - disabled due to bug 919878 - we close the frameworker before the
-  // remote browser has completed initializing, leading to failures.  Given
-  // this can realistically only happen in this synthesized test environment,
-  // disabling just this test seems OK for now.
-/***
   testEarlyClose: function(cbnext) {
     let run = function() {
       onconnect = function(e) {
         let port = e.ports[0];
         port.postMessage({topic: "oh hai"});
       }
     }
 
     let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testEarlyClose");
     worker.port.close();
     worker.terminate();
     cbnext();
   },
-***/
 
   // Check we do get a social.port-closing message as the port is closed.
   testPortClosingMessage: function(cbnext) {
     // We use 2 ports - we close the first and report success via the second.
     let run = function() {
       let firstPort, secondPort;
       onconnect = function(e) {
         let port = e.ports[0];