| Index: chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.js
|
| diff --git a/chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.js b/chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f3f822f0fdf280e31f9db047e1a95fd47cde9a1d
|
| --- /dev/null
|
| +++ b/chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.js
|
| @@ -0,0 +1,85 @@
|
| +// 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.
|
| +
|
| +// Waits until content sampled from |stream| indicates a success or fail status
|
| +// from an off-screen tab page that renders a green (success) or red (fail)
|
| +// color fill.
|
| +function waitForGreenOrRedTestResultAndEndTest(stream) {
|
| + waitForAnExpectedColor(stream, [[255, 0, 0], [0, 255, 0]], 64,
|
| + function (result) {
|
| + stopAllTracks(stream);
|
| + if (result == 1) {
|
| + chrome.test.succeed();
|
| + } else {
|
| + // Fail after 3 seconds to allow examining the debug error message.
|
| + setTimeout(function () { chrome.test.fail(); }, 3000);
|
| + }
|
| + }
|
| + );
|
| +}
|
| +
|
| +chrome.test.runTests([
|
| + function cannotAccessLocalResources() {
|
| + chrome.tabCapture.captureOffscreenTab(
|
| + makeDataUriFromDocument(makeOffscreenTabTestDocument(
|
| + 'function failIfIsLoadable(url, runNextTest) {\n' +
|
| + ' var request = new XMLHttpRequest();\n' +
|
| + ' request.open("GET", url);\n' +
|
| + ' request.addEventListener("load", function () {\n' +
|
| + ' setDebugMessage(url);\n' +
|
| + ' setFillColor(redColor);\n' +
|
| + ' });\n' +
|
| + ' request.addEventListener("error", function () {\n' +
|
| + ' setTimeout(runNextTest, 0);\n' +
|
| + ' });' +
|
| + ' request.send();\n' +
|
| + '}\n' +
|
| + '\n' +
|
| + 'failIfIsLoadable("file://something", function () {\n' +
|
| + ' failIfIsLoadable("chrome-extension://' + chrome.runtime.id +
|
| + '/offscreen_evil_tests.js", function() {\n' +
|
| + ' setFillColor(greenColor);\n' +
|
| + ' });\n' +
|
| + '});')),
|
| + getCaptureOptions(),
|
| + waitForGreenOrRedTestResultAndEndTest);
|
| + },
|
| +
|
| + function cannotOpenNewTabsOrDialogs() {
|
| + chrome.tabCapture.captureOffscreenTab(
|
| + makeDataUriFromDocument(makeOffscreenTabTestDocument(
|
| + 'var wnd = window.open("data:text/html;charset=UTF-8,NOT SEEN");\n' +
|
| + 'if (wnd) {\n' +
|
| + ' setDebugMessage("window.open() succeeded");\n' +
|
| + ' setFillColor(redColor);\n' +
|
| + '} else {\n' +
|
| + ' var result = window.confirm("Can you see me?");\n' +
|
| + ' if (result) {\n' +
|
| + ' setDebugMessage("positive confirm result");\n' +
|
| + ' setFillColor(redColor);\n' +
|
| + ' } else {\n' +
|
| + ' setFillColor(greenColor);\n' +
|
| + ' }\n' +
|
| + '}')),
|
| + getCaptureOptions(),
|
| + waitForGreenOrRedTestResultAndEndTest);
|
| + },
|
| +
|
| + function cannotGetUserMedia() {
|
| + chrome.tabCapture.captureOffscreenTab(
|
| + makeDataUriFromDocument(makeOffscreenTabTestDocument(
|
| + 'navigator.webkitGetUserMedia(\n' +
|
| + ' {video: true},\n' +
|
| + ' function onSuccess(stream) { setFillColor(redColor); },\n' +
|
| + ' function onFailure(error) { setFillColor(greenColor); });')),
|
| + getCaptureOptions(),
|
| + waitForGreenOrRedTestResultAndEndTest);
|
| + },
|
| +
|
| + // NOTE: Before adding any more tests, the maximum off-screen tab limit would
|
| + // have to be increased (or a design issue resolved). This is because
|
| + // off-screen tabs are not closed the instant the LocalMediaStream is stopped,
|
| + // but approximately 1 second later.
|
| +
|
| +]);
|
|
|