Index: chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManager.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManager.java b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManager.java |
index 2a9088717c3690c14b6d753183becf8d4c322422..e0db9f0fb148cadc0ec2d2003d90c28083724bcb 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManager.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManager.java |
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.contextualsearch; |
import android.app.Activity; |
import android.os.Handler; |
import android.view.View; |
+import android.view.View.MeasureSpec; |
import android.view.ViewGroup; |
import android.view.ViewTreeObserver; |
import android.view.ViewTreeObserver.OnGlobalFocusChangeListener; |
@@ -44,6 +45,7 @@ import org.chromium.components.navigation_interception.InterceptNavigationDelega |
import org.chromium.components.navigation_interception.NavigationParams; |
import org.chromium.components.web_contents_delegate_android.WebContentsDelegateAndroid; |
import org.chromium.content.browser.ContentView; |
+import org.chromium.content.browser.ContentViewClient; |
import org.chromium.content.browser.ContentViewCore; |
import org.chromium.content.browser.ContextualSearchClient; |
import org.chromium.content_public.browser.GestureStateListener; |
@@ -849,6 +851,26 @@ public class ContextualSearchManager extends ContextualSearchObservable |
} |
mSearchContentViewCore = new ContentViewCore(mActivity); |
+ |
+ // Adds a ContentViewClient to override the default fullscreen size. |
+ if (!mSearchPanelDelegate.isFullscreenSizePanel()) { |
+ mSearchContentViewCore.setContentViewClient(new ContentViewClient() { |
+ @Override |
+ public int getDesiredWidthMeasureSpec() { |
+ return MeasureSpec.makeMeasureSpec( |
+ mSearchPanelDelegate.getSearchContentViewWidthPx(), |
+ MeasureSpec.EXACTLY); |
+ } |
+ |
+ @Override |
+ public int getDesiredHeightMeasureSpec() { |
+ return MeasureSpec.makeMeasureSpec( |
+ mSearchPanelDelegate.getSearchContentViewHeightPx(), |
+ MeasureSpec.EXACTLY); |
+ } |
+ }); |
+ } |
+ |
ContentView cv = new ContentView(mActivity, mSearchContentViewCore); |
// Creates an initially hidden WebContents which gets shown when the panel is opened. |
mSearchContentViewCore.initialize(cv, cv, |
@@ -940,6 +962,19 @@ public class ContextualSearchManager extends ContextualSearchObservable |
* @param url The URL we are navigating to. |
*/ |
private void onExternalNavigation(String url) { |
+ if (mSearchPanelDelegate.isFullscreenSizePanel()) { |
+ // Consider the ContentView height to be fullscreen, and inform the system that |
+ // the Toolbar is always visible (from the Compositor's perspective), even though |
+ // the Toolbar and Base Page might be offset outside the screen. This means the |
+ // renderer will consider the ContentView height to be the fullscreen height |
+ // minus the Toolbar height. |
+ // |
+ // This is necessary to fix the bugs: crbug.com/510205 and crbug.com/510206 |
+ mSearchContentViewCore.getWebContents().updateTopControlsState(false, true, false); |
+ } else { |
+ mSearchContentViewCore.getWebContents().updateTopControlsState(true, false, false); |
+ } |
+ |
if (!mDidPromoteSearchNavigation |
&& !BLACKLISTED_URL.equals(url) |
&& !url.startsWith(INTENT_URL_PREFIX) |