Chromium Code Reviews| Index: chrome/test/data/extensions/api_test/webrequest/test_websocket.js |
| diff --git a/chrome/test/data/extensions/api_test/webrequest/test_websocket.js b/chrome/test/data/extensions/api_test/webrequest/test_websocket.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6d2791ef98529cecf210b1245c024bbf3d036d6c |
| --- /dev/null |
| +++ b/chrome/test/data/extensions/api_test/webrequest/test_websocket.js |
| @@ -0,0 +1,184 @@ |
| +// Copyright 2017 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. |
| + |
| +chrome.tabs.getCurrent(function(tab) { |
| + runTestsForTab([ |
| + // Opens a WebSocket connection, writes a message to it, and closes the |
| + // connection. WebRequest API should observe the entire handshake. |
| + function handshakeSucceeds() { |
| + var url = getWSTestURL(testWebSocketPort); |
| + expect( |
| + [ //events |
| + { label: 'onBeforeRequest', |
| + event: 'onBeforeRequest', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + frameUrl: 'unknown frame URL', |
|
Devlin
2017/02/21 16:10:44
Can we not determine the url that initiated the re
pkalinnikov
2017/02/21 19:18:16
This field is not the API's thing, it is added by
Devlin
2017/02/21 20:34:11
Whoops, mistook this for url from the API. Not an
|
| + }, |
| + }, |
| + { label: 'onBeforeSendHeaders', |
| + event: 'onBeforeSendHeaders', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + }, |
| + }, |
| + { label: 'onSendHeaders', |
| + event: 'onSendHeaders', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + }, |
| + }, |
| + { label: 'onHeadersReceived', |
| + event: 'onHeadersReceived', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + statusCode: 101, |
| + statusLine: 'HTTP/1.1 101 Switching Protocols', |
| + }, |
| + }, |
| + { label: 'onResponseStarted', |
| + event: 'onResponseStarted', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + ip: '127.0.0.1', |
| + fromCache: false, |
| + statusCode: 101, |
| + statusLine: 'HTTP/1.1 101 Switching Protocols', |
| + }, |
| + }, |
| + { label: 'onCompleted', |
| + event: 'onCompleted', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + fromCache: false, |
| + statusCode: 101, |
| + statusLine: 'HTTP/1.1 101 Switching Protocols', |
| + } |
| + }, |
| + ], |
| + [ // event order |
| + ['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders', |
| + 'onHeadersReceived', 'onResponseStarted', 'onCompleted'] |
| + ], |
| + {urls: ['<all_urls>']}, // filter |
| + ['blocking'] // extraInfoSpec |
| + ); |
| + testWebSocketConnection(url, true); |
|
Devlin
2017/02/21 16:10:44
document what 'true' is (same for line 108, 181)
pkalinnikov
2017/02/21 19:18:16
Done.
|
| + }, |
| + |
| + // Tries to open a WebSocket connection, with a blocking handler that |
| + // cancels the request. The connection will not be established. |
| + function handshakeRequestCancelled() { |
| + var url = getWSTestURL(testWebSocketPort); |
| + expect( |
| + [ // events |
| + { label: 'onBeforeRequest', |
| + event: 'onBeforeRequest', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + frameUrl: 'unknown frame URL', |
| + }, |
| + retval: {cancel: true} |
| + }, |
| + // Cancelling is considered an error. |
| + { label: 'onErrorOccurred', |
| + event: 'onErrorOccurred', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + fromCache: false, |
| + error: 'net::ERR_BLOCKED_BY_CLIENT' |
| + } |
| + }, |
| + ], |
| + [ // event order |
| + ['onBeforeRequest', 'onErrorOccurred'] |
| + ], |
| + {urls: ['<all_urls>']}, // filter |
| + ['blocking'] // extraInfoSpec |
| + ); |
| + testWebSocketConnection(url, false); |
| + }, |
| + |
| + // Opens a WebSocket connection, with a blocking handler that tries to |
| + // redirect the request. The redirect will be ignored. |
| + function redirectIsIgnoredAndHandshakeSucceeds() { |
| + var url = getWSTestURL(testWebSocketPort); |
| + var redirectedUrl1 = getWSTestURL(testWebSocketPort) + '?redirected1'; |
| + var redirectedUrl2 = getWSTestURL(testWebSocketPort) + '?redirected2'; |
| + expect( |
| + [ // events |
| + { label: 'onBeforeRequest', |
| + event: 'onBeforeRequest', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + frameUrl: 'unknown frame URL', |
| + }, |
| + retval: {redirectUrl: redirectedUrl1} |
| + }, |
| + { label: 'onBeforeSendHeaders', |
| + event: 'onBeforeSendHeaders', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + }, |
| + }, |
| + { label: 'onSendHeaders', |
| + event: 'onSendHeaders', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + }, |
| + }, |
| + { label: 'onHeadersReceived', |
| + event: 'onHeadersReceived', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + statusCode: 101, |
| + statusLine: 'HTTP/1.1 101 Switching Protocols', |
| + }, |
| + retval: {redirectUrl: redirectedUrl2} |
| + }, |
| + { label: 'onResponseStarted', |
| + event: 'onResponseStarted', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + ip: '127.0.0.1', |
| + fromCache: false, |
| + statusCode: 101, |
| + statusLine: 'HTTP/1.1 101 Switching Protocols', |
| + }, |
| + }, |
| + { label: 'onCompleted', |
| + event: 'onCompleted', |
| + details: { |
| + url: url, |
| + type: 'websocket', |
| + fromCache: false, |
| + statusCode: 101, |
| + statusLine: 'HTTP/1.1 101 Switching Protocols', |
| + } |
| + }, |
| + ], |
| + [ // event order |
| + ['onBeforeRequest', 'onBeforeSendHeaders', 'onHeadersReceived', |
| + 'onResponseStarted', 'onCompleted'] |
| + ], |
| + {urls: ['<all_urls>']}, // filter |
| + ['blocking'] // extraInfoSpec |
| + ); |
| + testWebSocketConnection(url, true); |
| + }, |
| + ], tab); |
| +}); |