Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
| index 4b2d4ebcd10e8ed9cec8b173399ca6dd9f7582a1..9b857867c85b0e1815aa9fde41138daccc8d0d09 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
| @@ -89,13 +89,15 @@ public class CustomTabsConnection extends ICustomTabsService.Stub { |
| public final String mUrl; |
| public final String mReferrer; |
| public final Bundle mExtras; |
| + public final Point mSize; |
| PrerenderedUrlParams(IBinder session, WebContents webContents, String url, String referrer, |
| - Bundle extras) { |
| + Point size, Bundle extras) { |
| mSession = session; |
| mWebContents = webContents; |
| mUrl = url; |
| mReferrer = referrer; |
| + mSize = size; |
| mExtras = extras; |
| } |
| } |
| @@ -434,7 +436,7 @@ public class CustomTabsConnection extends ICustomTabsService.Stub { |
| * @param referrer The referrer to use for |url|. |
| * @return The prerendered WebContents, or null. |
| */ |
| - WebContents takePrerenderedUrl(IBinder session, String url, String referrer) { |
| + WebContents takePrerenderedUrl(IBinder session, String url, String referrer, Point size) { |
| ThreadUtils.assertOnUiThread(); |
| if (mPrerender == null || session == null || !session.equals(mPrerender.mSession)) { |
| return null; |
| @@ -442,6 +444,8 @@ public class CustomTabsConnection extends ICustomTabsService.Stub { |
| WebContents webContents = mPrerender.mWebContents; |
| String prerenderedUrl = mPrerender.mUrl; |
| String prerenderReferrer = mPrerender.mReferrer; |
| + size.x = mPrerender.mSize.x; |
| + size.y = mPrerender.mSize.y; |
| if (referrer == null) referrer = ""; |
| mPrerender = null; |
| if (TextUtils.equals(prerenderedUrl, url) |
| @@ -673,17 +677,18 @@ public class CustomTabsConnection extends ICustomTabsService.Stub { |
| if (mExternalPrerenderHandler == null) { |
| mExternalPrerenderHandler = new ExternalPrerenderHandler(); |
| } |
| - Point contentSize = estimateContentSize(); |
| Context context = mApplication.getApplicationContext(); |
| String referrer = IntentHandler.getReferrerUrlIncludingExtraHeaders(extrasIntent, context); |
| if (referrer == null && getReferrerForSession(session) != null) { |
| referrer = getReferrerForSession(session).getUrl(); |
| } |
| if (referrer == null) referrer = ""; |
| + Point contentSize = estimateContentSize(true); |
| WebContents webContents = mExternalPrerenderHandler.addPrerender( |
| Profile.getLastUsedProfile(), url, referrer, contentSize.x, contentSize.y); |
| if (webContents != null) { |
| - mPrerender = new PrerenderedUrlParams(session, webContents, url, referrer, extras); |
| + mPrerender = new PrerenderedUrlParams( |
| + session, webContents, url, referrer, estimateContentSize(false), extras); |
|
Ted C
2015/09/16 18:12:47
why is this false? Isn't this for prerendered con
|
| } |
| } |
| @@ -693,8 +698,13 @@ public class CustomTabsConnection extends ICustomTabsService.Stub { |
| * The estimate is likely to be incorrect. This is not a problem, as the aim |
| * is to avoid getting a different layout and resources than needed at |
| * render time. |
| + * @param forPrerenderedContents Whether the size returned should be for prerendered web |
| + * contents or for ContentViewCore. The former takes the web |
| + * content size that doesn't include control conatiner height |
| + * in dp, the latter includes the control container height and |
| + * is in pixels. |
| */ |
| - private Point estimateContentSize() { |
| + private Point estimateContentSize(boolean forPrerenderedContents) { |
| // The size is estimated as: |
| // X = screenSizeX |
| // Y = screenSizeY - top bar - bottom bar - custom tabs bar |
| @@ -703,15 +713,20 @@ public class CustomTabsConnection extends ICustomTabsService.Stub { |
| wm.getDefaultDisplay().getSize(screenSize); |
| Resources resources = mApplication.getResources(); |
| int statusBarId = resources.getIdentifier("status_bar_height", "dimen", "android"); |
| - int navigationBarId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); |
| try { |
| - screenSize.y -= |
| - resources.getDimensionPixelSize(R.dimen.custom_tabs_control_container_height); |
| + if (forPrerenderedContents) { |
| + screenSize.y -= resources.getDimensionPixelSize( |
| + R.dimen.custom_tabs_control_container_height); |
| + } |
| screenSize.y -= resources.getDimensionPixelSize(statusBarId); |
| - screenSize.y -= resources.getDimensionPixelSize(navigationBarId); |
| } catch (Resources.NotFoundException e) { |
| // Nothing, this is just a best effort estimate. |
| } |
| + if (forPrerenderedContents) { |
| + float density = resources.getDisplayMetrics().density; |
| + screenSize.x /= density; |
| + screenSize.y /= density; |
| + } |
| return screenSize; |
| } |