// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.android_webview; import android.content.Context; import android.view.KeyEvent; import android.view.View; import android.webkit.URLUtil; import android.webkit.WebChromeClient; import org.chromium.content.browser.ContentVideoView; import org.chromium.content.browser.ContentVideoViewClient; import org.chromium.content.browser.ContentViewClient; /** * ContentViewClient implementation for WebView */ public class AwContentViewClient extends ContentViewClient { private class AwContentVideoViewClient implements ContentVideoViewClient { @Override public void onShowCustomView(View view) { WebChromeClient.CustomViewCallback cb = new WebChromeClient.CustomViewCallback() { @Override public void onCustomViewHidden() { ContentVideoView contentVideoView = ContentVideoView.getContentVideoView(); if (contentVideoView != null) contentVideoView.exitFullscreen(false); } }; mAwContentsClient.onShowCustomView(view, cb); } @Override public void onDestroyContentVideoView() { mAwContentsClient.onHideCustomView(); } @Override public View getVideoLoadingProgressView() { return mAwContentsClient.getVideoLoadingProgressView(); } } private AwContentsClient mAwContentsClient; private AwSettings mAwSettings; public AwContentViewClient(AwContentsClient awContentsClient, AwSettings awSettings) { mAwContentsClient = awContentsClient; mAwSettings = awSettings; } @Override public void onBackgroundColorChanged(int color) { mAwContentsClient.onBackgroundColorChanged(color); } @Override public void onStartContentIntent(Context context, String contentUrl) { // Callback when detecting a click on a content link. mAwContentsClient.shouldOverrideUrlLoading(contentUrl); } @Override public void onUpdateTitle(String title) { mAwContentsClient.onReceivedTitle(title); } @Override public boolean shouldOverrideKeyEvent(KeyEvent event) { return mAwContentsClient.shouldOverrideKeyEvent(event); } @Override public final ContentVideoViewClient getContentVideoViewClient() { return new AwContentVideoViewClient(); } @Override public boolean shouldBlockMediaRequest(String url) { return mAwSettings != null ? mAwSettings.getBlockNetworkLoads() && URLUtil.isNetworkUrl(url) : true; } }