OLD | NEW |
(Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 onload = function() { |
| 6 debug = true; |
| 7 var getURL = chrome.extension.getURL; |
| 8 var URL_MAIN = getURL('main.html'); |
| 9 var URL_FRAME1 = 'http://a.com:PORT/extensions/api_test/webnavigation/' + |
| 10 'crossProcessIframe/frame.html'; |
| 11 var URL_FRAME2 = 'http://b.com:PORT/extensions/api_test/webnavigation/' + |
| 12 'crossProcessIframe/frame.html'; |
| 13 var URL_FRAME3 = 'http://c.com:PORT/extensions/api_test/webnavigation/' + |
| 14 'crossProcessIframe/frame.html'; |
| 15 chrome.tabs.create({'url': 'about:blank'}, function(tab) { |
| 16 var tabId = tab.id; |
| 17 chrome.test.getConfig(function(config) { |
| 18 var fixPort = function(url) { |
| 19 return url.replace(/PORT/g, config.testServer.port); |
| 20 }; |
| 21 URL_FRAME1 = fixPort(URL_FRAME1); |
| 22 URL_FRAME2 = fixPort(URL_FRAME2); |
| 23 URL_FRAME3 = fixPort(URL_FRAME3); |
| 24 |
| 25 chrome.test.runTests([ |
| 26 // Navigates from an extension page to a HTTP page which causes a |
| 27 // process switch. The extension page embeds a same-process iframe which |
| 28 // embeds another frame that navigates three times (cross-process): |
| 29 // c. Loaded by the parent frame. |
| 30 // d. Navigated by the parent frame. |
| 31 // e. Navigated by the child frame. |
| 32 // Tests whether the frameId stays constant across navigations. |
| 33 function crossProcessIframe() { |
| 34 expect([ |
| 35 { label: 'main-onBeforeNavigate', |
| 36 event: 'onBeforeNavigate', |
| 37 details: { frameId: 0, |
| 38 parentFrameId: -1, |
| 39 processId: 0, |
| 40 tabId: 0, |
| 41 timeStamp: 0, |
| 42 url: URL_MAIN }}, |
| 43 { label: 'main-onCommitted', |
| 44 event: 'onCommitted', |
| 45 details: { frameId: 0, |
| 46 processId: 0, |
| 47 tabId: 0, |
| 48 timeStamp: 0, |
| 49 transitionQualifiers: [], |
| 50 transitionType: 'link', |
| 51 url: URL_MAIN }}, |
| 52 { label: 'main-onDOMContentLoaded', |
| 53 event: 'onDOMContentLoaded', |
| 54 details: { frameId: 0, |
| 55 processId: 0, |
| 56 tabId: 0, |
| 57 timeStamp: 0, |
| 58 url: URL_MAIN }}, |
| 59 { label: 'main-onCompleted', |
| 60 event: 'onCompleted', |
| 61 details: { frameId: 0, |
| 62 processId: 0, |
| 63 tabId: 0, |
| 64 timeStamp: 0, |
| 65 url: URL_MAIN }}, |
| 66 // pre-a.com is the navigation before the process swap. |
| 67 { label: 'pre-a.com-onBeforeNavigate', |
| 68 event: 'onBeforeNavigate', |
| 69 details: { frameId: 1, |
| 70 parentFrameId: 0, |
| 71 processId: 0, |
| 72 tabId: 0, |
| 73 timeStamp: 0, |
| 74 url: URL_FRAME1 }}, |
| 75 { label: 'pre-a.com-onErrorOccurred', |
| 76 event: 'onErrorOccurred', |
| 77 details: { error: 'net::ERR_ABORTED', |
| 78 frameId: 1, |
| 79 processId: 0, |
| 80 tabId: 0, |
| 81 timeStamp: 0, |
| 82 url: URL_FRAME1 }}, |
| 83 { label: 'a.com-onBeforeNavigate', |
| 84 event: 'onBeforeNavigate', |
| 85 details: { frameId: 1, |
| 86 parentFrameId: 0, |
| 87 processId: 1, |
| 88 tabId: 0, |
| 89 timeStamp: 0, |
| 90 url: URL_FRAME1 }}, |
| 91 { label: 'a.com-onCommitted', |
| 92 event: 'onCommitted', |
| 93 details: { frameId: 1, |
| 94 processId: 1, |
| 95 tabId: 0, |
| 96 timeStamp: 0, |
| 97 transitionQualifiers: [], |
| 98 transitionType: 'auto_subframe', |
| 99 url: URL_FRAME1 }}, |
| 100 { label: 'a.com-onDOMContentLoaded', |
| 101 event: 'onDOMContentLoaded', |
| 102 details: { frameId: 1, |
| 103 processId: 1, |
| 104 tabId: 0, |
| 105 timeStamp: 0, |
| 106 url: URL_FRAME1 }}, |
| 107 { label: 'a.com-onCompleted', |
| 108 event: 'onCompleted', |
| 109 details: { frameId: 1, |
| 110 processId: 1, |
| 111 tabId: 0, |
| 112 timeStamp: 0, |
| 113 url: URL_FRAME1 }}, |
| 114 // There is no onBeforeNavigate and onErrorOccurred (like the other |
| 115 // navigations in this test) because this navigation is triggered by |
| 116 // a frame in a different process, so the navigation directly goes |
| 117 // through the browser. This difference will be resolved once |
| 118 // PlzNavigate goes live. |
| 119 { label: 'b.com-onBeforeNavigate', |
| 120 event: 'onBeforeNavigate', |
| 121 details: { frameId: 1, |
| 122 parentFrameId: 0, |
| 123 processId: 2, |
| 124 tabId: 0, |
| 125 timeStamp: 0, |
| 126 url: URL_FRAME2 }}, |
| 127 { label: 'b.com-onCommitted', |
| 128 event: 'onCommitted', |
| 129 details: { frameId: 1, |
| 130 processId: 2, |
| 131 tabId: 0, |
| 132 timeStamp: 0, |
| 133 transitionQualifiers: [], |
| 134 transitionType: 'manual_subframe', |
| 135 url: URL_FRAME2 }}, |
| 136 { label: 'b.com-onDOMContentLoaded', |
| 137 event: 'onDOMContentLoaded', |
| 138 details: { frameId: 1, |
| 139 processId: 2, |
| 140 tabId: 0, |
| 141 timeStamp: 0, |
| 142 url: URL_FRAME2 }}, |
| 143 { label: 'b.com-onCompleted', |
| 144 event: 'onCompleted', |
| 145 details: { frameId: 1, |
| 146 processId: 2, |
| 147 tabId: 0, |
| 148 timeStamp: 0, |
| 149 url: URL_FRAME2 }}, |
| 150 // pre-c.com is the navigation before the process swap. |
| 151 { label: 'pre-c.com-onBeforeNavigate', |
| 152 event: 'onBeforeNavigate', |
| 153 details: { frameId: 1, |
| 154 parentFrameId: 0, |
| 155 processId: 2, |
| 156 tabId: 0, |
| 157 timeStamp: 0, |
| 158 url: URL_FRAME3 }}, |
| 159 { label: 'pre-c.com-onErrorOccurred', |
| 160 event: 'onErrorOccurred', |
| 161 details: { error: 'net::ERR_ABORTED', |
| 162 frameId: 1, |
| 163 processId: 2, |
| 164 tabId: 0, |
| 165 timeStamp: 0, |
| 166 url: URL_FRAME3 }}, |
| 167 { label: 'c.com-onBeforeNavigate', |
| 168 event: 'onBeforeNavigate', |
| 169 details: { frameId: 1, |
| 170 parentFrameId: 0, |
| 171 processId: 3, |
| 172 tabId: 0, |
| 173 timeStamp: 0, |
| 174 url: URL_FRAME3 }}, |
| 175 { label: 'c.com-onCommitted', |
| 176 event: 'onCommitted', |
| 177 details: { frameId: 1, |
| 178 processId: 3, |
| 179 tabId: 0, |
| 180 timeStamp: 0, |
| 181 transitionQualifiers: [], |
| 182 transitionType: 'manual_subframe', |
| 183 url: URL_FRAME3 }}, |
| 184 { label: 'c.com-onDOMContentLoaded', |
| 185 event: 'onDOMContentLoaded', |
| 186 details: { frameId: 1, |
| 187 processId: 3, |
| 188 tabId: 0, |
| 189 timeStamp: 0, |
| 190 url: URL_FRAME3 }}, |
| 191 { label: 'c.com-onCompleted', |
| 192 event: 'onCompleted', |
| 193 details: { frameId: 1, |
| 194 processId: 3, |
| 195 tabId: 0, |
| 196 timeStamp: 0, |
| 197 url: URL_FRAME3 }}], |
| 198 [ |
| 199 navigationOrder('main-'), |
| 200 navigationOrder('a.com-'), |
| 201 navigationOrder('b.com-'), |
| 202 navigationOrder('c.com-'), |
| 203 ['pre-a.com-onBeforeNavigate', 'a.com-onBeforeNavigate', |
| 204 'pre-a.com-onErrorOccurred'], |
| 205 ['pre-c.com-onBeforeNavigate', 'c.com-onBeforeNavigate', |
| 206 'pre-c.com-onErrorOccurred']]); |
| 207 |
| 208 chrome.tabs.update(tabId, { |
| 209 url: URL_MAIN + '?' + config.testServer.port |
| 210 }); |
| 211 }, |
| 212 |
| 213 ]); |
| 214 }); |
| 215 }); |
| 216 }; |
OLD | NEW |