Index: chrome/test/data/extensions/platform_apps/web_view/shim/main.js |
diff --git a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js |
index dfedddcd7315d03324beb360b30cdeeb9ec1b699..05f1875996f2f0785b9c025dcad8ad8b1b94ccc8 100644 |
--- a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js |
+++ b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js |
@@ -2556,19 +2556,22 @@ function testZoomAPI() { |
document.body.appendChild(webview); |
}; |
+var testFindPage = |
+ 'data:text/html,Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
+ 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
+ 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
+ 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
+ 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
+ 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
+ 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
+ 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
+ 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
+ 'Dog dog dog Dog dog dogcatDog dogDogdog.<br><br>' + |
+ '<a href="about:blank">Click here!</a>'; |
+ |
function testFindAPI() { |
var webview = new WebView(); |
- webview.src = 'data:text/html,Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br><br>' + |
- '<a href="about:blank">Click here!</a>'; |
+ webview.src = testFindPage; |
var loadstopListener2 = function(e) { |
embedder.test.assertEq(webview.src, "about:blank"); |
@@ -2642,17 +2645,8 @@ function testFindAPI() { |
function testFindAPI_findupdate() { |
var webview = new WebView(); |
- webview.src = 'data:text/html,Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + |
- 'Dog dog dog Dog dog dogcatDog dogDogdog.<br><br>' + |
- '<a href="about:blank">Click here!</a>'; |
+ webview.src = testFindPage; |
+ |
var canceledTest = false; |
webview.addEventListener('loadstop', function(e) { |
// Test the |findupdate| event. |
@@ -2684,6 +2678,54 @@ function testFindAPI_findupdate() { |
document.body.appendChild(webview); |
}; |
+function testFindInMultipleWebViews() { |
+ var webviews = [new WebView(), new WebView(), new WebView()]; |
+ var success = []; |
+ for (var i in webviews) { |
+ webviews[i].src = testFindPage; |
+ success[i] = false; |
+ } |
+ |
+ var loadstopListener = function(id, e) { |
+ LOG("Searching WebView " + id + "."); |
+ |
+ // Test find results. |
+ webviews[id].find("dog", {}, function(results) { |
+ embedder.test.assertEq(results.numberOfMatches, 100); |
+ embedder.test.assertTrue(results.selectionRect.width > 0); |
+ embedder.test.assertTrue(results.selectionRect.height > 0); |
+ |
+ // Test finding next active matches. |
+ webviews[id].find("dog"); |
+ webviews[id].find("dog"); |
+ webviews[id].find("dog"); |
+ webviews[id].find("dog"); |
+ webviews[id].find("dog", {}, function(results) { |
+ embedder.test.assertEq(results.activeMatchOrdinal, 6); |
+ |
+ LOG("Searched WebView " + id + " successfully."); |
+ success[id] = true; |
+ for (var i in success) { |
ncarter (slow)
2017/03/27 23:21:36
You can use Promise.all here to avoid the |success
paulmeyer
2017/03/31 18:31:16
Okay, I've replaced the test with your code mostly
|
+ if (!success[i]) { |
+ return; |
+ } |
+ } |
+ |
+ // The test only succeeds once all WebViews have been searched |
+ // successfully. |
+ embedder.test.succeed(); |
+ }); |
+ }); |
+ }; |
+ |
+ // Search in all WebViews simultaneously. |
+ for (var i in webviews) { |
+ webviews[i].addEventListener( |
+ 'loadstop', loadstopListener.bind(undefined, i)); |
+ document.body.appendChild(webviews[i]); |
+ } |
+} |
+ |
function testLoadDataAPI() { |
var webview = new WebView(); |
webview.src = 'about:blank'; |
@@ -3142,6 +3184,7 @@ embedder.test.testList = { |
'testZoomAPI' : testZoomAPI, |
'testFindAPI': testFindAPI, |
'testFindAPI_findupdate': testFindAPI, |
+ 'testFindInMultipleWebViews': testFindInMultipleWebViews, |
'testLoadDataAPI': testLoadDataAPI, |
'testResizeEvents': testResizeEvents, |
'testPerOriginZoomMode': testPerOriginZoomMode, |