Use protectedThis for the 'updatePrevalentDomainsToPartitionOrBlockCookies' lambda
[WebKit-https.git] / LayoutTests / http / tests / inspector / network / har / har-page.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <script src="../../resources/inspector-test.js"></script>
6 <script>
7 function test()
8 {
9     function HARJSONFilter(key, value) {
10         // Filter out the creator.version / browser.version but leave a top level version.
11         if ((key === "creator" || key === "browser") && value.version) {
12             value.version = "<filtered>";
13             return value;
14         }
15
16         // Cache may or may not have been used so remove optional fields which may or may not be set.
17         if (key === "connection")
18             return undefined;
19         if (key === "serverIPAddress")
20             return undefined;
21         if (key === "_transferSize")
22             return undefined;
23         if (key === "_fetchType")
24             return undefined;
25
26         // If cached the protocol might not be available.
27         if (key === "httpVersion")
28             return "<filtered>";
29
30         // Headers include dynamic data.
31         if (key === "headers")
32             return "<filtered>";
33
34         // Dates would change between test runs.
35         if (key.endsWith("DateTime"))
36             return "<filtered>";
37
38         // Size data may or may not be available, but could change based on headers.
39         if (key.endsWith("Size"))
40             return "<filtered>";
41
42         // Reduce the file contents.
43         if (key === "text")
44             return "<filtered text (" + value.length + ")>";
45
46         // Since cache may or may not be used, timing data may be variable.
47         // NOTE: SSL should always be -1 for this test case.
48         if (key === "time")
49             return "<filtered>";
50         if (key === "timings") {
51             value.blocked = "<filtered>";
52             value.dns = "<filtered>";
53             value.connect = "<filtered>";
54             value.send = "<filtered>";
55             value.wait = "<filtered>";
56             value.receive = "<filtered>";
57         }
58
59         // PageTimings can be variable.
60         if (key === "onContentLoad" || key === "onLoad")
61             return "<filtered>";
62
63         return value;
64     }
65
66     let suite = InspectorTest.createAsyncSuite("HAR.Page");
67
68     suite.addTestCase({
69         name: "HAR.Basic.Page",
70         description: "Should be able to generate a HAR with all of this test page's resources.",
71         async test() {
72             InspectorTest.reloadPage({ignoreCache: true});
73             await InspectorTest.awaitEvent("LoadComplete");
74
75             let resources = [];
76             resources.push(WI.frameResourceManager.mainFrame.mainResource);
77             for (let resource of WI.frameResourceManager.mainFrame.resourceCollection.items)
78                 resources.push(resource);
79
80             let har = await WI.HARBuilder.buildArchive(resources);
81             InspectorTest.json(har, HARJSONFilter);
82         }
83     });
84
85     suite.runTestCasesAndFinish();
86 }
87 </script>
88 </head>
89 <body onload="runTest()">
90 <p>HAR Page Test.</p>
91 <script>
92 window.addEventListener("load", () => {
93     TestPage.dispatchEventToFrontend("LoadComplete");
94 });
95 </script>
96 </body>
97 </html>