Files
palemoon27/toolkit/devtools/commandline/test/browser_cmd_appcache_invalid.js
T
roytam1 7624030fbf import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1055181 - CSS Filter Tooltip; r=pbrosset (327b035a7)
- Bug 1137238 - Fix toolboxes when switching between apps in WebIDE. r=jryans (1a333bdfa)
- Bug 1138939 - Notify when WebIDE has finished initializing so that Valence can register runtime scanners. r=ochameau (7fe61c384)
- Don't let WebIDE break when trying to debug Chrome settings (bug 1134619). r=ochameau (4a18f048e)
- fix imports since devtools are in a different path compared to FF (15c2a1e70)
- port bits of Bug 916804 - Telemetry for WebIDE. (cf5b49ca7)
- Bug 1042859 - Ignore host port when fetching cookies with the gcli cookie command. r=pbrosset (1e6217f76)
- fix include path (6efaacd7a)
- Bug 1128988 - runAt support for commands/converters; r=bgrins (bed6cb594)
- Bug 1143027 - The performance tool tab highlights during a recording. r=vp (e1f310e2d)
- missing pieces of Bug 1141817 - Followup to fix additional intermittents and Bug 1142748 - Fix the 'Protocol error (unknownError) (b27da36af)
- Bug 1159480 - Pull out actor-specific logic from Performance Front. r=vp (9c253604b)
- Bug 1156499 - Disable all non-profiler/fps components in the performance tools when in aurora, for 40.0 release. r=vp (041a0fa34)
- Bug 1159052 - Performance recording should stop rendering and recording as soon as the recording stops. r=vp (2a9f093b4)
- Bug 114187 - Add getBufferInfo to devtools profiler actor. r=fitzgen (00496e8e4)
- Bug 1145187 - Implement polling for buffer status on performance actor facades. r=vp (ae2cbac27)
- Bug 1082695 - Simplify the record start/stop time buttons, and more cleanly render the console.profile notifications during a console recording. r=vp (dfe9a9b26)
- Bug 1160900 - Display buffer status while recording a profile. r=vp (c3d302a62)
- Bug 1154115 - Add adapter that deduplicates old, undeduplicated profiles in the frontend. (r=jsantell,vporof) (aa1bd6769)
- Bug 1160696 - Display MIRTypes in the JIT optimizations side pane as "Site : MIRType". (r=jsantell) (beccaed3d)
- Bug 1154115 - Make the memory stuff in the performance devtool synthesize the new profiler JSON format. (r=jsantell) (685e3a576)
- Bug 1154115 - Fix nsIProfiler xpcshell tests to use the new profiler JSON format. (r=me) (da2a18c89)
- Bug 1151526 - Do not display optimization data for meta-platform frames in the profiler. r=vporof (d4cc514ca)
- Bug 1154115 - Fix devtools tests to use the new profiler JSON format. (r=jsantell) (61a9064ce)
- Bug 1126432: Set preference toggle to switch to new WebIDE project listing layout r=jryans (825831eeb)
- Bug 1130084 - Avoid spurious connection errors even on success. r=past (1911930b6)
- missing bits of Bug 1069552 - Add WebIDE scanner / runtime API. (773111b87)
- Bug 1130084 - Allow runtimes to take infinite time to connect. r=past (a1482c500)
- Bug 1025311 - Add telemetry for canvas debugger. r=vp,miker (d2f8d51f2)
- Bug 1134778 - Consolidate usages of view sourcing in tools with a source-utils module. r=vp,jryans (1432dfac1)
- Bug 1167230 - Use nsCString instead of std::string in FrameKey in the profiler. (r=mstange) (9a3d84b86)
- Bug 1166492 - Handle huge strings in the profile JSON writer. (r=mstange) (3d6f90062)
- Bug 1166492 - Remove dead code in the ProfileBuffer and ThreadProfile. (r=mstange) (cc8e81dd3)
- Bug 1166492 - Return UniquePtr<char[]> from profiler_get_profile to avoid double copying. (r=mstange) (f9d58d5cf)
- Bug 1167230 - Don't pack ProfileEntry on ARM. r=shu (b6f920dd3)
- Bug 1168784 - Part 1: Fix the script merging profiles to handle new profiler JSON format. r=benwa (dd1008084)
- Bug 1090949 - Add `nextTick()` to `lazyIframeIsLoaded()` in WebIDE tests. r=ochameau (94bf972da)
- Bug 1143028 - Make AppMan reinitable; update tab list when sidebars disabled. r=past (1020f8306)
- Bug 1146542 - Clean up and describe app-manager events. r=ochameau (cc4bcadf5)
- Bug 1146542 - Restore tab list changes for non-sidebar case. r=ochameau (531b70e41)
- Bug 1149820 - Restore WebIDE project auto select. r=ochameau (d0526612a)
- Bug 1135018 - Move getjson from webide/ to shared/. r=jryans (9e405c1bf)
- Bug 1135018 - Make devices.js use a CDN. r=ochameau (16adb49c4)
- Bug 1090949 - Make WebIDE's Firefox OS Simulators configurable. r=ochameau (354331a6e)
- Bug 1157201 - Prevent exception while hovering the rule-view. r=pbrosset (4ec81d85b)
2020-09-04 21:16:47 +08:00

