• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.test.util.CallbackHelper;
18 
19 import java.util.concurrent.TimeUnit;
20 import java.util.concurrent.TimeoutException;
21 
22 /**
23  * This class is a AwContentsClient for full screen video test.
24  */
25 public class FullScreenVideoTestAwContentsClient extends TestAwContentsClient {
26     public static final long WAITING_SECONDS = scaleTimeout(20);
27     private CallbackHelper mOnShowCustomViewCallbackHelper = new CallbackHelper();
28     private CallbackHelper mOnHideCustomViewCallbackHelper = new CallbackHelper();
29 
30     private Activity mActivity;
31     private View mCustomView;
32     private WebChromeClient.CustomViewCallback mExitCallback;
33 
FullScreenVideoTestAwContentsClient(Activity activity)34     public FullScreenVideoTestAwContentsClient(Activity activity) {
35         mActivity = activity;
36     }
37 
38     @Override
onShowCustomView(View view, WebChromeClient.CustomViewCallback callback)39     public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
40         mCustomView = view;
41         mExitCallback = callback;
42         mActivity.getWindow().setFlags(
43                 WindowManager.LayoutParams.FLAG_FULLSCREEN,
44                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
45 
46         mActivity.getWindow().addContentView(view,
47                 new FrameLayout.LayoutParams(
48                         ViewGroup.LayoutParams.MATCH_PARENT,
49                         ViewGroup.LayoutParams.MATCH_PARENT,
50                         Gravity.CENTER));
51         mOnShowCustomViewCallbackHelper.notifyCalled();
52     }
53 
54     @Override
onHideCustomView()55     public void onHideCustomView() {
56         mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
57         mOnHideCustomViewCallbackHelper.notifyCalled();
58     }
59 
getExitCallback()60     public WebChromeClient.CustomViewCallback getExitCallback() {
61         return mExitCallback;
62     }
63 
getCustomView()64     public View getCustomView() {
65         return mCustomView;
66     }
67 
wasCustomViewShownCalled()68     public boolean wasCustomViewShownCalled() {
69         return mOnShowCustomViewCallbackHelper.getCallCount() > 0;
70     }
71 
waitForCustomViewShown()72     public void waitForCustomViewShown() throws TimeoutException, InterruptedException {
73         mOnShowCustomViewCallbackHelper.waitForCallback(0, 1, WAITING_SECONDS, TimeUnit.SECONDS);
74     }
75 
waitForCustomViewHidden()76     public void waitForCustomViewHidden() throws InterruptedException, TimeoutException {
77         mOnHideCustomViewCallbackHelper.waitForCallback(0, 1, WAITING_SECONDS, TimeUnit.SECONDS);
78     }
79 }
80