test_tab_provider.js (1905B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 const { TabProvider } = ChromeUtils.importESModule( 5 "resource://services-sync/engines/tabs.sys.mjs" 6 ); 7 8 add_task(async function test_getAllTabs() { 9 let provider = TabProvider; 10 provider.shouldSkipWindow = mockShouldSkipWindow; 11 12 let tabs; 13 14 provider.getWindowEnumerator = mockGetWindowEnumerator.bind(this, [ 15 "http://bar.com", 16 ]); 17 18 _("Get all tabs."); 19 tabs = await provider.getAllTabsWithEstimatedMax( 20 false, 21 Number.MAX_SAFE_INTEGER 22 ); 23 _("Tabs: " + JSON.stringify(tabs)); 24 equal(tabs.length, 1); 25 equal(tabs[0].title, "title"); 26 equal(tabs[0].urlHistory.length, 1); 27 equal(tabs[0].urlHistory[0], "http://bar.com/"); 28 equal(tabs[0].icon, ""); 29 equal(tabs[0].lastUsed, 2); // windowenumerator returns in ms but the getAllTabs..() returns in seconds 30 31 _("Get all tabs, and check that filtering works."); 32 provider.getWindowEnumerator = mockGetWindowEnumerator.bind(this, [ 33 "http://foo.com", 34 "about:foo", 35 ]); 36 tabs = await provider.getAllTabsWithEstimatedMax( 37 true, 38 Number.MAX_SAFE_INTEGER 39 ); 40 _("Filtered: " + JSON.stringify(tabs)); 41 equal(tabs.length, 1); 42 43 _("Get all tabs, and check that they are properly sorted"); 44 provider.getWindowEnumerator = mockGetWindowEnumerator.bind(this, [ 45 "http://foo.com", 46 "http://bar.com", 47 ]); 48 tabs = await provider.getAllTabsWithEstimatedMax( 49 true, 50 Number.MAX_SAFE_INTEGER 51 ); 52 _("Ordered: " + JSON.stringify(tabs)); 53 equal(tabs[0].lastUsed > tabs[1].lastUsed, true); 54 55 // reader mode URLs are provided. 56 provider.getWindowEnumerator = mockGetWindowEnumerator.bind(this, [ 57 "about:reader?url=http%3A%2F%2Ffoo.com%2F", 58 ]); 59 tabs = await provider.getAllTabsWithEstimatedMax( 60 true, 61 Number.MAX_SAFE_INTEGER 62 ); 63 equal(tabs[0].urlHistory[0], "http://foo.com/"); 64 });