Introduce new preference indicating user control.
If the user enables this, then that means that we will respect user's choices for all the preferences, i.e. we will not update the preferences based on the updates from server. On the other hand, if it's disabled, then the rest of the preferences would not be considered. And we'd decide their values based on the values from the DeviceConfig (which in turn come from the server). The controller for the default-transcoding-behavior for apps was also added. Also, renaming the set prop key for enabling-transcode to match the one in DeviceConfig - transcode_enabled. And while we were at it, we renamed the stirng from "disabling transcoding for all apps" to "enabling transcoding for all apps"; and also changed the controller to enable (instead of disable) transcoding. BUG:169327180 Test: manual testing. And added unit test for TranscodeUserControlPreferenceControllerTest. Change-Id: If9b9face51b669f5177be8bfa18f44471f531058
This commit is contained in:
@@ -21,11 +21,21 @@
|
|||||||
android:title="@string/transcode_settings_title"
|
android:title="@string/transcode_settings_title"
|
||||||
settings:searchable="false">
|
settings:searchable="false">
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
android:key="transcode_user_control"
|
||||||
|
android:title="@string/transcode_user_control"
|
||||||
|
settings:controller="com.android.settings.development.transcode.TranscodeUserControlPreferenceController" />
|
||||||
|
|
||||||
<SwitchPreference
|
<SwitchPreference
|
||||||
android:key="transcode_enable_all"
|
android:key="transcode_enable_all"
|
||||||
android:title="@string/transcode_enable_all"
|
android:title="@string/transcode_enable_all"
|
||||||
settings:controller="com.android.settings.development.transcode.TranscodeGlobalTogglePreferenceController" />
|
settings:controller="com.android.settings.development.transcode.TranscodeGlobalTogglePreferenceController" />
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
android:key="transcode_default"
|
||||||
|
android:title="@string/transcode_default"
|
||||||
|
settings:controller="com.android.settings.development.transcode.TranscodeDefaultOptionPreferenceController" />
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="transcode_skip_apps"
|
android:key="transcode_skip_apps"
|
||||||
android:title="@string/transcode_skip_apps"
|
android:title="@string/transcode_skip_apps"
|
||||||
|
@@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 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.development.transcode;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.SystemProperties;
|
||||||
|
|
||||||
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The controller (on the transcode settings screen) indicating that by default we assume that apps
|
||||||
|
* support modern formats.
|
||||||
|
*/
|
||||||
|
public class TranscodeDefaultOptionPreferenceController extends TogglePreferenceController {
|
||||||
|
private static final String TRANSCODE_DEFAULT_SYS_PROP_KEY =
|
||||||
|
"persist.sys.fuse.transcode_default";
|
||||||
|
|
||||||
|
public TranscodeDefaultOptionPreferenceController(Context context, String preferenceKey) {
|
||||||
|
super(context, preferenceKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isChecked() {
|
||||||
|
return !SystemProperties.getBoolean(TRANSCODE_DEFAULT_SYS_PROP_KEY, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setChecked(boolean isChecked) {
|
||||||
|
SystemProperties.set(TRANSCODE_DEFAULT_SYS_PROP_KEY, String.valueOf(!isChecked));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAvailabilityStatus() {
|
||||||
|
return AVAILABLE;
|
||||||
|
}
|
||||||
|
}
|
@@ -22,12 +22,12 @@ import android.os.SystemProperties;
|
|||||||
import com.android.settings.core.TogglePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The controller for the "Disable transcoding for all apps" switch on the transcode settings
|
* The controller for the "Enabling transcoding for all apps" switch on the transcode settings
|
||||||
* screen.
|
* screen.
|
||||||
*/
|
*/
|
||||||
public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceController {
|
public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceController {
|
||||||
|
|
||||||
private static final String TRANSCODE_ENABLED_PROP_KEY = "persist.sys.fuse.transcode";
|
private static final String TRANSCODE_ENABLED_PROP_KEY = "persist.sys.fuse.transcode_enabled";
|
||||||
|
|
||||||
public TranscodeGlobalTogglePreferenceController(Context context,
|
public TranscodeGlobalTogglePreferenceController(Context context,
|
||||||
String preferenceKey) {
|
String preferenceKey) {
|
||||||
@@ -41,12 +41,12 @@ public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceC
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isChecked() {
|
public boolean isChecked() {
|
||||||
return !SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false);
|
return SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setChecked(boolean isChecked) {
|
public boolean setChecked(boolean isChecked) {
|
||||||
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, String.valueOf(!isChecked));
|
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, String.valueOf(isChecked));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 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.development.transcode;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.SystemProperties;
|
||||||
|
|
||||||
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The controller for the User's control (over other transcoding preferences) preference switch on
|
||||||
|
* the transcode settings screen.
|
||||||
|
*/
|
||||||
|
public class TranscodeUserControlPreferenceController extends TogglePreferenceController {
|
||||||
|
private static final String TRANSCODE_USER_CONTROL_SYS_PROP_KEY =
|
||||||
|
"persist.sys.fuse.transcode_user_control";
|
||||||
|
|
||||||
|
public TranscodeUserControlPreferenceController(Context context, String preferenceKey) {
|
||||||
|
super(context, preferenceKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isChecked() {
|
||||||
|
return SystemProperties.getBoolean(TRANSCODE_USER_CONTROL_SYS_PROP_KEY, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setChecked(boolean isChecked) {
|
||||||
|
SystemProperties.set(TRANSCODE_USER_CONTROL_SYS_PROP_KEY, String.valueOf(isChecked));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAvailabilityStatus() {
|
||||||
|
return AVAILABLE;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 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.development.transcode;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.SystemProperties;
|
||||||
|
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
public class TranscodeDefaultOptionPreferenceControllerTest {
|
||||||
|
private static final String TRANSCODE_DEFAULT_SYS_PROP_KEY =
|
||||||
|
"persist.sys.fuse.transcode_default";
|
||||||
|
|
||||||
|
private TranscodeDefaultOptionPreferenceController mUnderTest;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
Context context = ApplicationProvider.getApplicationContext();
|
||||||
|
mUnderTest = new TranscodeDefaultOptionPreferenceController(context, "some_key");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isChecked_whenSysPropSet_shouldReturnFalse() {
|
||||||
|
SystemProperties.set(TRANSCODE_DEFAULT_SYS_PROP_KEY, "true");
|
||||||
|
assertThat(mUnderTest.isChecked()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isChecked_whenSysPropUnset_shouldReturnTrue() {
|
||||||
|
SystemProperties.set(TRANSCODE_DEFAULT_SYS_PROP_KEY, "false");
|
||||||
|
assertThat(mUnderTest.isChecked()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setChecked_withTrue_shouldUnsetSysProp() {
|
||||||
|
mUnderTest.setChecked(true);
|
||||||
|
assertThat(
|
||||||
|
SystemProperties.getBoolean(TRANSCODE_DEFAULT_SYS_PROP_KEY, true)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setChecked_withFalse_shouldSetSysProp() {
|
||||||
|
mUnderTest.setChecked(false);
|
||||||
|
assertThat(
|
||||||
|
SystemProperties.getBoolean(TRANSCODE_DEFAULT_SYS_PROP_KEY, false)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAvailabilityStatus_shouldReturn_isAvailable() {
|
||||||
|
assertThat(mUnderTest.getAvailabilityStatus()).isEqualTo(
|
||||||
|
BasePreferenceController.AVAILABLE);
|
||||||
|
}
|
||||||
|
}
|
@@ -31,7 +31,7 @@ import org.robolectric.RobolectricTestRunner;
|
|||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class TranscodeGlobalTogglePreferenceControllerTest {
|
public class TranscodeGlobalTogglePreferenceControllerTest {
|
||||||
|
|
||||||
private static final String TRANSCODE_ENABLED_PROP_KEY = "persist.sys.fuse.transcode";
|
private static final String TRANSCODE_ENABLED_PROP_KEY = "persist.sys.fuse.transcode_enabled";
|
||||||
|
|
||||||
private TranscodeGlobalTogglePreferenceController mController;
|
private TranscodeGlobalTogglePreferenceController mController;
|
||||||
|
|
||||||
@@ -47,15 +47,15 @@ public class TranscodeGlobalTogglePreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isChecked_whenDisabled_shouldReturnTrue() {
|
public void isChecked_whenDisabled_shouldReturnFalse() {
|
||||||
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "false");
|
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "false");
|
||||||
assertThat(mController.isChecked()).isTrue();
|
assertThat(mController.isChecked()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isChecked_whenEnabled_shouldReturnFalse() {
|
public void isChecked_whenEnabled_shouldReturnTrue() {
|
||||||
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "true");
|
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "true");
|
||||||
assertThat(mController.isChecked()).isFalse();
|
assertThat(mController.isChecked()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -64,7 +64,7 @@ public class TranscodeGlobalTogglePreferenceControllerTest {
|
|||||||
mController.setChecked(true);
|
mController.setChecked(true);
|
||||||
|
|
||||||
// Verify the system property was updated.
|
// Verify the system property was updated.
|
||||||
assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, true)).isFalse();
|
assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -73,6 +73,6 @@ public class TranscodeGlobalTogglePreferenceControllerTest {
|
|||||||
mController.setChecked(false);
|
mController.setChecked(false);
|
||||||
|
|
||||||
// Verify the system property was updated.
|
// Verify the system property was updated.
|
||||||
assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false)).isTrue();
|
assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, true)).isFalse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 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.development.transcode;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.SystemProperties;
|
||||||
|
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
public class TranscodeUserControlPreferenceControllerTest {
|
||||||
|
private static final String TRANSCODE_USER_CONTROL_SYS_PROP_KEY =
|
||||||
|
"persist.sys.fuse.transcode_user_control";
|
||||||
|
|
||||||
|
private TranscodeUserControlPreferenceController mUnderTest;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
Context context = ApplicationProvider.getApplicationContext();
|
||||||
|
mUnderTest = new TranscodeUserControlPreferenceController(context, "some_key");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isChecked_whenSysPropSet_shouldReturnTrue() {
|
||||||
|
SystemProperties.set(TRANSCODE_USER_CONTROL_SYS_PROP_KEY, "true");
|
||||||
|
assertThat(mUnderTest.isChecked()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isChecked_whenSysPropUnset_shouldReturnFalse() {
|
||||||
|
SystemProperties.set(TRANSCODE_USER_CONTROL_SYS_PROP_KEY, "false");
|
||||||
|
assertThat(mUnderTest.isChecked()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setChecked_withTrue_shouldSetSysProp() {
|
||||||
|
mUnderTest.setChecked(true);
|
||||||
|
assertThat(
|
||||||
|
SystemProperties.getBoolean(TRANSCODE_USER_CONTROL_SYS_PROP_KEY, false)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setChecked_withFalse_shouldUnsetSysProp() {
|
||||||
|
mUnderTest.setChecked(false);
|
||||||
|
assertThat(
|
||||||
|
SystemProperties.getBoolean(TRANSCODE_USER_CONTROL_SYS_PROP_KEY, true)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAvailabilityStatus_shouldReturn_isAvailable() {
|
||||||
|
assertThat(mUnderTest.getAvailabilityStatus()).isEqualTo(
|
||||||
|
BasePreferenceController.AVAILABLE);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user