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

Commit 964ff7aa authored by Tony Mantler's avatar Tony Mantler Committed by Android (Google) Code Review
Browse files

Merge "Move SerialNumberPreferenceController to SettingsLib"

parents ae084747 2cb1c65a
Loading
Loading
Loading
Loading
+7 −35
Original line number Diff line number Diff line
@@ -18,47 +18,19 @@ package com.android.settings.deviceinfo;

import android.content.Context;
import android.os.Build;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.deviceinfo.AbstractSerialNumberPreferenceController;

public class SerialNumberPreferenceController extends AbstractPreferenceController implements
/**
 * Preference controller for displaying device serial number. Wraps {@link Build#getSerial()}.
 */
public class SerialNumberPreferenceController extends
        AbstractSerialNumberPreferenceController implements
        PreferenceControllerMixin {

    private static final String KEY_SERIAL_NUMBER = "serial_number";

    private final String mSerialNumber;

    public SerialNumberPreferenceController(Context context) {
        this(context, Build.getSerial());
    }

    @VisibleForTesting
    SerialNumberPreferenceController(Context context, String serialNumber) {
        super(context);
        mSerialNumber = serialNumber;
    }

    @Override
    public boolean isAvailable() {
        return !TextUtils.isEmpty(mSerialNumber);
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        final Preference pref = screen.findPreference(KEY_SERIAL_NUMBER);
        if (pref != null) {
            pref.setSummary(mSerialNumber);
        }
    }

    @Override
    public String getPreferenceKey() {
        return KEY_SERIAL_NUMBER;
    }
    // This space intentionally left blank
}
+0 −97
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.deviceinfo;

import android.content.Context;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;

import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Answers.RETURNS_DEEP_STUBS;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class SerialNumberPreferenceControllerTest {

    @Mock(answer = RETURNS_DEEP_STUBS)
    private Context mContext;
    @Mock(answer = RETURNS_DEEP_STUBS)
    private PreferenceScreen mScreen;

    private SerialNumberPreferenceController mController;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testIsAvaiable_noSerial_shouldReturnFalse() {
        mController = new SerialNumberPreferenceController(mContext, null);

        assertThat(mController.isAvailable()).isFalse();
    }

    @Test
    public void testIsAvaiable_hasSerial_shouldReturnTrue() {
        mController = new SerialNumberPreferenceController(mContext, "123");

        assertThat(mController.isAvailable()).isTrue();
    }

    @Test
    public void testDisplay_noSerial_shouldHidePreference() {
        final Preference preference = mock(Preference.class);
        when(mScreen.getPreferenceCount()).thenReturn(1);
        when(mScreen.getPreference(0)).thenReturn(preference);
        mController = new SerialNumberPreferenceController(mContext, null);
        when(preference.getKey()).thenReturn(mController.getPreferenceKey());

        mController.displayPreference(mScreen);

        verify(mScreen).removePreference(any(Preference.class));
    }

    @Test
    public void testDisplay_hasSerial_shouldSummary() {
        final String serial = "123";
        final Preference preference = mock(Preference.class);
        when(mScreen.findPreference(anyString())).thenReturn(preference);

        mController = new SerialNumberPreferenceController(mContext, serial);
        mController.displayPreference(mScreen);

        verify(mScreen, never()).removePreference(any(Preference.class));
        verify(preference).setSummary(serial);
    }
}