browser/components/sessionstore/test/browser_label_and_icon.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:db1a7c188a55
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 "use strict";
5
6 /**
7 * Make sure that tabs are restored on demand as otherwise the tab will start
8 * loading immediately and we can't check its icon and label.
9 */
10 add_task(function setup() {
11 Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", true);
12
13 registerCleanupFunction(() => {
14 Services.prefs.clearUserPref("browser.sessionstore.restore_on_demand");
15 });
16 });
17
18 /**
19 * Ensure that a pending tab has label and icon correctly set.
20 */
21 add_task(function test_label_and_icon() {
22 // Create a new tab.
23 let tab = gBrowser.addTab("about:robots");
24 let browser = tab.linkedBrowser;
25 yield promiseBrowserLoaded(browser);
26
27 // Retrieve the tab state.
28 SyncHandlers.get(browser).flush();
29 let state = ss.getTabState(tab);
30 gBrowser.removeTab(tab);
31 browser = null;
32
33 // Open a new tab to restore into.
34 let tab = gBrowser.addTab("about:blank");
35 ss.setTabState(tab, state);
36 yield promiseTabRestoring(tab);
37
38 // Check that label and icon are set for the restoring tab.
39 ok(gBrowser.getIcon(tab).startsWith("data:image/png;"), "icon is set");
40 is(tab.label, "Gort! Klaatu barada nikto!", "label is set");
41
42 // Cleanup.
43 gBrowser.removeTab(tab);
44 });
45
46 function promiseTabRestoring(tab) {
47 let deferred = Promise.defer();
48
49 tab.addEventListener("SSTabRestoring", function onRestoring() {
50 tab.removeEventListener("SSTabRestoring", onRestoring);
51 deferred.resolve();
52 });
53
54 return deferred.promise;
55 }

mercurial