diff options
| author | Mathew Inwood <mathewi@google.com> | 2011-09-07 03:13:22 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-09-07 03:13:22 -0700 |
| commit | e64e369aa762f03ed22b408c3b4936a3b3c83dc2 (patch) | |
| tree | 8274105311c38b9ccf7a823e1ada439f6f144794 /src/com/android/browser/Controller.java | |
| parent | 950292f77b748c897f66ab665a8d4cada16139ba (diff) | |
| parent | b4e831bf1ff62945199b89a77ad039be7bd16545 (diff) | |
Merge "Support for measuring page load times."
Diffstat (limited to 'src/com/android/browser/Controller.java')
| -rw-r--r-- | src/com/android/browser/Controller.java | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index b7cdcd44..a3887f53 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -18,6 +18,7 @@ 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,6 +94,7 @@ import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; /** * Controller for browser @@ -761,6 +763,7 @@ public class Controller public void stopLoading() { mLoadStopped = true; Tab tab = mTabControl.getCurrentTab(); + tab.clearPageLoadCompleteListener(); WebView w = getCurrentTopWebView(); w.stopLoading(); mUi.onPageStopped(tab); @@ -2160,7 +2163,8 @@ public class Controller final PreloadedTabControl tabControl = urlData.getPreloadedTab(); final String sbQuery = urlData.getSearchBoxQueryToSubmit(); if (sbQuery != null) { - if (!tabControl.searchBoxSubmit(sbQuery, urlData.mUrl, urlData.mHeaders)) { + if (!tabControl.searchBoxSubmit(sbQuery, urlData.mUrl, urlData.mHeaders, + urlData.getOnLoadCompletePendingIntent())) { // Could not submit query. Fallback to regular tab creation tabControl.destroy(); return null; @@ -2178,6 +2182,18 @@ 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; } @@ -2371,10 +2387,26 @@ 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 |
