Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f660e720 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove empty space in Usage access"

parents 27bbfb73 465ffcd4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -28,9 +28,9 @@
        settings:layout_behavior="com.android.settings.widget.FloatingAppBarScrollingViewBehavior">

        <FrameLayout
            android:id="@+id/content_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingTop="@dimen/app_bar_height">
            android:layout_height="match_parent">

            <LinearLayout
                android:id="@+id/list_container"
+31 −8
Original line number Diff line number Diff line
@@ -185,7 +185,6 @@ public class ManageApplications extends InstrumentedFragment
    private ApplicationsAdapter mApplications;

    private View mLoadingContainer;

    private View mListContainer;
    private RecyclerView mRecyclerView;
    private SearchView mSearchView;
@@ -216,10 +215,15 @@ public class ManageApplications extends InstrumentedFragment
            LIST_TYPE_MAIN,
            LIST_TYPE_STORAGE));

    @VisibleForTesting
    View mSpinnerHeader;
    @VisibleForTesting
    FilterSpinnerAdapter mFilterAdapter;
    @VisibleForTesting
    View mContentContainer;

    private View mRootView;
    private View mSpinnerHeader;
    private Spinner mFilterSpinner;
    private FilterSpinnerAdapter mFilterAdapter;
    private IUsageStatsManager mUsageStatsManager;
    private UserManager mUserManager;
    private NotificationBackend mNotificationBackend;
@@ -326,6 +330,7 @@ public class ManageApplications extends InstrumentedFragment
            Bundle savedInstanceState) {
        mRootView = inflater.inflate(R.layout.manage_applications_apps, null);
        mLoadingContainer = mRootView.findViewById(R.id.loading_container);
        mContentContainer = mRootView.findViewById(R.id.content_container);
        mListContainer = mRootView.findViewById(R.id.list_container);
        if (mListContainer != null) {
            // Create adapter and list view here
@@ -794,8 +799,7 @@ public class ManageApplications extends InstrumentedFragment
            }
            mFilterOptions.add(filter);
            Collections.sort(mFilterOptions);
            mManageApplications.mSpinnerHeader.setVisibility(
                    mFilterOptions.size() > 1 ? View.VISIBLE : View.GONE);
            updateFilterView(mFilterOptions.size() > 1);
            notifyDataSetChanged();
            if (mFilterOptions.size() == 1) {
                if (DEBUG) {
@@ -826,8 +830,7 @@ public class ManageApplications extends InstrumentedFragment
                        filter.getTitle()));
            }
            Collections.sort(mFilterOptions);
            mManageApplications.mSpinnerHeader.setVisibility(
                    mFilterOptions.size() > 1 ? View.VISIBLE : View.GONE);
            updateFilterView(mFilterOptions.size() > 1);
            notifyDataSetChanged();
            if (mManageApplications.mFilter == filter) {
                if (mFilterOptions.size() > 0) {
@@ -850,6 +853,26 @@ public class ManageApplications extends InstrumentedFragment
        public CharSequence getItem(int position) {
            return mContext.getText(mFilterOptions.get(position).getTitle());
        }

        @VisibleForTesting
        void updateFilterView(boolean hasFilter) {
            // If we need to add a floating filter in this screen, we should have an extra top
            // padding for putting floating filter view. Otherwise, the content of list will be
            // overlapped by floating filter.
            if (hasFilter) {
                mManageApplications.mSpinnerHeader.setVisibility(View.VISIBLE);
                mManageApplications.mContentContainer.setPadding(0 /* left */,
                        mContext.getResources().getDimensionPixelSize(
                                R.dimen.app_bar_height) /* top */,
                        0 /* right */,
                        0 /* bottom */);
            } else {
                mManageApplications.mSpinnerHeader.setVisibility(View.GONE);
                mManageApplications.mContentContainer.setPadding(0 /* left */, 0 /* top */,
                        0 /* right */,
                        0 /* bottom */);
            }
        }
    }

    static class ApplicationsAdapter extends RecyclerView.Adapter<ApplicationViewHolder>
+29 −0
Original line number Diff line number Diff line
@@ -91,6 +91,8 @@ public class ManageApplicationsTest {
    private UserManager mUserManager;
    @Mock
    private PackageManager mPackageManager;

    private Context mContext;
    private MenuItem mAppReset;
    private MenuItem mSortRecent;
    private MenuItem mSortFrequent;
@@ -99,6 +101,7 @@ public class ManageApplicationsTest {
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = RuntimeEnvironment.application;
        mAppReset = new RoboMenuItem(R.id.reset_app_preferences);
        mSortRecent = new RoboMenuItem(R.id.sort_order_recent_notification);
        mSortFrequent = new RoboMenuItem(R.id.sort_order_frequent_notification);
@@ -107,6 +110,7 @@ public class ManageApplicationsTest {
        when(mState.getBackgroundLooper()).thenReturn(Looper.myLooper());

        mFragment = spy(new ManageApplications());
        when(mFragment.getContext()).thenReturn(mContext);
        when(mFragment.getActivity()).thenReturn(mActivity);
        when(mActivity.getResources()).thenReturn(mResources);
        when(mActivity.getSystemService(UserManager.class)).thenReturn(mUserManager);
@@ -460,6 +464,31 @@ public class ManageApplicationsTest {
        assertThat(mFragment.mSortOrder).isEqualTo(mSortFrequent.getItemId());
    }

    @Test
    public void updateFilterView_hasFilterSet_shouldShowFilterAndHavePaddingTop() {
        mFragment.mContentContainer = new View(mContext);
        mFragment.mSpinnerHeader = new View(mContext);
        mFragment.mFilterAdapter = new ManageApplications.FilterSpinnerAdapter(mFragment);

        mFragment.mFilterAdapter.updateFilterView(true);

        assertThat(mFragment.mSpinnerHeader.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(mFragment.mContentContainer.getPaddingTop()).isEqualTo(
                mContext.getResources().getDimensionPixelSize(R.dimen.app_bar_height));
    }

    @Test
    public void updateFilterView_noFilterSet_shouldHideFilterAndNoPaddingTop() {
        mFragment.mContentContainer = new View(mContext);
        mFragment.mSpinnerHeader = new View(mContext);
        mFragment.mFilterAdapter = new ManageApplications.FilterSpinnerAdapter(mFragment);

        mFragment.mFilterAdapter.updateFilterView(false);

        assertThat(mFragment.mSpinnerHeader.getVisibility()).isEqualTo(View.GONE);
        assertThat(mFragment.mContentContainer.getPaddingTop()).isEqualTo(0);
    }

    private void setUpOptionMenus() {
        when(mMenu.findItem(anyInt())).thenAnswer(invocation -> {
            final Object[] args = invocation.getArguments();