Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1052)

Unified Diff: content/public/android/java/org/chromium/content/browser/ContentViewClient.java

Issue 10536066: android content shell bringup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync and merge Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/org/chromium/content/browser/ContentViewClient.java
diff --git a/content/public/android/java/org/chromium/content/browser/ContentViewClient.java b/content/public/android/java/org/chromium/content/browser/ContentViewClient.java
new file mode 100644
index 0000000000000000000000000000000000000000..93d5504fac3ced8cf5a00754f77b90e921ac553a
--- /dev/null
+++ b/content/public/android/java/org/chromium/content/browser/ContentViewClient.java
@@ -0,0 +1,285 @@
+// Copyright (c) 2011 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.content.browser;
+
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.util.Log;
+import android.view.KeyEvent;
+
+import java.net.URISyntaxException;
+
+import org.chromium.base.AccessedByNative;
+import org.chromium.base.CalledByNative;
+
+/**
+ * Main callback class used by ContentView.
+ *
+ * This contains the superset of callbacks required to implement the browser UI and the callbacks
+ * required to implement the WebView API.
+ * The memory and reference ownership of this class is unusual - see the .cc file and ContentView
+ * for more details.
+ *
+ * TODO(mkosiba): Rid this guy of default implementations. This class is used by both WebView and
+ * the browser and we don't want a the browser-specific default implementation to accidentally leak
+ * over to WebView.
+ */
+public class ContentViewClient {
+
+ // Tag used for logging.
+ private static final String TAG = "ContentViewClient";
+
+ // Native class pointer which will be set by nativeInit()
+ @AccessedByNative
+ private int mNativeClazz = 0;
+
+ // These ints must match up to the native values in content_view_client.h.
+ // Generic error
+ public static final int ERROR_UNKNOWN = -1;
+ // Server or proxy hostname lookup failed
+ public static final int ERROR_HOST_LOOKUP = -2;
+ // Unsupported authentication scheme (not basic or digest)
+ public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3;
+ // User authentication failed on server
+ public static final int ERROR_AUTHENTICATION = -4;
+ // User authentication failed on proxy
+ public static final int ERROR_PROXY_AUTHENTICATION = -5;
+ // Failed to connect to the server
+ public static final int ERROR_CONNECT = -6;
+ // Failed to read or write to the server
+ public static final int ERROR_IO = -7;
+ // Connection timed out
+ public static final int ERROR_TIMEOUT = -8;
+ // Too many redirects
+ public static final int ERROR_REDIRECT_LOOP = -9;
+ // Unsupported URI scheme
+ public static final int ERROR_UNSUPPORTED_SCHEME = -10;
+ // Failed to perform SSL handshake
+ public static final int ERROR_FAILED_SSL_HANDSHAKE = -11;
+ // Malformed URL
+ public static final int ERROR_BAD_URL = -12;
+ // Generic file error
+ public static final int ERROR_FILE = -13;
+ // File not found
+ public static final int ERROR_FILE_NOT_FOUND = -14;
+ // Too many requests during this load
+ public static final int ERROR_TOO_MANY_REQUESTS = -15;
+
+ @CalledByNative
+ public void openNewTab(String url, boolean incognito) {
+ }
+
+ @CalledByNative
+ public boolean addNewContents(int nativeSourceWebContents, int nativeWebContents,
+ int disposition, Rect initialPosition, boolean userGesture) {
+ return false;
+ }
+
+ @CalledByNative
+ public void closeContents() {
+ }
+
+ @CalledByNative
+ public void onUrlStarredChanged(boolean starred) {
+ }
+
+ @CalledByNative
+ public void onPageStarted(String url) {
+ }
+
+ @CalledByNative
+ public void onPageFinished(String url) {
+ }
+
+ @CalledByNative
+ public void onLoadStarted() {
+ }
+
+ @CalledByNative
+ public void onLoadStopped() {
+ }
+
+ @CalledByNative
+ public void onReceivedError(int errorCode, String description, String failingUrl) {
+ }
+
+ // TODO(jrg): add onReceivedHttpAuthRequest() once ContentHttpAuthHandler is upstreamed
+
+ @CalledByNative
+ public void onMainFrameCommitted(String url, String baseUrl) {
+ }
+
+ @CalledByNative
+ public void onTabHeaderStateChanged() {
+ }
+
+ @CalledByNative
+ public void onLoadProgressChanged(double progress) {
+ }
+
+ public void onUpdateTitle(String title) {
+ }
+
+ @CalledByNative
+ public void onUpdateUrl(String url) {
+ }
+
+ @CalledByNative
+ public void onReceiveFindMatchRects(int version, float[] rect_data,
+ RectF activeRect) {
+ }
+
+ @CalledByNative
+ public void onInterstitialShown() {
+ }
+
+ @CalledByNative
+ public void onInterstitialHidden() {
+ }
+
+ @CalledByNative
+ public boolean takeFocus(boolean reverse) {
+ return false;
+ }
+
+ public void onTabCrash(int pid) {
+ }
+
+ @CalledByNative
+ public boolean shouldOverrideUrlLoading(String url) {
+ return false;
+ }
+
+ public boolean shouldOverrideKeyEvent(KeyEvent event) {
+ int keyCode = event.getKeyCode();
+ // We need to send almost every key to WebKit. However:
+ // 1. We don't want to block the device on the renderer for
+ // some keys like menu, home, call.
+ // 2. There are no WebKit equivalents for some of these keys
+ // (see app/keyboard_codes_win.h)
+ // Note that these are not the same set as KeyEvent.isSystemKey:
+ // for instance, AKEYCODE_MEDIA_* will be dispatched to webkit.
+ if (keyCode == KeyEvent.KEYCODE_MENU ||
+ keyCode == KeyEvent.KEYCODE_HOME ||
+ keyCode == KeyEvent.KEYCODE_BACK ||
+ keyCode == KeyEvent.KEYCODE_CALL ||
+ keyCode == KeyEvent.KEYCODE_ENDCALL ||
+ keyCode == KeyEvent.KEYCODE_POWER ||
+ keyCode == KeyEvent.KEYCODE_HEADSETHOOK ||
+ keyCode == KeyEvent.KEYCODE_CAMERA ||
+ keyCode == KeyEvent.KEYCODE_FOCUS ||
+ keyCode == KeyEvent.KEYCODE_VOLUME_DOWN ||
+ keyCode == KeyEvent.KEYCODE_VOLUME_MUTE ||
+ keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
+ return true;
+ }
+
+ // We also have to intercept some shortcuts before we send them to the ContentView.
+ if (event.isCtrlPressed() && (
+ keyCode == KeyEvent.KEYCODE_TAB ||
+ keyCode == KeyEvent.KEYCODE_W ||
+ keyCode == KeyEvent.KEYCODE_F4)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ // Called when an ImeEvent is sent to the page. Can be used to know when some text is entered
+ // in a page.
+ public void onImeEvent() {
+ }
+
+ public void onUnhandledKeyEvent(KeyEvent event) {
+ // TODO(bulach): we probably want to re-inject the KeyEvent back into
+ // the system. Investigate if this is at all possible.
+ }
+
+
+ @CalledByNative
+ public void runFileChooser(FileChooserParams params) {
+ }
+
+ // Return true if the client will handle the JS alert.
+ @CalledByNative
+ public boolean onJsAlert(String url, String Message) {
+ return false;
+ }
+
+ // Return true if the client will handle the JS before unload dialog.
+ @CalledByNative
+ public boolean onJsBeforeUnload(String url, String message) {
+ return false;
+ }
+
+ // Return true if the client will handle the JS confirmation prompt.
+ @CalledByNative
+ public boolean onJsConfirm(String url, String message) {
+ return false;
+ }
+
+ // Return true if the client will handle the JS prompt dialog.
+ @CalledByNative
+ public boolean onJsPrompt(String url, String message, String defaultValue) {
+ return false;
+ }
+
+ /**
+ * A callback invoked after the JavaScript code passed to evaluateJavaScript
+ * has finished execution.
+ * Used in automation tests.
+ * @hide
+ */
+ public void onEvaluateJavaScriptResult(int id, String jsonResult) {
+ }
+
+ // TODO (dtrainor): Should expose getScrollX/Y from ContentView or make
+ // computeHorizontalScrollOffset()/computeVerticalScrollOffset() public.
+ /**
+ * Gives the UI the chance to override each scroll event.
+ * @param dx The amount scrolled in the X direction.
+ * @param dy The amount scrolled in the Y direction.
+ * @param scrollX The current X scroll offset.
+ * @param scrollY The current Y scroll offset.
+ * @return Whether or not the UI consumed and handled this event.
+ */
+ public boolean shouldOverrideScroll(float dx, float dy, float scrollX, float scrollY) {
+ return false;
+ }
+
+ /**
+ * Called when the contextual ActionBar is shown.
+ */
+ public void onContextualActionBarShown() {
+ }
+
+ /**
+ * Called when the contextual ActionBar is hidden.
+ */
+ public void onContextualActionBarHidden() {
+ }
+
+ /**
+ * Called when a new content intent is requested to be started.
+ */
+ public void onStartContentIntent(ContentView chromeView, String contentUrl) {
+ Intent intent;
+ // Perform generic parsing of the URI to turn it into an Intent.
+ try {
+ intent = Intent.parseUri(contentUrl, Intent.URI_INTENT_SCHEME);
+ } catch (URISyntaxException ex) {
+ Log.w(TAG, "Bad URI " + contentUrl + ": " + ex.getMessage());
+ return;
+ }
+
+ try {
+ chromeView.getContext().startActivity(intent);
+ } catch (ActivityNotFoundException ex) {
+ Log.w(TAG, "No application can handle " + contentUrl);
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698