Index: android_webview/java/src/org/chromium/android_webview/AwContentsViewClient.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentsViewClient.java b/android_webview/java/src/org/chromium/android_webview/AwContentsViewClient.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6147102bc79dcdfc1b156eb55b30820393657a72 |
--- /dev/null |
+++ b/android_webview/java/src/org/chromium/android_webview/AwContentsViewClient.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 AwContentsViewClient extends ContentViewClient { |
joth
2013/11/05 23:00:47
nit: no 's'
AwContentViewClient
(it is true it's
|
+ |
+ 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 AwContentsViewClient(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 ? |
+ mAwSettings.getBlockNetworkLoads() && URLUtil.isNetworkUrl(url) : true; |
+ } |
+} |