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

Side by Side Diff: content/public/android/java/src/org/chromium/content/browser/ContentView.java

Issue 14018004: [Android] Refactor NativeView to be able to use it for AutofillDialog. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adding UI_EXPORT Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.content.browser; 5 package org.chromium.content.browser;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.content.Context; 8 import android.content.Context;
9 import android.content.res.Configuration; 9 import android.content.res.Configuration;
10 import android.graphics.Bitmap; 10 import android.graphics.Bitmap;
11 import android.graphics.Canvas; 11 import android.graphics.Canvas;
12 import android.graphics.Rect; 12 import android.graphics.Rect;
13 import android.os.Build; 13 import android.os.Build;
14 import android.util.AttributeSet; 14 import android.util.AttributeSet;
15 import android.view.KeyEvent; 15 import android.view.KeyEvent;
16 import android.view.MotionEvent; 16 import android.view.MotionEvent;
17 import android.view.View; 17 import android.view.View;
18 import android.view.accessibility.AccessibilityEvent; 18 import android.view.accessibility.AccessibilityEvent;
19 import android.view.accessibility.AccessibilityNodeInfo; 19 import android.view.accessibility.AccessibilityNodeInfo;
20 import android.view.inputmethod.EditorInfo; 20 import android.view.inputmethod.EditorInfo;
21 import android.view.inputmethod.InputConnection; 21 import android.view.inputmethod.InputConnection;
22 import android.widget.FrameLayout; 22 import android.widget.FrameLayout;
23 23
24 import com.google.common.annotations.VisibleForTesting; 24 import com.google.common.annotations.VisibleForTesting;
25 25
26 import org.chromium.content.common.ProcessInitException;
27 import org.chromium.content.common.TraceEvent; 26 import org.chromium.content.common.TraceEvent;
28 import org.chromium.ui.gfx.NativeWindow; 27 import org.chromium.ui.gfx.WindowAndroid;
29
30 import java.util.ArrayList;
31 28
32 /** 29 /**
33 * The containing view for {@link ContentViewCore} that exists in the Android UI hierarchy and 30 * The containing view for {@link ContentViewCore} that exists in the Android UI hierarchy and
34 * exposes the various {@link View} functionality to it. 31 * exposes the various {@link View} functionality to it.
35 * 32 *
36 * TODO(joth): Remove any methods overrides from this class that were added for WebView 33 * TODO(joth): Remove any methods overrides from this class that were added for WebView
37 * compatibility. 34 * compatibility.
38 */ 35 */
39 public class ContentView extends FrameLayout implements ContentViewCore.Internal AccessDelegate { 36 public class ContentView extends FrameLayout implements ContentViewCore.Internal AccessDelegate {
40 // Used when ContentView implements a standalone View. 37 // Used when ContentView implements a standalone View.
41 public static final int PERSONALITY_VIEW = ContentViewCore.PERSONALITY_VIEW; 38 public static final int PERSONALITY_VIEW = ContentViewCore.PERSONALITY_VIEW;
42 // Used for Chrome. 39 // Used for Chrome.
43 public static final int PERSONALITY_CHROME = ContentViewCore.PERSONALITY_CHR OME; 40 public static final int PERSONALITY_CHROME = ContentViewCore.PERSONALITY_CHR OME;
44 41
45 private ContentViewCore mContentViewCore; 42 private ContentViewCore mContentViewCore;
46 43
47 private float mCurrentTouchOffsetX; 44 private float mCurrentTouchOffsetX;
48 private float mCurrentTouchOffsetY; 45 private float mCurrentTouchOffsetY;
49 46
50 /** 47 /**
51 * Creates an instance of a ContentView. 48 * Creates an instance of a ContentView.
52 * @param context The Context the view is running in, through which it can 49 * @param context The Context the view is running in, through which it can
53 * access the current theme, resources, etc. 50 * access the current theme, resources, etc.
54 * @param nativeWebContents A pointer to the native web contents. 51 * @param nativeWebContents A pointer to the native web contents.
55 * @param nativeWindow An instance of the NativeWindow. 52 * @param windowAndroid An instance of the WindowAndroid.
56 * @param personality One of {@link #PERSONALITY_CHROME} or {@link #PERSONAL ITY_VIEW}. 53 * @param personality One of {@link #PERSONALITY_CHROME} or {@link #PERSONAL ITY_VIEW}.
57 * @return A ContentView instance. 54 * @return A ContentView instance.
58 */ 55 */
59 public static ContentView newInstance(Context context, int nativeWebContents , 56 public static ContentView newInstance(Context context, int nativeWebContents ,
60 NativeWindow nativeWindow, int personality) { 57 WindowAndroid windowAndroid, int personality) {
61 return newInstance(context, nativeWebContents, nativeWindow, null, 58 return newInstance(context, nativeWebContents, windowAndroid, null,
62 android.R.attr.webViewStyle, personality); 59 android.R.attr.webViewStyle, personality);
63 } 60 }
64 61
65 /** 62 /**
66 * Creates an instance of a ContentView. 63 * Creates an instance of a ContentView.
67 * @param context The Context the view is running in, through which it can 64 * @param context The Context the view is running in, through which it can
68 * access the current theme, resources, etc. 65 * access the current theme, resources, etc.
69 * @param nativeWebContents A pointer to the native web contents. 66 * @param nativeWebContents A pointer to the native web contents.
70 * @param nativeWindow An instance of the NativeWindow. 67 * @param windowAndroid An instance of the WindowAndroid.
71 * @param attrs The attributes of the XML tag that is inflating the view. 68 * @param attrs The attributes of the XML tag that is inflating the view.
72 * @return A ContentView instance. 69 * @return A ContentView instance.
73 */ 70 */
74 public static ContentView newInstance(Context context, int nativeWebContents , 71 public static ContentView newInstance(Context context, int nativeWebContents ,
75 NativeWindow nativeWindow, AttributeSet attrs) { 72 WindowAndroid windowAndroid, AttributeSet attrs) {
76 // TODO(klobag): use the WebViewStyle as the default style for now. It e nables scrollbar. 73 // TODO(klobag): use the WebViewStyle as the default style for now. It e nables scrollbar.
77 // When ContentView is moved to framework, we can define its own style i n the res. 74 // When ContentView is moved to framework, we can define its own style i n the res.
78 return newInstance(context, nativeWebContents, nativeWindow, attrs, 75 return newInstance(context, nativeWebContents, windowAndroid, attrs,
79 android.R.attr.webViewStyle); 76 android.R.attr.webViewStyle);
80 } 77 }
81 78
82 /** 79 /**
83 * Creates an instance of a ContentView. 80 * Creates an instance of a ContentView.
84 * @param context The Context the view is running in, through which it can 81 * @param context The Context the view is running in, through which it can
85 * access the current theme, resources, etc. 82 * access the current theme, resources, etc.
86 * @param nativeWebContents A pointer to the native web contents. 83 * @param nativeWebContents A pointer to the native web contents.
87 * @param nativeWindow An instance of the NativeWindow. 84 * @param windowAndroid An instance of the WindowAndroid.
88 * @param attrs The attributes of the XML tag that is inflating the view. 85 * @param attrs The attributes of the XML tag that is inflating the view.
89 * @param defStyle The default style to apply to this view. 86 * @param defStyle The default style to apply to this view.
90 * @return A ContentView instance. 87 * @return A ContentView instance.
91 */ 88 */
92 public static ContentView newInstance(Context context, int nativeWebContents , 89 public static ContentView newInstance(Context context, int nativeWebContents ,
93 NativeWindow nativeWindow, AttributeSet attrs, int defStyle) { 90 WindowAndroid windowAndroid, AttributeSet attrs, int defStyle) {
94 return newInstance(context, nativeWebContents, nativeWindow, attrs, defS tyle, 91 return newInstance(context, nativeWebContents, windowAndroid, attrs, def Style,
95 PERSONALITY_VIEW); 92 PERSONALITY_VIEW);
96 } 93 }
97 94
98 private static ContentView newInstance(Context context, int nativeWebContent s, 95 private static ContentView newInstance(Context context, int nativeWebContent s,
99 NativeWindow nativeWindow, AttributeSet attrs, int defStyle, int per sonality) { 96 WindowAndroid windowAndroid, AttributeSet attrs, int defStyle, int p ersonality) {
100 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 97 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
101 return new ContentView(context, nativeWebContents, nativeWindow, att rs, defStyle, 98 return new ContentView(context, nativeWebContents, windowAndroid, at trs, defStyle,
102 personality); 99 personality);
103 } else { 100 } else {
104 return new JellyBeanContentView(context, nativeWebContents, nativeWi ndow, attrs, 101 return new JellyBeanContentView(context, nativeWebContents, windowAn droid, attrs,
105 defStyle, personality); 102 defStyle, personality);
106 } 103 }
107 } 104 }
108 105
109 protected ContentView(Context context, int nativeWebContents, NativeWindow n ativeWindow, 106 protected ContentView(Context context, int nativeWebContents, WindowAndroid windowAndroid,
110 AttributeSet attrs, int defStyle, int personality) { 107 AttributeSet attrs, int defStyle, int personality) {
joth 2013/04/18 01:41:17 OT for this patch, but the 3 overloads that take |
111 super(context, attrs, defStyle); 108 super(context, attrs, defStyle);
112 109
113 mContentViewCore = new ContentViewCore(context, personality); 110 mContentViewCore = new ContentViewCore(context, personality);
114 mContentViewCore.initialize(this, this, nativeWebContents, nativeWindow, false); 111 mContentViewCore.initialize(this, this, nativeWebContents, windowAndroid , true, false);
115 } 112 }
116 113
117 /** 114 /**
118 * @return The core component of the ContentView that handles JNI communicat ion. Should only be 115 * @return The core component of the ContentView that handles JNI communicat ion. Should only be
119 * used for passing to native. 116 * used for passing to native.
120 */ 117 */
121 public ContentViewCore getContentViewCore() { 118 public ContentViewCore getContentViewCore() {
122 return mContentViewCore; 119 return mContentViewCore;
123 } 120 }
124 121
(...skipping 12 matching lines...) Expand all
137 * TODO(dtrainor) This is still used by other classes. Make sure to pull so me version of this 134 * TODO(dtrainor) This is still used by other classes. Make sure to pull so me version of this
138 * out before removing it. 135 * out before removing it.
139 */ 136 */
140 public static boolean hasHardwareAcceleration(Activity activity) { 137 public static boolean hasHardwareAcceleration(Activity activity) {
141 return ContentViewCore.hasHardwareAcceleration(activity); 138 return ContentViewCore.hasHardwareAcceleration(activity);
142 } 139 }
143 140
144 /** 141 /**
145 * @return Whether the configured personality of this ContentView is {@link #PERSONALITY_VIEW}. 142 * @return Whether the configured personality of this ContentView is {@link #PERSONALITY_VIEW}.
146 */ 143 */
147 boolean isPersonalityView() { 144 boolean isPersonalityView() {
joth 2013/04/18 01:41:17 (ditto)
148 return mContentViewCore.isPersonalityView(); 145 return mContentViewCore.isPersonalityView();
149 } 146 }
150 147
151 /** 148 /**
152 * Destroy the internal state of the WebView. This method may only be called 149 * Destroy the internal state of the WebView. This method may only be called
153 * after the WebView has been removed from the view system. No other methods 150 * after the WebView has been removed from the view system. No other methods
154 * may be called on this WebView after this method has been called. 151 * may be called on this WebView after this method has been called.
155 */ 152 */
156 public void destroy() { 153 public void destroy() {
157 mContentViewCore.destroy(); 154 mContentViewCore.destroy();
(...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 838
842 @Override 839 @Override
843 public boolean super_awakenScrollBars(int startDelay, boolean invalidate) { 840 public boolean super_awakenScrollBars(int startDelay, boolean invalidate) {
844 return super.awakenScrollBars(startDelay, invalidate); 841 return super.awakenScrollBars(startDelay, invalidate);
845 } 842 }
846 843
847 //////////////////////////////////////////////////////////////////////////// /////////////////// 844 //////////////////////////////////////////////////////////////////////////// ///////////////////
848 // End Implementation of ContentViewCore.InternalAccessDelega te // 845 // End Implementation of ContentViewCore.InternalAccessDelega te //
849 //////////////////////////////////////////////////////////////////////////// /////////////////// 846 //////////////////////////////////////////////////////////////////////////// ///////////////////
850 } 847 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698