summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/browser/Controller.java8
-rw-r--r--src/com/android/browser/Tab.java2
-rw-r--r--src/com/android/browser/UrlHandler.java20
3 files changed, 17 insertions, 13 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 1e89af1..adc2677 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -2094,15 +2094,11 @@ public class Controller
}
}
- protected void closeEmptyChildTab() {
+ protected void closeEmptyTab() {
Tab current = mTabControl.getCurrentTab();
if (current != null
&& current.getWebView().copyBackForwardList().getSize() == 0) {
- Tab parent = current.getParent();
- if (parent != null) {
- switchToTab(parent);
- closeTab(current);
- }
+ closeCurrentTab();
}
}
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 672a1a6..8bf32b0 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -877,7 +877,7 @@ class Tab implements PictureListener {
// Sync state (in case of stop/timeout)
mCurrentState.mUrl = view.getUrl();
if (mCurrentState.mUrl == null) {
- mCurrentState.mUrl = url != null ? url : "";
+ mCurrentState.mUrl = "";
}
mCurrentState.mOriginalUrl = view.getOriginalUrl();
mCurrentState.mTitle = view.getTitle();
diff --git a/src/com/android/browser/UrlHandler.java b/src/com/android/browser/UrlHandler.java
index 74a58f3..73b265d 100644
--- a/src/com/android/browser/UrlHandler.java
+++ b/src/com/android/browser/UrlHandler.java
@@ -25,6 +25,7 @@ import android.content.pm.ResolveInfo;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
+import android.provider.Browser;
import android.util.Log;
import android.webkit.WebView;
@@ -76,7 +77,7 @@ public class UrlHandler {
// If a new tab is created through JavaScript open to load this
// url, we would like to close it as we will load this url in a
// different Activity.
- mController.closeEmptyChildTab();
+ mController.closeEmptyTab();
return true;
}
// wtai://wp/sd;dtmf
@@ -114,7 +115,7 @@ public class UrlHandler {
}
}
- if (startActivityForUrl(url)) {
+ if (startActivityForUrl(tab, url)) {
return true;
}
@@ -125,7 +126,7 @@ public class UrlHandler {
return false;
}
- boolean startActivityForUrl(String url) {
+ boolean startActivityForUrl(Tab tab, String url) {
Intent intent;
// perform generic parsing of the URI to turn it into an Intent.
try {
@@ -148,7 +149,7 @@ public class UrlHandler {
// If a new tab is created through JavaScript open to load this
// url, we would like to close it as we will load this url in a
// different Activity.
- mController.closeEmptyChildTab();
+ mController.closeEmptyTab();
return true;
} else {
return false;
@@ -159,6 +160,13 @@ public class UrlHandler {
// security (only access to BROWSABLE activities).
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setComponent(null);
+ // Re-use the existing tab if the intent comes back to us
+ if (tab != null) {
+ if (tab.getAppId() == null) {
+ tab.setAppId("com.android.browser-" + tab.getId());
+ }
+ intent.putExtra(Browser.EXTRA_APPLICATION_ID, tab.getAppId());
+ }
// Make sure webkit can handle it internally before checking for specialized
// handlers. If webkit can't handle it internally, we need to call
// startActivityIfNeeded
@@ -172,7 +180,7 @@ public class UrlHandler {
// If a new tab is created through JavaScript open to load this
// url, we would like to close it as we will load this url in a
// different Activity.
- mController.closeEmptyChildTab();
+ mController.closeEmptyTab();
return true;
}
} catch (ActivityNotFoundException ex) {
@@ -262,7 +270,7 @@ public class UrlHandler {
// Make sure the Tab was not closed while handling the task
if (mController.getTabControl().getTabPosition(mTab) != -1) {
// If the Activity Manager is not invoked, load the URL directly
- if (!startActivityForUrl(result)) {
+ if (!startActivityForUrl(mTab, result)) {
if (!handleMenuClick(mTab, result)) {
mController.loadUrl(mTab, result);
}