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

Unified Diff: chrome/test/data/extensions/platform_apps/web_view/main.js

Issue 11368071: browser-plugin: Remove event handling code, and use CustomEvents in webkit instead. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 1 month 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/extensions/platform_apps/web_view/main.js
diff --git a/chrome/test/data/extensions/platform_apps/web_view/main.js b/chrome/test/data/extensions/platform_apps/web_view/main.js
index 9fcea5f2df96640d5c692d0c416ca2ad6c4a484f..73a27fa5987a75974140b63f50c93ce5219d4f55 100644
--- a/chrome/test/data/extensions/platform_apps/web_view/main.js
+++ b/chrome/test/data/extensions/platform_apps/web_view/main.js
@@ -60,7 +60,6 @@ onload = function() {
var webview = document.createElement('webview');
webview.setAttribute('src', 'data:text/html,webview check api');
var apiMethodsToCheck = [
- 'addEventListener',
'back',
'canGoBack',
'canGoForward',
@@ -68,7 +67,6 @@ onload = function() {
'getProcessId',
'go',
'reload',
- 'removeEventListener',
'stop',
'terminate'
];
@@ -91,260 +89,61 @@ onload = function() {
}, 0);
},
- function webViewEventListeners() {
- var webview = document.createElement('webview');
- webview.setAttribute('src', 'data:text/html,webview check api');
- document.body.appendChild(webview);
-
- var validEvents = [
- 'exit',
- 'loadabort',
- 'loadredirect',
- 'loadstart',
- 'loadstop'
- ];
- var invalidEvents = [
- 'makemesandwich',
- 'sudomakemesandwich'
- ];
-
- // Timeout is necessary to give the mutation observers of the webview tag
- // shim a chance to fire.
- setTimeout(function() {
- for (var i = 0; i < validEvents.length; ++i) {
- chrome.test.assertTrue(
- webview.addEventListener(validEvents[i], function() {}));
- }
-
- for (var i = 0; i < invalidEvents.length; ++i) {
- chrome.test.assertFalse(
- webview.addEventListener(invalidEvents[i], function() {}));
- }
-
- chrome.test.succeed();
- }, 0);
- },
-
function webViewEventName() {
var webview = document.createElement('webview');
webview.setAttribute('src', 'data:text/html,webview check api');
document.body.appendChild(webview);
- setTimeout(function() {
- webview.addEventListener('loadstart', function(evt) {
- chrome.test.assertEq('loadstart', evt.name);
- });
+ webview.addEventListener('loadstart', function(evt) {
+ chrome.test.assertEq('loadstart', evt.type);
+ });
- webview.addEventListener('loadstop', function(evt) {
- chrome.test.assertEq('loadstop', evt.name);
- webview.terminate();
- });
+ webview.addEventListener('loadstop', function(evt) {
+ chrome.test.assertEq('loadstop', evt.type);
+ webview.terminate();
+ });
- webview.addEventListener('exit', function(evt) {
- chrome.test.assertEq('exit', evt.name);
- chrome.test.succeed();
- });
+ webview.addEventListener('exit', function(evt) {
+ chrome.test.assertEq('exit', evt.type);
+ chrome.test.succeed();
+ });
- webview.setAttribute('src', 'data:text/html,trigger navigation');
- }, 0);
+ webview.setAttribute('src', 'data:text/html,trigger navigation');
},
// This test registers two listeners on an event (loadcommit) and removes
// the <webview> tag when the first listener fires.
// Current expected behavior is that the second event listener will still
- // fire (and we don't crash).
+ // fire without crashing.
function webviewDestroyOnEventListener() {
var webview = util.createWebViewTagInDOM();
var url = 'data:text/html,<body>Destroy test</body>';
- var continuedAfterDelete = false;
var loadCommitCount = 0;
- var updateLoadCommitCount = function() {
+ function loadCommitCommon(e) {
+ chrome.test.assertEq('loadcommit', e.type);
+ if (url != e.url)
+ return;
++loadCommitCount;
if (loadCommitCount == 1) {
- // We remove the <webview> tag when the first listener fires.
webview.parentNode.removeChild(webview);
webview = null;
- // Make sure the js executes after nulling |webview|.
- continuedAfterDelete = true;
- } else if (loadCommitCount == 2) {
- chrome.test.assertTrue(continuedAfterDelete);
- chrome.test.succeed();
- }
- };
-
- var onLoadCommitA = function(e) {
- chrome.test.assertEq('loadcommit', e.name);
- if (e.url == url) {
- updateLoadCommitCount();
- }
- };
- var onLoadCommitB = function(e) {
- chrome.test.assertEq('loadcommit', e.name);
- if (e.url == url) {
- updateLoadCommitCount();
- }
- };
-
- setTimeout(function() {
- // The test starts from here, by setting the src to |url|. Event
- // listener registration works because we already have a (dummy) src set
- // on the <webview> tag.
- webview.addEventListener('loadcommit', onLoadCommitA);
- webview.addEventListener('loadcommit', onLoadCommitB);
- webview.setAttribute('src', url);
- }, 0);
- },
-
- // This test checks the current behavior of dynamic event listener
- // registration 'during' an event listener fire.
- // Once an event starts firing its listeners, any mutation to the list of
- // event listeners for this event are deferred until all of the listeners
- // have fired.
- //
- // Step1: Loads a guest with |urlStep1| with two listeners to 'loadcommit':
- // onLoadCommitA and onLoadCommitB. When first of them fires, we try to
- // remove the other and add a third listener (onLoadCommitC).
- // Current expected behavior is these add/remove will be ignored and the
- // original two listeners will fire.
- // Step2: We change the guest to |urlStep2|. This will cause 'loadcommit' to
- // fire with mutated event listeners list (that is one of
- // onLoadCommitA/onLoadCommitB and onLoadCommitC).
- function dynamicEventListenerRegistrationOnListenerFire() {
- var urlStep1 = 'data:text/html,<body>Two</body>';
- var urlStep2 = 'data:text/html,<body>Three</body>';
- var webview = util.createWebViewTagInDOM();
-
- var listenerFireCount1 = 0; // Step 1 listeners.
- var listenerFireCount2 = 0; // Step 2 listeners.
-
- var loadCommitACalledStep1 = false;
- var loadCommitBCalledStep1 = false;
-
- var loadCommitACalledStep2 = false;
- var loadCommitBCalledStep2 = false;
- var loadCommitCCalledStep2 = false;
-
- var expectAToFireInStep2;
- var expectBToFireInStep2;
-
- var updateTestStateOnListenerStep1 = function() {
- ++listenerFireCount1;
- if (listenerFireCount1 == 1) { // First listener fire on Step 1.
- chrome.test.assertTrue(loadCommitACalledStep1 ||
- loadCommitBCalledStep1);
- // Add an event listener and remove one existing one when the first
- // listener fires. Current implmementation does not expect any of
- // these to be reflected before all event listeners are fired for the
- // current event.
-
- // Remove.
- if (loadCommitACalledStep1) {
- webview.removeEventListener('loadcommit', onLoadCommitB);
- expectAToFireInStep2 = true;
- expectBToFireInStep2 = false;
- } else {
- webview.removeEventListener('loadcommit', onLoadCommitA);
- expectAToFireInStep2 = false;
- expectBToFireInStep2 = true;
- }
- // Add the other one.
- webview.addEventListener('loadcommit', onLoadCommitC);
- } else if (listenerFireCount1 == 2) { // Last listener fire on Step 1.
- chrome.test.assertTrue(loadCommitACalledStep1 &&
- loadCommitBCalledStep1);
- // Move to Step 2.
- webview.setAttribute('src', urlStep2);
- } else {
- // More than expected listeners fired.
- chrome.test.fail();
- }
- };
-
- var updateTestStateOnListenerStep2 = function() {
- ++listenerFireCount2;
- if (listenerFireCount2 == 2) {
- // Exactly one of onLoadCommitA and onLoadCommitB must be called.
- chrome.test.assertTrue(loadCommitACalledStep2 ||
- loadCommitBCalledStep2);
- // onLoadCommitC must be called.
- chrome.test.assertTrue(loadCommitCCalledStep2);
-
- chrome.test.succeed();
- } else if (listenerFireCount2 > 2) {
- // More than expected listeners fired.
+ setTimeout(function() {
+ chrome.test.succeed();
+ }, 0);
+ } else if (loadCommitCount > 2) {
chrome.test.fail();
}
};
- var onLoadCommitA = function(e) {
- chrome.test.assertEq('loadcommit', e.name);
- switch (e.url) {
- case urlStep1: // Step 1.
- chrome.test.log('Step 1. onLoadCommitA');
- chrome.test.assertFalse(loadCommitACalledStep1);
- loadCommitACalledStep1 = true;
-
- updateTestStateOnListenerStep1();
- break;
- case urlStep2: // Step 2.
- chrome.test.log('Step 2. onLoadCommitA');
- chrome.test.assertTrue(expectAToFireInStep2);
- // Can be called at most once.
- chrome.test.assertFalse(loadCommitACalledStep2);
- loadCommitACalledStep2 = true;
-
- updateTestStateOnListenerStep2();
- break;
- }
- };
-
- var onLoadCommitB = function(e) {
- chrome.test.assertEq('loadcommit', e.name);
- switch (e.url) {
- case urlStep1: // Step 1.
- chrome.test.log('Step 1. onLoadCommitB');
- chrome.test.assertFalse(loadCommitBCalledStep1);
- loadCommitBCalledStep1 = true;
-
- updateTestStateOnListenerStep1();
- break;
- case urlStep2: // Step 2.
- chrome.test.log('Step 2. onLoadCommitB');
- chrome.test.assertTrue(expecBToFireInStep2);
- // Can be called at most once.
- chrome.test.assertFalse(loadCommitBCalledStep2);
- loadCommitBCalledStep2 = true;
-
- updateTestStateOnListenerStep2();
- break;
- }
- };
-
- var onLoadCommitC = function(e) {
- chrome.test.assertEq('loadcommit', e.name);
- switch (e.url) {
- case urlStep1: // Step 1.
- chrome.test.fail();
- break;
- case urlStep2: // Step 2.
- chrome.test.log('Step 2. onLoadCommitC');
- chrome.test.assertFalse(loadCommitCCalledStep2);
- loadCommitCCalledStep2 = true;
-
- updateTestStateOnListenerStep2();
- break;
- }
- };
-
- setTimeout(function() {
- // The test starts from here, by setting the src to |urlStep1|. Event
- // listener registration works because we already have a (dummy) src set
- // on the <webview> tag.
- webview.addEventListener('loadcommit', onLoadCommitA);
- webview.addEventListener('loadcommit', onLoadCommitB);
- webview.setAttribute('src', urlStep1);
- }, 0);
+ // The test starts from here, by setting the src to |url|.
+ webview.addEventListener('loadcommit', function(e) {
arv (Not doing code reviews) 2012/11/12 22:58:07 webview.addEventListener('loadcommit' loadCommitCo
+ loadCommitCommon(e);
+ });
+ webview.addEventListener('loadcommit', function(e) {
+ loadCommitCommon(e);
+ });
+ webview.setAttribute('src', url);
arv (Not doing code reviews) 2012/11/12 22:58:07 is there no src setter?
},
// This test registers two event listeners on a same event (loadcommit).
@@ -359,33 +158,30 @@ onload = function() {
var maybeFinishTest = function(e) {
if (loadCommitACalled && loadCommitBCalled) {
- chrome.test.assertEq('loadcommit', e.name);
- chrome.test.assertTrue(e.isTopLevel);
+ chrome.test.assertEq('loadcommit', e.type);
chrome.test.succeed();
}
};
var onLoadCommitA = function(e) {
if (e.url == url) {
- chrome.test.assertEq('loadcommit', e.name);
+ chrome.test.assertEq('loadcommit', e.type);
chrome.test.assertTrue(e.isTopLevel);
chrome.test.assertFalse(loadCommitACalled);
loadCommitACalled = true;
// Try mucking with properities inside |e|.
- e.name = 'modified';
- e.isTopLevel = 'string-value';
+ e.type = 'modified';
maybeFinishTest(e);
}
};
var onLoadCommitB = function(e) {
if (e.url == url) {
- chrome.test.assertEq('loadcommit', e.name);
+ chrome.test.assertEq('loadcommit', e.type);
chrome.test.assertTrue(e.isTopLevel);
chrome.test.assertFalse(loadCommitBCalled);
loadCommitBCalled = true;
// Try mucking with properities inside |e|.
- e.name = 'modified';
- e.isTopLevel = 'string-value';
+ e.type = 'modified';
maybeFinishTest(e);
}
};

Powered by Google App Engine
This is Rietveld 408576698