Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataTabsFragment.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataTabsFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataTabsFragment.java |
index cec1dc5ef39c4e72f7e70dae2ee6e9b16988d965..6fd0b20d4cbb998637375a53e0aa4ab9bf50f4ca 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataTabsFragment.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataTabsFragment.java |
@@ -10,6 +10,8 @@ import android.content.Context; |
import android.os.Bundle; |
import android.support.design.widget.TabLayout; |
import android.support.v13.app.FragmentPagerAdapter; |
+import android.support.v4.text.TextUtilsCompat; |
+import android.support.v4.view.ViewCompat; |
import android.support.v4.view.ViewPager; |
import android.view.LayoutInflater; |
import android.view.View; |
@@ -17,13 +19,16 @@ import android.view.ViewGroup; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.ChromeFeatureList; |
+import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
import org.chromium.chrome.browser.preferences.Preferences; |
+import java.util.Locale; |
+ |
/** |
* Fragment with a {@link TabLayout} containing a basic and an advanced version of the CBD dialog. |
*/ |
public class ClearBrowsingDataTabsFragment extends Fragment { |
- public static final String TAG = ClearBrowsingDataTabsFragment.class.getSimpleName(); |
+ public static final int CBD_TAB_COUNT = 2; |
public ClearBrowsingDataTabsFragment() {} |
@@ -36,6 +41,21 @@ public class ClearBrowsingDataTabsFragment extends Fragment { |
super.onCreate(savedInstanceState); |
} |
+ /* |
+ * RTL is broken for ViewPager: https://code.google.com/p/android/issues/detail?id=56831 |
+ * This class works around this issue by inserting the tabs in inverse order if RTL is active. |
+ * The TabLayout needs to be set to LTR for this to work. |
+ * TODO(dullweber): Extract the RTL code into a wrapper class if other places in Chromium need |
+ * it as well. |
+ */ |
+ private static int adjustIndexForDirectionality(int index) { |
+ if (TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) |
+ == ViewCompat.LAYOUT_DIRECTION_RTL) { |
+ return CBD_TAB_COUNT - 1 - index; |
+ } |
+ return index; |
+ } |
+ |
@Override |
public View onCreateView( |
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { |
@@ -50,6 +70,13 @@ public class ClearBrowsingDataTabsFragment extends Fragment { |
// Give the TabLayout the ViewPager. |
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.clear_browsing_data_tabs); |
tabLayout.setupWithViewPager(viewPager); |
+ tabLayout.addOnTabSelectedListener(new TabSelectListener()); |
+ int tabIndex = adjustIndexForDirectionality( |
+ PrefServiceBridge.getInstance().getLastSelectedClearBrowsingDataTab()); |
+ TabLayout.Tab tab = tabLayout.getTabAt(tabIndex); |
+ if (tab != null) { |
+ tab.select(); |
+ } |
// Remove elevation to avoid shadow between title and tabs. |
Preferences activity = (Preferences) getActivity(); |
@@ -68,11 +95,12 @@ public class ClearBrowsingDataTabsFragment extends Fragment { |
@Override |
public int getCount() { |
- return 2; |
+ return CBD_TAB_COUNT; |
} |
@Override |
public Fragment getItem(int position) { |
+ position = adjustIndexForDirectionality(position); |
switch (position) { |
case 0: |
return new ClearBrowsingDataPreferencesBasic(); |
@@ -85,6 +113,7 @@ public class ClearBrowsingDataTabsFragment extends Fragment { |
@Override |
public CharSequence getPageTitle(int position) { |
+ position = adjustIndexForDirectionality(position); |
switch (position) { |
case 0: |
return mContext.getString(R.string.clear_browsing_data_basic_tab_title); |
@@ -95,4 +124,18 @@ public class ClearBrowsingDataTabsFragment extends Fragment { |
} |
} |
} |
+ |
+ private static class TabSelectListener implements TabLayout.OnTabSelectedListener { |
+ @Override |
+ public void onTabSelected(TabLayout.Tab tab) { |
+ int tabIndex = adjustIndexForDirectionality(tab.getPosition()); |
+ PrefServiceBridge.getInstance().setLastSelectedClearBrowsingDataTab(tabIndex); |
+ } |
+ |
+ @Override |
+ public void onTabUnselected(TabLayout.Tab tab) {} |
+ |
+ @Override |
+ public void onTabReselected(TabLayout.Tab tab) {} |
+ } |
} |