OLD | NEW |
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 Loading... |
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 Loading... |
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 /** |
| 465 * Get the speculation mode to be used by default for the given session. |
| 466 * If no value has been set will default to PRERENDER mode. |
| 467 */ |
| 468 public synchronized int getSpeculationModeForSession(CustomTabsSessionToken
session) { |
| 469 SessionParams params = mSessionParams.get(session); |
| 470 return params == null ? CustomTabsConnection.SpeculationParams.PRERENDER |
| 471 : params.mSpeculationMode; |
| 472 } |
| 473 |
453 /** Tries to bind to a client to keep it alive, and returns true for success
. */ | 474 /** 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) { | 475 public synchronized boolean keepAliveForSession(CustomTabsSessionToken sessi
on, Intent intent) { |
455 // When an application is bound to a service, its priority is raised to | 476 // 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 | 477 // be at least equal to the application's one. This binds to a dummy |
457 // service (no calls to this service are made). | 478 // service (no calls to this service are made). |
458 if (intent == null || intent.getComponent() == null) return false; | 479 if (intent == null || intent.getComponent() == null) return false; |
459 SessionParams params = mSessionParams.get(session); | 480 SessionParams params = mSessionParams.get(session); |
460 if (params == null) return false; | 481 if (params == null) return false; |
461 | 482 |
462 KeepAliveServiceConnection connection = params.getKeepAliveConnection(); | 483 KeepAliveServiceConnection connection = params.getKeepAliveConnection(); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
521 SessionParams params = mSessionParams.get(session); | 542 SessionParams params = mSessionParams.get(session); |
522 if (params == null) return; | 543 if (params == null) return; |
523 mSessionParams.remove(session); | 544 mSessionParams.remove(session); |
524 if (params.postMessageHandler != null) { | 545 if (params.postMessageHandler != null) { |
525 params.postMessageHandler.unbindFromContext(mContext); | 546 params.postMessageHandler.unbindFromContext(mContext); |
526 } | 547 } |
527 if (params.disconnectCallback != null) params.disconnectCallback.run(ses
sion); | 548 if (params.disconnectCallback != null) params.disconnectCallback.run(ses
sion); |
528 mUidHasCalledWarmup.delete(params.uid); | 549 mUidHasCalledWarmup.delete(params.uid); |
529 } | 550 } |
530 } | 551 } |
OLD | NEW |