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

Side by Side 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <script>
2 // Description
3
4 var expectedEventData;
5 var capturedEventData;
6 var shouldIgnore;
7
8 function expect(data, ignoreFunc) {
9 expectedEventData = data;
10 capturedEventData = [];
11 shouldIgnore = ignoreFunc;
12 }
13
14 function checkExpectations() {
15 if (capturedEventData.length < expectedEventData.length) {
16 return;
17 }
18 chrome.test.assertEq(JSON.stringify(expectedEventData),
19 JSON.stringify(capturedEventData));
20 chrome.test.succeed();
21 }
22
23 var getURL = chrome.extension.getURL;
24
25 chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
26 console.log('---onUpdated: ' + info.status + ', ' + info.url);
27 if (shouldIgnore && shouldIgnore(info)) {
28 return;
29 }
30 capturedEventData.push(info);
31 checkExpectations();
32 });
33
34 chrome.test.runTests([
35 function browserThenRendererInitiated() {
36 // Note that a.html will set it's location.href to b.html, creating a
37 // renderer-initiated navigation.
38 expect([
39 { status: 'loading', url: getURL('browserThenRendererInitiated/a.html') },
40 { status: 'complete' },
41 { status: 'loading', url: getURL('browserThenRendererInitiated/b.html') },
42 { status: 'complete' },
43 ]);
44
45 chrome.tabs.create({ url: getURL('browserThenRendererInitiated/a.html') });
46 },
47
48 function newTab() {
49 // Test for crbug.com/27208.
50 expect([
51 { status: 'loading', url: 'chrome://newtab/' },
52 { status: 'complete' }
53 ]);
54
55 chrome.tabs.create({ url: 'chrome://newtab/' });
56 },
57
58 /*
59 // TODO(rafaelw) -- This is disabled because this test is flakey.
60 function updateDuringCreateCallback() {
61 // Test for crbug.com/27204.
62 // We have to ignore anything that comes before the about:blank loading
63 // status.
64 var ignore = true;
65 expect([
66 { status: 'loading', url: 'about:blank' },
67 { status: 'complete' }
68 ], function(info) {
69 if (info.status === 'loading' && info.url === 'about:blank') {
70 ignore = false;
71 }
72 return ignore;
73 });
74
75 chrome.tabs.create({ url: 'chrome://newtab/' }, function(tab) {
76 chrome.tabs.update(tab.id, { url: 'about:blank' });
77 });
78 }, */
79
80 function iframeNavigated() {
81 // The sequence of events goes like this:
82 // -a.html starts loading
83 // -while a.html is loading, iframe1.html (in it's onload) navigates to
84 // iframe2.html. This causes the page to continue to be in the loading state
85 // so the 'complete' status doesn't fire.
86 // -iframe2.html does a setTimeout to navigate itself to iframe3.html. This
87 // allows the page to stop loading and the 'complete' status to fire, but
88 // when the timeout fires, the pages goes back into the loading state
89 // which causes the new status: 'loading' event to fire without having
90 // changed the url.
91 expect([
92 { status: 'loading', url: getURL('iframeNavigated/a.html') },
93 { status: 'complete' },
94 { status: 'loading' },
95 { status: 'complete' },
96 ]);
97
98 chrome.tabs.create({ url: getURL('iframeNavigated/a.html') });
99 },
100
101 function internalAnchorNavigated() {
102 expect([
103 { status: 'loading', url: getURL('internalAnchorNavigated/a.html') },
104 { status: 'complete' },
105 { status: 'loading', url: getURL('internalAnchorNavigated/a.html#b') },
106 { status: 'complete' },
107 ]);
108
109 chrome.tabs.create({ url: getURL('internalAnchorNavigated/a.html') });
110 }
111 ]);
112 </script>
OLDNEW
« 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