Merge "Bookmark drop CAB"
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index e20a876..5b259a9 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -480,15 +480,8 @@
                                 break;
                             case R.id.open_newtab_context_menu_id:
                                 final Tab parent = mTabControl.getCurrentTab();
-                                final Tab newTab =
-                                        openTab(url,
-                                                (parent != null)
-                                                && parent.isPrivateBrowsingEnabled(),
-                                                !mSettings.openInBackground(),
-                                                true);
-                                if (newTab != null && newTab != parent) {
-                                    parent.addChildTab(newTab);
-                                }
+                                openTab(url, parent,
+                                        !mSettings.openInBackground(), true);
                                 break;
                             case R.id.copy_link_context_menu_id:
                                 copy(url);
@@ -1392,15 +1385,9 @@
                                     @Override
                                     public boolean onMenuItemClick(MenuItem item) {
                                         final Tab parent = mTabControl.getCurrentTab();
-                                        final Tab newTab =
-                                                openTab(extra,
-                                                        (parent != null)
-                                                        && parent.isPrivateBrowsingEnabled(),
-                                                        !mSettings.openInBackground(),
-                                                        true);
-                                        if (newTab != parent) {
-                                            parent.addChildTab(newTab);
-                                        }
+                                        openTab(extra, parent,
+                                                !mSettings.openInBackground(),
+                                                true);
                                         return true;
                                     }
                                 });
@@ -2225,8 +2212,23 @@
     @Override
     public Tab openTab(String url, boolean incognito, boolean setActive,
             boolean useCurrent) {
+        return openTab(url, incognito, setActive, useCurrent, null);
+    }
+
+    @Override
+    public Tab openTab(String url, Tab parent, boolean setActive,
+            boolean useCurrent) {
+        return openTab(url, (parent != null) && parent.isPrivateBrowsingEnabled(),
+                setActive, useCurrent, parent);
+    }
+
+    public Tab openTab(String url, boolean incognito, boolean setActive,
+            boolean useCurrent, Tab parent) {
         Tab tab = createNewTab(incognito, setActive, useCurrent);
         if (tab != null) {
+            if (parent != null && parent != tab) {
+                parent.addChildTab(tab);
+            }
             WebView w = tab.getWebView();
             if (url != null) {
                 loadUrl(w, url);
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 8962475..4097334 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -855,11 +855,7 @@
                 transport.setWebView(mSubView);
             } else {
                 final Tab newTab = mWebViewController.openTab(null,
-                        Tab.this.isPrivateBrowsingEnabled(),
-                        true, true);
-                if (newTab != Tab.this) {
-                    Tab.this.addChildTab(newTab);
-                }
+                        Tab.this, true, true);
                 transport.setWebView(newTab.getWebView());
             }
             msg.sendToTarget();
diff --git a/src/com/android/browser/WebViewController.java b/src/com/android/browser/WebViewController.java
index bf3bdba..87703bd 100644
--- a/src/com/android/browser/WebViewController.java
+++ b/src/com/android/browser/WebViewController.java
@@ -104,6 +104,9 @@
     Tab openTab(String url, boolean incognito, boolean setActive,
             boolean useCurrent);
 
+    Tab openTab(String url, Tab parent, boolean setActive,
+            boolean useCurrent);
+
     boolean switchToTab(Tab tab);
 
     void closeTab(Tab tab);