Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/security/javascript-mimetype-usecounters.html

Issue 1413193010: Add counters for various ways of loading scripts with bad mimetypes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tests which do work Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <body>
2 <script src="../../../resources/testharness.js"></script>
3 <script>
4 testRunner.dumpAsText();
5 function runScript(name, callback) {
6 var script = document.createElement("script");
7 script.src = name;
8 script.onload = callback;
9 document.head.appendChild(script);
10 }
11 var increment = 0;
12 var SameOriginTextScript = 991,
13 SameOriginOtherScript = 992,
14 CrossOriginTextScript = 993,
15 CrossOriginOtherScript = 994;
16 var counters = [SameOriginTextScript,
17 SameOriginOtherScript,
18 CrossOriginTextScript,
19 CrossOriginOtherScript];
20 function getUseCounters() {
21 return counters.map(counter => window.internals.isUseCounted(document, counter ));
22 }
23 function testCase(test, callback) {
24 var previousCounters = getUseCounters();
25 var previousIncrement = increment;
26 var url = (test.crossOrigin ? "http://localhost:8000" : "") +
27 "/security/resources/javascript-mimetype.php?mimetype=" + test.mimet ype;
28 runScript(url, function() {
29 assert_false(test.expectFailure === true);
30 assert_equals(previousIncrement + 1, increment, "should have run the script" );
31 var newCounters = getUseCounters();
32 for (var counter in counters) {
33 if (counters[counter] === test.useCounter) {
34 assert_equals(previousCounters[counter], !!test.secondTime);
35 assert_equals(newCounters[counter], true);
36 } else {
37 assert_equals(previousCounters[counter], newCounters[counter]);
38 }
39 }
40 alert("Correct");
41 callback();
42 });
43 if (test.expectFailure) callback();
44 }
45 function nextCase(cases, i) {
46 if (i >= cases.length)
47 return function() {};
48 else return function() {
49 testCase(cases[i], nextCase(cases, i + 1));
50 }
51 }
52 function runTestCases(cases) {
53 nextCase(cases, 0)();
54 }
55
56 var initialCounters = getUseCounters();
57 for (var initialCounter of initialCounters) {
58 assert_false(initialCounter);
59 }
60 runTestCases([
61 // JS mimetypes don't increment any usecounters
62 { mimetype: 'text/livescript', crossOrigin: false, useCounter: -1 },
63 { mimetype: 'text/jscript', crossOrigin: true, useCounter: -1 },
64 { mimetype: 'application/ecmascript', crossOrigin: false, useCounter: -1 },
65 { mimetype: 'text/ecmascript', crossOrigin: true, useCounter: -1 },
66
67 // Counters are not incremented on invalid use of images
68 { mimetype: 'image/foo', crossOrigin: false, useCounter: -1, expectFailure: tr ue },
69 { mimetype: 'image/bar', crossOrigin: true, useCounter: -1, expectFailure: tru e },
70
71 // Text mimetypes are registered separately
72 { mimetype: 'text/html', crossOrigin: false, useCounter: SameOriginTextScript },
73 { mimetype: 'text/csv', crossOrigin: false, useCounter: SameOriginTextScript, secondTime: true },
74
75 { mimetype: 'text/html', crossOrigin: true, useCounter: CrossOriginTextScript },
76 { mimetype: 'text/csv', crossOrigin: true, useCounter: CrossOriginTextScript , secondTime: true },
77
78 { mimetype: 'foo/html', crossOrigin: false, useCounter: SameOriginOtherScript },
79 { mimetype: 'foo/csv', crossOrigin: false, useCounter: SameOriginOtherScript, secondTime: true },
80
81 { mimetype: 'foo/html', crossOrigin: true, useCounter: CrossOriginOtherScript },
82 { mimetype: 'foo/csv', crossOrigin: true, useCounter: CrossOriginOtherScript, secondTime: true },
83 ]);
84 </script>
85 </body>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698