Chromium Code Reviews| Index: android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java |
| diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java b/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..0bf67de49410eba8e9a7765c3bf88bcb6914c643 |
| --- /dev/null |
| +++ b/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java |
| @@ -0,0 +1,98 @@ |
| +// 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.ContentVideoViewControls; |
| +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(); |
| + } |
| + |
| + @Override |
| + public ContentVideoViewControls createControls() { |
| + return null; |
| + } |
| + } |
| + |
| + 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 onRendererCrash(boolean crashedWhileOomProtected) { |
| + // This is not possible so long as the webview is run single process! |
| + throw new RuntimeException("Renderer crash reported."); |
| + } |
| + |
| + @Override |
| + public void onUpdateTitle(String title) { |
| + mAwContentsClient.onReceivedTitle(title); |
| + } |
| + |
| + @Override |
| + public boolean shouldOverrideKeyEvent(KeyEvent event) { |
| + return mAwContentsClient.shouldOverrideKeyEvent(event); |
| + } |
| + |
| + @Override |
| + final public ContentVideoViewClient getContentVideoViewClient() { |
| + return new AwContentVideoViewClient(); |
| + } |
| + |
| + @Override |
| + public boolean shouldBlockMediaRequest(String url) { |
| + return mAwSettings != null ? |
|
mkosiba (inactive)
2013/11/07 11:12:10
FYI boolean expressions are evaluated LTR so:
ret
|
| + mAwSettings.getBlockNetworkLoads() && URLUtil.isNetworkUrl(url) : true; |
| + } |
| +} |