Fix bug 3093591 - add richer control over default tab selection in ActionBar

Added overloads to ActionBar#addTab with control over whether the added tab
will become selected or not. Old versions implemented in terms of the new.

Change-Id: I810c64652bb7e755b81151ce8a2c765266d78a66
diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java
index f4a041c..1d612e2 100644
--- a/core/java/com/android/internal/app/ActionBarImpl.java
+++ b/core/java/com/android/internal/app/ActionBarImpl.java
@@ -255,7 +255,6 @@
 
     private void configureTab(Tab tab, int position) {
         final TabImpl tabi = (TabImpl) tab;
-        final boolean isFirstTab = mTabs.isEmpty();
         final ActionBar.TabListener callback = tabi.getCallback();
 
         if (callback == null) {
@@ -265,26 +264,38 @@
         tabi.setPosition(position);
         mTabs.add(position, tabi);
 
-        if (isFirstTab) {
-            final FragmentTransaction trans = mActivity.getFragmentManager().openTransaction();
-            mSelectedTab = tabi;
-            callback.onTabSelected(tab, trans);
-            if (!trans.isEmpty()) {
-                trans.commit();
-            }
+        final int count = mTabs.size();
+        for (int i = position + 1; i < count; i++) {
+            mTabs.get(i).setPosition(i);
         }
     }
 
     @Override
     public void addTab(Tab tab) {
-        mActionView.addTab(tab);
-        configureTab(tab, mTabs.size());
+        addTab(tab, mTabs.isEmpty());
     }
 
     @Override
     public void addTab(Tab tab, int position) {
-        mActionView.addTab(tab, position);
+        addTab(tab, position, mTabs.isEmpty());
+    }
+
+    @Override
+    public void addTab(Tab tab, boolean setSelected) {
+        mActionView.addTab(tab, setSelected);
+        configureTab(tab, mTabs.size());
+        if (setSelected) {
+            selectTab(tab);
+        }
+    }
+
+    @Override
+    public void addTab(Tab tab, int position, boolean setSelected) {
+        mActionView.addTab(tab, position, setSelected);
         configureTab(tab, position);
+        if (setSelected) {
+            selectTab(tab);
+        }
     }
 
     @Override