diff options
author | Mathew Inwood <mathewi@google.com> | 2011-09-05 18:58:48 +0100 |
---|---|---|
committer | Mathew Inwood <mathewi@google.com> | 2011-09-06 12:22:26 +0100 |
commit | b4e831bf1ff62945199b89a77ad039be7bd16545 (patch) | |
tree | a3a7dcf7f0de94487e03ec9b9904ab9cbdaa67ba /src/com/android/browser/Tab.java | |
parent | 012dcd474cd3980aa206e4b7a31fa67114f56d54 (diff) | |
download | packages_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.java | 37 |
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(); } } |