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

Side by Side Diff: chrome/test/data/extensions/platform_apps/web_view/shim/main.js

Issue 2700613003: Enable find-in-page across GuestViews. (Closed)
Patch Set: Created 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 util = {}; 5 var util = {};
6 var embedder = {}; 6 var embedder = {};
7 embedder.baseGuestURL = ''; 7 embedder.baseGuestURL = '';
8 embedder.emptyGuestURL = ''; 8 embedder.emptyGuestURL = '';
9 embedder.windowOpenGuestURL = ''; 9 embedder.windowOpenGuestURL = '';
10 embedder.noReferrerGuestURL = ''; 10 embedder.noReferrerGuestURL = '';
(...skipping 2538 matching lines...) Expand 10 before | Expand all | Expand 10 after
2549 ); 2549 );
2550 } 2550 }
2551 ); 2551 );
2552 } 2552 }
2553 ); 2553 );
2554 }); 2554 });
2555 }); 2555 });
2556 document.body.appendChild(webview); 2556 document.body.appendChild(webview);
2557 }; 2557 };
2558 2558
2559 var testFindPage =
2560 'data:text/html,Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2561 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2562 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2563 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2564 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2565 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2566 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2567 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2568 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2569 'Dog dog dog Dog dog dogcatDog dogDogdog.<br><br>' +
2570 '<a href="about:blank">Click here!</a>';
2571
2559 function testFindAPI() { 2572 function testFindAPI() {
2560 var webview = new WebView(); 2573 var webview = new WebView();
2561 webview.src = 'data:text/html,Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + 2574 webview.src = testFindPage;
2562 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2563 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2564 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2565 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2566 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2567 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2568 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2569 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2570 'Dog dog dog Dog dog dogcatDog dogDogdog.<br><br>' +
2571 '<a href="about:blank">Click here!</a>';
2572 2575
2573 var loadstopListener2 = function(e) { 2576 var loadstopListener2 = function(e) {
2574 embedder.test.assertEq(webview.src, "about:blank"); 2577 embedder.test.assertEq(webview.src, "about:blank");
2575 // Test find results when looking for nothing. 2578 // Test find results when looking for nothing.
2576 webview.find("", {}, function(results) { 2579 webview.find("", {}, function(results) {
2577 embedder.test.assertEq(results.numberOfMatches, 0); 2580 embedder.test.assertEq(results.numberOfMatches, 0);
2578 embedder.test.assertEq(results.activeMatchOrdinal, 0); 2581 embedder.test.assertEq(results.activeMatchOrdinal, 0);
2579 embedder.test.assertEq(results.selectionRect.left, 0); 2582 embedder.test.assertEq(results.selectionRect.left, 0);
2580 embedder.test.assertEq(results.selectionRect.top, 0); 2583 embedder.test.assertEq(results.selectionRect.top, 0);
2581 embedder.test.assertEq(results.selectionRect.width, 0); 2584 embedder.test.assertEq(results.selectionRect.width, 0);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2635 }); 2638 });
2636 }); 2639 });
2637 }; 2640 };
2638 2641
2639 webview.addEventListener('loadstop', loadstopListener1); 2642 webview.addEventListener('loadstop', loadstopListener1);
2640 document.body.appendChild(webview); 2643 document.body.appendChild(webview);
2641 }; 2644 };
2642 2645
2643 function testFindAPI_findupdate() { 2646 function testFindAPI_findupdate() {
2644 var webview = new WebView(); 2647 var webview = new WebView();
2645 webview.src = 'data:text/html,Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + 2648 webview.src = testFindPage;
2646 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' + 2649
2647 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2648 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2649 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2650 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2651 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2652 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2653 'Dog dog dog Dog dog dogcatDog dogDogdog.<br>' +
2654 'Dog dog dog Dog dog dogcatDog dogDogdog.<br><br>' +
2655 '<a href="about:blank">Click here!</a>';
2656 var canceledTest = false; 2650 var canceledTest = false;
2657 webview.addEventListener('loadstop', function(e) { 2651 webview.addEventListener('loadstop', function(e) {
2658 // Test the |findupdate| event. 2652 // Test the |findupdate| event.
2659 webview.addEventListener('findupdate', function(e) { 2653 webview.addEventListener('findupdate', function(e) {
2660 if (e.activeMatchOrdinal > 0) { 2654 if (e.activeMatchOrdinal > 0) {
2661 // embedder.test.assertTrue(e.numberOfMatches >= e.activeMatchOrdinal) 2655 // embedder.test.assertTrue(e.numberOfMatches >= e.activeMatchOrdinal)
2662 // This currently fails because of http://crbug.com/342445 . 2656 // This currently fails because of http://crbug.com/342445 .
2663 embedder.test.assertTrue(e.selectionRect.width > 0); 2657 embedder.test.assertTrue(e.selectionRect.width > 0);
2664 embedder.test.assertTrue(e.selectionRect.height > 0); 2658 embedder.test.assertTrue(e.selectionRect.height > 0);
2665 } 2659 }
(...skipping 11 matching lines...) Expand all
2677 } 2671 }
2678 }); 2672 });
2679 wv.find("dog"); 2673 wv.find("dog");
2680 wv.find("cat"); 2674 wv.find("cat");
2681 wv.find("dog"); 2675 wv.find("dog");
2682 }); 2676 });
2683 2677
2684 document.body.appendChild(webview); 2678 document.body.appendChild(webview);
2685 }; 2679 };
2686 2680
2681 function testFindInMultipleWebViews() {
2682 var webviews = [new WebView(), new WebView(), new WebView()];
2683 var success = [];
2684 for (var i in webviews) {
2685 webviews[i].src = testFindPage;
2686 success[i] = false;
2687 }
2688
2689 var loadstopListener = function(id, e) {
2690 LOG("Searching WebView " + id + ".");
2691
2692 // Test find results.
2693 webviews[id].find("dog", {}, function(results) {
2694 embedder.test.assertEq(results.numberOfMatches, 100);
2695 embedder.test.assertTrue(results.selectionRect.width > 0);
2696 embedder.test.assertTrue(results.selectionRect.height > 0);
2697
2698 // Test finding next active matches.
2699 webviews[id].find("dog");
2700 webviews[id].find("dog");
2701 webviews[id].find("dog");
2702 webviews[id].find("dog");
2703 webviews[id].find("dog", {}, function(results) {
2704 embedder.test.assertEq(results.activeMatchOrdinal, 6);
2705
2706 LOG("Searched WebView " + id + " successfully.");
2707 success[id] = true;
2708 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
2709 if (!success[i]) {
2710 return;
2711 }
2712 }
2713
2714 // The test only succeeds once all WebViews have been searched
2715 // successfully.
2716 embedder.test.succeed();
2717 });
2718 });
2719 };
2720
2721 // Search in all WebViews simultaneously.
2722 for (var i in webviews) {
2723 webviews[i].addEventListener(
2724 'loadstop', loadstopListener.bind(undefined, i));
2725 document.body.appendChild(webviews[i]);
2726 }
2727 }
2728
2687 function testLoadDataAPI() { 2729 function testLoadDataAPI() {
2688 var webview = new WebView(); 2730 var webview = new WebView();
2689 webview.src = 'about:blank'; 2731 webview.src = 'about:blank';
2690 2732
2691 var loadstopListener2 = function(e) { 2733 var loadstopListener2 = function(e) {
2692 // Test the virtual URL. 2734 // Test the virtual URL.
2693 embedder.test.assertEq(webview.src, embedder.virtualURL); 2735 embedder.test.assertEq(webview.src, embedder.virtualURL);
2694 2736
2695 // Test that the image was loaded from the right source. 2737 // Test that the image was loaded from the right source.
2696 webview.executeScript( 2738 webview.executeScript(
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
3135 'testRemoveWebviewOnExit': testRemoveWebviewOnExit, 3177 'testRemoveWebviewOnExit': testRemoveWebviewOnExit,
3136 'testRemoveWebviewAfterNavigation': testRemoveWebviewAfterNavigation, 3178 'testRemoveWebviewAfterNavigation': testRemoveWebviewAfterNavigation,
3137 'testResizeWebviewResizesContent': testResizeWebviewResizesContent, 3179 'testResizeWebviewResizesContent': testResizeWebviewResizesContent,
3138 'testResizeWebviewWithDisplayNoneResizesContent': 3180 'testResizeWebviewWithDisplayNoneResizesContent':
3139 testResizeWebviewWithDisplayNoneResizesContent, 3181 testResizeWebviewWithDisplayNoneResizesContent,
3140 'testPostMessageCommChannel': testPostMessageCommChannel, 3182 'testPostMessageCommChannel': testPostMessageCommChannel,
3141 'testScreenshotCapture' : testScreenshotCapture, 3183 'testScreenshotCapture' : testScreenshotCapture,
3142 'testZoomAPI' : testZoomAPI, 3184 'testZoomAPI' : testZoomAPI,
3143 'testFindAPI': testFindAPI, 3185 'testFindAPI': testFindAPI,
3144 'testFindAPI_findupdate': testFindAPI, 3186 'testFindAPI_findupdate': testFindAPI,
3187 'testFindInMultipleWebViews': testFindInMultipleWebViews,
3145 'testLoadDataAPI': testLoadDataAPI, 3188 'testLoadDataAPI': testLoadDataAPI,
3146 'testResizeEvents': testResizeEvents, 3189 'testResizeEvents': testResizeEvents,
3147 'testPerOriginZoomMode': testPerOriginZoomMode, 3190 'testPerOriginZoomMode': testPerOriginZoomMode,
3148 'testPerViewZoomMode': testPerViewZoomMode, 3191 'testPerViewZoomMode': testPerViewZoomMode,
3149 'testDisabledZoomMode': testDisabledZoomMode, 3192 'testDisabledZoomMode': testDisabledZoomMode,
3150 'testZoomBeforeNavigation': testZoomBeforeNavigation, 3193 'testZoomBeforeNavigation': testZoomBeforeNavigation,
3151 'testPlugin': testPlugin, 3194 'testPlugin': testPlugin,
3152 'testGarbageCollect': testGarbageCollect, 3195 'testGarbageCollect': testGarbageCollect,
3153 'testCloseNewWindowCleanup': testCloseNewWindowCleanup, 3196 'testCloseNewWindowCleanup': testCloseNewWindowCleanup,
3154 'testFocusWhileFocused': testFocusWhileFocused, 3197 'testFocusWhileFocused': testFocusWhileFocused,
3155 'testPDFInWebview': testPDFInWebview, 3198 'testPDFInWebview': testPDFInWebview,
3156 'testNavigateToPDFInWebview': testNavigateToPDFInWebview, 3199 'testNavigateToPDFInWebview': testNavigateToPDFInWebview,
3157 'testMailtoLink': testMailtoLink, 3200 'testMailtoLink': testMailtoLink,
3158 'testRendererNavigationRedirectWhileUnattached': 3201 'testRendererNavigationRedirectWhileUnattached':
3159 testRendererNavigationRedirectWhileUnattached, 3202 testRendererNavigationRedirectWhileUnattached,
3160 'testBlobURL': testBlobURL 3203 'testBlobURL': testBlobURL
3161 }; 3204 };
3162 3205
3163 onload = function() { 3206 onload = function() {
3164 chrome.test.getConfig(function(config) { 3207 chrome.test.getConfig(function(config) {
3165 embedder.setUp_(config); 3208 embedder.setUp_(config);
3166 chrome.test.sendMessage("Launched"); 3209 chrome.test.sendMessage("Launched");
3167 }); 3210 });
3168 }; 3211 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698