Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 var embedder = {}; | 5 var embedder = {}; |
| 6 embedder.tests = {}; | 6 embedder.tests = {}; |
| 7 embedder.baseGuestURL = ''; | 7 embedder.baseGuestURL = ''; |
| 8 embedder.guestURL = ''; | 8 embedder.guestURL = ''; |
| 9 | 9 |
| 10 embedder.setUp = function(config) { | 10 embedder.setUp = function(config) { |
| 11 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port; | 11 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port; |
| 12 embedder.guestURL = embedder.baseGuestURL + | 12 embedder.guestURL = embedder.baseGuestURL + |
| 13 '/files/extensions/platform_apps/web_view/newwindow' + | 13 '/files/extensions/platform_apps/web_view/newwindow' + |
| 14 '/guest.html'; | 14 '/guest.html'; |
| 15 chrome.test.log('Guest url is: ' + embedder.guestURL); | 15 chrome.test.log('Guest url is: ' + embedder.guestURL); |
| 16 }; | 16 }; |
| 17 | 17 |
| 18 /** @private */ | 18 /** @private */ |
| 19 embedder.setUpGuest_ = function() { | 19 embedder.setUpGuest_ = function(partitionName) { |
| 20 document.querySelector('#webview-tag-container').innerHTML = | 20 document.querySelector('#webview-tag-container').innerHTML = |
| 21 '<webview style="width: 100px; height: 100px;"' + | 21 '<webview style="width: 100px; height: 100px;"' + |
| 22 ' src="' + embedder.guestURL + '"' + | 22 ' src="' + embedder.guestURL + '"' + |
| 23 ' partition="' + partitionName + '"' + | |
|
lazyboy
2013/03/25 18:12:55
Also keeping a test that doesn't have any partitio
Fady Samuel
2013/03/25 19:28:20
Done.
| |
| 23 '></webview>'; | 24 '></webview>'; |
| 24 var webview = document.querySelector('webview'); | 25 var webview = document.querySelector('webview'); |
| 25 if (!webview) { | 26 if (!webview) { |
| 26 chrome.test.fail('No <webview> element created'); | 27 chrome.test.fail('No <webview> element created'); |
| 27 } | 28 } |
| 28 return webview; | 29 return webview; |
| 29 }; | 30 }; |
| 30 | 31 |
| 31 /** @private */ | 32 /** @private */ |
| 32 embedder.setUpNewWindowRequest_ = function(webview, url, frameName) { | 33 embedder.setUpNewWindowRequest_ = function(webview, url, frameName) { |
| 33 var onWebViewLoadStop = function(e) { | 34 var onWebViewLoadStop = function(e) { |
| 34 // Send post message to <webview> when it's ready to receive them. | 35 // Send post message to <webview> when it's ready to receive them. |
| 35 webview.contentWindow.postMessage( | 36 webview.contentWindow.postMessage( |
| 36 JSON.stringify(['open-window', '' + url, '' + frameName]), '*'); | 37 JSON.stringify(['open-window', '' + url, '' + frameName]), '*'); |
| 37 }; | 38 }; |
| 38 webview.addEventListener('loadstop', onWebViewLoadStop); | 39 webview.addEventListener('loadstop', onWebViewLoadStop); |
| 39 }; | 40 }; |
| 40 | 41 |
| 41 embedder.setUpFrameNameRequest_ = function(webview, testName) { | 42 embedder.setUpFrameNameRequest_ = function(webview, testName) { |
| 42 var onWebViewLoadStop = function(e) { | 43 var onWebViewLoadStop = function(e) { |
| 43 // Send post message to <webview> when it's ready to receive them. | 44 // Send post message to <webview> when it's ready to receive them. |
| 44 webview.contentWindow.postMessage( | 45 webview.contentWindow.postMessage( |
| 45 JSON.stringify(['get-frame-name', testName]), '*'); | 46 JSON.stringify(['get-frame-name', testName]), '*'); |
| 46 }; | 47 }; |
| 47 webview.addEventListener('loadstop', onWebViewLoadStop); | 48 webview.addEventListener('loadstop', onWebViewLoadStop); |
| 48 }; | 49 }; |
| 49 | 50 |
| 50 /** @private */ | 51 /** @private */ |
| 51 embedder.requestFrameName_ = function(webview, testName, expectedFrameName) { | 52 embedder.requestFrameName_ = |
| 53 function(webview, openerwebview, testName, expectedFrameName) { | |
| 52 var onPostMessageReceived = function(e) { | 54 var onPostMessageReceived = function(e) { |
| 53 var data = JSON.parse(e.data); | 55 var data = JSON.parse(e.data); |
| 54 if (data[0] == 'get-frame-name') { | 56 if (data[0] == 'get-frame-name') { |
| 55 var name = data[1]; | 57 var name = data[1]; |
| 56 if (testName != name) | 58 if (testName != name) |
| 57 return; | 59 return; |
| 58 var frameName = data[2]; | 60 var frameName = data[2]; |
| 59 chrome.test.assertEq(expectedFrameName, frameName); | 61 chrome.test.assertEq(expectedFrameName, frameName); |
| 60 chrome.test.assertEq(expectedFrameName, webview.name); | 62 chrome.test.assertEq(expectedFrameName, webview.name); |
| 63 chrome.test.assertEq(openerwebview.partition, webview.partition); | |
| 61 chrome.test.succeed(); | 64 chrome.test.succeed(); |
| 62 } | 65 } |
| 63 }; | 66 }; |
| 64 window.addEventListener('message', onPostMessageReceived); | 67 window.addEventListener('message', onPostMessageReceived); |
| 65 }; | 68 }; |
| 66 | 69 |
| 67 /** @private */ | 70 /** @private */ |
| 68 embedder.assertCorrectEvent_ = function(e) { | 71 embedder.assertCorrectEvent_ = function(e) { |
| 69 chrome.test.assertEq('newwindow', e.type); | 72 chrome.test.assertEq('newwindow', e.type); |
| 70 chrome.test.assertTrue(!!e.targetUrl); | 73 chrome.test.assertTrue(!!e.targetUrl); |
| 71 chrome.test.assertTrue(e.targetUrl.indexOf(embedder.baseGuestURL) == 0); | 74 chrome.test.assertTrue(e.targetUrl.indexOf(embedder.baseGuestURL) == 0); |
| 72 }; | 75 }; |
| 73 | 76 |
| 74 // Tests begin. | 77 // Tests begin. |
| 75 | 78 |
| 76 // The embedder has to initiate a post message so that the guest can get a | 79 // The embedder has to initiate a post message so that the guest can get a |
| 77 // reference to embedder to send the reply back. | 80 // reference to embedder to send the reply back. |
| 78 | 81 |
| 79 var testNewWindow = | 82 var testNewWindow = |
| 80 function(testName, webViewName, guestName, expectedFrameName) { | 83 function(testName, webViewName, guestName, expectedFrameName) { |
| 81 var webview = embedder.setUpGuest_(); | 84 var webview = embedder.setUpGuest_('persist:partname'); |
| 82 | 85 |
| 83 var onNewWindow = function(e) { | 86 var onNewWindow = function(e) { |
| 84 chrome.test.log('Embedder notified on newwindow'); | 87 chrome.test.log('Embedder notified on newwindow'); |
| 85 embedder.assertCorrectEvent_(e); | 88 embedder.assertCorrectEvent_(e); |
| 86 var width = e.initialWidth || 640; | 89 var width = e.initialWidth || 640; |
| 87 var height = e.initialHeight || 480; | 90 var height = e.initialHeight || 480; |
| 88 e.preventDefault(); | 91 e.preventDefault(); |
| 89 chrome.app.window.create('newwindow_embedder.html', { | 92 chrome.app.window.create('newwindow_embedder.html', { |
| 90 top: 0, | 93 top: 0, |
| 91 left: 0, | 94 left: 0, |
| 92 width: width, | 95 width: width, |
| 93 height: height, | 96 height: height, |
| 94 }, function(newwindow) { | 97 }, function(newwindow) { |
| 95 newwindow.contentWindow.onload = function(evt) { | 98 newwindow.contentWindow.onload = function(evt) { |
| 96 var w = newwindow.contentWindow; | 99 var w = newwindow.contentWindow; |
| 97 var newwebview = w.document.querySelector('webview'); | 100 var newwebview = w.document.querySelector('webview'); |
| 98 newwebview.name = webViewName; | 101 newwebview.name = webViewName; |
| 99 embedder.setUpFrameNameRequest_(newwebview, testName); | 102 embedder.setUpFrameNameRequest_(newwebview, testName); |
| 100 embedder.requestFrameName_(newwebview, testName, expectedFrameName); | 103 embedder.requestFrameName_( |
| 104 newwebview, webview, testName, expectedFrameName); | |
| 101 try { | 105 try { |
| 102 e.window.attach(newwebview); | 106 e.window.attach(newwebview); |
| 103 } catch (e) { | 107 } catch (e) { |
| 104 chrome.test.fail(); | 108 chrome.test.fail(); |
| 105 } | 109 } |
| 106 } | 110 } |
| 107 }); | 111 }); |
| 108 }; | 112 }; |
| 109 webview.addEventListener('newwindow', onNewWindow); | 113 webview.addEventListener('newwindow', onNewWindow); |
| 110 | 114 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 141 onload = function() { | 145 onload = function() { |
| 142 chrome.test.getConfig(function(config) { | 146 chrome.test.getConfig(function(config) { |
| 143 embedder.setUp(config); | 147 embedder.setUp(config); |
| 144 chrome.test.runTests([ | 148 chrome.test.runTests([ |
| 145 embedder.tests.testNewWindowNameTakesPrecedence, | 149 embedder.tests.testNewWindowNameTakesPrecedence, |
| 146 embedder.tests.testWebViewNameTakesPrecedence, | 150 embedder.tests.testWebViewNameTakesPrecedence, |
| 147 embedder.tests.testNoName | 151 embedder.tests.testNoName |
| 148 ]); | 152 ]); |
| 149 }); | 153 }); |
| 150 }; | 154 }; |
| OLD | NEW |