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.
5 package org.chromium.android_webview.test;
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;
15 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
17 import org.chromium.content.browser.ContentVideoView;
18 import org.chromium.content.browser.test.util.CallbackHelper;
20 import java.util.concurrent.TimeUnit;
21 import java.util.concurrent.TimeoutException;
24 * This class is a AwContentsClient for full screen video test.
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();
31 private Activity mActivity;
32 private ContentVideoView mVideoView;
33 private WebChromeClient.CustomViewCallback mExitCallback;
35 public FullScreenVideoTestAwContentsClient(Activity activity) {
40 public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
41 if (view instanceof ContentVideoView) {
42 mVideoView = (ContentVideoView)view;
44 mExitCallback = callback;
45 mActivity.getWindow().setFlags(
46 WindowManager.LayoutParams.FLAG_FULLSCREEN,
47 WindowManager.LayoutParams.FLAG_FULLSCREEN);
49 mActivity.getWindow().addContentView(view,
50 new FrameLayout.LayoutParams(
51 ViewGroup.LayoutParams.MATCH_PARENT,
52 ViewGroup.LayoutParams.MATCH_PARENT,
54 mOnShowCustomViewCallbackHelper.notifyCalled();
58 public void onHideCustomView() {
59 mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
60 mOnHideCustomViewCallbackHelper.notifyCalled();
63 public WebChromeClient.CustomViewCallback getExitCallback() {
67 public ContentVideoView getVideoView() {
71 public void waitForCustomViewShown() throws TimeoutException, InterruptedException {
72 mOnShowCustomViewCallbackHelper.waitForCallback(0, 1, WAITING_SECONDS, TimeUnit.SECONDS);
75 public void waitForCustomViewHidden() throws InterruptedException, TimeoutException {
76 mOnHideCustomViewCallbackHelper.waitForCallback(0, 1, WAITING_SECONDS, TimeUnit.SECONDS);