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

Side by Side Diff: chrome/test/data/extensions/platform_apps/web_view/newwindow/embedder.js

Issue 13032003: Browser Plugin: <webview> should inherit partition attribute of opener on attachment. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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
OLDNEW
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
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 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698