| Index: chrome/test/data/extensions/platform_apps/web_view/shim/main.js
|
| diff --git a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js
|
| index 24a82bf337e9cf2bf993368fbb457385e9197cbd..02fc6f893ad3777093f091bba99d69dc8bd31631 100644
|
| --- a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js
|
| +++ b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js
|
| @@ -9,13 +9,14 @@ var util = {};
|
| // sure that the <object> shim is created (asynchronously at this point) for the
|
| // <webview> tag. This makes the <webview> tag ready for add/removeEventListener
|
| // calls.
|
| -util.createWebViewTagInDOM = function() {
|
| +util.createWebViewTagInDOM = function(partitionName) {
|
| var webview = document.createElement('webview');
|
| webview.style.width = '300px';
|
| webview.style.height = '200px';
|
| - document.body.appendChild(webview);
|
| var urlDummy = 'data:text/html,<body>Initial dummy guest</body>';
|
| webview.setAttribute('src', urlDummy);
|
| + webview.setAttribute('partition', partitionName);
|
| + document.body.appendChild(webview);
|
| return webview;
|
| };
|
|
|
| @@ -69,6 +70,7 @@ onload = function() {
|
| 'terminate'
|
| ];
|
| var webview = document.createElement('webview');
|
| + webview.setAttribute('partition', arguments.callee.name);
|
| webview.addEventListener('loadstop', function(e) {
|
| for (var i = 0; i < apiMethodsToCheck.length; ++i) {
|
| chrome.test.assertEq('function',
|
| @@ -79,7 +81,6 @@ onload = function() {
|
| chrome.test.assertEq('object', typeof webview.contentWindow);
|
| chrome.test.assertEq('function',
|
| typeof webview.contentWindow.postMessage);
|
| -
|
| chrome.test.succeed();
|
| });
|
| webview.setAttribute('src', 'data:text/html,webview check api');
|
| @@ -88,8 +89,7 @@ onload = function() {
|
|
|
| function webViewEventName() {
|
| var webview = document.createElement('webview');
|
| - webview.setAttribute('src', 'data:text/html,webview check api');
|
| - document.body.appendChild(webview);
|
| + webview.setAttribute('partition', arguments.callee.name);
|
|
|
| webview.addEventListener('loadstart', function(evt) {
|
| chrome.test.assertEq('loadstart', evt.type);
|
| @@ -106,6 +106,7 @@ onload = function() {
|
| });
|
|
|
| webview.setAttribute('src', 'data:text/html,trigger navigation');
|
| + document.body.appendChild(webview);
|
| },
|
|
|
| // This test registers two listeners on an event (loadcommit) and removes
|
| @@ -113,7 +114,7 @@ onload = function() {
|
| // Current expected behavior is that the second event listener will still
|
| // fire without crashing.
|
| function webviewDestroyOnEventListener() {
|
| - var webview = util.createWebViewTagInDOM();
|
| + var webview = util.createWebViewTagInDOM(arguments.callee.name);
|
| var url = 'data:text/html,<body>Destroy test</body>';
|
|
|
| var loadCommitCount = 0;
|
| @@ -123,8 +124,6 @@ onload = function() {
|
| return;
|
| ++loadCommitCount;
|
| if (loadCommitCount == 1) {
|
| - webview.parentNode.removeChild(webview);
|
| - webview = null;
|
| setTimeout(function() {
|
| chrome.test.succeed();
|
| }, 0);
|
| @@ -135,6 +134,7 @@ onload = function() {
|
|
|
| // The test starts from here, by setting the src to |url|.
|
| webview.addEventListener('loadcommit', function(e) {
|
| + webview.parentNode.removeChild(webview);
|
| loadCommitCommon(e);
|
| });
|
| webview.addEventListener('loadcommit', function(e) {
|
| @@ -147,7 +147,7 @@ onload = function() {
|
| // Each of the listener tries to change some properties on the event param,
|
| // which should not be possible.
|
| function cannotMutateEventName() {
|
| - var webview = util.createWebViewTagInDOM();
|
| + var webview = util.createWebViewTagInDOM(arguments.callee.name);
|
| var url = 'data:text/html,<body>Two</body>';
|
|
|
| var loadCommitACalled = false;
|
| @@ -195,6 +195,7 @@ onload = function() {
|
| // been set raises an exception.
|
| function partitionRaisesException() {
|
| var webview = document.createElement('webview');
|
| + webview.setAttribute('partition', arguments.callee.name);
|
| webview.setAttribute('src', 'data:text/html,trigger navigation');
|
| document.body.appendChild(webview);
|
| setTimeout(function() {
|
| @@ -209,6 +210,7 @@ onload = function() {
|
|
|
| function webViewExecuteScript() {
|
| var webview = document.createElement('webview');
|
| + webview.setAttribute('partition', arguments.callee.name);
|
| webview.addEventListener('loadstop', function() {
|
| webview.executeScript(
|
| {code:'document.body.style.backgroundColor = "red";'},
|
| @@ -225,11 +227,8 @@ onload = function() {
|
| // This test calls terminate() on guest after it has already been
|
| // terminated. This makes sure we ignore the call gracefully.
|
| function webViewTerminateAfterExitDoesntCrash() {
|
| - var webview = document.querySelector('webview');
|
| - webview.addEventListener('loadstart', function(evt) {
|
| - chrome.test.assertEq('loadstart', evt.type);
|
| - });
|
| -
|
| + var webview = document.createElement('webview');
|
| + webview.setAttribute('partition', arguments.callee.name);
|
| var loadstopSucceedsTest = false;
|
| webview.addEventListener('loadstop', function(evt) {
|
| chrome.test.assertEq('loadstop', evt.type);
|
| @@ -255,6 +254,47 @@ onload = function() {
|
| });
|
|
|
| webview.setAttribute('src', 'data:text/html,test terminate() crash.');
|
| + document.body.appendChild(webview);
|
| + },
|
| +
|
| + // This test verifies that assigning the src attribute the same value it had
|
| + // prior to a crash spawns off a new guest process.
|
| + function webViewAssignSrcAfterCrash() {
|
| + var webview = document.createElement('webview');
|
| + webview.setAttribute('partition', arguments.callee.name);
|
| + var terminated = false;
|
| + webview.addEventListener('loadstop', function(evt) {
|
| + if (!terminated) {
|
| + webview.terminate();
|
| + return;
|
| + }
|
| + // The guest has recovered after being terminated.
|
| + chrome.test.succeed();
|
| + });
|
| + webview.addEventListener('exit', function(evt) {
|
| + terminated = true;
|
| + webview.setAttribute('src', 'data:text/html,test page');
|
| + });
|
| + webview.setAttribute('src', 'data:text/html,test page');
|
| + document.body.appendChild(webview);
|
| + },
|
| +
|
| + // This test verifies that <webview> restores the src attribute if it is
|
| + // removed after navigation.
|
| + function webViewRemoveSrcAttribute() {
|
| + var dataUrl = 'data:text/html,test page';
|
| + var webview = document.createElement('webview');
|
| + webview.setAttribute('partition', arguments.callee.name);
|
| + var terminated = false;
|
| + webview.addEventListener('loadstop', function(evt) {
|
| + webview.removeAttribute('src');
|
| + setTimeout(function() {
|
| + chrome.test.assertEq(dataUrl, webview.getAttribute('src'));
|
| + chrome.test.succeed();
|
| + }, 0);
|
| + });
|
| + webview.setAttribute('src', dataUrl);
|
| + document.body.appendChild(webview);
|
| }
|
| ]);
|
| };
|
|
|