Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6469)

Unified Diff: chrome/test/data/webui/webview_execute_script_test.js

Issue 1058113002: Implement <webview>.addContentScript/removeContentScript API [3] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@webui_api_1
Patch Set: nits Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webui/webview_execute_script_test.js
diff --git a/chrome/test/data/webui/webview_execute_script_test.js b/chrome/test/data/webui/webview_execute_script_test.js
deleted file mode 100644
index b59666e6444d37230d3aeb6f7ca375ebd9907379..0000000000000000000000000000000000000000
--- a/chrome/test/data/webui/webview_execute_script_test.js
+++ /dev/null
@@ -1,381 +0,0 @@
-// 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 createWebview() {
- var webview = document.createElement('webview');
- document.body.appendChild(webview);
- return webview;
-}
-
-function onGetBackgroundExecuted(results) {
- chrome.send('testResult', [results.length == 1 && results[0] == 'red']);
-};
-
-function testExecuteScriptCode(url) {
- var webview = createWebview();
-
- var onSetBackgroundExecuted = function() {
- webview.executeScript({
- code: 'document.body.style.backgroundColor;'
- }, onGetBackgroundExecuted);
- };
-
- var onLoadStop = function() {
- webview.executeScript({
- code: 'document.body.style.backgroundColor = \'red\';'
- }, onSetBackgroundExecuted);
- };
-
- webview.addEventListener('loadstop', onLoadStop);
- webview.src = url;
-}
-
-function testExecuteScriptCodeFromFile(url) {
- var webview = createWebview();
-
- var onSetBackgroundExecuted = function() {
- webview.executeScript({
- code: 'document.body.style.backgroundColor;'
- }, onGetBackgroundExecuted);
- };
-
- var onLoadStop = function() {
- webview.executeScript({
- file: 'test/webview_execute_script.js'
- }, onSetBackgroundExecuted);
- };
-
- webview.addEventListener('loadstop', onLoadStop);
- webview.src = url;
-}
-
-function testAddContentScript(url) {
- var webview = document.createElement('webview');
-
- console.log("Step 1: call <webview>.addContentScripts.");
- webview.addContentScripts(
- [{"name": 'myrule',
- "matches": ["http://*/empty*"],
- "js": ["test/inject_comm_channel.js", "test/inject_comm_channel_2.js"],
- "run_at": "document_start"}]);
-
- webview.addEventListener('loadstop', function() {
- console.log("Step 2: postMessage to build connection.");
- var msg = ['connect'];
- webview.contentWindow.postMessage(JSON.stringify(msg), '*');
- });
-
- window.addEventListener('message', function(e) {
- var data = JSON.parse(e.data);
- if (data == 'connected') {
- console.log(
- 'Step 3: A communication channel has been established with webview.');
- chrome.send('testResult', [true]);
- return;
- }
- console.log('Unexpected message: \'' + data[0] + '\'');
- chrome.send('testResult', [false]);
- });
-
- webview.src = url;
- document.body.appendChild(webview);
-}
-
-function testAddMultiContentScripts(url) {
- var webview = document.createElement('webview');
-
- console.log("Step 1: call <webview>.addContentScripts(myrule1 & myrule2)");
- webview.addContentScripts(
- [{"name": 'myrule1',
- "matches": ["http://*/empty*"],
- "js": ["test/inject_comm_channel.js"],
- "run_at": "document_start"},
- {"name": 'myrule2',
- "matches": ["http://*/empty*"],
- "js": ["test/inject_comm_channel_2.js"],
- "run_at": "document_start"}]);
-
- webview.addEventListener('loadstop', function() {
- console.log("Step 2: postMessage to build connection.");
- var msg1 = ['connect'];
- webview.contentWindow.postMessage(JSON.stringify(msg1), '*');
- console.log("Step 3: postMessage to build connection to the other script.");
- var msg2 = ['connect_request'];
- webview.contentWindow.postMessage(JSON.stringify(msg2), '*');
- });
-
- var response_1 = false;
- var response_2 = false;
- window.addEventListener('message', function(e) {
- var data = JSON.parse(e.data);
- if (data == 'connected') {
- console.log(
- 'Step 4: A communication channel has been established with webview.');
- response_1 = true;
- if (response_1 && response_2)
- chrome.send('testResult', [true]);
- return;
- } else if (data == 'connected_response') {
- console.log(
- 'Step 5: A communication channel has been established with webview.');
- response_2 = true;
- if (response_1 && response_2)
- chrome.send('testResult', [true]);
- return;
- }
- console.log('!!!!!Unexpected message: \'' + data[0] + '\'');
- chrome.send('testResult', [false]);
- });
-
- webview.src = url;
- document.body.appendChild(webview);
-}
-
-function testAddContentScriptWithSameNameShouldOverwriteTheExistingOne(url) {
- var webview = document.createElement('webview');
-
- console.log("Step 1: call <webview>.addContentScripts(myrule1)");
- webview.addContentScripts(
- [{"name": 'myrule1',
- "matches": ["http://*/empty*"],
- "js": ["test/inject_comm_channel.js"],
- "run_at": "document_start"}]);
- var connect_script_1 = true;
- var connect_script_2 = false;
-
- webview.addEventListener('loadstop', function() {
- if (connect_script_1) {
- var msg1 = ['connect'];
- webview.contentWindow.postMessage(JSON.stringify(msg1), '*');
- connect_script_1 = false;
- }
- if (connect_script_2) {
- var msg2 = ['connect_request'];
- webview.contentWindow.postMessage(JSON.stringify(msg2), '*');
- connect_script_2 = false;
- }
- });
-
- var should_get_response_from_script_1 = true;
- window.addEventListener('message', function(e) {
- var data = JSON.parse(e.data);
- if (data == 'connected') {
- if (should_get_response_from_script_1) {
- console.log(
- 'Step 2: A communication channel has been established with webview.'
- );
- webview.addContentScripts(
- [{"name": 'myrule1',
- "matches": ["http://*/empty*"],
- "js": ["test/inject_comm_channel_2.js"],
- "run_at": "document_start"}]);
- connect_script_2 = true;
- should_get_response_from_script_1 = false;
- webview.src = url;
- } else {
- chrome.send('testResult', [false]);
- }
- return;
- } else if (data == 'connected_response') {
- console.log(
- 'Step 3: Another communication channel has been established ' +
- 'with webview.');
- setTimeout(function() {
- chrome.send('testResult', [true]);
- }, 1000);
- return;
- }
- console.log('Unexpected message: \'' + data[0] + '\'');
- chrome.send('testResult', [false]);
- });
-
- webview.src = url;
- document.body.appendChild(webview);
-}
-
-function testAddContentScriptToOneWebViewShouldNotInjectToTheOtherWebView(url) {
- var webview1 = document.createElement('webview');
- var webview2 = document.createElement('webview');
-
- console.log("Step 1: call <webview1>.addContentScripts.");
- webview1.addContentScripts(
- [{"name": 'myrule',
- "matches": ["http://*/empty*"],
- "js": ["test/inject_comm_channel.js"],
- "run_at": "document_start"}]);
-
- webview2.addEventListener('loadstop', function() {
- console.log("Step 2: webview2 requests to build communication channel.");
- var msg = ['connect'];
- webview2.contentWindow.postMessage(JSON.stringify(msg), '*');
- setTimeout(function() {
- chrome.send('testResult', [true]);
- }, 2000);
- });
-
- window.addEventListener('message', function(e) {
- var data = JSON.parse(e.data);
- if (data == 'connected') {
- chrome.send('testResult', [false]);
- return;
- }
- console.log('Unexpected message: \'' + data[0] + '\'');
- chrome.send('testResult', [false]);
- });
-
- webview1.src = url;
- webview2.src = url;
- document.body.appendChild(webview1);
- document.body.appendChild(webview2);
-}
-
-function testAddAndRemoveContentScripts(url) {
- var webview = document.createElement('webview');
-
- console.log("Step 1: call <webview>.addContentScripts.");
- webview.addContentScripts(
- [{"name": 'myrule',
- "matches": ["http://*/empty*"],
- "js": ["test/inject_comm_channel.js"],
- "run_at": "document_start"}]);
-
- var count = 0;
- webview.addEventListener('loadstop', function() {
- if (count == 0) {
- console.log('Step 2: post message to build connect.');
- var msg = ['connect'];
- webview.contentWindow.postMessage(JSON.stringify(msg), '*');
- count++;
- } else if (count == 1) {
- console.log(
- 'Step 4: call <webview>.removeContentScripts and navigate.');
- webview.removeContentScripts();
- webview.src = url;
- count++;
- } else if (count == 2) {
- console.log('Step 5: post message to build connect again.');
- var msg = ['connect'];
- webview.contentWindow.postMessage(JSON.stringify(msg), '*');
- setTimeout(function() {
- chrome.send('testResult', [true]);
- }, 2000);
- }
- });
-
- var replyCount = 0;
- window.addEventListener('message', function(e) {
- var data = JSON.parse(e.data);
- if (data[0] == 'connected') {
- console.log(
- 'Step 3: A communication channel has been established with webview.');
- if (replyCount == 0) {
- webview.setAttribute('src', 'about:blank');
- replyCount++;
- return;
- } else if (replyCount == 1) {
- chrome.send('testResult', [false]);
- return;
- }
- }
- console.log('Unexpected message: \'' + data[0] + '\'');
- chrome.send('testResult', [false]);
- });
-
- webview.src = url;
- document.body.appendChild(webview);
-}
-
-function testAddContentScriptsWithNewWindowAPI(url) {
- var webview = document.createElement('webview');
-
- var newwebview;
- webview.addEventListener('newwindow', function(e) {
- e.preventDefault();
- newwebview = document.createElement('webview');
-
- console.log('Step 2: call newwebview.addContentScripts.');
- newwebview.addContentScripts(
- [{"name": 'myrule',
- "matches": ["http://*/guest_from_opener*"],
- "js": ["test/inject_comm_channel.js"],
- "run_at": "document_start"}]);
-
- newwebview.addEventListener('loadstop', function(evt) {
- var msg = ['connect'];
- console.log('Step 4: new webview postmessage to build communication ' +
- 'channel.');
- newwebview.contentWindow.postMessage(JSON.stringify(msg), '*');
- });
-
- document.body.appendChild(newwebview);
- // attach the new window to the new <webview>.
- console.log("Step 3: attaches the new webview.");
- e.window.attach(newwebview);
- });
-
- window.addEventListener('message', function(e) {
- var data = JSON.parse(e.data);
- if (data == 'connected' && e.source == newwebview.contentWindow) {
- console.log('Step 5: a communication channel has been established ' +
- 'with the new webview.');
- chrome.send('testResult', [true]);
- return;
- } else {
- chrome.send('testResult', [false]);
- return;
- }
- console.log('unexpected message: \'' + data[0] + '\'');
- chrome.send('testResult', [false]);
- });
-
- console.log('Step 1: navigates the webview to window open guest URL.');
- webview.setAttribute('src', url);
- document.body.appendChild(webview);
-}
-
-function testContentScriptIsInjectedAfterTerminateAndReloadWebView(url) {
- var webview = document.createElement('webview');
-
- console.log('Step 1: call <webview>.addContentScripts.');
- webview.addContentScripts(
- [{"name": 'myrule',
- "matches": ["http://*/empty*"],
- "js": ["test/inject_comm_channel.js"],
- "run_at": "document_start"}]);
-
- var count = 0;
- webview.addEventListener('loadstop', function() {
- if (count == 0) {
- console.log('Step 2: call webview.terminate().');
- webview.terminate();
- ++count;
- return;
- } else if (count == 1) {
- console.log('Step 4: postMessage to build communication.');
- var msg = ['connect'];
- webview.contentWindow.postMessage(JSON.stringify(msg), '*');
- ++count;
- }
- });
-
- webview.addEventListener('exit', function() {
- console.log('Step 3: call webview.reload().');
- webview.reload();
- });
-
- window.addEventListener('message', function(e) {
- var data = JSON.parse(e.data);
- if (data == 'connected') {
- console.log(
- 'Step 5: A communication channel has been established with webview.');
- chrome.send('testResult', [true]);
- return;
- }
- console.log('Unexpected message: \'' + data[0] + '\'');
- chrome.send('testResult', [false]);
- });
-
- webview.src = url;
- document.body.appendChild(webview);
-}

Powered by Google App Engine
This is Rietveld 408576698