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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java

Issue 1348473002: Fix size estimation for prerender in custom tabs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added comments to size estimate Created 5 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
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698