Commit 9ad1eac3 authored by Mathew Inwood's avatar Mathew Inwood
Browse files

Revert "Support for measuring page load times."

The page load time measurement was a stop gap measure until server side
support is ready, and we don't want to ship with it in.

Bug: 5266893

This reverts commit b4e831bf.

Change-Id: Iafc08cea88774e5ecf018112a25e4dc2993a4623
parent 7883b445
......@@ -18,7 +18,6 @@ package com.android.browser;
import android.app.Activity;
import android.app.DownloadManager;
import android.app.PendingIntent;
import android.app.SearchManager;
import android.content.ClipboardManager;
import android.content.ContentProvider;
......@@ -93,7 +92,6 @@ import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
/**
* Controller for browser
......@@ -769,7 +767,6 @@ public class Controller
public void stopLoading() {
mLoadStopped = true;
Tab tab = mTabControl.getCurrentTab();
tab.clearPageLoadCompleteListener();
WebView w = getCurrentTopWebView();
w.stopLoading();
mUi.onPageStopped(tab);
......@@ -2167,8 +2164,7 @@ public class Controller
final PreloadedTabControl tabControl = urlData.getPreloadedTab();
final String sbQuery = urlData.getSearchBoxQueryToSubmit();
if (sbQuery != null) {
if (!tabControl.searchBoxSubmit(sbQuery, urlData.mUrl, urlData.mHeaders,
urlData.getOnLoadCompletePendingIntent())) {
if (!tabControl.searchBoxSubmit(sbQuery, urlData.mUrl, urlData.mHeaders)) {
// Could not submit query. Fallback to regular tab creation
tabControl.destroy();
return null;
......@@ -2186,18 +2182,6 @@ public class Controller
mTabControl.addPreloadedTab(t);
addTab(t);
setActiveTab(t);
if (sbQuery == null) {
// if the searchbox query is set, the load complete notification is handled within
// the preloaded tab controller.
if (t.inPageLoad()) {
requestLoadCompleteNotification(urlData.mOnLoadCompletePendingIntent, t,
urlData.mUrl, true, true);
} else {
// the page is already fully loaded
IntentHandler.sendPageLoadCompletePendingIntent(mActivity,
urlData.mOnLoadCompletePendingIntent, true, true);
}
}
return t;
}
......@@ -2391,26 +2375,10 @@ public class Controller
// this isn't called for preloaded tabs
} else {
loadUrl(t, data.mUrl, data.mHeaders);
requestLoadCompleteNotification(data.mOnLoadCompletePendingIntent, t, data.mUrl,
null, null);
}
}
}
private void requestLoadCompleteNotification(final PendingIntent loadCompletePendingIntent,
Tab t, String forUrl, final Boolean preloaded, final Boolean preloadSuccess) {
if (loadCompletePendingIntent != null) {
Pattern urlMatch = Pattern.compile(Pattern.quote(forUrl));
t.setOnPageLoadCompleteListener(urlMatch, new Tab.OnPageLoadCompleteListener() {
@Override
public void onPageLoadComplete() {
IntentHandler.sendPageLoadCompletePendingIntent(mActivity,
loadCompletePendingIntent, preloaded, preloadSuccess);
}
});
}
}
@Override
public void onUserCanceledSsl(Tab tab) {
// TODO: Figure out the "right" behavior
......
......@@ -18,8 +18,6 @@
package com.android.browser;
import android.app.Activity;
import android.app.PendingIntent;
import android.app.PendingIntent.CanceledException;
import android.app.SearchManager;
import android.content.ContentResolver;
import android.content.Context;
......@@ -32,7 +30,6 @@ import android.provider.Browser;
import android.provider.MediaStore;
import android.speech.RecognizerResultsIntent;
import android.text.TextUtils;
import android.util.Log;
import android.util.Patterns;
import com.android.browser.search.SearchEngine;
......@@ -53,22 +50,6 @@ public class IntentHandler {
// "source" parameter for Google search from unknown source
final static String GOOGLE_SEARCH_SOURCE_UNKNOWN = "unknown";
// Pending intent extra attached to browser intents that is broadcast when the page load
// completes.
// TODO move to android.provider.Browser & make public?
private static final String EXTRA_LOAD_COMPLETE_PENDINGINTENT = "load_complete_intent";
// extra attached to intent received via EXTRA_LOAD_COMPLETE_PENDINGINTENT indicating the
// time at which the load completed.
public static final String EXTRA_LOAD_COMPLETION_TIME = "completets";
// extra attached to intent received via EXTRA_LOAD_COMPLETE_PENDINGINTENT indicating if
// preloading was attempted.
public static final String EXTRA_PREFETCH_ATTEMPTED = "prefattempt";
// extra attached to intent received via EXTRA_LOAD_COMPLETE_PENDINGINTENT indicating if
// preloading succeeded.
public static final String EXTRA_PREFETCH_SUCCESS = "prefsuccess";
/* package */ static final UrlData EMPTY_URL_DATA = new UrlData(null);
private Activity mActivity;
......@@ -243,39 +224,11 @@ public class IntentHandler {
}
}
/**
* Send a pending intent received in a page view intent. This should be called when the page
* has finished loading.
*
* @param prefetchAttempted Indicates if prefetching was attempted, {@code null} if prefetching
* was not requested or is disabled.
* @param prefetchSucceeded Indicates if prefetching succeeded, {@code null} if prefetching
* was not requested or is disabled.
*/
public static void sendPageLoadCompletePendingIntent(Context context, PendingIntent pi,
Boolean prefetchAttempted, Boolean prefetchSucceeded) {
if (pi == null) return;
Intent fillIn = new Intent();
fillIn.putExtra(EXTRA_LOAD_COMPLETION_TIME, System.currentTimeMillis());
if (prefetchAttempted != null) {
fillIn.putExtra(EXTRA_PREFETCH_ATTEMPTED, prefetchAttempted.booleanValue());
}
if (prefetchSucceeded != null) {
fillIn.putExtra(EXTRA_PREFETCH_SUCCESS, prefetchSucceeded.booleanValue());
}
try {
pi.send(context, Activity.RESULT_OK, fillIn);
} catch (CanceledException e) {
// ignore
}
}
protected static UrlData getUrlDataFromIntent(Intent intent) {
String url = "";
Map<String, String> headers = null;
PreloadedTabControl preloaded = null;
String preloadedSearchBoxQuery = null;
PendingIntent loadCompletePendingIntent = null;
if (intent != null
&& (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
final String action = intent.getAction();
......@@ -300,10 +253,6 @@ public class IntentHandler {
PreloadRequestReceiver.EXTRA_SEARCHBOX_SETQUERY);
preloaded = Preloader.getInstance().getPreloadedTab(id);
}
if (intent.hasExtra(EXTRA_LOAD_COMPLETE_PENDINGINTENT)) {
loadCompletePendingIntent =
intent.getParcelableExtra(EXTRA_LOAD_COMPLETE_PENDINGINTENT);
}
} else if (Intent.ACTION_SEARCH.equals(action)
|| MediaStore.INTENT_ACTION_MEDIA_SEARCH.equals(action)
|| Intent.ACTION_WEB_SEARCH.equals(action)) {
......@@ -328,8 +277,7 @@ public class IntentHandler {
}
}
}
return new UrlData(url, headers, intent, preloaded, preloadedSearchBoxQuery,
loadCompletePendingIntent);
return new UrlData(url, headers, intent, preloaded, preloadedSearchBoxQuery);
}
/**
......@@ -414,7 +362,6 @@ public class IntentHandler {
final Intent mVoiceIntent;
final PreloadedTabControl mPreloadedTab;
final String mSearchBoxQueryToSubmit;
final PendingIntent mOnLoadCompletePendingIntent;
UrlData(String url) {
this.mUrl = url;
......@@ -422,16 +369,14 @@ public class IntentHandler {
this.mVoiceIntent = null;
this.mPreloadedTab = null;
this.mSearchBoxQueryToSubmit = null;
this.mOnLoadCompletePendingIntent = null;
}
UrlData(String url, Map<String, String> headers, Intent intent) {
this(url, headers, intent, null, null, null);
this(url, headers, intent, null, null);
}
UrlData(String url, Map<String, String> headers, Intent intent,
PreloadedTabControl preloaded, String searchBoxQueryToSubmit,
PendingIntent onLoadCompletePendingIntent) {
PreloadedTabControl preloaded, String searchBoxQueryToSubmit) {
this.mUrl = url;
this.mHeaders = headers;
if (RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS
......@@ -442,7 +387,6 @@ public class IntentHandler {
}
this.mPreloadedTab = preloaded;
this.mSearchBoxQueryToSubmit = searchBoxQueryToSubmit;
this.mOnLoadCompletePendingIntent = onLoadCompletePendingIntent;
}
boolean isEmpty() {
......@@ -460,10 +404,6 @@ public class IntentHandler {
String getSearchBoxQueryToSubmit() {
return mSearchBoxQueryToSubmit;
}
PendingIntent getOnLoadCompletePendingIntent() {
return mOnLoadCompletePendingIntent;
}
}
}
......@@ -15,7 +15,6 @@
*/
package com.android.browser;
import android.app.PendingIntent;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
......@@ -40,7 +39,7 @@ public class PreloadedTabControl {
mTab = t;
}
private boolean maybeSetQuery(final String query, SearchBox sb) {
private void maybeSetQuery(final String query, SearchBox sb) {
if (!TextUtils.equals(mLastQuery, query)) {
if (sb != null) {
if (LOGD_ENABLED) Log.d(LOGTAG, "Changing searchbox query to " + query);
......@@ -56,27 +55,25 @@ public class PreloadedTabControl {
}
}
});
return true;
} else {
if (LOGD_ENABLED) Log.d(LOGTAG, "Cannot set query: no searchbox interface");
}
}
return false;
}
public void setQuery(String query) {
maybeSetQuery(query, mTab.getWebView().getSearchBox());
}
public boolean searchBoxSubmit(final String query, final String fallbackUrl,
final Map<String, String> fallbackHeaders, final PendingIntent onLoadCompleteIntent) {
public boolean searchBoxSubmit(final String query,
final String fallbackUrl, final Map<String, String> fallbackHeaders) {
final SearchBox sb = mTab.getWebView().getSearchBox();
if (sb == null) {
// no searchbox, cannot submit. Fallback to regular tab creation
if (LOGD_ENABLED) Log.d(LOGTAG, "No searchbox, cannot submit query");
return false;
}
final boolean newQuery = maybeSetQuery(query, sb);
maybeSetQuery(query, sb);
if (LOGD_ENABLED) Log.d(LOGTAG, "Submitting query " + query);
final String currentUrl = mTab.getUrl();
sb.onsubmit(new SearchBox.SearchBoxListener() {
......@@ -87,14 +84,9 @@ public class PreloadedTabControl {
if (!called) {
if (LOGD_ENABLED) Log.d(LOGTAG, "Query not submitted; falling back");
loadUrl(fallbackUrl, fallbackHeaders);
// make sure that the failed, preloaded URL is cleared from the back stack
mTab.clearBackStackWhenItemAdded(Pattern.compile(
"^" + Pattern.quote(fallbackUrl) + "$"));
// When setting the search box query, preloadAttempted=true implies that the
// the query was prefetched using the searchbox API. This is the case if we
// the query is not new.
registerLoadCompleteListener(!newQuery, false, onLoadCompleteIntent);
} else {
// ignore the next fragment change, to avoid leaving a blank page in the browser
// after the query has been submitted.
......@@ -108,27 +100,11 @@ public class PreloadedTabControl {
Pattern.quote(currentWithoutFragment) +
"(\\#.*)?" +
"$"));
registerLoadCompleteListener(!newQuery, true, onLoadCompleteIntent);
}
}});
return true;
}
private void registerLoadCompleteListener(
final boolean queryPreloaded,
final boolean preloadSucceeded,
final PendingIntent pendingIntent) {
if (pendingIntent == null) {
return;
}
mTab.setOnPageLoadCompleteListener(null, new Tab.OnPageLoadCompleteListener(){
@Override
public void onPageLoadComplete() {
IntentHandler.sendPageLoadCompletePendingIntent(mTab.mContext, pendingIntent,
queryPreloaded, preloadSucceeded);
}});
}
public void searchBoxCancel() {
SearchBox sb = mTab.getWebView().getSearchBox();
if (sb != null) {
......
......@@ -66,6 +66,8 @@ import android.webkit.WebView;
import android.webkit.WebView.PictureListener;
import android.webkit.WebViewClient;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.android.browser.TabControl.OnThumbnailUpdatedListener;
......@@ -172,13 +174,10 @@ class Tab implements PictureListener {
private Handler mHandler;
/**
* See {@link #clearBackStackWhenItemAdded(Pattern)}.
* See {@link #clearBackStackWhenItemAdded(String)}.
*/
private Pattern mClearHistoryUrlPattern;
private OnPageLoadCompleteListener mOnPageLoadCompleteListener;
private Pattern mOnPageLoadCompleteUrlMatch;
private static synchronized Bitmap getDefaultFavicon(Context context) {
if (sDefaultFavicon == null) {
sDefaultFavicon = BitmapFactory.decodeResource(
......@@ -533,26 +532,6 @@ class Tab implements PictureListener {
}
}
public interface OnPageLoadCompleteListener {
void onPageLoadComplete();
}
/**
* Requests a notification when the next page load completes. This is a one shot notification,
* the listener will be discarded after the first callback, or if the page load is cancelled.
* @param listener
*/
public void setOnPageLoadCompleteListener(Pattern urlMatch,
OnPageLoadCompleteListener listener) {
mOnPageLoadCompleteListener = listener;
mOnPageLoadCompleteUrlMatch = urlMatch;
}
public void clearPageLoadCompleteListener() {
mOnPageLoadCompleteListener = null;
mOnPageLoadCompleteUrlMatch = null;
}
// -------------------------------------------------------------------------
// WebViewClient implementation for the main WebView
// -------------------------------------------------------------------------
......@@ -616,13 +595,6 @@ class Tab implements PictureListener {
@Override
public void onPageFinished(WebView view, String url) {
if (mOnPageLoadCompleteListener != null) {
if (mOnPageLoadCompleteUrlMatch == null
|| mOnPageLoadCompleteUrlMatch.matcher(url).matches())
mOnPageLoadCompleteListener.onPageLoadComplete();
mOnPageLoadCompleteListener = null;
mOnPageLoadCompleteUrlMatch = null;
}
if (!mInPageLoad) {
// In page navigation links (www.something.com#footer) will
// trigger an onPageFinished which we don't care about.
......@@ -2070,7 +2042,6 @@ class Tab implements PictureListener {
mCurrentState = new PageState(mContext, false, url, null);
mWebViewController.onPageStarted(this, mMainView, null);
mMainView.loadUrl(url, headers);
clearPageLoadCompleteListener();
}
}
......@@ -2122,14 +2093,12 @@ class Tab implements PictureListener {
public void goBack() {
if (mMainView != null) {
clearPageLoadCompleteListener();
mMainView.goBack();
}
}
public void goForward() {
if (mMainView != null) {
clearPageLoadCompleteListener();
mMainView.goForward();
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment