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

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

Issue 17447005: <webview>: Move back, forward, canGoBack, canGoForward, go from content to chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@filter_listener
Patch Set: Merge against latest changes in other CL Created 7 years, 6 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 var embedder = {};
6 embedder.tests = {};
7 embedder.baseGuestURL = '';
8 embedder.guestURL = '';
9
10 window.runNavigationTest = function(testName) {
11 if (!embedder.test.testList[testName]) {
12 console.log('Incorrect testName: ' + testName);
13 embedder.test.fail();
14 return;
15 }
16
17 // Run the test.
18 embedder.test.testList[testName]();
19 };
20 // window.* exported functions end.
21
22 embedder.setUp_ = function(config) {
23 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port;
24 embedder.guestURL = embedder.baseGuestURL +
25 '/files/extensions/platform_apps/web_view/navigation' +
26 '/guest.html';
27 chrome.test.log('Guest url is: ' + embedder.guestURL);
28 };
29
30 /** @private */
31 embedder.setUpGuest_ = function() {
32 document.querySelector('#webview-tag-container').innerHTML =
33 '<webview style="width: 100px; height: 100px;"></webview>';
34 var webview = document.querySelector('webview');
35 if (!webview) {
36 chrome.test.fail('No <webview> element created');
37 }
38 return webview;
39 };
40
41 embedder.getHTMLForGuestWithTitle_ = function(title) {
42 var html =
43 'data:text/html,' +
44 '<html><head><title>%s</title></head>' +
45 '<body>hello world</body>' +
46 '</html>';
47 return html.replace('%s', title);
48 };
49
50 embedder.test = {};
51 embedder.test.succeed = function() {
52 chrome.test.sendMessage('DoneNavigationTest.PASSED');
53 };
54
55 embedder.test.fail = function() {
56 chrome.test.sendMessage('DoneNavigationTest.FAILED');
57 };
58
59 embedder.test.assertEq = function(a, b) {
60 if (a != b) {
61 console.log('assertion failed: ' + a + ' != ' + b);
62 embedder.test.fail();
63 }
64 };
65
66 embedder.test.assertTrue = function(condition) {
67 if (!condition) {
68 console.log('assertion failed: true != ' + condition);
69 embedder.test.fail();
70 }
71 };
72
73 embedder.test.assertFalse = function(condition) {
74 if (condition) {
75 console.log('assertion failed: false != ' + condition);
76 embedder.test.fail();
77 }
78 };
79
80 // Tests begin.
81
82 function testNavigation() {
83 var webview = embedder.setUpGuest_();
84 var step = 1;
85 console.log('run step: ' + step);
86
87 // Verify that canGoBack and canGoForward work as expected.
88 var runStep2 = function() {
89 step = 2;
90 console.log('run step: ' + step);
91 webview.executeScript({
92 code: 'document.title'
93 }, function(results) {
94 embedder.test.assertEq('step1', results[0]);
95 embedder.test.assertFalse(webview.canGoBack());
96 embedder.test.assertFalse(webview.canGoForward());
97 webview.src = embedder.getHTMLForGuestWithTitle_('step2');
98 });
99 };
100
101 // Verify that canGoBack and canGoForward work as expected.
102 var runStep3 = function() {
103 step = 3;
104 console.log('run step: ' + step);
105 webview.executeScript({
106 code: 'document.title'
107 }, function(results) {
108 embedder.test.assertEq('step2', results[0]);
109 embedder.test.assertTrue(webview.canGoBack());
110 embedder.test.assertFalse(webview.canGoForward());
111 webview.back();
112 });
113 };
114
115 // Verify that webview.back works as expected.
116 var runStep4 = function() {
117 step = 4;
118 console.log('run step: ' + step);
119 webview.executeScript({
120 code: 'document.title'
121 }, function(results) {
122 embedder.test.assertEq('step1', results[0]);
123 embedder.test.assertFalse(webview.canGoBack());
124 embedder.test.assertTrue(webview.canGoForward());
125 webview.forward();
126 });
127 };
128
129 // Verify that webview.forward works as expected.
130 var runStep5 = function() {
131 step = 5;
132 console.log('run step: ' + step);
133 webview.executeScript({
134 code: 'document.title'
135 }, function(results) {
136 embedder.test.assertEq('step2', results[0]);
137 embedder.test.assertTrue(webview.canGoBack());
138 embedder.test.assertFalse(webview.canGoForward());
139 webview.src = embedder.getHTMLForGuestWithTitle_('step3');
140 });
141 };
142
143 // Navigate one more time to allow for interesting uses of webview.go.
144 var runStep6 = function() {
145 step = 6;
146 console.log('run step: ' + step);
147 webview.executeScript({
148 code: 'document.title'
149 }, function(results) {
150 embedder.test.assertEq('step3', results[0]);
151 embedder.test.assertTrue(webview.canGoBack());
152 embedder.test.assertFalse(webview.canGoForward());
153 webview.go(-2);
154 });
155 };
156
157 // Verify that webview.go works as expected.
158 var runStep7 = function() {
159 step = 7;
160 console.log('run step: ' + step);
161 webview.executeScript({
162 code: 'document.title'
163 }, function(results) {
164 embedder.test.assertEq('step1', results[0]);
165 embedder.test.assertFalse(webview.canGoBack());
166 embedder.test.assertTrue(webview.canGoForward());
167 embedder.test.succeed();
168 });
169 };
170
171 var onLoadStop = function(e) {
172 switch (step) {
173 case 1:
174 runStep2();
175 break;
176 case 2:
177 runStep3();
178 break;
179 case 3:
180 runStep4();
181 break;
182 case 4:
183 runStep5();
184 break;
185 case 5:
186 runStep6();
187 break;
188 case 6:
189 runStep7();
190 break;
191 default:
lazyboy 2013/06/22 04:29:15 log: 'unexpected step: ' + step
Fady Samuel 2013/06/25 15:46:12 Done.
192 embedder.test.fail();
193 }
194 };
195 webview.addEventListener('loadstop', onLoadStop);
196 webview.src = embedder.getHTMLForGuestWithTitle_('step1');
197 }
198
199 embedder.test.testList = {
200 'testNavigation': testNavigation
201 };
202
203 onload = function() {
204 chrome.test.getConfig(function(config) {
205 embedder.setUp_(config);
206 chrome.test.sendMessage("Launched");
207 });
208 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698