If url hijacking happens on a newly opened child window,
close the child window after switching Activity.

Fix http://b/issue?id=2764723
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 926193a..4b7afd2 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -2644,6 +2644,18 @@
         }
     }
 
+    private void closeEmptyChildTab() {
+        Tab current = mTabControl.getCurrentTab();
+        if (current != null
+                && current.getWebView().copyBackForwardList().getSize() == 0) {
+            Tab parent = current.getParentTab();
+            if (parent != null) {
+                switchToTab(mTabControl.getTabIndex(parent));
+                closeTab(current);
+            }
+        }
+    }
+
     boolean shouldOverrideUrlLoading(WebView view, String url) {
         if (url.startsWith(SCHEME_WTAI)) {
             // wtai://wp/mc;number
@@ -2653,6 +2665,11 @@
                         Uri.parse(WebView.SCHEME_TEL +
                         url.substring(SCHEME_WTAI_MC.length())));
                 startActivity(intent);
+                // before leaving BrowserActivity, close the empty child tab.
+                // 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.
+                closeEmptyChildTab();
                 return true;
             }
             // wtai://wp/sd;dtmf
@@ -2694,6 +2711,11 @@
                         .parse("market://search?q=pname:" + packagename));
                 intent.addCategory(Intent.CATEGORY_BROWSABLE);
                 startActivity(intent);
+                // before leaving BrowserActivity, close the empty child tab.
+                // 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.
+                closeEmptyChildTab();
                 return true;
             } else {
                 return false;
@@ -2706,6 +2728,11 @@
         intent.setComponent(null);
         try {
             if (startActivityIfNeeded(intent, -1)) {
+                // before leaving BrowserActivity, close the empty child tab.
+                // 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.
+                closeEmptyChildTab();
                 return true;
             }
         } catch (ActivityNotFoundException ex) {