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

Unified Diff: chrome/test/data/extensions/api_test/tabs/on_updated/test.html

Issue 2111010: fix chrome.tabs.onUpdated bugs, add browsertest (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: more cr changes Created 10 years, 7 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
« no previous file with comments | « chrome/test/data/extensions/api_test/tabs/on_updated/manifest.json ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/data/extensions/api_test/tabs/on_updated/test.html
diff --git a/chrome/test/data/extensions/api_test/tabs/on_updated/test.html b/chrome/test/data/extensions/api_test/tabs/on_updated/test.html
new file mode 100644
index 0000000000000000000000000000000000000000..284c6f74f5c5a7df2f595e39405d683c1172973a
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/tabs/on_updated/test.html
@@ -0,0 +1,112 @@
+<script>
+// Description
+
+var expectedEventData;
+var capturedEventData;
+var shouldIgnore;
+
+function expect(data, ignoreFunc) {
+ expectedEventData = data;
+ capturedEventData = [];
+ shouldIgnore = ignoreFunc;
+}
+
+function checkExpectations() {
+ if (capturedEventData.length < expectedEventData.length) {
+ return;
+ }
+ chrome.test.assertEq(JSON.stringify(expectedEventData),
+ JSON.stringify(capturedEventData));
+ chrome.test.succeed();
+}
+
+var getURL = chrome.extension.getURL;
+
+chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
+ console.log('---onUpdated: ' + info.status + ', ' + info.url);
+ if (shouldIgnore && shouldIgnore(info)) {
+ return;
+ }
+ capturedEventData.push(info);
+ checkExpectations();
+});
+
+chrome.test.runTests([
+ function browserThenRendererInitiated() {
+ // Note that a.html will set it's location.href to b.html, creating a
+ // renderer-initiated navigation.
+ expect([
+ { status: 'loading', url: getURL('browserThenRendererInitiated/a.html') },
+ { status: 'complete' },
+ { status: 'loading', url: getURL('browserThenRendererInitiated/b.html') },
+ { status: 'complete' },
+ ]);
+
+ chrome.tabs.create({ url: getURL('browserThenRendererInitiated/a.html') });
+ },
+
+ function newTab() {
+ // Test for crbug.com/27208.
+ expect([
+ { status: 'loading', url: 'chrome://newtab/' },
+ { status: 'complete' }
+ ]);
+
+ chrome.tabs.create({ url: 'chrome://newtab/' });
+ },
+
+ /*
+ // TODO(rafaelw) -- This is disabled because this test is flakey.
+ function updateDuringCreateCallback() {
+ // Test for crbug.com/27204.
+ // We have to ignore anything that comes before the about:blank loading
+ // status.
+ var ignore = true;
+ expect([
+ { status: 'loading', url: 'about:blank' },
+ { status: 'complete' }
+ ], function(info) {
+ if (info.status === 'loading' && info.url === 'about:blank') {
+ ignore = false;
+ }
+ return ignore;
+ });
+
+ chrome.tabs.create({ url: 'chrome://newtab/' }, function(tab) {
+ chrome.tabs.update(tab.id, { url: 'about:blank' });
+ });
+ }, */
+
+ function iframeNavigated() {
+ // The sequence of events goes like this:
+ // -a.html starts loading
+ // -while a.html is loading, iframe1.html (in it's onload) navigates to
+ // iframe2.html. This causes the page to continue to be in the loading state
+ // so the 'complete' status doesn't fire.
+ // -iframe2.html does a setTimeout to navigate itself to iframe3.html. This
+ // allows the page to stop loading and the 'complete' status to fire, but
+ // when the timeout fires, the pages goes back into the loading state
+ // which causes the new status: 'loading' event to fire without having
+ // changed the url.
+ expect([
+ { status: 'loading', url: getURL('iframeNavigated/a.html') },
+ { status: 'complete' },
+ { status: 'loading' },
+ { status: 'complete' },
+ ]);
+
+ chrome.tabs.create({ url: getURL('iframeNavigated/a.html') });
+ },
+
+ function internalAnchorNavigated() {
+ expect([
+ { status: 'loading', url: getURL('internalAnchorNavigated/a.html') },
+ { status: 'complete' },
+ { status: 'loading', url: getURL('internalAnchorNavigated/a.html#b') },
+ { status: 'complete' },
+ ]);
+
+ chrome.tabs.create({ url: getURL('internalAnchorNavigated/a.html') });
+ }
+]);
+</script>
« no previous file with comments | « chrome/test/data/extensions/api_test/tabs/on_updated/manifest.json ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698