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

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

Issue 1292493002: Add signals to make callback more reliable (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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.Context; 7 import android.content.Context;
8 import android.content.Intent; 8 import android.content.Intent;
9 import android.content.pm.ResolveInfo; 9 import android.content.pm.ResolveInfo;
10 import android.os.IBinder; 10 import android.os.IBinder;
(...skipping 10 matching lines...) Expand all
21 import org.chromium.chrome.R; 21 import org.chromium.chrome.R;
22 import org.chromium.chrome.browser.ChromeActivity; 22 import org.chromium.chrome.browser.ChromeActivity;
23 import org.chromium.chrome.browser.UrlUtilities; 23 import org.chromium.chrome.browser.UrlUtilities;
24 import org.chromium.chrome.browser.WebContentsFactory; 24 import org.chromium.chrome.browser.WebContentsFactory;
25 import org.chromium.chrome.browser.banners.AppBannerManager; 25 import org.chromium.chrome.browser.banners.AppBannerManager;
26 import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator; 26 import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator;
27 import org.chromium.chrome.browser.contextmenu.ContextMenuParams; 27 import org.chromium.chrome.browser.contextmenu.ContextMenuParams;
28 import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator; 28 import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator;
29 import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl; 29 import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl;
30 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler; 30 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler;
31 import org.chromium.chrome.browser.ssl.ConnectionSecurityLevel;
31 import org.chromium.chrome.browser.tab.ChromeTab; 32 import org.chromium.chrome.browser.tab.ChromeTab;
32 import org.chromium.chrome.browser.tab.EmptyTabObserver; 33 import org.chromium.chrome.browser.tab.EmptyTabObserver;
33 import org.chromium.chrome.browser.tab.Tab; 34 import org.chromium.chrome.browser.tab.Tab;
34 import org.chromium.chrome.browser.tab.TabIdManager; 35 import org.chromium.chrome.browser.tab.TabIdManager;
35 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; 36 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
36 import org.chromium.content_public.browser.LoadUrlParams; 37 import org.chromium.content_public.browser.LoadUrlParams;
37 import org.chromium.content_public.browser.WebContents; 38 import org.chromium.content_public.browser.WebContents;
38 import org.chromium.ui.base.WindowAndroid; 39 import org.chromium.ui.base.WindowAndroid;
39 40
40 import java.util.concurrent.TimeUnit; 41 import java.util.concurrent.TimeUnit;
(...skipping 30 matching lines...) Expand all
71 @Override 72 @Override
72 public void onLoadUrl(Tab tab, LoadUrlParams params, int loadType) { 73 public void onLoadUrl(Tab tab, LoadUrlParams params, int loadType) {
73 mCustomTabsConnection.registerLaunch(mSession, params.getUrl()); 74 mCustomTabsConnection.registerLaunch(mSession, params.getUrl());
74 } 75 }
75 76
76 @Override 77 @Override
77 public void onPageLoadStarted(Tab tab, String url) { 78 public void onPageLoadStarted(Tab tab, String url) {
78 if (mCurrentState == STATE_WAITING_LOAD_START) { 79 if (mCurrentState == STATE_WAITING_LOAD_START) {
79 mPageLoadStartedTimestamp = SystemClock.elapsedRealtime(); 80 mPageLoadStartedTimestamp = SystemClock.elapsedRealtime();
80 mCurrentState = STATE_WAITING_LOAD_FINISH; 81 mCurrentState = STATE_WAITING_LOAD_FINISH;
82 } else if (mCurrentState == STATE_WAITING_LOAD_FINISH) {
83 mCustomTabsConnection.notifyNavigationEvent(
84 mSession, CustomTabsCallback.NAVIGATION_ABORTED);
85 mPageLoadStartedTimestamp = SystemClock.elapsedRealtime();
81 } 86 }
82 mCustomTabsConnection.notifyNavigationEvent( 87 mCustomTabsConnection.notifyNavigationEvent(
83 mSession, CustomTabsCallback.NAVIGATION_STARTED); 88 mSession, CustomTabsCallback.NAVIGATION_STARTED);
84 } 89 }
85 90
86 @Override 91 @Override
92 public void onShown(Tab tab) {
93 mCustomTabsConnection.notifyNavigationEvent(
94 mSession, CustomTabsCallback.TAB_SHOWN);
95 }
96
97 @Override
98 public void onHidden(Tab tab) {
99 mCustomTabsConnection.notifyNavigationEvent(
100 mSession, CustomTabsCallback.TAB_HIDDEN);
101 }
102
103 @Override
87 public void onPageLoadFinished(Tab tab) { 104 public void onPageLoadFinished(Tab tab) {
88 long pageLoadFinishedTimestamp = SystemClock.elapsedRealtime(); 105 long pageLoadFinishedTimestamp = SystemClock.elapsedRealtime();
89 mCustomTabsConnection.notifyNavigationEvent( 106 mCustomTabsConnection.notifyNavigationEvent(
90 mSession, CustomTabsCallback.NAVIGATION_FINISHED); 107 mSession, CustomTabsCallback.NAVIGATION_FINISHED);
91 // Both histograms (commit and PLT) are reported here, to make sure 108 // Both histograms (commit and PLT) are reported here, to make sure
92 // that they are always recorded together, and that we only record 109 // that they are always recorded together, and that we only record
93 // commits for successful navigations. 110 // commits for successful navigations.
94 if (mCurrentState == STATE_WAITING_LOAD_FINISH && mIntentReceivedTim estamp > 0) { 111 if (mCurrentState == STATE_WAITING_LOAD_FINISH && mIntentReceivedTim estamp > 0) {
95 long timeToPageLoadStartedMs = mPageLoadStartedTimestamp - mInte ntReceivedTimestamp; 112 long timeToPageLoadStartedMs = mPageLoadStartedTimestamp - mInte ntReceivedTimestamp;
96 long timeToPageLoadFinishedMs = 113 long timeToPageLoadFinishedMs =
97 pageLoadFinishedTimestamp - mIntentReceivedTimestamp; 114 pageLoadFinishedTimestamp - mIntentReceivedTimestamp;
98 // Same bounds and bucket count as "Startup.FirstCommitNavigatio nTime" 115 // Same bounds and bucket count as "Startup.FirstCommitNavigatio nTime"
99 RecordHistogram.recordCustomTimesHistogram( 116 RecordHistogram.recordCustomTimesHistogram(
100 "CustomTabs.IntentToFirstCommitNavigationTime", timeToPa geLoadStartedMs, 117 "CustomTabs.IntentToFirstCommitNavigationTime", timeToPa geLoadStartedMs,
101 1, TimeUnit.MINUTES.toMillis(1), TimeUnit.MILLISECONDS, 225); 118 1, TimeUnit.MINUTES.toMillis(1), TimeUnit.MILLISECONDS, 225);
102 // Same bounds and bucket count as PLT histograms. 119 // Same bounds and bucket count as PLT histograms.
103 RecordHistogram.recordCustomTimesHistogram("CustomTabs.IntentToP ageLoadedTime", 120 RecordHistogram.recordCustomTimesHistogram("CustomTabs.IntentToP ageLoadedTime",
104 timeToPageLoadFinishedMs, 10, TimeUnit.MINUTES.toMillis( 10), 121 timeToPageLoadFinishedMs, 10, TimeUnit.MINUTES.toMillis( 10),
105 TimeUnit.MILLISECONDS, 100); 122 TimeUnit.MILLISECONDS, 100);
106 } 123 }
107 resetPageLoadTracking(); 124 resetPageLoadTracking();
108 } 125 }
109 126
110 @Override 127 @Override
128 public void onDidAttachInterstitialPage(Tab tab) {
129 if (tab.getSecurityLevel() != ConnectionSecurityLevel.SECURITY_ERROR ) return;
130 resetPageLoadTracking();
131 mCustomTabsConnection.notifyNavigationEvent(
132 mSession, CustomTabsCallback.NAVIGATION_FAILED);
133 }
134
135 @Override
111 public void onPageLoadFailed(Tab tab, int errorCode) { 136 public void onPageLoadFailed(Tab tab, int errorCode) {
112 resetPageLoadTracking(); 137 resetPageLoadTracking();
138 mCustomTabsConnection.notifyNavigationEvent(
139 mSession, CustomTabsCallback.NAVIGATION_FAILED);
113 } 140 }
114 141
115 private void resetPageLoadTracking() { 142 private void resetPageLoadTracking() {
116 mCurrentState = STATE_RESET; 143 mCurrentState = STATE_RESET;
117 mIntentReceivedTimestamp = -1; 144 mIntentReceivedTimestamp = -1;
118 } 145 }
119 } 146 }
120 147
121 private ExternalNavigationHandler mNavigationHandler; 148 private ExternalNavigationHandler mNavigationHandler;
122 private CustomTabNavigationDelegate mNavigationDelegate; 149 private CustomTabNavigationDelegate mNavigationDelegate;
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 // See http://crbug.com/369574. 326 // See http://crbug.com/369574.
300 if (e.getCause() != null && e.getCause() instanceof TransactionTooLa rgeException) { 327 if (e.getCause() != null && e.getCause() instanceof TransactionTooLa rgeException) {
301 Log.e(TAG, "Could not resolve Activity for intent " + intent.toS tring(), e); 328 Log.e(TAG, "Could not resolve Activity for intent " + intent.toS tring(), e);
302 } else { 329 } else {
303 throw e; 330 throw e;
304 } 331 }
305 } 332 }
306 } 333 }
307 334
308 } 335 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698