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