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 |