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

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: Fixed nit Created 7 years, 8 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
« no previous file with comments | « no previous file | content/browser/browser_plugin/browser_plugin_guest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 '></webview>'; 23 '></webview>';
24 var webview = document.querySelector('webview'); 24 var webview = document.querySelector('webview');
25 if (partitionName) {
26 webview.partition = partitionName;
27 }
25 if (!webview) { 28 if (!webview) {
26 chrome.test.fail('No <webview> element created'); 29 chrome.test.fail('No <webview> element created');
27 } 30 }
28 return webview; 31 return webview;
29 }; 32 };
30 33
31 /** @private */ 34 /** @private */
32 embedder.setUpNewWindowRequest_ = function(webview, url, frameName) { 35 embedder.setUpNewWindowRequest_ = function(webview, url, frameName) {
33 var onWebViewLoadStop = function(e) { 36 var onWebViewLoadStop = function(e) {
34 // Send post message to <webview> when it's ready to receive them. 37 // Send post message to <webview> when it's ready to receive them.
35 webview.contentWindow.postMessage( 38 webview.contentWindow.postMessage(
36 JSON.stringify(['open-window', '' + url, '' + frameName]), '*'); 39 JSON.stringify(['open-window', '' + url, '' + frameName]), '*');
37 }; 40 };
38 webview.addEventListener('loadstop', onWebViewLoadStop); 41 webview.addEventListener('loadstop', onWebViewLoadStop);
39 }; 42 };
40 43
41 embedder.setUpFrameNameRequest_ = function(webview, testName) { 44 embedder.setUpFrameNameRequest_ = function(webview, testName) {
42 var onWebViewLoadStop = function(e) { 45 var onWebViewLoadStop = function(e) {
43 // Send post message to <webview> when it's ready to receive them. 46 // Send post message to <webview> when it's ready to receive them.
44 webview.contentWindow.postMessage( 47 webview.contentWindow.postMessage(
45 JSON.stringify(['get-frame-name', testName]), '*'); 48 JSON.stringify(['get-frame-name', testName]), '*');
46 }; 49 };
47 webview.addEventListener('loadstop', onWebViewLoadStop); 50 webview.addEventListener('loadstop', onWebViewLoadStop);
48 }; 51 };
49 52
50 /** @private */ 53 /** @private */
51 embedder.requestFrameName_ = function(webview, testName, expectedFrameName) { 54 embedder.requestFrameName_ =
55 function(webview, openerwebview, testName, expectedFrameName) {
52 var onPostMessageReceived = function(e) { 56 var onPostMessageReceived = function(e) {
53 var data = JSON.parse(e.data); 57 var data = JSON.parse(e.data);
54 if (data[0] == 'get-frame-name') { 58 if (data[0] == 'get-frame-name') {
55 var name = data[1]; 59 var name = data[1];
56 if (testName != name) 60 if (testName != name)
57 return; 61 return;
58 var frameName = data[2]; 62 var frameName = data[2];
59 chrome.test.assertEq(expectedFrameName, frameName); 63 chrome.test.assertEq(expectedFrameName, frameName);
60 chrome.test.assertEq(expectedFrameName, webview.name); 64 chrome.test.assertEq(expectedFrameName, webview.name);
65 chrome.test.assertEq(openerwebview.partition, webview.partition);
61 chrome.test.succeed(); 66 chrome.test.succeed();
62 } 67 }
63 }; 68 };
64 window.addEventListener('message', onPostMessageReceived); 69 window.addEventListener('message', onPostMessageReceived);
65 }; 70 };
66 71
67 /** @private */ 72 /** @private */
68 embedder.assertCorrectEvent_ = function(e) { 73 embedder.assertCorrectEvent_ = function(e) {
69 chrome.test.assertEq('newwindow', e.type); 74 chrome.test.assertEq('newwindow', e.type);
70 chrome.test.assertTrue(!!e.targetUrl); 75 chrome.test.assertTrue(!!e.targetUrl);
71 chrome.test.assertTrue(e.targetUrl.indexOf(embedder.baseGuestURL) == 0); 76 chrome.test.assertTrue(e.targetUrl.indexOf(embedder.baseGuestURL) == 0);
72 }; 77 };
73 78
74 // Tests begin. 79 // Tests begin.
75 80
76 // The embedder has to initiate a post message so that the guest can get a 81 // The embedder has to initiate a post message so that the guest can get a
77 // reference to embedder to send the reply back. 82 // reference to embedder to send the reply back.
78 83
79 var testNewWindow = 84 var testNewWindow = function(testName,
80 function(testName, webViewName, guestName, expectedFrameName) { 85 webViewName,
81 var webview = embedder.setUpGuest_(); 86 guestName,
87 partitionName,
88 expectedFrameName) {
89 var webview = embedder.setUpGuest_(partitionName);
82 90
83 var onNewWindow = function(e) { 91 var onNewWindow = function(e) {
84 chrome.test.log('Embedder notified on newwindow'); 92 chrome.test.log('Embedder notified on newwindow');
85 embedder.assertCorrectEvent_(e); 93 embedder.assertCorrectEvent_(e);
86 var width = e.initialWidth || 640; 94 var width = e.initialWidth || 640;
87 var height = e.initialHeight || 480; 95 var height = e.initialHeight || 480;
88 e.preventDefault(); 96 e.preventDefault();
89 chrome.app.window.create('newwindow_embedder.html', { 97 chrome.app.window.create('newwindow_embedder.html', {
90 top: 0, 98 top: 0,
91 left: 0, 99 left: 0,
92 width: width, 100 width: width,
93 height: height, 101 height: height,
94 }, function(newwindow) { 102 }, function(newwindow) {
95 newwindow.contentWindow.onload = function(evt) { 103 newwindow.contentWindow.onload = function(evt) {
96 var w = newwindow.contentWindow; 104 var w = newwindow.contentWindow;
97 var newwebview = w.document.querySelector('webview'); 105 var newwebview = w.document.querySelector('webview');
98 newwebview.name = webViewName; 106 newwebview.name = webViewName;
99 embedder.setUpFrameNameRequest_(newwebview, testName); 107 embedder.setUpFrameNameRequest_(newwebview, testName);
100 embedder.requestFrameName_(newwebview, testName, expectedFrameName); 108 embedder.requestFrameName_(
109 newwebview, webview, testName, expectedFrameName);
101 try { 110 try {
102 e.window.attach(newwebview); 111 e.window.attach(newwebview);
103 } catch (e) { 112 } catch (e) {
104 chrome.test.fail(); 113 chrome.test.fail();
105 } 114 }
106 } 115 }
107 }); 116 });
108 }; 117 };
109 webview.addEventListener('newwindow', onNewWindow); 118 webview.addEventListener('newwindow', onNewWindow);
110 119
111 // Load a new window with the given name. 120 // Load a new window with the given name.
112 embedder.setUpNewWindowRequest_(webview, 'guest.html', guestName); 121 embedder.setUpNewWindowRequest_(webview, 'guest.html', guestName);
113 }; 122 };
114 123
115 // Loads a guest which requests a new window. 124 // Loads a guest which requests a new window.
116 embedder.tests.testNewWindowNameTakesPrecedence = 125 embedder.tests.testNewWindowNameTakesPrecedence =
117 function testNewWindowNameTakesPrecedence() { 126 function testNewWindowNameTakesPrecedence() {
118 var webViewName = 'foo'; 127 var webViewName = 'foo';
119 var guestName = 'bar'; 128 var guestName = 'bar';
129 var partitionName = 'foobar';
120 var expectedName = guestName; 130 var expectedName = guestName;
121 testNewWindow('testNewWindowNameTakesPrecedence', 131 testNewWindow('testNewWindowNameTakesPrecedence',
122 webViewName, guestName, expectedName); 132 webViewName, guestName, partitionName, expectedName);
123 }; 133 };
124 134
125 embedder.tests.testWebViewNameTakesPrecedence = 135 embedder.tests.testWebViewNameTakesPrecedence =
126 function testWebViewNameTakesPrecedence() { 136 function testWebViewNameTakesPrecedence() {
127 var webViewName = 'foo'; 137 var webViewName = 'foo';
128 var guestName = ''; 138 var guestName = '';
139 var partitionName = 'persist:foobar';
129 var expectedName = webViewName; 140 var expectedName = webViewName;
130 testNewWindow('testWebViewNameTakesPrecedence', 141 testNewWindow('testWebViewNameTakesPrecedence',
131 webViewName, guestName, expectedName); 142 webViewName, guestName, partitionName, expectedName);
132 }; 143 };
133 144
134 embedder.tests.testNoName = function testNoName() { 145 embedder.tests.testNoName = function testNoName() {
135 var webViewName = ''; 146 var webViewName = '';
136 var guestName = ''; 147 var guestName = '';
148 var partitionName = '';
137 var expectedName = ''; 149 var expectedName = '';
138 testNewWindow('testNoName', webViewName, guestName, expectedName); 150 testNewWindow('testNoName',
151 webViewName, guestName, partitionName, expectedName);
139 }; 152 };
140 153
141 onload = function() { 154 onload = function() {
142 chrome.test.getConfig(function(config) { 155 chrome.test.getConfig(function(config) {
143 embedder.setUp(config); 156 embedder.setUp(config);
144 chrome.test.runTests([ 157 chrome.test.runTests([
145 embedder.tests.testNewWindowNameTakesPrecedence, 158 embedder.tests.testNewWindowNameTakesPrecedence,
146 embedder.tests.testWebViewNameTakesPrecedence, 159 embedder.tests.testWebViewNameTakesPrecedence,
147 embedder.tests.testNoName 160 embedder.tests.testNoName
148 ]); 161 ]);
149 }); 162 });
150 }; 163 };
OLDNEW
« no previous file with comments | « no previous file | content/browser/browser_plugin/browser_plugin_guest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698