Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
index 22b29fe59eb486db769473727de4b2bda4e29b2e..69e0dbcfd7828d6d4ce555408791adaf39d256c8 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
@@ -204,6 +204,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
private ActivityWindowAndroid mWindowAndroid; |
private ChromeFullscreenManager mFullscreenManager; |
private CompositorViewHolder mCompositorViewHolder; |
+ private InsetConsumerView mInsetConsumerView; |
private ContextualSearchManager mContextualSearchManager; |
private ReaderModeManager mReaderModeManager; |
private SnackbarManager mSnackbarManager; |
@@ -347,6 +348,23 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
mCompositorViewHolder = (CompositorViewHolder) findViewById(R.id.compositor_view_holder); |
mCompositorViewHolder.setRootView(getWindow().getDecorView().getRootView()); |
+ |
+ // Setting fitsSystemWindows to false ensures that the parent views in |
+ // the View hierarchy don't consume the insets. ContentViewCore needs |
+ // the insets to determine the portion of the screen obscured by |
+ // non-content displaying things such as the OSK. |
+ View parent = mCompositorViewHolder; |
+ while (parent.getParent() != null && parent.getParent() instanceof View) { |
+ parent = (View) parent.getParent(); |
+ parent.setFitsSystemWindows(false); |
+ } |
+ // InsetConsumerView consumes the insets instead, so that the actual |
+ // value of the insets can be stored. |
+ mInsetConsumerView = (InsetConsumerView) findViewById(R.id.inset_consumer_view); |
+ if (mInsetConsumerView != null) { |
+ mInsetConsumerView.setFitsSystemWindows(true); |
+ mInsetConsumerView.setTabModelSelector(getTabModelSelector()); |
+ } |
} |
/** |
@@ -526,6 +544,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
if (mAssistStatusHandler != null) { |
mAssistStatusHandler.setTabModelSelector(tabModelSelector); |
} |
+ |
+ if (mInsetConsumerView != null) { |
+ mInsetConsumerView.setTabModelSelector(tabModelSelector); |
+ } |
} |
@Override |