OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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.content.Context; | 7 import android.content.Context; |
8 import android.content.res.Configuration; | 8 import android.content.res.Configuration; |
9 import android.graphics.Canvas; | 9 import android.graphics.Canvas; |
10 import android.graphics.Rect; | 10 import android.graphics.Rect; |
11 import android.os.Build; | 11 import android.os.Build; |
12 import android.view.KeyEvent; | 12 import android.view.KeyEvent; |
13 import android.view.MotionEvent; | 13 import android.view.MotionEvent; |
14 import android.view.View; | 14 import android.view.View; |
15 import android.view.accessibility.AccessibilityEvent; | 15 import android.view.accessibility.AccessibilityEvent; |
16 import android.view.accessibility.AccessibilityNodeInfo; | 16 import android.view.accessibility.AccessibilityNodeInfo; |
17 import android.view.inputmethod.EditorInfo; | 17 import android.view.inputmethod.EditorInfo; |
18 import android.view.inputmethod.InputConnection; | 18 import android.view.inputmethod.InputConnection; |
19 import android.widget.FrameLayout; | 19 import android.widget.FrameLayout; |
20 | 20 |
21 import org.chromium.base.TraceEvent; | 21 import org.chromium.base.TraceEvent; |
22 import org.chromium.ui.base.WindowAndroid; | |
23 | 22 |
24 /** | 23 /** |
25 * The containing view for {@link ContentViewCore} that exists in the Android UI
hierarchy and | 24 * The containing view for {@link ContentViewCore} that exists in the Android UI
hierarchy and |
26 * exposes the various {@link View} functionality to it. | 25 * exposes the various {@link View} functionality to it. |
27 * | |
28 * TODO(joth): Remove any methods overrides from this class that were added for
WebView | |
29 * compatibility. | |
30 */ | 26 */ |
31 public class ContentView extends FrameLayout | 27 public class ContentView extends FrameLayout |
32 implements ContentViewCore.InternalAccessDelegate { | 28 implements ContentViewCore.InternalAccessDelegate { |
33 | 29 |
34 private final ContentViewCore mContentViewCore; | 30 protected final ContentViewCore mContentViewCore; |
35 | 31 |
36 private final int[] mLocationInWindow = new int[2]; | 32 private final int[] mLocationInWindow = new int[2]; |
37 | 33 |
38 /** | 34 /** |
39 * Creates an instance of a ContentView. | 35 * Creates an instance of a ContentView. |
40 * @param context The Context the view is running in, through which it can | 36 * @param context The Context the view is running in, through which it can |
41 * access the current theme, resources, etc. | 37 * access the current theme, resources, etc. |
42 * @param nativeWebContents A pointer to the native web contents. | 38 * @param cvc A pointer to the content view core managing this content view. |
43 * @param windowAndroid An instance of the WindowAndroid. | |
44 * @return A ContentView instance. | 39 * @return A ContentView instance. |
45 */ | 40 */ |
46 public static ContentView newInstance( | 41 public static ContentView newInstance(Context context, ContentViewCore cvc)
{ |
47 Context context, long nativeWebContents, WindowAndroid windowAndroid
) { | |
48 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { | 42 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { |
49 return new ContentView(context, nativeWebContents, windowAndroid); | 43 return new ContentView(context, cvc); |
50 } else { | 44 } else { |
51 return new JellyBeanContentView(context, nativeWebContents, windowAn
droid); | 45 return new JellyBeanContentView(context, cvc); |
52 } | 46 } |
53 } | 47 } |
54 | 48 |
55 protected ContentView(Context context, long nativeWebContents, WindowAndroid
windowAndroid) { | 49 protected ContentView(Context context, ContentViewCore cvc) { |
56 super(context, null, android.R.attr.webViewStyle); | 50 super(context, null, android.R.attr.webViewStyle); |
57 | 51 |
58 if (getScrollBarStyle() == View.SCROLLBARS_INSIDE_OVERLAY) { | 52 if (getScrollBarStyle() == View.SCROLLBARS_INSIDE_OVERLAY) { |
59 setHorizontalScrollBarEnabled(false); | 53 setHorizontalScrollBarEnabled(false); |
60 setVerticalScrollBarEnabled(false); | 54 setVerticalScrollBarEnabled(false); |
61 } | 55 } |
62 | 56 |
63 setFocusable(true); | 57 setFocusable(true); |
64 setFocusableInTouchMode(true); | 58 setFocusableInTouchMode(true); |
65 | 59 |
66 mContentViewCore = new ContentViewCore(context); | 60 mContentViewCore = cvc; |
67 mContentViewCore.initialize(this, this, nativeWebContents, windowAndroid
); | |
68 } | 61 } |
69 | 62 |
70 /** | |
71 * @return The core component of the ContentView that handles JNI communicat
ion. Should only be | |
72 * used for passing to native. | |
73 */ | |
74 public ContentViewCore getContentViewCore() { | |
75 return mContentViewCore; | |
76 } | |
77 | |
78 // FrameLayout overrides. | |
79 | |
80 // Needed by ContentViewCore.InternalAccessDelegate | 63 // Needed by ContentViewCore.InternalAccessDelegate |
81 @Override | 64 @Override |
82 public boolean drawChild(Canvas canvas, View child, long drawingTime) { | 65 public boolean drawChild(Canvas canvas, View child, long drawingTime) { |
83 return super.drawChild(canvas, child, drawingTime); | 66 return super.drawChild(canvas, child, drawingTime); |
84 } | 67 } |
85 | 68 |
86 // Needed by ContentViewCore.InternalAccessDelegate | 69 // Needed by ContentViewCore.InternalAccessDelegate |
87 @Override | 70 @Override |
88 public void onScrollChanged(int l, int t, int oldl, int oldt) { | 71 public void onScrollChanged(int l, int t, int oldl, int oldt) { |
89 super.onScrollChanged(l, t, oldl, oldt); | 72 super.onScrollChanged(l, t, oldl, oldt); |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 super.onDetachedFromWindow(); | 251 super.onDetachedFromWindow(); |
269 mContentViewCore.onDetachedFromWindow(); | 252 mContentViewCore.onDetachedFromWindow(); |
270 } | 253 } |
271 | 254 |
272 @Override | 255 @Override |
273 protected void onVisibilityChanged(View changedView, int visibility) { | 256 protected void onVisibilityChanged(View changedView, int visibility) { |
274 super.onVisibilityChanged(changedView, visibility); | 257 super.onVisibilityChanged(changedView, visibility); |
275 mContentViewCore.onVisibilityChanged(changedView, visibility); | 258 mContentViewCore.onVisibilityChanged(changedView, visibility); |
276 } | 259 } |
277 | 260 |
278 /** | |
279 * Return content scroll y. | |
280 * | |
281 * @return The vertical scroll position in pixels. | |
282 */ | |
283 public int getContentScrollY() { | |
284 return mContentViewCore.computeVerticalScrollOffset(); | |
285 } | |
286 | |
287 /** | |
288 * Return content height. | |
289 * | |
290 * @return The height of the content in pixels. | |
291 */ | |
292 public int getContentHeight() { | |
293 return mContentViewCore.computeVerticalScrollRange(); | |
294 } | |
295 | |
296 ////////////////////////////////////////////////////////////////////////////
/////////////////// | 261 ////////////////////////////////////////////////////////////////////////////
/////////////////// |
297 // Start Implementation of ContentViewCore.InternalAccessDelega
te // | 262 // Start Implementation of ContentViewCore.InternalAccessDelega
te // |
298 ////////////////////////////////////////////////////////////////////////////
/////////////////// | 263 ////////////////////////////////////////////////////////////////////////////
/////////////////// |
299 | 264 |
300 @Override | 265 @Override |
301 public boolean super_onKeyUp(int keyCode, KeyEvent event) { | 266 public boolean super_onKeyUp(int keyCode, KeyEvent event) { |
302 return super.onKeyUp(keyCode, event); | 267 return super.onKeyUp(keyCode, event); |
303 } | 268 } |
304 | 269 |
305 @Override | 270 @Override |
(...skipping 18 matching lines...) Expand all Loading... |
324 | 289 |
325 @Override | 290 @Override |
326 public boolean super_awakenScrollBars(int startDelay, boolean invalidate) { | 291 public boolean super_awakenScrollBars(int startDelay, boolean invalidate) { |
327 return super.awakenScrollBars(startDelay, invalidate); | 292 return super.awakenScrollBars(startDelay, invalidate); |
328 } | 293 } |
329 | 294 |
330 ////////////////////////////////////////////////////////////////////////////
/////////////////// | 295 ////////////////////////////////////////////////////////////////////////////
/////////////////// |
331 // End Implementation of ContentViewCore.InternalAccessDelega
te // | 296 // End Implementation of ContentViewCore.InternalAccessDelega
te // |
332 ////////////////////////////////////////////////////////////////////////////
/////////////////// | 297 ////////////////////////////////////////////////////////////////////////////
/////////////////// |
333 } | 298 } |
OLD | NEW |