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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java

Issue 2748013004: CustomTabs: Base version for prerender switch (Closed)
Patch Set: Reworked after feedback round 3 Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.customtabs; 5 package org.chromium.chrome.browser.customtabs;
6 6
7 import android.content.ComponentName; 7 import android.content.ComponentName;
8 import android.content.Context; 8 import android.content.Context;
9 import android.content.Intent; 9 import android.content.Intent;
10 import android.content.ServiceConnection; 10 import android.content.ServiceConnection;
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 public final PostMessageHandler postMessageHandler; 124 public final PostMessageHandler postMessageHandler;
125 public boolean mIgnoreFragments; 125 public boolean mIgnoreFragments;
126 public boolean lowConfidencePrediction; 126 public boolean lowConfidencePrediction;
127 public boolean highConfidencePrediction; 127 public boolean highConfidencePrediction;
128 private boolean mShouldHideDomain; 128 private boolean mShouldHideDomain;
129 private boolean mShouldPrerenderOnCellular; 129 private boolean mShouldPrerenderOnCellular;
130 private boolean mShouldSendNavigationInfo; 130 private boolean mShouldSendNavigationInfo;
131 private KeepAliveServiceConnection mKeepAliveConnection; 131 private KeepAliveServiceConnection mKeepAliveConnection;
132 private String mPredictedUrl; 132 private String mPredictedUrl;
133 private long mLastMayLaunchUrlTimestamp; 133 private long mLastMayLaunchUrlTimestamp;
134 private int mSpeculationMode;
134 135
135 public SessionParams(Context context, int uid, DisconnectCallback callba ck, 136 public SessionParams(Context context, int uid, DisconnectCallback callba ck,
136 PostMessageHandler postMessageHandler) { 137 PostMessageHandler postMessageHandler) {
137 this.uid = uid; 138 this.uid = uid;
138 packageName = getPackageName(context, uid); 139 packageName = getPackageName(context, uid);
139 disconnectCallback = callback; 140 disconnectCallback = callback;
140 this.postMessageHandler = postMessageHandler; 141 this.postMessageHandler = postMessageHandler;
142 this.mSpeculationMode = CustomTabsConnection.SpeculationParams.PRERE NDER;
141 } 143 }
142 144
143 private static String getPackageName(Context context, int uid) { 145 private static String getPackageName(Context context, int uid) {
144 PackageManager packageManager = context.getPackageManager(); 146 PackageManager packageManager = context.getPackageManager();
145 String[] packageList = packageManager.getPackagesForUid(uid); 147 String[] packageList = packageManager.getPackagesForUid(uid);
146 if (packageList.length != 1 || TextUtils.isEmpty(packageList[0])) re turn null; 148 if (packageList.length != 1 || TextUtils.isEmpty(packageList[0])) re turn null;
147 return packageList[0]; 149 return packageList[0];
148 } 150 }
149 151
150 public KeepAliveServiceConnection getKeepAliveConnection() { 152 public KeepAliveServiceConnection getKeepAliveConnection() {
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 445
444 /** 446 /**
445 * Sets whether prerender should be turned on for mobile networks for given session. 447 * Sets whether prerender should be turned on for mobile networks for given session.
446 */ 448 */
447 public synchronized void setPrerenderCellularForSession( 449 public synchronized void setPrerenderCellularForSession(
448 CustomTabsSessionToken session, boolean prerender) { 450 CustomTabsSessionToken session, boolean prerender) {
449 SessionParams params = mSessionParams.get(session); 451 SessionParams params = mSessionParams.get(session);
450 if (params != null) params.mShouldPrerenderOnCellular = prerender; 452 if (params != null) params.mShouldPrerenderOnCellular = prerender;
451 } 453 }
452 454
455 /**
456 * Sets the speculation mode to be used by default for given session.
457 */
458 public synchronized void setSpeculationModeForSession(
459 CustomTabsSessionToken session, int speculationMode) {
460 SessionParams params = mSessionParams.get(session);
461 if (params != null) params.mSpeculationMode = speculationMode;
462 }
463
464 public synchronized int getSpeculationModeForSession(CustomTabsSessionToken session) {
Benoit L 2017/03/27 13:18:14 tiny nit: I'm usually all for not adding javadoc t
ahemery1 2017/03/27 14:47:33 Done.
465 SessionParams params = mSessionParams.get(session);
466 return params == null ? CustomTabsConnection.SpeculationParams.PRERENDER
467 : params.mSpeculationMode;
468 }
469
453 /** Tries to bind to a client to keep it alive, and returns true for success . */ 470 /** Tries to bind to a client to keep it alive, and returns true for success . */
454 public synchronized boolean keepAliveForSession(CustomTabsSessionToken sessi on, Intent intent) { 471 public synchronized boolean keepAliveForSession(CustomTabsSessionToken sessi on, Intent intent) {
455 // When an application is bound to a service, its priority is raised to 472 // When an application is bound to a service, its priority is raised to
456 // be at least equal to the application's one. This binds to a dummy 473 // be at least equal to the application's one. This binds to a dummy
457 // service (no calls to this service are made). 474 // service (no calls to this service are made).
458 if (intent == null || intent.getComponent() == null) return false; 475 if (intent == null || intent.getComponent() == null) return false;
459 SessionParams params = mSessionParams.get(session); 476 SessionParams params = mSessionParams.get(session);
460 if (params == null) return false; 477 if (params == null) return false;
461 478
462 KeepAliveServiceConnection connection = params.getKeepAliveConnection(); 479 KeepAliveServiceConnection connection = params.getKeepAliveConnection();
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 SessionParams params = mSessionParams.get(session); 538 SessionParams params = mSessionParams.get(session);
522 if (params == null) return; 539 if (params == null) return;
523 mSessionParams.remove(session); 540 mSessionParams.remove(session);
524 if (params.postMessageHandler != null) { 541 if (params.postMessageHandler != null) {
525 params.postMessageHandler.unbindFromContext(mContext); 542 params.postMessageHandler.unbindFromContext(mContext);
526 } 543 }
527 if (params.disconnectCallback != null) params.disconnectCallback.run(ses sion); 544 if (params.disconnectCallback != null) params.disconnectCallback.run(ses sion);
528 mUidHasCalledWarmup.delete(params.uid); 545 mUidHasCalledWarmup.delete(params.uid);
529 } 546 }
530 } 547 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698