Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / android_webview / javatests / src / org / chromium / android_webview / test / FullScreenVideoTestAwContentsClient.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.app.Activity;
8 import android.view.Gravity;
9 import android.view.View;
10 import android.view.ViewGroup;
11 import android.view.WindowManager;
12 import android.webkit.WebChromeClient;
13 import android.widget.FrameLayout;
14
15 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
16
17 import org.chromium.content.browser.ContentVideoView;
18 import org.chromium.content.browser.test.util.CallbackHelper;
19
20 import java.util.concurrent.TimeUnit;
21 import java.util.concurrent.TimeoutException;
22
23 /**
24  * This class is a AwContentsClient for full screen video test.
25  */
26 public class FullScreenVideoTestAwContentsClient extends TestAwContentsClient {
27     public static final long WAITING_SECONDS = scaleTimeout(20);
28     private CallbackHelper mOnShowCustomViewCallbackHelper = new CallbackHelper();
29     private CallbackHelper mOnHideCustomViewCallbackHelper = new CallbackHelper();
30
31     private Activity mActivity;
32     private ContentVideoView mVideoView;
33     private WebChromeClient.CustomViewCallback mExitCallback;
34
35     public FullScreenVideoTestAwContentsClient(Activity activity) {
36         mActivity = activity;
37     }
38
39     @Override
40     public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
41         if (view instanceof ContentVideoView) {
42             mVideoView = (ContentVideoView)view;
43         }
44         mExitCallback = callback;
45         mActivity.getWindow().setFlags(
46                 WindowManager.LayoutParams.FLAG_FULLSCREEN,
47                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
48
49         mActivity.getWindow().addContentView(view,
50                 new FrameLayout.LayoutParams(
51                         ViewGroup.LayoutParams.MATCH_PARENT,
52                         ViewGroup.LayoutParams.MATCH_PARENT,
53                         Gravity.CENTER));
54         mOnShowCustomViewCallbackHelper.notifyCalled();
55     }
56
57     @Override
58     public void onHideCustomView() {
59         mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
60         mOnHideCustomViewCallbackHelper.notifyCalled();
61     }
62
63     public WebChromeClient.CustomViewCallback getExitCallback() {
64         return mExitCallback;
65     }
66
67     public ContentVideoView getVideoView() {
68         return mVideoView;
69     }
70
71     public void waitForCustomViewShown() throws TimeoutException, InterruptedException {
72         mOnShowCustomViewCallbackHelper.waitForCallback(0, 1, WAITING_SECONDS, TimeUnit.SECONDS);
73     }
74
75     public void waitForCustomViewHidden() throws InterruptedException, TimeoutException {
76         mOnHideCustomViewCallbackHelper.waitForCallback(0, 1, WAITING_SECONDS, TimeUnit.SECONDS);
77     }
78 }