| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 function runTests() { | 5 function runTests() { |
| 6 var getURL = chrome.extension.getURL; | 6 var getURL = chrome.extension.getURL; |
| 7 chrome.tabs.create({"url": "about:blank"}, function(tab) { | 7 chrome.tabs.create({"url": "about:blank"}, function(tab) { |
| 8 var tabId = tab.id; | 8 var tabId = tab.id; |
| 9 | 9 |
| 10 chrome.test.runTests([ | 10 chrome.test.runTests([ |
| 11 // Navigates to a.html which includes b.html as an iframe. b.html | 11 // Navigates to a.html which includes b.html as an iframe. b.html |
| 12 // redirects to c.html. | 12 // redirects to c.html. |
| 13 function iframe() { | 13 function iframe() { |
| 14 expect([ | 14 expect([ |
| 15 [ "onBeforeNavigate", | 15 { label: "a-onBeforeNavigate", |
| 16 { frameId: 0, | 16 event: "onBeforeNavigate", |
| 17 tabId: 0, | 17 details: { frameId: 0, |
| 18 timeStamp: 0, | 18 tabId: 0, |
| 19 url: getURL('iframe/a.html') }], | 19 timeStamp: 0, |
| 20 [ "onCommitted", | 20 url: getURL('iframe/a.html') }}, |
| 21 { frameId: 0, | 21 { label: "a-onCommitted", |
| 22 tabId: 0, | 22 event: "onCommitted", |
| 23 timeStamp: 0, | 23 details: { frameId: 0, |
| 24 transitionQualifiers: [], | 24 tabId: 0, |
| 25 transitionType: "link", | 25 timeStamp: 0, |
| 26 url: getURL('iframe/a.html') }], | 26 transitionQualifiers: [], |
| 27 [ "onBeforeNavigate", | 27 transitionType: "link", |
| 28 { frameId: 1, | 28 url: getURL('iframe/a.html') }}, |
| 29 tabId: 0, | 29 { label: "a-onDOMContentLoaded", |
| 30 timeStamp: 0, | 30 event: "onDOMContentLoaded", |
| 31 url: getURL('iframe/b.html') }], | 31 details: { frameId: 0, |
| 32 [ "onDOMContentLoaded", | 32 tabId: 0, |
| 33 { frameId: 0, | 33 timeStamp: 0, |
| 34 tabId: 0, | 34 url: getURL('iframe/a.html') }}, |
| 35 timeStamp: 0, | 35 { label: "a-onCompleted", |
| 36 url: getURL('iframe/a.html') }], | 36 event: "onCompleted", |
| 37 [ "onCommitted", | 37 details: { frameId: 0, |
| 38 { frameId: 1, | 38 tabId: 0, |
| 39 tabId: 0, | 39 timeStamp: 0, |
| 40 timeStamp: 0, | 40 url: getURL('iframe/a.html') }}, |
| 41 transitionQualifiers: [], | 41 { label: "b-onBeforeNavigate", |
| 42 transitionType: "auto_subframe", | 42 event: "onBeforeNavigate", |
| 43 url: getURL('iframe/b.html') }], | 43 details: { frameId: 1, |
| 44 [ "onDOMContentLoaded", | 44 tabId: 0, |
| 45 { frameId: 1, | 45 timeStamp: 0, |
| 46 tabId: 0, | 46 url: getURL('iframe/b.html') }}, |
| 47 timeStamp: 0, | 47 { label: "b-onCommitted", |
| 48 url: getURL('iframe/b.html') }], | 48 event: "onCommitted", |
| 49 [ "onCompleted", | 49 details: { frameId: 1, |
| 50 { frameId: 1, | 50 tabId: 0, |
| 51 tabId: 0, | 51 timeStamp: 0, |
| 52 timeStamp: 0, | 52 transitionQualifiers: [], |
| 53 url: getURL('iframe/b.html') }], | 53 transitionType: "auto_subframe", |
| 54 [ "onCompleted", | 54 url: getURL('iframe/b.html') }}, |
| 55 { frameId: 0, | 55 { label: "b-onDOMContentLoaded", |
| 56 tabId: 0, | 56 event: "onDOMContentLoaded", |
| 57 timeStamp: 0, | 57 details: { frameId: 1, |
| 58 url: getURL('iframe/a.html') }], | 58 tabId: 0, |
| 59 [ "onBeforeNavigate", | 59 timeStamp: 0, |
| 60 { frameId: 1, | 60 url: getURL('iframe/b.html') }}, |
| 61 tabId: 0, | 61 { label: "b-onCompleted", |
| 62 timeStamp: 0, | 62 event: "onCompleted", |
| 63 url: getURL('iframe/c.html') }], | 63 details: { frameId: 1, |
| 64 [ "onCommitted", | 64 tabId: 0, |
| 65 { frameId: 1, | 65 timeStamp: 0, |
| 66 tabId: 0, | 66 url: getURL('iframe/b.html') }}, |
| 67 timeStamp: 0, | 67 { label: "c-onBeforeNavigate", |
| 68 transitionQualifiers: [], | 68 event: "onBeforeNavigate", |
| 69 transitionType: "manual_subframe", | 69 details: { frameId: 1, |
| 70 url: getURL('iframe/c.html') }], | 70 tabId: 0, |
| 71 [ "onDOMContentLoaded", | 71 timeStamp: 0, |
| 72 { frameId: 1, | 72 url: getURL('iframe/c.html') }}, |
| 73 tabId: 0, | 73 { label: "c-onCommitted", |
| 74 timeStamp: 0, | 74 event: "onCommitted", |
| 75 url: getURL('iframe/c.html') }], | 75 details: { frameId: 1, |
| 76 [ "onCompleted", | 76 tabId: 0, |
| 77 { frameId: 1, | 77 timeStamp: 0, |
| 78 tabId: 0, | 78 transitionQualifiers: [], |
| 79 timeStamp: 0, | 79 transitionType: "auto_subframe", |
| 80 url: getURL('iframe/c.html') }]]); | 80 url: getURL('iframe/c.html') }}, |
| 81 { label: "c-onDOMContentLoaded", |
| 82 event: "onDOMContentLoaded", |
| 83 details: { frameId: 1, |
| 84 tabId: 0, |
| 85 timeStamp: 0, |
| 86 url: getURL('iframe/c.html') }}, |
| 87 { label: "c-onCompleted", |
| 88 event: "onCompleted", |
| 89 details: { frameId: 1, |
| 90 tabId: 0, |
| 91 timeStamp: 0, |
| 92 url: getURL('iframe/c.html') }}], |
| 93 [ navigationOrder("a-"), |
| 94 navigationOrder("b-"), |
| 95 navigationOrder("c-"), |
| 96 isIFrameOf("b-", "a-"), |
| 97 isLoadedBy("c-", "b-")]); |
| 81 chrome.tabs.update(tabId, { url: getURL('iframe/a.html') }); | 98 chrome.tabs.update(tabId, { url: getURL('iframe/a.html') }); |
| 82 }, | 99 }, |
| 83 | 100 |
| 84 // Navigates to d.html which includes e.html and f.html as iframes. To be | 101 // Navigates to d.html which includes e.html and f.html as iframes. To be |
| 85 // able to predict which iframe has which id, the iframe for f.html is | 102 // able to predict which iframe has which id, the iframe for f.html is |
| 86 // created by javascript. f.html then navigates to g.html. | 103 // created by javascript. f.html then navigates to g.html. |
| 87 function iframeMultiple() { | 104 function iframeMultiple() { |
| 88 expect([ | 105 expect([ |
| 89 [ "onBeforeNavigate", | 106 { label: "d-onBeforeNavigate", |
| 90 { frameId: 0, | 107 event: "onBeforeNavigate", |
| 91 tabId: 0, | 108 details: { frameId: 0, |
| 92 timeStamp: 0, | 109 tabId: 0, |
| 93 url: getURL('iframe/d.html') }], | 110 timeStamp: 0, |
| 94 [ "onCommitted", | 111 url: getURL('iframe/d.html') }}, |
| 95 { frameId: 0, | 112 { label: "d-onCommitted", |
| 96 tabId: 0, | 113 event: "onCommitted", |
| 97 timeStamp: 0, | 114 details: { frameId: 0, |
| 98 transitionQualifiers: [], | 115 tabId: 0, |
| 99 transitionType: "link", | 116 timeStamp: 0, |
| 100 url: getURL('iframe/d.html') }], | 117 transitionQualifiers: [], |
| 101 [ "onBeforeNavigate", | 118 transitionType: "link", |
| 102 { frameId: 1, | 119 url: getURL('iframe/d.html') }}, |
| 103 tabId: 0, | 120 { label: "d-onDOMContentLoaded", |
| 104 timeStamp: 0, | 121 event: "onDOMContentLoaded", |
| 105 url: getURL('iframe/e.html') }], | 122 details: { frameId: 0, |
| 106 [ "onDOMContentLoaded", | 123 tabId: 0, |
| 107 { frameId: 0, | 124 timeStamp: 0, |
| 108 tabId: 0, | 125 url: getURL('iframe/d.html') }}, |
| 109 timeStamp: 0, | 126 { label: "d-onCompleted", |
| 110 url: getURL('iframe/d.html') }], | 127 event: "onCompleted", |
| 111 [ "onCommitted", | 128 details: { frameId: 0, |
| 112 { frameId: 1, | 129 tabId: 0, |
| 113 tabId: 0, | 130 timeStamp: 0, |
| 114 timeStamp: 0, | 131 url: getURL('iframe/d.html') }}, |
| 115 transitionQualifiers: [], | 132 { label: "e-onBeforeNavigate", |
| 116 transitionType: "auto_subframe", | 133 event: "onBeforeNavigate", |
| 117 url: getURL('iframe/e.html') }], | 134 details: { frameId: 1, |
| 118 [ "onDOMContentLoaded", | 135 tabId: 0, |
| 119 { frameId: 1, | 136 timeStamp: 0, |
| 120 tabId: 0, | 137 url: getURL('iframe/e.html') }}, |
| 121 timeStamp: 0, | 138 { label: "e-onCommitted", |
| 122 url: getURL('iframe/e.html') }], | 139 event: "onCommitted", |
| 123 [ "onBeforeNavigate", | 140 details: { frameId: 1, |
| 124 { frameId: 2, | 141 tabId: 0, |
| 125 tabId: 0, | 142 timeStamp: 0, |
| 126 timeStamp: 0, | 143 transitionQualifiers: [], |
| 127 url: getURL('iframe/f.html') }], | 144 transitionType: "auto_subframe", |
| 128 [ "onCompleted", | 145 url: getURL('iframe/e.html') }}, |
| 129 { frameId: 1, | 146 { label: "e-onDOMContentLoaded", |
| 130 tabId: 0, | 147 event: "onDOMContentLoaded", |
| 131 timeStamp: 0, | 148 details: { frameId: 1, |
| 132 url: getURL('iframe/e.html') }], | 149 tabId: 0, |
| 133 [ "onCommitted", | 150 timeStamp: 0, |
| 134 { frameId: 2, | 151 url: getURL('iframe/e.html') }}, |
| 135 tabId: 0, | 152 { label: "e-onCompleted", |
| 136 timeStamp: 0, | 153 event: "onCompleted", |
| 137 transitionQualifiers: [], | 154 details: { frameId: 1, |
| 138 transitionType: "auto_subframe", | 155 tabId: 0, |
| 139 url: getURL('iframe/f.html') }], | 156 timeStamp: 0, |
| 140 [ "onDOMContentLoaded", | 157 url: getURL('iframe/e.html') }}, |
| 141 { frameId: 2, | 158 { label: "f-onBeforeNavigate", |
| 142 tabId: 0, | 159 event: "onBeforeNavigate", |
| 143 timeStamp: 0, | 160 details: { frameId: 2, |
| 144 url: getURL('iframe/f.html') }], | 161 tabId: 0, |
| 145 [ "onCompleted", | 162 timeStamp: 0, |
| 146 { frameId: 2, | 163 url: getURL('iframe/f.html') }}, |
| 147 tabId: 0, | 164 { label: "f-onCommitted", |
| 148 timeStamp: 0, | 165 event: "onCommitted", |
| 149 url: getURL('iframe/f.html') }], | 166 details: { frameId: 2, |
| 150 [ "onCompleted", | 167 tabId: 0, |
| 151 { frameId: 0, | 168 timeStamp: 0, |
| 152 tabId: 0, | 169 transitionQualifiers: [], |
| 153 timeStamp: 0, | 170 transitionType: "auto_subframe", |
| 154 url: getURL('iframe/d.html') }], | 171 url: getURL('iframe/f.html') }}, |
| 155 [ "onBeforeNavigate", | 172 { label: "f-onDOMContentLoaded", |
| 156 { frameId: 2, | 173 event: "onDOMContentLoaded", |
| 157 tabId: 0, | 174 details: { frameId: 2, |
| 158 timeStamp: 0, | 175 tabId: 0, |
| 159 url: getURL('iframe/g.html') }], | 176 timeStamp: 0, |
| 160 [ "onCommitted", | 177 url: getURL('iframe/f.html') }}, |
| 161 { frameId: 2, | 178 { label: "f-onCompleted", |
| 162 tabId: 0, | 179 event: "onCompleted", |
| 163 timeStamp: 0, | 180 details: { frameId: 2, |
| 164 transitionQualifiers: [], | 181 tabId: 0, |
| 165 transitionType: "manual_subframe", | 182 timeStamp: 0, |
| 166 url: getURL('iframe/g.html') }], | 183 url: getURL('iframe/f.html') }}, |
| 167 [ "onDOMContentLoaded", | 184 { label: "g-onBeforeNavigate", |
| 168 { frameId: 2, | 185 event: "onBeforeNavigate", |
| 169 tabId: 0, | 186 details: { frameId: 2, |
| 170 timeStamp: 0, | 187 tabId: 0, |
| 171 url: getURL('iframe/g.html') }], | 188 timeStamp: 0, |
| 172 [ "onCompleted", | 189 url: getURL('iframe/g.html') }}, |
| 173 { frameId: 2, | 190 { label: "g-onCommitted", |
| 174 tabId: 0, | 191 event: "onCommitted", |
| 175 timeStamp: 0, | 192 details: { frameId: 2, |
| 176 url: getURL('iframe/g.html') }]]); | 193 tabId: 0, |
| 194 timeStamp: 0, |
| 195 transitionQualifiers: [], |
| 196 transitionType: "auto_subframe", |
| 197 url: getURL('iframe/g.html') }}, |
| 198 { label: "g-onDOMContentLoaded", |
| 199 event: "onDOMContentLoaded", |
| 200 details: { frameId: 2, |
| 201 tabId: 0, |
| 202 timeStamp: 0, |
| 203 url: getURL('iframe/g.html') }}, |
| 204 { label: "g-onCompleted", |
| 205 event: "onCompleted", |
| 206 details: { frameId: 2, |
| 207 tabId: 0, |
| 208 timeStamp: 0, |
| 209 url: getURL('iframe/g.html') }}], |
| 210 [ navigationOrder("d-"), |
| 211 navigationOrder("e-"), |
| 212 navigationOrder("f-"), |
| 213 navigationOrder("g-"), |
| 214 isIFrameOf("e-", "d-"), |
| 215 ["d-onDOMContentLoaded", "f-onBeforeNavigate", "f-onCompleted", |
| 216 "d-onCompleted"], |
| 217 isLoadedBy("g-", "f-")]); |
| 177 chrome.tabs.update(tabId, { url: getURL('iframe/d.html') }); | 218 chrome.tabs.update(tabId, { url: getURL('iframe/d.html') }); |
| 178 }, | 219 }, |
| 179 | 220 |
| 180 // Navigates to h.html which includes i.html that triggers a navigation | 221 // Navigates to h.html which includes i.html that triggers a navigation |
| 181 // on the main frame. | 222 // on the main frame. |
| 182 function iframeNavigate() { | 223 function iframeNavigate() { |
| 183 expect([ | 224 expect([ |
| 184 [ "onBeforeNavigate", | 225 { label: "h-onBeforeNavigate", |
| 185 { frameId: 0, | 226 event: "onBeforeNavigate", |
| 186 tabId: 0, | 227 details: { frameId: 0, |
| 187 timeStamp: 0, | 228 tabId: 0, |
| 188 url: getURL('iframe/h.html') }], | 229 timeStamp: 0, |
| 189 [ "onCommitted", | 230 url: getURL('iframe/h.html') }}, |
| 190 { frameId: 0, | 231 { label: "h-onCommitted", |
| 191 tabId: 0, | 232 event: "onCommitted", |
| 192 timeStamp: 0, | 233 details: { frameId: 0, |
| 193 transitionQualifiers: [], | 234 tabId: 0, |
| 194 transitionType: "link", | 235 timeStamp: 0, |
| 195 url: getURL('iframe/h.html') }], | 236 transitionQualifiers: [], |
| 196 [ "onBeforeNavigate", | 237 transitionType: "link", |
| 197 { frameId: 1, | 238 url: getURL('iframe/h.html') }}, |
| 198 tabId: 0, | 239 { label: "h-onDOMContentLoaded", |
| 199 timeStamp: 0, | 240 event: "onDOMContentLoaded", |
| 200 url: getURL('iframe/i.html') }], | 241 details: { frameId: 0, |
| 201 [ "onDOMContentLoaded", | 242 tabId: 0, |
| 202 { frameId: 0, | 243 timeStamp: 0, |
| 203 tabId: 0, | 244 url: getURL('iframe/h.html') }}, |
| 204 timeStamp: 0, | 245 { label: "h-onCompleted", |
| 205 url: getURL('iframe/h.html') }], | 246 event: "onCompleted", |
| 206 [ "onCommitted", | 247 details: { frameId: 0, |
| 207 { frameId: 1, | 248 tabId: 0, |
| 208 tabId: 0, | 249 timeStamp: 0, |
| 209 timeStamp: 0, | 250 url: getURL('iframe/h.html') }}, |
| 210 transitionQualifiers: [], | 251 { label: "i-onBeforeNavigate", |
| 211 transitionType: "auto_subframe", | 252 event: "onBeforeNavigate", |
| 212 url: getURL('iframe/i.html') }], | 253 details: { frameId: 1, |
| 213 [ "onDOMContentLoaded", | 254 tabId: 0, |
| 214 { frameId: 1, | 255 timeStamp: 0, |
| 215 tabId: 0, | 256 url: getURL('iframe/i.html') }}, |
| 216 timeStamp: 0, | 257 { label: "i-onCommitted", |
| 217 url: getURL('iframe/i.html') }], | 258 event: "onCommitted", |
| 218 [ "onCompleted", | 259 details: { frameId: 1, |
| 219 { frameId: 1, | 260 tabId: 0, |
| 220 tabId: 0, | 261 timeStamp: 0, |
| 221 timeStamp: 0, | 262 transitionQualifiers: [], |
| 222 url: getURL('iframe/i.html') }], | 263 transitionType: "auto_subframe", |
| 223 [ "onCompleted", | 264 url: getURL('iframe/i.html') }}, |
| 224 { frameId: 0, | 265 { label: "i-onDOMContentLoaded", |
| 225 tabId: 0, | 266 event: "onDOMContentLoaded", |
| 226 timeStamp: 0, | 267 details: { frameId: 1, |
| 227 url: getURL('iframe/h.html') }], | 268 tabId: 0, |
| 228 [ "onBeforeNavigate", | 269 timeStamp: 0, |
| 229 { frameId: 0, | 270 url: getURL('iframe/i.html') }}, |
| 230 tabId: 0, | 271 { label: "i-onCompleted", |
| 231 timeStamp: 0, | 272 event: "onCompleted", |
| 232 url: getURL('iframe/c.html') }], | 273 details: { frameId: 1, |
| 233 [ "onCommitted", | 274 tabId: 0, |
| 234 { frameId: 0, | 275 timeStamp: 0, |
| 235 tabId: 0, | 276 url: getURL('iframe/i.html') }}, |
| 236 timeStamp: 0, | 277 { label: "c-onBeforeNavigate", |
| 237 transitionQualifiers: [], | 278 event: "onBeforeNavigate", |
| 238 transitionType: "link", | 279 details: { frameId: 0, |
| 239 url: getURL('iframe/c.html') }], | 280 tabId: 0, |
| 240 [ "onDOMContentLoaded", | 281 timeStamp: 0, |
| 241 { frameId: 0, | 282 url: getURL('iframe/c.html') }}, |
| 242 tabId: 0, | 283 { label: "c-onCommitted", |
| 243 timeStamp: 0, | 284 event: "onCommitted", |
| 244 url: getURL('iframe/c.html') }], | 285 details: { frameId: 0, |
| 245 [ "onCompleted", | 286 tabId: 0, |
| 246 { frameId: 0, | 287 timeStamp: 0, |
| 247 tabId: 0, | 288 transitionQualifiers: [], |
| 248 timeStamp: 0, | 289 transitionType: "link", |
| 249 url: getURL('iframe/c.html') }]]); | 290 url: getURL('iframe/c.html') }}, |
| 291 { label: "c-onDOMContentLoaded", |
| 292 event: "onDOMContentLoaded", |
| 293 details: { frameId: 0, |
| 294 tabId: 0, |
| 295 timeStamp: 0, |
| 296 url: getURL('iframe/c.html') }}, |
| 297 { label: "c-onCompleted", |
| 298 event: "onCompleted", |
| 299 details: { frameId: 0, |
| 300 tabId: 0, |
| 301 timeStamp: 0, |
| 302 url: getURL('iframe/c.html') }}], |
| 303 [ navigationOrder("h-"), |
| 304 navigationOrder("i-"), |
| 305 navigationOrder("c-"), |
| 306 isIFrameOf("i-", "h-"), |
| 307 isLoadedBy("c-", "i-") ]); |
| 250 chrome.tabs.update(tabId, { url: getURL('iframe/h.html') }); | 308 chrome.tabs.update(tabId, { url: getURL('iframe/h.html') }); |
| 251 }, | 309 }, |
| 252 ]); | 310 ]); |
| 253 }); | 311 }); |
| 254 } | 312 } |
| OLD | NEW |