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

Side by Side Diff: chrome/test/data/extensions/api_test/webnavigation/navigation2/test.html

Issue 6363002: Implement the onBeforeRetarget event of the webNavigation API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 9 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « chrome/test/data/extensions/api_test/webnavigation/navigation1/test.html ('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
1 <script> 1 <script>
2 var expectedEventData; 2 var expectedEventData;
3 var capturedEventData; 3 var capturedEventData;
4 var nextFrameId; 4 var nextFrameId;
5 var frameIds; 5 var frameIds;
6 var nextTabId;
7 var tabIds;
6 8
7 function expect(data) { 9 function expect(data) {
8 expectedEventData = data; 10 expectedEventData = data;
9 capturedEventData = []; 11 capturedEventData = [];
10 nextFrameId = 1; 12 nextFrameId = 1;
11 frameIds = {}; 13 frameIds = {};
14 nextTabId = 0;
15 tabIds = {};
12 } 16 }
13 17
14 function checkExpectations() { 18 function checkExpectations() {
15 if (capturedEventData.length < expectedEventData.length) { 19 if (capturedEventData.length < expectedEventData.length) {
16 return; 20 return;
17 } 21 }
18 chrome.test.assertEq(JSON.stringify(expectedEventData), 22 chrome.test.assertEq(JSON.stringify(expectedEventData),
19 JSON.stringify(capturedEventData)); 23 JSON.stringify(capturedEventData));
20 chrome.test.succeed(); 24 chrome.test.succeed();
21 } 25 }
22 26
23 function captureEvent(name, details) { 27 function captureEvent(name, details) {
24 // normalize details. 28 // normalize details.
25 details.timeStamp = 0; 29 if ('timeStamp' in details) {
26 if (details.frameId != 0) { 30 details.timeStamp = 0;
31 }
32 if (('frameId' in details) && (details.frameId != 0)) {
27 if (frameIds[details.frameId] === undefined) { 33 if (frameIds[details.frameId] === undefined) {
28 frameIds[details.frameId] = nextFrameId++; 34 frameIds[details.frameId] = nextFrameId++;
29 } 35 }
30 details.frameId = frameIds[details.frameId]; 36 details.frameId = frameIds[details.frameId];
31 } 37 }
38 if ('tabId' in details) {
39 if (tabIds[details.tabId] === undefined) {
40 tabIds[details.tabId] = nextTabId++;
41 }
42 details.tabId = tabIds[details.tabId];
43 }
44 if ('sourceTabId' in details) {
45 if (tabIds[details.sourceTabId] === undefined) {
46 tabIds[details.sourceTabId] = nextTabId++;
47 }
48 details.sourceTabId = tabIds[details.sourceTabId];
49 }
32 capturedEventData.push([name, details]); 50 capturedEventData.push([name, details]);
33 checkExpectations(); 51 checkExpectations();
34 } 52 }
35 53
36 chrome.experimental.webNavigation.onBeforeNavigate.addListener( 54 chrome.experimental.webNavigation.onBeforeNavigate.addListener(
37 function(details) { 55 function(details) {
38 captureEvent("onBeforeNavigate", details); 56 captureEvent("onBeforeNavigate", details);
39 }); 57 });
40 58
41 chrome.experimental.webNavigation.onCommitted.addListener(function(details) { 59 chrome.experimental.webNavigation.onCommitted.addListener(function(details) {
42 captureEvent("onCommitted", details); 60 captureEvent("onCommitted", details);
43 }); 61 });
44 62
45 chrome.experimental.webNavigation.onDOMContentLoaded.addListener( 63 chrome.experimental.webNavigation.onDOMContentLoaded.addListener(
46 function(details) { 64 function(details) {
47 captureEvent("onDOMContentLoaded", details); 65 captureEvent("onDOMContentLoaded", details);
48 }); 66 });
49 67
50 chrome.experimental.webNavigation.onCompleted.addListener( 68 chrome.experimental.webNavigation.onCompleted.addListener(
51 function(details) { 69 function(details) {
52 captureEvent("onCompleted", details); 70 captureEvent("onCompleted", details);
53 }); 71 });
54 72
73 chrome.experimental.webNavigation.onBeforeRetarget.addListener(
74 function(details) {
75 captureEvent("onBeforeRetarget", details);
76 });
77
55 chrome.experimental.webNavigation.onErrorOccurred.addListener( 78 chrome.experimental.webNavigation.onErrorOccurred.addListener(
56 function(details) { 79 function(details) {
57 captureEvent("onErrorOccurred", details); 80 captureEvent("onErrorOccurred", details);
58 }); 81 });
59 82
60 var getURL = chrome.extension.getURL; 83 var getURL = chrome.extension.getURL;
61 chrome.tabs.getSelected(null, function(tab) { 84 chrome.tabs.getSelected(null, function(tab) {
62 var tabId = tab.id; 85 var tabId = tab.id;
63 86
64 chrome.test.runTests([ 87 chrome.test.runTests([
65 /* Navigates to a non-existant page. */ 88 /* Navigates to a non-existant page. */
66 function nonExistant() { 89 function nonExistant() {
67 expect([ 90 expect([
68 [ "onBeforeNavigate", 91 [ "onBeforeNavigate",
69 { frameId: 0, 92 { frameId: 0,
70 requestId: 0, 93 requestId: 0,
71 tabId: tabId, 94 tabId: 0,
72 timeStamp: 0, 95 timeStamp: 0,
73 url: getURL('nonexistant.html') }], 96 url: getURL('nonexistant.html') }],
74 [ "onErrorOccurred", 97 [ "onErrorOccurred",
75 { error: "net::ERR_FILE_NOT_FOUND", 98 { error: "net::ERR_FILE_NOT_FOUND",
76 frameId: 0, 99 frameId: 0,
77 tabId: tabId, 100 tabId: 0,
78 timeStamp: 0, 101 timeStamp: 0,
79 url: getURL('nonexistant.html') }]]); 102 url: getURL('nonexistant.html') }]]);
80 chrome.tabs.update(tabId, { url: getURL('nonexistant.html') }); 103 chrome.tabs.update(tabId, { url: getURL('nonexistant.html') });
81 }, 104 },
82 105
83 /* An page that tries to load an non-existant iframe. */ 106 /* An page that tries to load an non-existant iframe. */
84 function nonExistantIframe() { 107 function nonExistantIframe() {
85 expect([ 108 expect([
86 [ "onBeforeNavigate", 109 [ "onBeforeNavigate",
87 { frameId: 0, 110 { frameId: 0,
88 requestId: 0, 111 requestId: 0,
89 tabId: tabId, 112 tabId: 0,
90 timeStamp: 0, 113 timeStamp: 0,
91 url: getURL('iframeFail/d.html') }], 114 url: getURL('iframeFail/d.html') }],
92 [ "onCommitted", 115 [ "onCommitted",
93 { frameId: 0, 116 { frameId: 0,
94 tabId: tabId, 117 tabId: 0,
95 timeStamp: 0, 118 timeStamp: 0,
96 transitionQualifiers: "", 119 transitionQualifiers: "",
97 transitionType: "link", 120 transitionType: "link",
98 url: getURL('iframeFail/d.html') }], 121 url: getURL('iframeFail/d.html') }],
99 [ "onBeforeNavigate", 122 [ "onBeforeNavigate",
100 { frameId: 1, 123 { frameId: 1,
101 requestId: 0, 124 requestId: 0,
102 tabId: tabId, 125 tabId: 0,
103 timeStamp: 0, 126 timeStamp: 0,
104 url: getURL('iframeFail/c.html') }], 127 url: getURL('iframeFail/c.html') }],
105 [ "onDOMContentLoaded", 128 [ "onDOMContentLoaded",
106 { frameId: 0, 129 { frameId: 0,
107 tabId: tabId, 130 tabId: 0,
108 timeStamp: 0, 131 timeStamp: 0,
109 url: getURL('iframeFail/d.html') }], 132 url: getURL('iframeFail/d.html') }],
110 [ "onErrorOccurred", 133 [ "onErrorOccurred",
111 { error: "net::ERR_FILE_NOT_FOUND", 134 { error: "net::ERR_FILE_NOT_FOUND",
112 frameId: 1, 135 frameId: 1,
113 tabId: tabId, 136 tabId: 0,
114 timeStamp: 0, 137 timeStamp: 0,
115 url: getURL('iframeFail/c.html') }], 138 url: getURL('iframeFail/c.html') }],
116 [ "onCompleted", 139 [ "onCompleted",
117 { frameId: 0, 140 { frameId: 0,
118 tabId: tabId, 141 tabId: 0,
119 timeStamp: 0, 142 timeStamp: 0,
120 url: getURL('iframeFail/d.html') }]]); 143 url: getURL('iframeFail/d.html') }]]);
121 chrome.tabs.update(tabId, { url: getURL('iframeFail/d.html') }); 144 chrome.tabs.update(tabId, { url: getURL('iframeFail/d.html') });
122 }, 145 },
123 146
124 /* An iframe navigates to a non-existant page. */ 147 /* An iframe navigates to a non-existant page. */
125 function nonExistantIframeNavigation() { 148 function nonExistantIframeNavigation() {
126 expect([ 149 expect([
127 [ "onBeforeNavigate", 150 [ "onBeforeNavigate",
128 { frameId: 0, 151 { frameId: 0,
129 requestId: 0, 152 requestId: 0,
130 tabId: tabId, 153 tabId: 0,
131 timeStamp: 0, 154 timeStamp: 0,
132 url: getURL('iframeFail/a.html') }], 155 url: getURL('iframeFail/a.html') }],
133 [ "onCommitted", 156 [ "onCommitted",
134 { frameId: 0, 157 { frameId: 0,
135 tabId: tabId, 158 tabId: 0,
136 timeStamp: 0, 159 timeStamp: 0,
137 transitionQualifiers: "", 160 transitionQualifiers: "",
138 transitionType: "link", 161 transitionType: "link",
139 url: getURL('iframeFail/a.html') }], 162 url: getURL('iframeFail/a.html') }],
140 [ "onBeforeNavigate", 163 [ "onBeforeNavigate",
141 { frameId: 1, 164 { frameId: 1,
142 requestId: 0, 165 requestId: 0,
143 tabId: tabId, 166 tabId: 0,
144 timeStamp: 0, 167 timeStamp: 0,
145 url: getURL('iframeFail/b.html') }], 168 url: getURL('iframeFail/b.html') }],
146 [ "onDOMContentLoaded", 169 [ "onDOMContentLoaded",
147 { frameId: 0, 170 { frameId: 0,
148 tabId: tabId, 171 tabId: 0,
149 timeStamp: 0, 172 timeStamp: 0,
150 url: getURL('iframeFail/a.html') }], 173 url: getURL('iframeFail/a.html') }],
151 [ "onCommitted", 174 [ "onCommitted",
152 { frameId: 1, 175 { frameId: 1,
153 tabId: tabId, 176 tabId: 0,
154 timeStamp: 0, 177 timeStamp: 0,
155 transitionQualifiers: "", 178 transitionQualifiers: "",
156 transitionType: "auto_subframe", 179 transitionType: "auto_subframe",
157 url: getURL('iframeFail/b.html') }], 180 url: getURL('iframeFail/b.html') }],
158 [ "onDOMContentLoaded", 181 [ "onDOMContentLoaded",
159 { frameId: 1, 182 { frameId: 1,
160 tabId: tabId, 183 tabId: 0,
161 timeStamp: 0, 184 timeStamp: 0,
162 url: getURL('iframeFail/b.html') }], 185 url: getURL('iframeFail/b.html') }],
163 [ "onCompleted", 186 [ "onCompleted",
164 { frameId: 1, 187 { frameId: 1,
165 tabId: tabId, 188 tabId: 0,
166 timeStamp: 0, 189 timeStamp: 0,
167 url: getURL('iframeFail/b.html') }], 190 url: getURL('iframeFail/b.html') }],
168 [ "onCompleted", 191 [ "onCompleted",
169 { frameId: 0, 192 { frameId: 0,
170 tabId: tabId, 193 tabId: 0,
171 timeStamp: 0, 194 timeStamp: 0,
172 url: getURL('iframeFail/a.html') }], 195 url: getURL('iframeFail/a.html') }],
173 [ "onBeforeNavigate", 196 [ "onBeforeNavigate",
174 { frameId: 1, 197 { frameId: 1,
175 requestId: 0, 198 requestId: 0,
176 tabId: tabId, 199 tabId: 0,
177 timeStamp: 0, 200 timeStamp: 0,
178 url: getURL('iframeFail/c.html') }], 201 url: getURL('iframeFail/c.html') }],
179 [ "onErrorOccurred", 202 [ "onErrorOccurred",
180 { error: "net::ERR_FILE_NOT_FOUND", 203 { error: "net::ERR_FILE_NOT_FOUND",
181 frameId: 1, 204 frameId: 1,
182 tabId: tabId, 205 tabId: 0,
183 timeStamp: 0, 206 timeStamp: 0,
184 url: getURL('iframeFail/c.html') }]]); 207 url: getURL('iframeFail/c.html') }]]);
185 chrome.tabs.update(tabId, { url: getURL('iframeFail/a.html') }); 208 chrome.tabs.update(tabId, { url: getURL('iframeFail/a.html') });
186 }, 209 },
187 ]); 210 ]);
188 }); 211 });
189 </script> 212 </script>
OLDNEW
« no previous file with comments | « chrome/test/data/extensions/api_test/webnavigation/navigation1/test.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698