| Index: chrome/test/data/extensions/api_test/webrequest/test_types.js
|
| diff --git a/chrome/test/data/extensions/api_test/webrequest/test_types.js b/chrome/test/data/extensions/api_test/webrequest/test_types.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3ec81835850a7482a1abecb005ad71c95167b321
|
| --- /dev/null
|
| +++ b/chrome/test/data/extensions/api_test/webrequest/test_types.js
|
| @@ -0,0 +1,411 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +function getStyleURL() {
|
| + // This is not a style sheet, but it must still be classified as "stylesheet"
|
| + // because it is loaded as a style sheet.
|
| + return getServerURL('empty.html?as-style');
|
| +}
|
| +
|
| +function getFontURL() {
|
| + // Not a font, but will be loaded as a font.
|
| + return getServerURL('empty.html?as-font');
|
| +}
|
| +
|
| +function getWorkerURL() {
|
| + // This file is empty, so it does not generate JavaScript errors when loaded
|
| + // as a worker script.
|
| + return getServerURL('empty.html?as-worker');
|
| +}
|
| +
|
| +function getPingURL() {
|
| + return getServerURL('empty.html?as-ping');
|
| +}
|
| +
|
| +function getBeaconURL() {
|
| + return getServerURL('empty.html?as-beacon');
|
| +}
|
| +
|
| +runTests([
|
| + function typeStylesheet() {
|
| + expect([
|
| + { label: 'onBeforeRequest',
|
| + event: 'onBeforeRequest',
|
| + details: {
|
| + type: 'stylesheet',
|
| + url: getStyleURL(),
|
| + frameUrl: 'unknown frame URL',
|
| + // tabId 0 = tab opened by test runner;
|
| + // tabId 1 = this tab.
|
| + tabId: 1,
|
| + }
|
| + },
|
| + { label: 'onBeforeSendHeaders',
|
| + event: 'onBeforeSendHeaders',
|
| + details: {
|
| + type: 'stylesheet',
|
| + url: getStyleURL(),
|
| + tabId: 1,
|
| + },
|
| + },
|
| + { label: 'onSendHeaders',
|
| + event: 'onSendHeaders',
|
| + details: {
|
| + type: 'stylesheet',
|
| + url: getStyleURL(),
|
| + tabId: 1,
|
| + },
|
| + },
|
| + { label: 'onHeadersReceived',
|
| + event: 'onHeadersReceived',
|
| + details: {
|
| + type: 'stylesheet',
|
| + url: getStyleURL(),
|
| + tabId: 1,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onResponseStarted',
|
| + event: 'onResponseStarted',
|
| + details: {
|
| + type: 'stylesheet',
|
| + url: getStyleURL(),
|
| + tabId: 1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onCompleted',
|
| + event: 'onCompleted',
|
| + details: {
|
| + type: 'stylesheet',
|
| + url: getStyleURL(),
|
| + tabId: 1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + }],
|
| + [['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders',
|
| + 'onHeadersReceived', 'onResponseStarted', 'onCompleted']]);
|
| + var style = document.createElement('link');
|
| + style.rel = 'stylesheet';
|
| + style.type = 'text/css';
|
| + style.href = getStyleURL();
|
| + document.body.appendChild(style);
|
| + },
|
| +
|
| + function typeFont() {
|
| + expect([
|
| + { label: 'onBeforeRequest',
|
| + event: 'onBeforeRequest',
|
| + details: {
|
| + type: 'font',
|
| + url: getFontURL(),
|
| + frameUrl: 'unknown frame URL',
|
| + // tabId 0 = tab opened by test runner;
|
| + // tabId 1 = this tab.
|
| + tabId: 1,
|
| + }
|
| + },
|
| + { label: 'onBeforeSendHeaders',
|
| + event: 'onBeforeSendHeaders',
|
| + details: {
|
| + type: 'font',
|
| + url: getFontURL(),
|
| + tabId: 1,
|
| + },
|
| + },
|
| + { label: 'onSendHeaders',
|
| + event: 'onSendHeaders',
|
| + details: {
|
| + type: 'font',
|
| + url: getFontURL(),
|
| + tabId: 1,
|
| + },
|
| + },
|
| + { label: 'onHeadersReceived',
|
| + event: 'onHeadersReceived',
|
| + details: {
|
| + type: 'font',
|
| + url: getFontURL(),
|
| + tabId: 1,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onResponseStarted',
|
| + event: 'onResponseStarted',
|
| + details: {
|
| + type: 'font',
|
| + url: getFontURL(),
|
| + tabId: 1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onCompleted',
|
| + event: 'onCompleted',
|
| + details: {
|
| + type: 'font',
|
| + url: getFontURL(),
|
| + tabId: 1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + }],
|
| + [['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders',
|
| + 'onHeadersReceived', 'onResponseStarted', 'onCompleted']]);
|
| +
|
| + new FontFace('allegedly-a-font-family', 'url(' + getFontURL() + ')').load();
|
| + },
|
| +
|
| + function typeWorker() {
|
| + expect([
|
| + { label: 'onBeforeRequest',
|
| + event: 'onBeforeRequest',
|
| + details: {
|
| + type: 'script',
|
| + url: getWorkerURL(),
|
| + frameUrl: 'unknown frame URL',
|
| + // tabId 0 = tab opened by test runner;
|
| + // tabId 1 = this tab.
|
| + tabId: 1,
|
| + }
|
| + },
|
| + { label: 'onBeforeSendHeaders',
|
| + event: 'onBeforeSendHeaders',
|
| + details: {
|
| + type: 'script',
|
| + url: getWorkerURL(),
|
| + tabId: 1,
|
| + },
|
| + },
|
| + { label: 'onSendHeaders',
|
| + event: 'onSendHeaders',
|
| + details: {
|
| + type: 'script',
|
| + url: getWorkerURL(),
|
| + tabId: 1,
|
| + },
|
| + },
|
| + { label: 'onHeadersReceived',
|
| + event: 'onHeadersReceived',
|
| + details: {
|
| + type: 'script',
|
| + url: getWorkerURL(),
|
| + tabId: 1,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onResponseStarted',
|
| + event: 'onResponseStarted',
|
| + details: {
|
| + type: 'script',
|
| + url: getWorkerURL(),
|
| + tabId: 1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onCompleted',
|
| + event: 'onCompleted',
|
| + details: {
|
| + type: 'script',
|
| + url: getWorkerURL(),
|
| + tabId: 1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + }],
|
| + [['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders',
|
| + 'onHeadersReceived', 'onResponseStarted', 'onCompleted']]);
|
| +
|
| + new Worker(getWorkerURL());
|
| +
|
| + // TODO(robwu): add tests for SharedWorker and ServiceWorker.
|
| + // (probably same as above, but using -1 because they are not specific to
|
| + // any tab. In general we really need a lot more test coverage for the
|
| + // interaction between Service workers and extensions.)
|
| + },
|
| +
|
| + function typePing() {
|
| + expect([
|
| + { label: 'onBeforeRequest',
|
| + event: 'onBeforeRequest',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getPingURL(),
|
| + frameUrl: 'unknown frame URL',
|
| + // TODO(robwu): Ping / beacons are not associated with a tab/frame
|
| + // because they are detached requests. However, it would be useful if
|
| + // the frameId and tabId are set to the source of the request.
|
| + // See crbug.com/522124.
|
| + frameId: -1,
|
| + tabId: -1,
|
| + }
|
| + },
|
| + { label: 'onBeforeSendHeaders',
|
| + event: 'onBeforeSendHeaders',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getPingURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + },
|
| + },
|
| + { label: 'onSendHeaders',
|
| + event: 'onSendHeaders',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getPingURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + },
|
| + },
|
| + { label: 'onHeadersReceived',
|
| + event: 'onHeadersReceived',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getPingURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onResponseStarted',
|
| + event: 'onResponseStarted',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getPingURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onCompleted',
|
| + event: 'onCompleted',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getPingURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + }],
|
| + [['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders',
|
| + 'onHeadersReceived', 'onResponseStarted', 'onCompleted']]);
|
| +
|
| + var a = document.createElement('a');
|
| + a.ping = getPingURL();
|
| + a.href = 'javascript:';
|
| + a.click();
|
| + },
|
| +
|
| + function typeBeacon() {
|
| + expect([
|
| + { label: 'onBeforeRequest',
|
| + event: 'onBeforeRequest',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getBeaconURL(),
|
| + frameUrl: 'unknown frame URL',
|
| + // TODO(robwu): these IDs should not be -1. See comment at typePing.
|
| + frameId: -1,
|
| + tabId: -1,
|
| + }
|
| + },
|
| + { label: 'onBeforeSendHeaders',
|
| + event: 'onBeforeSendHeaders',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getBeaconURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + },
|
| + },
|
| + { label: 'onSendHeaders',
|
| + event: 'onSendHeaders',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getBeaconURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + },
|
| + },
|
| + { label: 'onHeadersReceived',
|
| + event: 'onHeadersReceived',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getBeaconURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onResponseStarted',
|
| + event: 'onResponseStarted',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getBeaconURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + },
|
| + { label: 'onCompleted',
|
| + event: 'onCompleted',
|
| + details: {
|
| + type: 'ping',
|
| + method: 'POST',
|
| + url: getBeaconURL(),
|
| + frameId: -1,
|
| + tabId: -1,
|
| + ip: '127.0.0.1',
|
| + fromCache: false,
|
| + statusLine: 'HTTP/1.1 200 OK',
|
| + statusCode: 200,
|
| + },
|
| + }],
|
| + [['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders',
|
| + 'onHeadersReceived', 'onResponseStarted', 'onCompleted']]);
|
| +
|
| + navigator.sendBeacon(getBeaconURL(), 'beacon data');
|
| + },
|
| +]);
|
|
|