diff options
Diffstat (limited to 'src/com/android/browser/IntentHandler.java')
| -rw-r--r-- | src/com/android/browser/IntentHandler.java | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/src/com/android/browser/IntentHandler.java b/src/com/android/browser/IntentHandler.java index 088a788d2..a99164a48 100644 --- a/src/com/android/browser/IntentHandler.java +++ b/src/com/android/browser/IntentHandler.java @@ -135,8 +135,14 @@ public class IntentHandler { urlData = new UrlData(mSettings.getHomePage()); } - if (intent.getBooleanExtra(Browser.EXTRA_CREATE_NEW_TAB, false)) { - mController.openTab(urlData); + if (intent.getBooleanExtra(Browser.EXTRA_CREATE_NEW_TAB, false) + || urlData.isPreloaded()) { + Tab t = mController.openTab(urlData); + if (t == null && urlData.isPreloaded()) { + Tab pre = urlData.getPreloadedTab(); + // TODO: check if we need to stop loading + pre.destroy(); + } return; } /* @@ -220,9 +226,10 @@ public class IntentHandler { } } - protected UrlData getUrlDataFromIntent(Intent intent) { + protected static UrlData getUrlDataFromIntent(Intent intent) { String url = ""; Map<String, String> headers = null; + Tab preloaded = null; if (intent != null && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { final String action = intent.getAction(); @@ -241,6 +248,10 @@ public class IntentHandler { } } } + if (intent.hasExtra(PreloadRequestReceiver.EXTRA_PRELOAD_ID)) { + String id = intent.getStringExtra(PreloadRequestReceiver.EXTRA_PRELOAD_ID); + preloaded = Preloader.getInstance().getPreloadedTab(id); + } } else if (Intent.ACTION_SEARCH.equals(action) || MediaStore.INTENT_ACTION_MEDIA_SEARCH.equals(action) || Intent.ACTION_WEB_SEARCH.equals(action)) { @@ -265,7 +276,7 @@ public class IntentHandler { } } } - return new UrlData(url, headers, intent); + return new UrlData(url, headers, intent, preloaded); } /** @@ -348,14 +359,20 @@ public class IntentHandler { final String mUrl; final Map<String, String> mHeaders; final Intent mVoiceIntent; + final Tab mPreloadedTab; UrlData(String url) { this.mUrl = url; this.mHeaders = null; this.mVoiceIntent = null; + this.mPreloadedTab = null; } UrlData(String url, Map<String, String> headers, Intent intent) { + this(url, headers, intent, null); + } + + UrlData(String url, Map<String, String> headers, Intent intent, Tab preloaded) { this.mUrl = url; this.mHeaders = headers; if (RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS @@ -364,11 +381,20 @@ public class IntentHandler { } else { this.mVoiceIntent = null; } + mPreloadedTab = preloaded; } boolean isEmpty() { return mVoiceIntent == null && (mUrl == null || mUrl.length() == 0); } + + boolean isPreloaded() { + return mPreloadedTab != null; + } + + Tab getPreloadedTab() { + return mPreloadedTab; + } } } |
