mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
165 lines
6.1 KiB
JavaScript
165 lines
6.1 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
function gc() {
|
|
Cu.forceGC();
|
|
let wu = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
|
.getInterface(Components.interfaces.nsIDOMWindowUtils);
|
|
wu.garbageCollect();
|
|
}
|
|
|
|
// Support for going on and offline.
|
|
// (via browser/base/content/test/browser_bookmark_titles.js)
|
|
let origProxyType = Services.prefs.getIntPref('network.proxy.type');
|
|
|
|
function goOffline() {
|
|
// Simulate a network outage with offline mode. (Localhost is still
|
|
// accessible in offline mode, so disable the test proxy as well.)
|
|
if (!Services.io.offline)
|
|
BrowserOffline.toggleOfflineStatus();
|
|
Services.prefs.setIntPref('network.proxy.type', 0);
|
|
// LOAD_FLAGS_BYPASS_CACHE isn't good enough. So clear the cache.
|
|
Services.cache.evictEntries(Services.cache.STORE_ANYWHERE);
|
|
}
|
|
|
|
function goOnline(callback) {
|
|
Services.prefs.setIntPref('network.proxy.type', origProxyType);
|
|
if (Services.io.offline)
|
|
BrowserOffline.toggleOfflineStatus();
|
|
if (callback)
|
|
callback();
|
|
}
|
|
|
|
function openPanel(url, panelCallback, loadCallback) {
|
|
// open a flyout
|
|
SocialFlyout.open(url, 0, panelCallback);
|
|
SocialFlyout.panel.firstChild.addEventListener("load", function panelLoad() {
|
|
SocialFlyout.panel.firstChild.removeEventListener("load", panelLoad, true);
|
|
loadCallback();
|
|
}, true);
|
|
}
|
|
|
|
function openChat(url, panelCallback, loadCallback) {
|
|
// open a chat window
|
|
SocialChatBar.openChat(Social.provider, url, panelCallback);
|
|
SocialChatBar.chatbar.firstChild.addEventListener("DOMContentLoaded", function panelLoad() {
|
|
SocialChatBar.chatbar.firstChild.removeEventListener("DOMContentLoaded", panelLoad, true);
|
|
loadCallback();
|
|
}, true);
|
|
}
|
|
|
|
function onSidebarLoad(callback) {
|
|
let sbrowser = document.getElementById("social-sidebar-browser");
|
|
sbrowser.addEventListener("load", function load() {
|
|
sbrowser.removeEventListener("load", load, true);
|
|
callback();
|
|
}, true);
|
|
}
|
|
|
|
let manifest = { // normal provider
|
|
name: "provider 1",
|
|
origin: "https://example.com",
|
|
sidebarURL: "https://example.com/browser/browser/base/content/test/social/social_sidebar.html",
|
|
workerURL: "https://example.com/browser/browser/base/content/test/social/social_worker.js",
|
|
iconURL: "https://example.com/browser/browser/base/content/test/moz.png"
|
|
};
|
|
|
|
function test() {
|
|
waitForExplicitFinish();
|
|
// we don't want the sidebar to auto-load in these tests..
|
|
Services.prefs.setBoolPref("social.sidebar.open", false);
|
|
registerCleanupFunction(function() {
|
|
Services.prefs.clearUserPref("social.sidebar.open");
|
|
});
|
|
|
|
runSocialTestWithProvider(manifest, function (finishcb) {
|
|
runSocialTests(tests, undefined, goOnline, finishcb);
|
|
});
|
|
}
|
|
|
|
var tests = {
|
|
testSidebar: function(next) {
|
|
let sbrowser = document.getElementById("social-sidebar-browser");
|
|
onSidebarLoad(function() {
|
|
ok(sbrowser.contentDocument.location.href.indexOf("about:socialerror?")==0, "is on social error page");
|
|
gc();
|
|
// Add a new load listener, then find and click the "try again" button.
|
|
onSidebarLoad(function() {
|
|
// should still be on the error page.
|
|
ok(sbrowser.contentDocument.location.href.indexOf("about:socialerror?")==0, "is still on social error page");
|
|
// go online and try again - this should work.
|
|
goOnline();
|
|
onSidebarLoad(function() {
|
|
// should now be on the correct page.
|
|
is(sbrowser.contentDocument.location.href, manifest.sidebarURL, "is now on social sidebar page");
|
|
next();
|
|
});
|
|
sbrowser.contentDocument.getElementById("btnTryAgain").click();
|
|
});
|
|
sbrowser.contentDocument.getElementById("btnTryAgain").click();
|
|
});
|
|
// go offline then attempt to load the sidebar - it should fail.
|
|
goOffline();
|
|
Services.prefs.setBoolPref("social.sidebar.open", true);
|
|
},
|
|
|
|
testFlyout: function(next) {
|
|
let panelCallbackCount = 0;
|
|
let panel = document.getElementById("social-flyout-panel");
|
|
// go offline and open a flyout.
|
|
goOffline();
|
|
openPanel(
|
|
"https://example.com/browser/browser/base/content/test/social/social_panel.html",
|
|
function() { // the panel api callback
|
|
panelCallbackCount++;
|
|
},
|
|
function() { // the "load" callback.
|
|
executeSoon(function() {
|
|
todo_is(panelCallbackCount, 0, "Bug 833207 - should be no callback when error page loads.");
|
|
ok(panel.firstChild.contentDocument.location.href.indexOf("about:socialerror?")==0, "is on social error page");
|
|
// Bug 832943 - the listeners previously stopped working after a GC, so
|
|
// force a GC now and try again.
|
|
gc();
|
|
openPanel(
|
|
"https://example.com/browser/browser/base/content/test/social/social_panel.html",
|
|
function() { // the panel api callback
|
|
panelCallbackCount++;
|
|
},
|
|
function() { // the "load" callback.
|
|
executeSoon(function() {
|
|
todo_is(panelCallbackCount, 0, "Bug 833207 - should be no callback when error page loads.");
|
|
ok(panel.firstChild.contentDocument.location.href.indexOf("about:socialerror?")==0, "is on social error page");
|
|
gc();
|
|
SocialFlyout.unload();
|
|
next();
|
|
});
|
|
}
|
|
);
|
|
});
|
|
}
|
|
);
|
|
},
|
|
|
|
testChatWindow: function(next) {
|
|
let panelCallbackCount = 0;
|
|
// go offline and open a flyout.
|
|
goOffline();
|
|
openChat(
|
|
"https://example.com/browser/browser/base/content/test/social/social_chat.html",
|
|
function() { // the panel api callback
|
|
panelCallbackCount++;
|
|
},
|
|
function() { // the "load" callback.
|
|
executeSoon(function() {
|
|
todo_is(panelCallbackCount, 0, "Bug 833207 - should be no callback when error page loads.");
|
|
ok(SocialChatBar.chatbar.selectedChat.iframe.contentDocument.location.href.indexOf("about:socialerror?")==0, "is on social error page");
|
|
SocialChatBar.chatbar.selectedChat.close();
|
|
next();
|
|
});
|
|
}
|
|
);
|
|
}
|
|
}
|
|
|