Bug 906839 - enable by default social.allowMultipleWorkers - update tests to work pref'd on and fix a missing update to the worker state, r=markh.

This commit is contained in:
Shane Caraveo 2013-10-31 10:59:35 +11:00
parent b015efce49
commit c59873227f
6 changed files with 46 additions and 44 deletions

View File

@ -1300,6 +1300,8 @@ pref("social.manifest.facebook", "{\"origin\":\"https://www.facebook.com\",\"nam
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

View File

@ -51,18 +51,6 @@ 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();
@ -75,8 +63,15 @@ 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();
@ -517,30 +512,31 @@ var tests = {
});
},
testMultipleProviderChat: function(next) {
// 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");
});
// 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");
});
});
});
@ -578,6 +574,10 @@ 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,6 +84,8 @@ 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 = {
@ -99,7 +101,7 @@ onconnect = function(e) {
profileURL: "http://en.wikipedia.org/wiki/Kuma_Lisa"
};
}
port.postMessage({topic: "social.user-profile", data: profile});
apiPort.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,8 +95,7 @@ this.Social = {
_disabledForSafeMode: false,
get allowMultipleWorkers() {
return Services.prefs.prefHasUserValue("social.allowMultipleWorkers") &&
Services.prefs.getBoolPref("social.allowMultipleWorkers");
return Services.prefs.getBoolPref("social.allowMultipleWorkers");
},
get _currentProviderPref() {
@ -141,6 +140,7 @@ this.Social = {
let enabled = !!provider;
if (enabled != SocialService.enabled) {
SocialService.enabled = enabled;
this._updateWorkerState(enabled);
}
let origin = this._provider && this._provider.origin;

View File

@ -199,15 +199,13 @@ 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.
if (Services.prefs.prefHasUserValue("social.allowMultipleWorkers") &&
Services.prefs.getBoolPref("social.allowMultipleWorkers")) {
if (Services.prefs.getBoolPref("social.allowMultipleWorkers"))
browser.setAttribute("remote", "true");
}
iframe.contentDocument.documentElement.appendChild(browser);
deferred.resolve(browser);
}, true);

View File

@ -62,7 +62,7 @@ let tests = {
};
SocialService.addProvider(manifest, function (provider2) {
ok(provider.enabled, "provider is initially enabled");
ok(!provider2.enabled, "provider2 is not initially enabled");
is(provider2.enabled, Services.prefs.getBoolPref("social.allowMultipleWorkers"), "provider2 is enabled status is correct");
provider2.enabled = true;
let port = provider.getWorkerPort();
let port2 = provider2.getWorkerPort();