Chromium Code Reviews| 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..e6670a1f29d56f9693f430a8e3c6885125af7d6e 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,17 @@ 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 +42,19 @@ 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. |
| + */ |
| + private int fixIndex(int index) { |
|
msramek
2017/01/25 15:24:23
What does "fix" mean in this context? How about ad
dullweber
2017/01/25 17:22:06
Right, somehow I have to make use of the additiona
|
| + 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 +69,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 = |
| + fixIndex(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(); |
| @@ -58,7 +84,7 @@ public class ClearBrowsingDataTabsFragment extends Fragment { |
| return view; |
| } |
| - private static class ClearBrowsingDataPagerAdapter extends FragmentPagerAdapter { |
| + private class ClearBrowsingDataPagerAdapter extends FragmentPagerAdapter { |
|
msramek
2017/01/25 15:24:23
This inner class could keep being static. There is
dullweber
2017/01/25 17:22:06
fixIndex and inner classes are static now
|
| private final Context mContext; |
| ClearBrowsingDataPagerAdapter(FragmentManager fm, Context context) { |
| @@ -68,11 +94,12 @@ public class ClearBrowsingDataTabsFragment extends Fragment { |
| @Override |
| public int getCount() { |
| - return 2; |
| + return CBD_TAB_COUNT; |
| } |
| @Override |
| public Fragment getItem(int position) { |
| + position = fixIndex(position); |
| switch (position) { |
| case 0: |
| return new ClearBrowsingDataPreferencesBasic(); |
| @@ -85,6 +112,7 @@ public class ClearBrowsingDataTabsFragment extends Fragment { |
| @Override |
| public CharSequence getPageTitle(int position) { |
| + position = fixIndex(position); |
| switch (position) { |
| case 0: |
| return mContext.getString(R.string.clear_browsing_data_basic_tab_title); |
| @@ -95,4 +123,18 @@ public class ClearBrowsingDataTabsFragment extends Fragment { |
| } |
| } |
| } |
| + |
| + private class TabSelectListener implements TabLayout.OnTabSelectedListener { |
|
msramek
2017/01/25 15:24:23
Ditto, this inner class could be static.
dullweber
2017/01/25 17:22:06
Done.
|
| + @Override |
| + public void onTabSelected(TabLayout.Tab tab) { |
| + int tabIndex = fixIndex(tab.getPosition()); |
| + PrefServiceBridge.getInstance().setLastSelectedClearBrowsingDataTab(tabIndex); |
| + } |
| + |
| + @Override |
| + public void onTabUnselected(TabLayout.Tab tab) {} |
| + |
| + @Override |
| + public void onTabReselected(TabLayout.Tab tab) {} |
| + } |
| } |