Backed out changeset 9eaf00ec189a (bug 906839) on suspicion of increasing the failure rate of browser_frameworker.js

This commit is contained in:
Ed Morley 2013-10-24 18:51:16 +01:00
parent 96e0b38b92
commit aa6fce8e84
5 changed files with 44 additions and 59 deletions

View File

@ -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"});
}
}

View File

@ -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});

View File

@ -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;

View File

@ -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);

View File

@ -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();