Merge "Polish developer option enable verbose vendor logging"

This commit is contained in:
Rambo Wang
2020-02-21 06:36:56 +00:00
committed by Android (Google) Code Review
3 changed files with 34 additions and 12 deletions

View File

@@ -154,8 +154,7 @@
<SwitchPreference <SwitchPreference
android:key="enable_verbose_vendor_logging" android:key="enable_verbose_vendor_logging"
android:title="@string/enable_verbose_vendor_logging" android:title="@string/enable_verbose_vendor_logging"
android:summary="@string/enable_verbose_vendor_logging_summary" android:summary="@string/enable_verbose_vendor_logging_summary" />
/>
<SwitchPreference <SwitchPreference
android:key="automatic_system_server_heap_dumps" android:key="automatic_system_server_heap_dumps"

View File

@@ -133,7 +133,8 @@ public class EnableVerboseVendorLoggingPreferenceController
} }
/** Return a {@IDumpstateDevice} instance or null if service is not available. */ /** Return a {@IDumpstateDevice} instance or null if service is not available. */
private @Nullable IDumpstateDevice getDumpstateDeviceService() { @VisibleForTesting
@Nullable IDumpstateDevice getDumpstateDeviceService() {
IDumpstateDevice service = null; IDumpstateDevice service = null;
try { try {
service = android.hardware.dumpstate.V1_1.IDumpstateDevice service = android.hardware.dumpstate.V1_1.IDumpstateDevice

View File

@@ -18,10 +18,13 @@ package com.android.settings.development;
import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.hardware.dumpstate.V1_1.IDumpstateDevice;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
@@ -34,24 +37,32 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import java.lang.reflect.Field;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public final class EnableVerboseVendorLoggingPreferenceControllerTest { public final class EnableVerboseVendorLoggingPreferenceControllerTest {
@Mock @Mock
private SwitchPreference mPreference; private SwitchPreference mPreference;
@Mock @Mock
private PreferenceScreen mPreferenceScreen; private PreferenceScreen mPreferenceScreen;
@Mock
IDumpstateDevice mIDumpstateDevice;
private Context mContext; private Context mContext;
private EnableVerboseVendorLoggingPreferenceController mController; private EnableVerboseVendorLoggingPreferenceController mController;
@Before @Before
public void setUp() { public void setUp() throws Exception {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mController = new EnableVerboseVendorLoggingPreferenceController(mContext); mController = spy(new EnableVerboseVendorLoggingPreferenceController(mContext));
doReturn(mIDumpstateDevice).when(mController).getDumpstateDeviceService();
// bypass if IDumpstateDevice service not avalaible at all // mock with Dumpstate HAL v1.1
org.junit.Assume.assumeTrue(mController.isIDumpstateDeviceV1_1ServiceAvailable()); Field f = EnableVerboseVendorLoggingPreferenceController.class
.getDeclaredField("mDumpstateHalVersion");
f.setAccessible(true);
f.setInt(mController, 1 /* DUMPSTATE_HAL_VERSION_1_1 */);
when(mPreferenceScreen.findPreference(mController.getPreferenceKey())) when(mPreferenceScreen.findPreference(mController.getPreferenceKey()))
.thenReturn(mPreference); .thenReturn(mPreference);
@@ -59,7 +70,9 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest {
} }
@Test @Test
public void onPreferenceChange_settingEnable_enableVendorLoggingShouldBeOn() { public void onPreferenceChange_settingEnable_enableVendorLoggingShouldBeOn() throws Exception {
doReturn(true).when(mIDumpstateDevice).getVerboseLoggingEnabled();
mController.onPreferenceChange(mPreference, true /* new value */); mController.onPreferenceChange(mPreference, true /* new value */);
final boolean enabled = mController.getVerboseLoggingEnabled(); final boolean enabled = mController.getVerboseLoggingEnabled();
@@ -67,7 +80,10 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest {
} }
@Test @Test
public void onPreferenceChange_settingDisable_enableVendorLoggingShouldBeOff() { public void onPreferenceChange_settingDisable_enableVendorLoggingShouldBeOff()
throws Exception {
doReturn(false).when(mIDumpstateDevice).getVerboseLoggingEnabled();
mController.onPreferenceChange(mPreference, false /* new value */); mController.onPreferenceChange(mPreference, false /* new value */);
final boolean enabled = mController.getVerboseLoggingEnabled(); final boolean enabled = mController.getVerboseLoggingEnabled();
@@ -75,7 +91,9 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest {
} }
@Test @Test
public void updateState_settingDisabled_preferenceShouldNotBeChecked() { public void updateState_settingDisabled_preferenceShouldNotBeChecked() throws Exception {
doReturn(false).when(mIDumpstateDevice).getVerboseLoggingEnabled();
mController.setVerboseLoggingEnabled(false); mController.setVerboseLoggingEnabled(false);
mController.updateState(mPreference); mController.updateState(mPreference);
@@ -83,7 +101,9 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest {
} }
@Test @Test
public void updateState_settingEnabled_preferenceShouldBeChecked() { public void updateState_settingEnabled_preferenceShouldBeChecked() throws Exception {
doReturn(true).when(mIDumpstateDevice).getVerboseLoggingEnabled();
mController.setVerboseLoggingEnabled(true); mController.setVerboseLoggingEnabled(true);
mController.updateState(mPreference); mController.updateState(mPreference);
@@ -91,7 +111,9 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest {
} }
@Test @Test
public void onDeveloperOptionDisabled_shouldDisablePreference() { public void onDeveloperOptionDisabled_shouldDisablePreference() throws Exception {
doReturn(false).when(mIDumpstateDevice).getVerboseLoggingEnabled();
mController.onDeveloperOptionsSwitchDisabled(); mController.onDeveloperOptionsSwitchDisabled();
final boolean enabled = mController.getVerboseLoggingEnabled(); final boolean enabled = mController.getVerboseLoggingEnabled();