OLD | NEW |
1 <script> | 1 <script> |
2 var getURL = chrome.extension.getURL; | 2 var getURL = chrome.extension.getURL; |
3 var deepEq = chrome.test.checkDeepEq; | 3 var deepEq = chrome.test.checkDeepEq; |
4 var expectedEventData; | 4 var expectedEventData; |
5 var capturedEventData; | 5 var capturedEventData; |
6 var expectedEventOrder; | 6 var expectedEventOrder; |
7 var tabId; | 7 var tabId; |
8 var eventsCaptured; | 8 var eventsCaptured; |
9 | 9 |
10 // PORT will be changed to the port of the test server. | 10 // PORT will be changed to the port of the test server. |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 chrome.test.assertTrue(positions[previousLabel] < positions[label], | 97 chrome.test.assertTrue(positions[previousLabel] < positions[label], |
98 "Event " + previousLabel + " is supposed to arrive before " + | 98 "Event " + previousLabel + " is supposed to arrive before " + |
99 label + "."); | 99 label + "."); |
100 previousLabel = label; | 100 previousLabel = label; |
101 }); | 101 }); |
102 }); | 102 }); |
103 | 103 |
104 eventsCaptured(); | 104 eventsCaptured(); |
105 } | 105 } |
106 | 106 |
| 107 // Simple check to see that we have a User-Agent header, and that it contains |
| 108 // an expected value. This is a basic check that the request headers are valid. |
| 109 function checkUserAgent(headers) { |
| 110 for (var i in headers) { |
| 111 if (headers[i].name.toLowerCase() == "user-agent") |
| 112 return headers[i].value.toLowerCase().indexOf("chrome") != -1; |
| 113 } |
| 114 return false; |
| 115 } |
| 116 |
107 function captureEvent(name, details) { | 117 function captureEvent(name, details) { |
108 // Ignore system-level requests like safebrowsing updates and favicon fetches | 118 // Ignore system-level requests like safebrowsing updates and favicon fetches |
109 // since they are unpredictable. | 119 // since they are unpredictable. |
110 if (details.tabId == -1 || details.type == "other" || | 120 if (details.tabId == -1 || details.type == "other" || |
111 details.url.match(/\/favicon.ico$/) || | 121 details.url.match(/\/favicon.ico$/) || |
112 details.url.match(/https:\/\/dl.google.com/)) | 122 details.url.match(/https:\/\/dl.google.com/)) |
113 return; | 123 return; |
114 | 124 |
115 // Pull the extra per-event options out of the expected data. These let | 125 // Pull the extra per-event options out of the expected data. These let |
116 // us specify special return values per event. | 126 // us specify special return values per event. |
117 var currentIndex = capturedEventData.length; | 127 var currentIndex = capturedEventData.length; |
118 var extraOptions; | 128 var extraOptions; |
119 if (expectedEventData.length > currentIndex) { | 129 if (expectedEventData.length > currentIndex) { |
120 retval = expectedEventData[currentIndex].retval; | 130 retval = expectedEventData[currentIndex].retval; |
121 } | 131 } |
122 | 132 |
123 delete details.requestId; | 133 delete details.requestId; |
124 delete details.timeStamp; | 134 delete details.timeStamp; |
125 if (details.requestHeaders) { | 135 if (details.requestHeaders) { |
126 details.requestHeadersExist = true; | 136 details.requestHeadersValid = checkUserAgent(details.requestHeaders); |
127 delete details.requestHeaders; | 137 delete details.requestHeaders; |
128 } | 138 } |
129 if (details.responseHeaders) { | 139 if (details.responseHeaders) { |
130 details.responseHeadersExist = true; | 140 details.responseHeadersExist = true; |
131 delete details.responseHeaders; | 141 delete details.responseHeaders; |
132 } | 142 } |
133 | 143 |
134 // find |details| in expectedEventData | 144 // find |details| in expectedEventData |
135 var found = false; | 145 var found = false; |
136 var label = undefined; | 146 var label = undefined; |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 method: "GET", | 266 method: "GET", |
257 tabId: tabId, | 267 tabId: tabId, |
258 type: "main_frame", | 268 type: "main_frame", |
259 url: URL_HTTP_SIMPLE_LOAD_REDIRECT | 269 url: URL_HTTP_SIMPLE_LOAD_REDIRECT |
260 } | 270 } |
261 }, | 271 }, |
262 { label: "onBeforeSendHeaders-1", | 272 { label: "onBeforeSendHeaders-1", |
263 event: "onBeforeSendHeaders", | 273 event: "onBeforeSendHeaders", |
264 details: { | 274 details: { |
265 url: URL_HTTP_SIMPLE_LOAD_REDIRECT, | 275 url: URL_HTTP_SIMPLE_LOAD_REDIRECT, |
266 requestHeadersExist: true | 276 requestHeadersValid: true |
267 } | 277 } |
268 }, | 278 }, |
269 { label: "onRequestSent-1", | 279 { label: "onRequestSent-1", |
270 event: "onRequestSent", | 280 event: "onRequestSent", |
271 details: { | 281 details: { |
272 url: URL_HTTP_SIMPLE_LOAD_REDIRECT, | 282 url: URL_HTTP_SIMPLE_LOAD_REDIRECT, |
273 ip: "127.0.0.1", | 283 ip: "127.0.0.1", |
274 requestHeadersExist: true | 284 requestHeadersValid: true |
275 } | 285 } |
276 }, | 286 }, |
277 { label: "onBeforeRedirect", | 287 { label: "onBeforeRedirect", |
278 event: "onBeforeRedirect", | 288 event: "onBeforeRedirect", |
279 details: { | 289 details: { |
280 url: URL_HTTP_SIMPLE_LOAD_REDIRECT, | 290 url: URL_HTTP_SIMPLE_LOAD_REDIRECT, |
281 redirectUrl: URL_HTTP_SIMPLE_LOAD, | 291 redirectUrl: URL_HTTP_SIMPLE_LOAD, |
282 statusCode: 301, | 292 statusCode: 301, |
283 responseHeadersExist: true, | 293 responseHeadersExist: true, |
284 statusLine: "HTTP/1.0 301 Moved Permanently" | 294 statusLine: "HTTP/1.0 301 Moved Permanently" |
285 } | 295 } |
286 }, | 296 }, |
287 { label: "onBeforeRequest-2", | 297 { label: "onBeforeRequest-2", |
288 event: "onBeforeRequest", | 298 event: "onBeforeRequest", |
289 details: { | 299 details: { |
290 method: "GET", | 300 method: "GET", |
291 tabId: tabId, | 301 tabId: tabId, |
292 type: "main_frame", | 302 type: "main_frame", |
293 url: URL_HTTP_SIMPLE_LOAD | 303 url: URL_HTTP_SIMPLE_LOAD |
294 } | 304 } |
295 }, | 305 }, |
296 { label: "onBeforeSendHeaders-2", | 306 { label: "onBeforeSendHeaders-2", |
297 event: "onBeforeSendHeaders", | 307 event: "onBeforeSendHeaders", |
298 details: { | 308 details: { |
299 url: URL_HTTP_SIMPLE_LOAD, | 309 url: URL_HTTP_SIMPLE_LOAD, |
300 requestHeadersExist: true | 310 requestHeadersValid: true |
301 } | 311 } |
302 }, | 312 }, |
303 { label: "onRequestSent-2", | 313 { label: "onRequestSent-2", |
304 event: "onRequestSent", | 314 event: "onRequestSent", |
305 details: { | 315 details: { |
306 url: URL_HTTP_SIMPLE_LOAD, | 316 url: URL_HTTP_SIMPLE_LOAD, |
307 ip: "127.0.0.1", | 317 ip: "127.0.0.1", |
308 requestHeadersExist: true | 318 requestHeadersValid: true |
309 } | 319 } |
310 }, | 320 }, |
311 { label: "onResponseStarted", | 321 { label: "onResponseStarted", |
312 event: "onResponseStarted", | 322 event: "onResponseStarted", |
313 details: { | 323 details: { |
314 url: URL_HTTP_SIMPLE_LOAD, | 324 url: URL_HTTP_SIMPLE_LOAD, |
315 statusCode: 200, | 325 statusCode: 200, |
316 responseHeadersExist: true, | 326 responseHeadersExist: true, |
317 statusLine: "HTTP/1.0 200 OK", | 327 statusLine: "HTTP/1.0 200 OK", |
318 } | 328 } |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
660 }); | 670 }); |
661 chrome.tabs.executeScript(tabId, | 671 chrome.tabs.executeScript(tabId, |
662 { | 672 { |
663 code: "chrome.extension.sendRequest(" + | 673 code: "chrome.extension.sendRequest(" + |
664 "{pass: document.body.innerText.indexOf('FoobarUA') >= 0});" | 674 "{pass: document.body.innerText.indexOf('FoobarUA') >= 0});" |
665 }); | 675 }); |
666 }); | 676 }); |
667 }, | 677 }, |
668 ]); | 678 ]); |
669 </script> | 679 </script> |
OLD | NEW |