- add sources.
[platform/framework/web/crosswalk.git] / src / android_webview / javatests / src / org / chromium / android_webview / test / AwContentsClientGetVideoLoadingProgressViewTest.java
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 package org.chromium.android_webview.test;
6
7 import android.test.suitebuilder.annotation.SmallTest;
8 import android.view.View;
9
10 import org.chromium.android_webview.AwContents;
11 import org.chromium.android_webview.test.util.VideoTestWebServer;
12 import org.chromium.base.test.util.DisabledTest;
13 import org.chromium.base.test.util.Feature;
14 import org.chromium.content.browser.test.util.CallbackHelper;
15 import org.chromium.content.browser.test.util.TouchCommon;
16
17 import java.util.concurrent.TimeUnit;
18 import java.util.concurrent.TimeoutException;
19
20 /**
21  * Test for AwContentClient.GetVideoLoadingProgressView.
22  *
23  * This test takes advantage of onViewAttachedToWindow, and assume our progress view
24  * is shown once it attached to window.
25  *
26  * As it needs user gesture to switch to the full screen mode video, A large button
27  * used to trigger switch occupies almost the whole WebView so the simulated click event
28  * can't miss it.
29  */
30 public class AwContentsClientGetVideoLoadingProgressViewTest extends AwTestBase
31         implements View.OnAttachStateChangeListener {
32     private CallbackHelper mViewAttachedCallbackHelper = new CallbackHelper();
33
34     @Override
35     public void onViewAttachedToWindow(View view) {
36         mViewAttachedCallbackHelper.notifyCalled();
37         view.removeOnAttachStateChangeListener(this);
38     }
39
40     @Override
41     public void onViewDetachedFromWindow(View arg0) {
42     }
43
44     private void waitForViewAttached() throws InterruptedException, TimeoutException {
45         mViewAttachedCallbackHelper.waitForCallback(0, 1, 20, TimeUnit.SECONDS);
46     }
47
48
49     /**
50      * @Feature({"AndroidWebView"})
51      * @SmallTest
52      *
53      * http://crbug.com/238735
54      */
55     @DisabledTest
56     public void testGetVideoLoadingProgressView() throws Throwable {
57         TestAwContentsClient contentsClient =
58                 new FullScreenVideoTestAwContentsClient(getActivity()) {
59             @Override
60             protected View getVideoLoadingProgressView() {
61                 View view = new View(getInstrumentation().getTargetContext());
62                 view.addOnAttachStateChangeListener(
63                         AwContentsClientGetVideoLoadingProgressViewTest.this);
64                 return view;
65             }
66         };
67         final AwTestContainerView testContainerView =
68                 createAwTestContainerViewOnMainSync(contentsClient);
69         final AwContents awContents = testContainerView.getAwContents();
70         enableJavaScriptOnUiThread(awContents);
71         VideoTestWebServer webServer = new VideoTestWebServer(
72                 getInstrumentation().getTargetContext());
73         try {
74             loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(),
75                     webServer.getFullScreenVideoTestURL());
76             Thread.sleep(5 * 1000);
77             TouchCommon touchCommon = new TouchCommon(this);
78             touchCommon.singleClickView(testContainerView);
79             waitForViewAttached();
80         } finally {
81             if (webServer != null) webServer.getTestWebServer().shutdown();
82         }
83     }
84 }