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

Commit bab104e7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Disable the sync now menu while no any synced item" into rvc-dev am:...

Merge "Disable the sync now menu while no any synced item" into rvc-dev am: cdaf5d38 am: 4758893d

Change-Id: Ia276b3d9dc6080c7fb9e7626124091e29d13d351
parents b8e2005b 4758893d
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog;
import androidx.preference.Preference;

@@ -221,9 +222,8 @@ public class AccountSyncSettings extends AccountPreferenceBase {
        // Note that this also counts accounts that are not currently displayed
        boolean syncActive = !ContentResolver.getCurrentSyncsAsUser(
                mUserHandle.getIdentifier()).isEmpty();
        menu.findItem(MENU_SYNC_NOW_ID).setVisible(!syncActive);
        menu.findItem(MENU_SYNC_NOW_ID).setVisible(!syncActive).setEnabled(enabledSyncNowMenu());
        menu.findItem(MENU_SYNC_CANCEL_ID).setVisible(syncActive);

    }

    @Override
@@ -562,6 +562,23 @@ public class AccountSyncSettings extends AccountPreferenceBase {
        return R.string.help_url_accounts;
    }

    @VisibleForTesting
    boolean enabledSyncNowMenu() {
        boolean enabled = false;
        for (int i = 0, count = getPreferenceScreen().getPreferenceCount(); i < count; i++) {
            final Preference pref = getPreferenceScreen().getPreference(i);
            if (!(pref instanceof SyncStateSwitchPreference)) {
                continue;
            }
            final SyncStateSwitchPreference syncPref = (SyncStateSwitchPreference) pref;
            if (syncPref.isChecked()) {
                enabled = true;
                break;
            }
        }
        return enabled;
    }

    private static String formatSyncDate(Context context, Date date) {
        return DateUtils.formatDateTime(context, date.getTime(),
                DateUtils.FORMAT_SHOW_DATE
+56 −6
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */
package com.android.settings.accounts;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -24,10 +26,13 @@ import android.content.Context;
import android.os.UserHandle;

import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;

import com.android.settings.testutils.shadow.ShadowContentResolver;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
@@ -38,6 +43,14 @@ import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowContentResolver.class})
public class AccountSyncSettingsTest {
    private Context mContext;
    private AccountSyncSettings mAccountSyncSettings;

    @Before
    public void setUp() {
        mContext = RuntimeEnvironment.application;
        mAccountSyncSettings = spy(new TestAccountSyncSettings(mContext));
    }

    @After
    public void tearDown() {
@@ -46,15 +59,52 @@ public class AccountSyncSettingsTest {

    @Test
    public void onPreferenceTreeClick_nullAuthority_shouldNotCrash() {
        final Context context = RuntimeEnvironment.application;
        final AccountSyncSettings settings = spy(new AccountSyncSettings());
        when(settings.getActivity()).thenReturn(mock(FragmentActivity.class));
        final SyncStateSwitchPreference preference = new SyncStateSwitchPreference(context,
        when(mAccountSyncSettings.getActivity()).thenReturn(mock(FragmentActivity.class));
        final SyncStateSwitchPreference preference = new SyncStateSwitchPreference(mContext,
                new Account("acct1", "type1"), "" /* authority */, "testPackage", 1 /* uid */);
        preference.setOneTimeSyncMode(false);
        ReflectionHelpers.setField(settings, "mUserHandle", UserHandle.CURRENT);
        ReflectionHelpers.setField(mAccountSyncSettings, "mUserHandle", UserHandle.CURRENT);

        settings.onPreferenceTreeClick(preference);
        mAccountSyncSettings.onPreferenceTreeClick(preference);
        // no crash
    }

    @Test
    public void enabledSyncNowMenu_noSyncStateSwitchPreference_returnFalse() {
        assertThat(mAccountSyncSettings.enabledSyncNowMenu()).isFalse();
    }

    @Test
    public void enabledSyncNowMenu_addSyncStateSwitchPreferenceAndSwitchOn_returnTrue() {
        final SyncStateSwitchPreference preference = new SyncStateSwitchPreference(mContext,
                new Account("acct1", "type1"), "" /* authority */, "testPackage", 1 /* uid */);
        preference.setChecked(true);
        mAccountSyncSettings.getPreferenceScreen().addPreference(preference);

        assertThat(mAccountSyncSettings.enabledSyncNowMenu()).isTrue();
    }

    @Test
    public void enabledSyncNowMenu_addSyncStateSwitchPreferenceAndSwitchOff_returnFalse() {
        final SyncStateSwitchPreference preference = new SyncStateSwitchPreference(mContext,
                new Account("acct1", "type1"), "" /* authority */, "testPackage", 1 /* uid */);
        preference.setChecked(false);
        mAccountSyncSettings.getPreferenceScreen().addPreference(preference);

        assertThat(mAccountSyncSettings.enabledSyncNowMenu()).isFalse();
    }

    public static class TestAccountSyncSettings extends AccountSyncSettings {
        private PreferenceScreen mScreen;

        public TestAccountSyncSettings(Context context) {
            final PreferenceManager preferenceManager = new PreferenceManager(context);
            mScreen = preferenceManager.createPreferenceScreen(context);
        }

        @Override
        public PreferenceScreen getPreferenceScreen() {
            return mScreen;
        }
    }
}
+2 −2

File changed.

Contains only whitespace changes.