/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ // Tests that the appcache commands works as they should const TEST_URI = "http://sub1.test2.example.com/browser/devtools/client/" + "commandline/test/browser_cmd_appcache_valid_index.html"; function test() { return Task.spawn(spawnTest).then(finish, helpers.handleError); } function* spawnTest() { let options = yield helpers.openTab(TEST_URI); yield helpers.openToolbar(options); info("adding cache listener."); // Wait for site to be cached. yield helpers.listenOnce(gBrowser.contentWindow.applicationCache, 'cached'); // Pages containing an appcache the notification bar gives options to allow // or deny permission for the app to save data offline. Let's click Allow. let notificationID = "offline-app-requested-sub1.test2.example.com"; let notification = PopupNotifications.getNotification(notificationID, gBrowser.selectedBrowser); if (notification) { info("Authorizing offline storage."); notification.mainAction.callback(); } else { info("No notification box is available."); } info("Site now cached, running tests."); yield helpers.audit(options, [ { setup: 'appcache', check: { input: 'appcache', markup: 'IIIIIIII', status: 'ERROR', args: {} }, }, { setup: function() { Services.prefs.setBoolPref("browser.cache.disk.enable", false); return helpers.setInput(options, 'appcache list', 13); }, check: { input: 'appcache list', markup: 'VVVVVVVVVVVVV', status: 'VALID', args: {}, }, exec: { output: [ /cache is disabled/ ] }, post: function(output) { Services.prefs.setBoolPref("browser.cache.disk.enable", true); } }, { setup: 'appcache list', check: { input: 'appcache list', markup: 'VVVVVVVVVVVVV', status: 'VALID', args: {}, }, exec: { output: [ /index/, /page1/, /page2/, /page3/ ] }, }, { setup: 'appcache list page', check: { input: 'appcache list page', markup: 'VVVVVVVVVVVVVVVVVV', status: 'VALID', args: { search: { value: 'page' }, } }, exec: { output: [ /page1/, /page2/, /page3/ ] }, post: function(output, text) { ok(!text.includes("index"), "index is not contained in output"); } }, { setup: 'appcache validate', check: { input: 'appcache validate', markup: 'VVVVVVVVVVVVVVVVV', status: 'VALID', args: {} }, exec: { output: [ /successfully/ ] }, }, { setup: 'appcache validate ' + TEST_URI, check: { input: 'appcache validate ' + TEST_URI, // appcache validate http://sub1.test2.example.com/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_index.html markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV', status: 'VALID', args: { uri: { value: TEST_URI }, } }, exec: { output: [ /successfully/ ] }, }, { setup: 'appcache clear', check: { input: 'appcache clear', markup: 'VVVVVVVVVVVVVV', status: 'VALID', args: {}, }, exec: { output: [ /successfully/ ] }, }, { setup: 'appcache list', check: { input: 'appcache list', markup: 'VVVVVVVVVVVVV', status: 'VALID', args: {}, }, exec: { output: [ /no results/ ] }, post: function(output, text) { ok(!text.includes("index"), "index is not contained in output"); ok(!text.includes("page1"), "page1 is not contained in output"); ok(!text.includes("page2"), "page1 is not contained in output"); ok(!text.includes("page3"), "page1 is not contained in output"); } }, { setup: 'appcache viewentry --key ' + TEST_URI, check: { input: 'appcache viewentry --key ' + TEST_URI, // appcache viewentry --key http://sub1.test2.example.com/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_index.html markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV', status: 'VALID', args: {} }, }, ]); yield helpers.closeToolbar(options); yield helpers.closeTab(options); }