|
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 } |