From aa6fce8e844799fef05f938c2e947b066b35f067 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 24 Oct 2013 18:51:16 +0100 Subject: [PATCH] Backed out changeset 9eaf00ec189a (bug 906839) on suspicion of increasing the failure rate of browser_frameworker.js --- .../test/social/browser_social_chatwindow.js | 72 +++++++++---------- .../base/content/test/social/social_worker.js | 4 +- browser/modules/Social.jsm | 8 +-- toolkit/components/social/FrameWorker.jsm | 12 ++-- .../test/browser/browser_SocialProvider.js | 7 +- 5 files changed, 44 insertions(+), 59 deletions(-) diff --git a/browser/base/content/test/social/browser_social_chatwindow.js b/browser/base/content/test/social/browser_social_chatwindow.js index a4809f0653a..c764393f0b3 100644 --- a/browser/base/content/test/social/browser_social_chatwindow.js +++ b/browser/base/content/test/social/browser_social_chatwindow.js @@ -51,6 +51,18 @@ function waitPrefChange(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(); @@ -63,15 +75,8 @@ function test() { 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(); @@ -512,31 +517,30 @@ var tests = { }); }, 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"); + }); }); }); }); @@ -574,10 +578,6 @@ var tests = { 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"}); } } diff --git a/browser/base/content/test/social/social_worker.js b/browser/base/content/test/social/social_worker.js index 1bea0d0ccc6..256c13e2a4a 100644 --- a/browser/base/content/test/social/social_worker.js +++ b/browser/base/content/test/social/social_worker.js @@ -84,8 +84,6 @@ onconnect = function(e) { // 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 = { @@ -101,7 +99,7 @@ onconnect = function(e) { 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}); diff --git a/browser/modules/Social.jsm b/browser/modules/Social.jsm index 38a1caec219..ee2d1c430d5 100644 --- a/browser/modules/Social.jsm +++ b/browser/modules/Social.jsm @@ -95,11 +95,8 @@ this.Social = { _disabledForSafeMode: false, get allowMultipleWorkers() { - try { - return Services.prefs.getBoolPref("social.allowMultipleWorkers"); - } catch(e) { - return false; - } + return Services.prefs.prefHasUserValue("social.allowMultipleWorkers") && + Services.prefs.getBoolPref("social.allowMultipleWorkers"); }, get _currentProviderPref() { @@ -144,7 +141,6 @@ this.Social = { let enabled = !!provider; if (enabled != SocialService.enabled) { SocialService.enabled = enabled; - this._updateWorkerState(enabled); } let origin = this._provider && this._provider.origin; diff --git a/toolkit/components/social/FrameWorker.jsm b/toolkit/components/social/FrameWorker.jsm index 263bc5b93d6..5e8e01767a3 100644 --- a/toolkit/components/social/FrameWorker.jsm +++ b/toolkit/components/social/FrameWorker.jsm @@ -198,19 +198,15 @@ function makeRemoteBrowser() { 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. - let useMultiProvider; - try { - useMultiProvider = Services.prefs.getBoolPref("social.allowMultipleWorkers"); - } catch(e) { - useMultiProvider = false; - } - if (useMultiProvider) + if (Services.prefs.prefHasUserValue("social.allowMultipleWorkers") && + Services.prefs.getBoolPref("social.allowMultipleWorkers")) { browser.setAttribute("remote", "true"); - + } iframe.contentDocument.documentElement.appendChild(browser); deferred.resolve(browser); }, true); diff --git a/toolkit/components/social/test/browser/browser_SocialProvider.js b/toolkit/components/social/test/browser/browser_SocialProvider.js index b9763a96f25..81582f12061 100644 --- a/toolkit/components/social/test/browser/browser_SocialProvider.js +++ b/toolkit/components/social/test/browser/browser_SocialProvider.js @@ -62,12 +62,7 @@ let tests = { }; SocialService.addProvider(manifest, function (provider2) { ok(provider.enabled, "provider is initially enabled"); - try { - is(provider2.enabled, Services.prefs.getBoolPref("social.allowMultipleWorkers"), "provider2 is enabled status is correct"); - } catch(e) { - // default is false if pref is not set - ok(!provider2.enabled, "provider2 is not initially enabled"); - } + ok(!provider2.enabled, "provider2 is not initially enabled"); provider2.enabled = true; let port = provider.getWorkerPort(); let port2 = provider2.getWorkerPort();