- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / android / javatests / src / org / chromium / chrome / browser / input / SelectPopupOtherContentViewTest.java
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
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.input;
6
7 import android.test.suitebuilder.annotation.LargeTest;
8
9 import org.chromium.base.test.util.DisabledTest;
10 import org.chromium.base.test.util.Feature;
11 import org.chromium.base.test.util.UrlUtils;
12 import org.chromium.content.browser.ContentView;
13 import org.chromium.content.browser.input.SelectPopupDialog;
14 import org.chromium.content.browser.test.util.Criteria;
15 import org.chromium.content.browser.test.util.CriteriaHelper;
16 import org.chromium.content.browser.test.util.DOMUtils;
17 import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
18 import org.chromium.content.browser.test.util.UiUtils;
19 import org.chromium.chrome.browser.ContentViewUtil;
20 import org.chromium.chrome.testshell.ChromiumTestShellTestBase;
21 import org.chromium.ui.WindowAndroid;
22
23 import java.util.concurrent.TimeUnit;
24
25 public class SelectPopupOtherContentViewTest extends ChromiumTestShellTestBase {
26     private static final int WAIT_TIMEOUT_SECONDS = 2;
27     private static final String SELECT_URL = UrlUtils.encodeHtmlDataUri(
28             "<html><body>" +
29             "Which animal is the strongest:<br/>" +
30             "<select id=\"select\">" +
31             "<option>Black bear</option>" +
32             "<option>Polar bear</option>" +
33             "<option>Grizzly</option>" +
34             "<option>Tiger</option>" +
35             "<option>Lion</option>" +
36             "<option>Gorilla</option>" +
37             "<option>Chipmunk</option>" +
38             "</select>" +
39             "</body></html>");
40
41     private static class PopupShowingCriteria implements Criteria {
42         @Override
43         public boolean isSatisfied() {
44             return SelectPopupDialog.getCurrent() != null;
45         }
46     }
47
48     public SelectPopupOtherContentViewTest() {
49     }
50
51     /**
52      * Tests that the showing select popup does not get closed because an unrelated ContentView
53      * gets destroyed.
54      *
55      * @LargeTest
56      * @Feature({"Browser"})
57      * BUG 172967
58     */
59     @DisabledTest
60     public void testPopupNotClosedByOtherContentView()
61             throws InterruptedException, Exception, Throwable {
62         // Load the test page.
63         launchChromiumTestShellWithUrl(SELECT_URL);
64         assertTrue("Page failed to load", waitForActiveShellToBeDoneLoading());
65
66         final ContentView view = getActivity().getActiveContentView();
67         final TestCallbackHelperContainer viewClient =
68                 new TestCallbackHelperContainer(view);
69
70         // Once clicked, the popup should show up.
71         DOMUtils.clickNode(this, view, viewClient, "select");
72         assertTrue("The select popup did not show up on click.",
73                 CriteriaHelper.pollForCriteria(new PopupShowingCriteria()));
74
75         // Now create and destroy a different ContentView.
76         UiUtils.runOnUiThread(getActivity(), new Runnable() {
77             @Override
78             public void run() {
79                 int nativeWebContents = ContentViewUtil.createNativeWebContents(false);
80                 WindowAndroid windowAndroid = new WindowAndroid(getActivity());
81                 ContentView contentView = ContentView.newInstance(
82                         getActivity(), nativeWebContents, windowAndroid);
83                 contentView.destroy();
84             }
85         });
86
87         // Process some more events to give a chance to the dialog to hide if it were to.
88         getInstrumentation().waitForIdleSync();
89
90         // The popup should still be shown.
91         assertNotNull("The select popup got hidden by destroying of unrelated ContentViewCore.",
92                 SelectPopupDialog.getCurrent());
93     }
94 }