135 lines
6.7 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Tests that the appcache validate works as they should with an invalid
// manifest.
const TEST_URI = "http://sub1.test1.example.com/browser/browser/devtools/commandline/" +
"test/browser_cmd_appcache_invalid_index.html";
function test() {
return Task.spawn(spawnTest).then(finish, helpers.handleError);
}
function* spawnTest() {
let lines = [
'Manifest has a character encoding of ISO-8859-1. Manifests must have the ' +
'utf-8 character encoding.',
'The first line of the manifest must be "CACHE MANIFEST" at line 1.',
'"CACHE MANIFEST" is only valid on the first line but was found at line 3.',
'images/sound-icon.png points to a resource that is not available at line 9.',
'images/background.png points to a resource that is not available at line 10.',
'/checking.cgi points to a resource that is not available at line 13.',
'Asterisk (*) incorrectly used in the NETWORK section at line 14. If a line ' +
'in the NETWORK section contains only a single asterisk character, then any ' +
'URI not listed in the manifest will be treated as if the URI was listed in ' +
'the NETWORK section. Otherwise such URIs will be treated as unavailable. ' +
'Other uses of the * character are prohibited',
'../rel.html points to a resource that is not available at line 17.',
'../../rel.html points to a resource that is not available at line 18.',
'../../../rel.html points to a resource that is not available at line 19.',
'../../../../rel.html points to a resource that is not available at line 20.',
'../../../../../rel.html points to a resource that is not available at line 21.',
'/../ is not a valid URI prefix at line 22.',
'/test.css points to a resource that is not available at line 23.',
'/test.js points to a resource that is not available at line 24.',
'test.png points to a resource that is not available at line 25.',
'/main/features.js points to a resource that is not available at line 27.',
'/main/settings/index.css points to a resource that is not available at line 28.',
'http://example.com/scene.jpg points to a resource that is not available at line 29.',
'/section1/blockedbyfallback.html points to a resource that is not available at line 30.',
'http://example.com/images/world.jpg points to a resource that is not available at line 31.',
'/section2/blockedbyfallback.html points to a resource that is not available at line 32.',
'/main/home points to a resource that is not available at line 34.',
'main/app.js points to a resource that is not available at line 35.',
'/settings/home points to a resource that is not available at line 37.',
'/settings/app.js points to a resource that is not available at line 38.',
'The file http://sub1.test1.example.com/browser/browser/devtools/' +
'commandline/test/browser_cmd_appcache_invalid_page3.html was modified ' +
'after http://sub1.test1.example.com/browser/browser/devtools/' +
'commandline/test/browser_cmd_appcache_invalid_appcache.appcache. Unless ' +
'the text in the manifest file is changed the cached version will be used ' +
'instead at line 39.',
'browser_cmd_appcache_invalid_page3.html has cache-control set to no-store. ' +
'This will prevent the application cache from storing the file at line 39.',
'http://example.com/logo.png points to a resource that is not available at line 40.',
'http://example.com/check.png points to a resource that is not available at line 41.',
'Spaces in URIs need to be replaced with % at line 42.',
'http://example.com/cr oss.png points to a resource that is not available at line 42.',
'Asterisk (*) incorrectly used in the CACHE section at line 43. If a line ' +
'in the NETWORK section contains only a single asterisk character, then ' +
'any URI not listed in the manifest will be treated as if the URI was ' +
'listed in the NETWORK section. Otherwise such URIs will be treated as ' +
'unavailable. Other uses of the * character are prohibited',
'The SETTINGS section may only contain a single value, "prefer-online" or "fast" at line 47.',
'FALLBACK section line 50 (/section1/ /offline1.html) prevents caching of ' +
'line 30 (/section1/blockedbyfallback.html) in the CACHE section.',
'/offline1.html points to a resource that is not available at line 50.',
'FALLBACK section line 51 (/section2/ offline2.html) prevents caching of ' +
'line 32 (/section2/blockedbyfallback.html) in the CACHE section.',
'offline2.html points to a resource that is not available at line 51.',
'Only two URIs separated by spaces are allowed in the FALLBACK section at line 52.',
'Asterisk (*) incorrectly used in the FALLBACK section at line 53. URIs ' +
'in the FALLBACK section simply need to match a prefix of the request URI.',
'offline3.html points to a resource that is not available at line 53.',
'Invalid section name (BLAH) at line 55.',
'Only two URIs separated by spaces are allowed in the FALLBACK section at line 55.'
];
let options = yield helpers.openTab(TEST_URI);
info("window open");
// Wait for site to be cached.
yield helpers.listenOnce(gBrowser.contentWindow.applicationCache, 'error');
info("applicationCache error happened");
yield helpers.openToolbar(options);
info("toolbar open");
// 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.test1.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 validate',
check: {
input: 'appcache validate',
markup: 'VVVVVVVVVVVVVVVVV',
status: 'VALID',
args: {}
},
exec: {
output: lines.map(getRegexForString)
},
},
]);
yield helpers.closeToolbar(options);
yield helpers.closeTab(options);
}
/**
* Creates a regular expression that matches a string. This greatly simplifies
* matching and debugging long strings.
*
* @param {String} text
* Text to convert
* @return {RegExp}
* Regular expression matching text
*/
function getRegexForString(str) {
str = str.replace(/(\.|\\|\/|\(|\)|\[|\]|\*|\+|\?|\$|\^|\|)/g, "\\$1");
return new RegExp(str);
}