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

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

Issue 1832063002: customtabs: Don't always record non-matching fragments are prediction failures. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 9 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 | « no previous file | chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java » ('j') | 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/ClientManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
index 4cadc39a6bc38bf474a05583c9bb997b9b00381e..013269db8321fd42f549a7d0ff187d0f8f1dc224 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
@@ -21,6 +21,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.SuppressFBWarnings;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.browser.IntentHandler;
+import org.chromium.chrome.browser.util.UrlUtilities;
import org.chromium.content_public.common.Referrer;
import java.util.ArrayList;
@@ -34,9 +35,9 @@ import java.util.concurrent.TimeUnit;
@SuppressFBWarnings("CHROMIUM_SYNCHRONIZED_METHOD")
class ClientManager {
// Values for the "CustomTabs.PredictionStatus" UMA histogram. Append-only.
- private static final int NO_PREDICTION = 0;
- private static final int GOOD_PREDICTION = 1;
- private static final int BAD_PREDICTION = 2;
+ @VisibleForTesting static final int NO_PREDICTION = 0;
+ @VisibleForTesting static final int GOOD_PREDICTION = 1;
+ @VisibleForTesting static final int BAD_PREDICTION = 2;
private static final int PREDICTION_STATUS_COUNT = 3;
// Values for the "CustomTabs.CalledWarmup" UMA histogram. Append-only.
@VisibleForTesting static final int NO_SESSION_NO_WARMUP = 0;
@@ -188,33 +189,40 @@ class ClientManager {
return result;
}
+ @VisibleForTesting
+ synchronized int getPredictionOutcome(IBinder session, String url) {
+ SessionParams params = mSessionParams.get(session);
+ if (params == null) return NO_PREDICTION;
+
+ String predictedUrl = params.getPredictedUrl();
+ if (predictedUrl == null) return NO_PREDICTION;
+
+ boolean urlsMatch = TextUtils.equals(predictedUrl, url)
+ || (params.mIgnoreFragments
+ && UrlUtilities.urlsMatchIgnoringFragments(predictedUrl, url));
+ return urlsMatch ? GOOD_PREDICTION : BAD_PREDICTION;
+ }
+
/**
* Registers that a client has launched a URL inside a Custom Tab.
*/
public synchronized void registerLaunch(IBinder session, String url) {
- int outcome = NO_PREDICTION;
- long elapsedTimeMs = -1;
- SessionParams params = mSessionParams.get(session);
- if (params != null) {
- String predictedUrl = params.getPredictedUrl();
- outcome = predictedUrl == null ? NO_PREDICTION : predictedUrl.equals(url)
- ? GOOD_PREDICTION
- : BAD_PREDICTION;
- long now = SystemClock.elapsedRealtime();
- elapsedTimeMs = now - params.getLastMayLaunchUrlTimestamp();
- params.setPredictionMetrics(null, 0);
- if (outcome == GOOD_PREDICTION) {
- RequestThrottler.getForUid(mContext, params.uid).registerSuccess(url);
- }
- }
+ int outcome = getPredictionOutcome(session, url);
RecordHistogram.recordEnumeratedHistogram(
"CustomTabs.PredictionStatus", outcome, PREDICTION_STATUS_COUNT);
+
+ SessionParams params = mSessionParams.get(session);
if (outcome == GOOD_PREDICTION) {
+ long elapsedTimeMs = SystemClock.elapsedRealtime()
+ - params.getLastMayLaunchUrlTimestamp();
+ RequestThrottler.getForUid(mContext, params.uid).registerSuccess(
+ params.mPredictedUrl);
RecordHistogram.recordCustomTimesHistogram("CustomTabs.PredictionToLaunch",
elapsedTimeMs, 1, TimeUnit.MINUTES.toMillis(3), TimeUnit.MILLISECONDS, 100);
}
RecordHistogram.recordEnumeratedHistogram(
"CustomTabs.WarmupStateOnLaunch", getWarmupState(session), SESSION_WARMUP_COUNT);
+ if (params != null) params.setPredictionMetrics(null, 0);
}
/**
« no previous file with comments | « no previous file | chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698