summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/Tab.java
diff options
context:
space:
mode:
authorMathew Inwood <mathewi@google.com>2011-09-05 18:58:48 +0100
committerMathew Inwood <mathewi@google.com>2011-09-06 12:22:26 +0100
commitb4e831bf1ff62945199b89a77ad039be7bd16545 (patch)
treea3a7dcf7f0de94487e03ec9b9904ab9cbdaa67ba /src/com/android/browser/Tab.java
parent012dcd474cd3980aa206e4b7a31fa67114f56d54 (diff)
downloadpackages_apps_browser-b4e831bf1ff62945199b89a77ad039be7bd16545.zip
packages_apps_browser-b4e831bf1ff62945199b89a77ad039be7bd16545.tar.gz
packages_apps_browser-b4e831bf1ff62945199b89a77ad039be7bd16545.tar.bz2
Support for measuring page load times.
An app can attached a pending intent to an intent sent to the browser which will be send when the load completes. The browser will fill in the timestamp of when the page load completed, and details of preloading success or otherwise if this was used. Bug: 5259031 Change-Id: I2d025caabd6055ac25f06e69897a03d5c57c4f41
Diffstat (limited to 'src/com/android/browser/Tab.java')
-rw-r--r--src/com/android/browser/Tab.java37
1 files changed, 34 insertions, 3 deletions
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 8c9dc02..8dcc54b 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -66,8 +66,6 @@ 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;
@@ -174,10 +172,13 @@ class Tab implements PictureListener {
private Handler mHandler;
/**
- * See {@link #clearBackStackWhenItemAdded(String)}.
+ * See {@link #clearBackStackWhenItemAdded(Pattern)}.
*/
private Pattern mClearHistoryUrlPattern;
+ private OnPageLoadCompleteListener mOnPageLoadCompleteListener;
+ private Pattern mOnPageLoadCompleteUrlMatch;
+
private static synchronized Bitmap getDefaultFavicon(Context context) {
if (sDefaultFavicon == null) {
sDefaultFavicon = BitmapFactory.decodeResource(
@@ -532,6 +533,26 @@ 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
// -------------------------------------------------------------------------
@@ -595,6 +616,13 @@ 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.
@@ -2042,6 +2070,7 @@ class Tab implements PictureListener {
mCurrentState = new PageState(mContext, false, url, null);
mWebViewController.onPageStarted(this, mMainView, null);
mMainView.loadUrl(url, headers);
+ clearPageLoadCompleteListener();
}
}
@@ -2093,12 +2122,14 @@ class Tab implements PictureListener {
public void goBack() {
if (mMainView != null) {
+ clearPageLoadCompleteListener();
mMainView.goBack();
}
}
public void goForward() {
if (mMainView != null) {
+ clearPageLoadCompleteListener();
mMainView.goForward();
}
}