| OLD | NEW |
| 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.pm.ActivityInfo; | 9 import android.content.pm.ActivityInfo; |
| 10 import android.content.pm.PackageManager; | 10 import android.content.pm.PackageManager; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 import org.chromium.content.browser.ContentViewGestureHandler.MotionEventDelegat
e; | 44 import org.chromium.content.browser.ContentViewGestureHandler.MotionEventDelegat
e; |
| 45 import org.chromium.content.browser.accessibility.AccessibilityInjector; | 45 import org.chromium.content.browser.accessibility.AccessibilityInjector; |
| 46 import org.chromium.content.browser.input.AdapterInputConnection; | 46 import org.chromium.content.browser.input.AdapterInputConnection; |
| 47 import org.chromium.content.browser.input.HandleView; | 47 import org.chromium.content.browser.input.HandleView; |
| 48 import org.chromium.content.browser.input.ImeAdapter; | 48 import org.chromium.content.browser.input.ImeAdapter; |
| 49 import org.chromium.content.browser.input.ImeAdapter.AdapterInputConnectionFacto
ry; | 49 import org.chromium.content.browser.input.ImeAdapter.AdapterInputConnectionFacto
ry; |
| 50 import org.chromium.content.browser.input.InsertionHandleController; | 50 import org.chromium.content.browser.input.InsertionHandleController; |
| 51 import org.chromium.content.browser.input.SelectPopupDialog; | 51 import org.chromium.content.browser.input.SelectPopupDialog; |
| 52 import org.chromium.content.browser.input.SelectionHandleController; | 52 import org.chromium.content.browser.input.SelectionHandleController; |
| 53 import org.chromium.content.common.TraceEvent; | 53 import org.chromium.content.common.TraceEvent; |
| 54 import org.chromium.ui.ViewAndroid; |
| 55 import org.chromium.ui.ViewAndroidDelegate; |
| 54 import org.chromium.ui.WindowAndroid; | 56 import org.chromium.ui.WindowAndroid; |
| 55 | 57 |
| 56 import java.lang.annotation.Annotation; | 58 import java.lang.annotation.Annotation; |
| 57 import java.util.HashMap; | 59 import java.util.HashMap; |
| 58 import java.util.HashSet; | 60 import java.util.HashSet; |
| 59 import java.util.Map; | 61 import java.util.Map; |
| 60 | 62 |
| 61 /** | 63 /** |
| 62 * Provides a Java-side 'wrapper' around a WebContent (native) instance. | 64 * Provides a Java-side 'wrapper' around a WebContent (native) instance. |
| 63 * Contains all the major functionality necessary to manage the lifecycle of a C
ontentView without | 65 * Contains all the major functionality necessary to manage the lifecycle of a C
ontentView without |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 | 289 |
| 288 // Used to keep track of whether we should try to undo the last zoom-to-text
field operation. | 290 // Used to keep track of whether we should try to undo the last zoom-to-text
field operation. |
| 289 private boolean mScrolledAndZoomedFocusedEditableNode = false; | 291 private boolean mScrolledAndZoomedFocusedEditableNode = false; |
| 290 | 292 |
| 291 // Whether we use hardware-accelerated drawing. | 293 // Whether we use hardware-accelerated drawing. |
| 292 private boolean mHardwareAccelerated = false; | 294 private boolean mHardwareAccelerated = false; |
| 293 | 295 |
| 294 // Whether we received a new frame since consumePendingRendererFrame() was l
ast called. | 296 // Whether we received a new frame since consumePendingRendererFrame() was l
ast called. |
| 295 private boolean mPendingRendererFrame = false; | 297 private boolean mPendingRendererFrame = false; |
| 296 | 298 |
| 299 private ViewAndroid mViewAndroid; |
| 300 |
| 297 /** | 301 /** |
| 298 * Constructs a new ContentViewCore. Embedders must call initialize() after
constructing | 302 * Constructs a new ContentViewCore. Embedders must call initialize() after
constructing |
| 299 * a ContentViewCore and before using it. | 303 * a ContentViewCore and before using it. |
| 300 * | 304 * |
| 301 * @param context The context used to create this. | 305 * @param context The context used to create this. |
| 302 * @param personality The type of ContentViewCore being created. | 306 * @param personality The type of ContentViewCore being created. |
| 303 */ | 307 */ |
| 304 public ContentViewCore(Context context, int personality) { | 308 public ContentViewCore(Context context, int personality) { |
| 305 mContext = context; | 309 mContext = context; |
| 306 | 310 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 | 352 |
| 349 /** | 353 /** |
| 350 * Returns a delegate that can be used to add and remove views from the Cont
ainerView. | 354 * Returns a delegate that can be used to add and remove views from the Cont
ainerView. |
| 351 * | 355 * |
| 352 * NOTE: Use with care, as not all ContentViewCore users setup their Contain
erView in the same | 356 * NOTE: Use with care, as not all ContentViewCore users setup their Contain
erView in the same |
| 353 * way. In particular, the Android WebView has limitations on what implement
ation details can | 357 * way. In particular, the Android WebView has limitations on what implement
ation details can |
| 354 * be provided via a child view, as they are visible in the API and could in
troduce | 358 * be provided via a child view, as they are visible in the API and could in
troduce |
| 355 * compatibility breaks with existing applications. If in doubt, contact the | 359 * compatibility breaks with existing applications. If in doubt, contact the |
| 356 * android_webview/OWNERS | 360 * android_webview/OWNERS |
| 357 * | 361 * |
| 358 * @return A ContainerViewDelegate that can be used to add and remove views. | 362 * @return A ViewAndroidDelegate that can be used to add and remove views. |
| 359 */ | 363 */ |
| 360 @CalledByNative | 364 @VisibleForTesting |
| 361 public ContainerViewDelegate getContainerViewDelegate() { | 365 public ViewAndroidDelegate getViewAndroidDelegate() { |
| 362 return new ContainerViewDelegate() { | 366 return new ViewAndroidDelegate() { |
| 363 @Override | 367 @Override |
| 364 public void addViewToContainerView(View view) { | 368 public void addViewToContainerView(View view) { |
| 365 mContainerView.addView(view); | 369 mContainerView.addView(view); |
| 366 } | 370 } |
| 367 | 371 |
| 368 @Override | 372 @Override |
| 369 public void removeViewFromContainerView(View view) { | 373 public void removeViewFromContainerView(View view) { |
| 370 mContainerView.removeView(view); | 374 mContainerView.removeView(view); |
| 371 } | 375 } |
| 372 | 376 |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 mHardwareAccelerated = hasHardwareAcceleration(mContext); | 532 mHardwareAccelerated = hasHardwareAcceleration(mContext); |
| 529 | 533 |
| 530 // Input events are delivered at vsync time on JB+. | 534 // Input events are delivered at vsync time on JB+. |
| 531 boolean inputEventsDeliveredAtVSync = | 535 boolean inputEventsDeliveredAtVSync = |
| 532 (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN); | 536 (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN); |
| 533 | 537 |
| 534 mContainerView = containerView; | 538 mContainerView = containerView; |
| 535 | 539 |
| 536 int windowNativePointer = windowAndroid != null ? windowAndroid.getNativ
ePointer() : 0; | 540 int windowNativePointer = windowAndroid != null ? windowAndroid.getNativ
ePointer() : 0; |
| 537 | 541 |
| 542 int viewAndroidNativePointer = 0; |
| 543 if (windowNativePointer != 0) { |
| 544 mViewAndroid = new ViewAndroid(windowAndroid, getViewAndroidDelegate
()); |
| 545 viewAndroidNativePointer = mViewAndroid.getNativePointer(); |
| 546 } |
| 547 |
| 538 mNativeContentViewCore = nativeInit(mHardwareAccelerated, inputEventsDel
iveredAtVSync, | 548 mNativeContentViewCore = nativeInit(mHardwareAccelerated, inputEventsDel
iveredAtVSync, |
| 539 nativeWebContents, windowNativePointer); | 549 nativeWebContents, viewAndroidNativePointer, windowNativePointer
); |
| 540 mContentSettings = new ContentSettings( | 550 mContentSettings = new ContentSettings( |
| 541 this, mNativeContentViewCore, isAccessFromFileURLsGrantedByDefau
lt); | 551 this, mNativeContentViewCore, isAccessFromFileURLsGrantedByDefau
lt); |
| 542 initializeContainerView(internalDispatcher); | 552 initializeContainerView(internalDispatcher); |
| 543 if (mPersonality == PERSONALITY_VIEW) { | 553 if (mPersonality == PERSONALITY_VIEW) { |
| 544 setAllUserAgentOverridesInHistory(); | 554 setAllUserAgentOverridesInHistory(); |
| 545 } | 555 } |
| 546 | 556 |
| 547 mAccessibilityInjector = AccessibilityInjector.newInstance(this); | 557 mAccessibilityInjector = AccessibilityInjector.newInstance(this); |
| 548 mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary(); | 558 mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary(); |
| 549 | 559 |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 * Destroy the internal state of the ContentView. This method may only be | 692 * Destroy the internal state of the ContentView. This method may only be |
| 683 * called after the ContentView has been removed from the view system. No | 693 * called after the ContentView has been removed from the view system. No |
| 684 * other methods may be called on this ContentView after this method has | 694 * other methods may be called on this ContentView after this method has |
| 685 * been called. | 695 * been called. |
| 686 */ | 696 */ |
| 687 public void destroy() { | 697 public void destroy() { |
| 688 if (mNativeContentViewCore != 0) { | 698 if (mNativeContentViewCore != 0) { |
| 689 nativeOnJavaContentViewCoreDestroyed(mNativeContentViewCore); | 699 nativeOnJavaContentViewCoreDestroyed(mNativeContentViewCore); |
| 690 } | 700 } |
| 691 resetVSyncNotification(); | 701 resetVSyncNotification(); |
| 702 if (mViewAndroid != null) mViewAndroid.destroy(); |
| 692 mNativeContentViewCore = 0; | 703 mNativeContentViewCore = 0; |
| 693 mContentSettings = null; | 704 mContentSettings = null; |
| 694 mJavaScriptInterfaces.clear(); | 705 mJavaScriptInterfaces.clear(); |
| 695 mRetainedJavaScriptObjects.clear(); | 706 mRetainedJavaScriptObjects.clear(); |
| 696 } | 707 } |
| 697 | 708 |
| 698 /** | 709 /** |
| 699 * Returns true initially, false after destroy() has been called. | 710 * Returns true initially, false after destroy() has been called. |
| 700 * It is illegal to call any other public method after destroy(). | 711 * It is illegal to call any other public method after destroy(). |
| 701 */ | 712 */ |
| (...skipping 1986 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2688 | 2699 |
| 2689 getContentViewClient().onGeometryChanged( | 2700 getContentViewClient().onGeometryChanged( |
| 2690 playerId, | 2701 playerId, |
| 2691 topLeft.getXPix(), | 2702 topLeft.getXPix(), |
| 2692 topLeft.getYPix(), | 2703 topLeft.getYPix(), |
| 2693 bottomRight.getXPix() - topLeft.getXPix(), | 2704 bottomRight.getXPix() - topLeft.getXPix(), |
| 2694 bottomRight.getYPix() - topLeft.getYPix()); | 2705 bottomRight.getYPix() - topLeft.getYPix()); |
| 2695 } | 2706 } |
| 2696 | 2707 |
| 2697 private native int nativeInit(boolean hardwareAccelerated, boolean inputEven
tsDeliveredAtVSync, | 2708 private native int nativeInit(boolean hardwareAccelerated, boolean inputEven
tsDeliveredAtVSync, |
| 2698 int webContentsPtr, int windowAndroidPtr); | 2709 int webContentsPtr, int viewAndroidPtr, int windowAndroidPtr); |
| 2699 | 2710 |
| 2700 private native void nativeOnJavaContentViewCoreDestroyed(int nativeContentVi
ewCoreImpl); | 2711 private native void nativeOnJavaContentViewCoreDestroyed(int nativeContentVi
ewCoreImpl); |
| 2701 | 2712 |
| 2702 private native void nativeLoadUrl( | 2713 private native void nativeLoadUrl( |
| 2703 int nativeContentViewCoreImpl, | 2714 int nativeContentViewCoreImpl, |
| 2704 String url, | 2715 String url, |
| 2705 int loadUrlType, | 2716 int loadUrlType, |
| 2706 int transitionType, | 2717 int transitionType, |
| 2707 int uaOverrideOption, | 2718 int uaOverrideOption, |
| 2708 String extraHeaders, | 2719 String extraHeaders, |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2857 boolean enableHiding, boolean enableShowing, boolean animate); | 2868 boolean enableHiding, boolean enableShowing, boolean animate); |
| 2858 | 2869 |
| 2859 private native void nativeShowImeIfNeeded(int nativeContentViewCoreImpl); | 2870 private native void nativeShowImeIfNeeded(int nativeContentViewCoreImpl); |
| 2860 | 2871 |
| 2861 private native void nativeAttachExternalVideoSurface( | 2872 private native void nativeAttachExternalVideoSurface( |
| 2862 int nativeContentViewCoreImpl, int playerId, Surface surface); | 2873 int nativeContentViewCoreImpl, int playerId, Surface surface); |
| 2863 | 2874 |
| 2864 private native void nativeDetachExternalVideoSurface( | 2875 private native void nativeDetachExternalVideoSurface( |
| 2865 int nativeContentViewCoreImpl, int playerId); | 2876 int nativeContentViewCoreImpl, int playerId); |
| 2866 } | 2877 } |
| OLD | NEW |