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

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

Issue 2319863005: Implement new compositor and ContentViewCore reparenting for VR Shell. (Closed)
Patch Set: Address comments Created 4 years, 3 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/src/org/chromium/content/browser/ContentViewCore.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
index d0c951da7c477f2ad72424b826e488c551975a40..21d744edd81177c2c7ecb274aadb87da31abc42e 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
@@ -133,7 +133,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
// the purpose of migrating injected objects from one instance of CVC to another, which
// is used by Android WebView to support WebChromeClient.onCreateWindow scenario.
private final Map<String, Pair<Object, Class>> mJavaScriptInterfaces =
- new HashMap<String, Pair<Object, Class>>();
+ new HashMap<>();
// Additionally, we keep track of all Java bound JS objects that are in use on the
// current page to ensure that they are not garbage collected until the page is
@@ -141,7 +141,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
// via the removeJavaScriptInterface API and transient objects returned from methods
// on the interface object. Note we use HashSet rather than Set as the native side
// expects HashSet (no bindings for interfaces).
- private final HashSet<Object> mRetainedJavaScriptObjects = new HashSet<Object>();
+ private final HashSet<Object> mRetainedJavaScriptObjects = new HashSet<>();
/**
* A {@link WebContentsObserver} that listens to frame navigation events.
@@ -152,7 +152,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
ContentViewWebContentsObserver(ContentViewCore contentViewCore) {
super(contentViewCore.getWebContents());
- mWeakContentViewCore = new WeakReference<ContentViewCore>(contentViewCore);
+ mWeakContentViewCore = new WeakReference<>(contentViewCore);
}
@Override
@@ -461,6 +461,9 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
// The list of observers that are notified when ContentViewCore changes its WindowAndroid.
private final ObserverList<WindowAndroidChangedObserver> mWindowAndroidChangedObservers;
+ // Whether or not this ContentViewCore should ignore input.
+ private boolean mIgnoreInput = false;
+
/**
* @param webContents The {@link WebContents} to find a {@link ContentViewCore} of.
* @return A {@link ContentViewCore} that is connected to {@code webContents} or
@@ -483,11 +486,11 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
mAccessibilityManager = (AccessibilityManager)
getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
mSystemCaptioningBridge = CaptioningBridgeFactory.getSystemCaptioningBridge(mContext);
- mGestureStateListeners = new ObserverList<GestureStateListener>();
+ mGestureStateListeners = new ObserverList<>();
mGestureStateListenersIterator = mGestureStateListeners.rewindableIterator();
- mContainerViewObservers = new ObserverList<ContainerViewObserver>();
- mWindowAndroidChangedObservers = new ObserverList<WindowAndroidChangedObserver>();
+ mContainerViewObservers = new ObserverList<>();
+ mWindowAndroidChangedObservers = new ObserverList<>();
}
/**
@@ -689,6 +692,11 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
}
}
+ public void updateNativeWindowAndroid(WindowAndroid windowAndroid) {
Ted C 2016/09/12 23:33:11 this doesn't seem to be used
mthiesse 2016/09/13 19:04:04 Missed that in cleanup
+ long windowNativePointer = windowAndroid == null ? 0 : windowAndroid.getNativePointer();
+ nativeUpdateWindowAndroid(mNativeContentViewCore, windowNativePointer);
+ }
+
/**
* Sets a new container view for this {@link ContentViewCore}.
*
@@ -1013,6 +1021,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
* @see View#onTouchEvent(MotionEvent)
*/
public boolean onTouchEvent(MotionEvent event) {
+ if (mIgnoreInput) return false;
final boolean isTouchHandleEvent = false;
return onTouchEventImpl(event, isTouchHandleEvent);
}
@@ -1536,6 +1545,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
* @see View#onKeyUp(int, KeyEvent)
*/
public boolean onKeyUp(int keyCode, KeyEvent event) {
+ if (mIgnoreInput) return false;
if (mPopupZoomer.isShowing() && keyCode == KeyEvent.KEYCODE_BACK) {
mPopupZoomer.hide(true);
return true;
@@ -1564,6 +1574,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
* move and hover exit.
*/
public boolean onHoverEvent(MotionEvent event) {
+ if (mIgnoreInput) return false;
TraceEvent.begin("onHoverEvent");
MotionEvent offset = createOffsetMotionEvent(event);
@@ -2385,7 +2396,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
assert mNativeSelectPopupSourceFrame == 0 : "Zombie popup did not clear the frame source";
assert items.length == enabled.length;
- List<SelectPopupItem> popupItems = new ArrayList<SelectPopupItem>();
+ List<SelectPopupItem> popupItems = new ArrayList<>();
for (int i = 0; i < items.length; i++) {
popupItems.add(new SelectPopupItem(items[i], enabled[i]));
}
@@ -3297,6 +3308,14 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
return mShowKeyboardResultReceiver;
}
+ public void disableInput() {
Ted C 2016/09/12 23:33:11 this really doesn't belong in the content layer.
mthiesse 2016/09/13 19:04:04 dispatchTouchEvent overrides at ChromeTabbedActivi
+ mIgnoreInput = true;
+ }
+
+ public void enableInput() {
+ mIgnoreInput = false;
+ }
+
private native long nativeInit(WebContents webContents, ViewAndroidDelegate viewAndroidDelegate,
long windowAndroidPtr, HashSet<Object> retainedObjectSet);
private static native ContentViewCore nativeFromWebContentsAndroid(WebContents webContents);

Powered by Google App Engine
This is Rietveld 408576698