Merge "Remove support for converting from FDE to FBE" am: 804dc16a03
am: 629db5f9f8
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2026904 Change-Id: I6d5b12840e9940ecb5d076591ca8514b0085f438
This commit is contained in:
@@ -1,46 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_marginBottom="12dp" >
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="12dp"
|
|
||||||
android:layout_marginEnd="12dp"
|
|
||||||
android:layout_marginTop="12dp"
|
|
||||||
android:textSize="18sp"
|
|
||||||
android:text="@string/confirm_convert_to_fbe_warning" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
<Button
|
|
||||||
android:id="@+id/button_confirm_convert_fbe"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="bottom"
|
|
||||||
android:layout_marginBottom="12dp"
|
|
||||||
android:text="@string/button_confirm_convert_fbe" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
@@ -1,46 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Copyright (C) 2015 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_marginBottom="12dp" >
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="@dimen/preference_no_icon_padding_start"
|
|
||||||
android:layout_marginEnd="12dp"
|
|
||||||
android:layout_marginTop="12dp"
|
|
||||||
android:textSize="18sp"
|
|
||||||
android:text="@string/convert_to_fbe_warning" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
<Button
|
|
||||||
android:id="@+id/button_convert_fbe"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="bottom"
|
|
||||||
android:layout_marginBottom="12dp"
|
|
||||||
android:text="@string/button_convert_fbe" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
@@ -11403,11 +11403,6 @@
|
|||||||
<!-- Title for the See more preference item in Special app access settings [CHAR LIMIT=30] -->
|
<!-- Title for the See more preference item in Special app access settings [CHAR LIMIT=30] -->
|
||||||
<string name="special_access_more">See more</string>
|
<string name="special_access_more">See more</string>
|
||||||
|
|
||||||
<!-- Developer option to convert to file encryption - final warning -->
|
|
||||||
<string name="confirm_convert_to_fbe_warning">Really wipe user data and convert to file encryption?</string>
|
|
||||||
<!-- Developer option to convert to file encryption - final button -->
|
|
||||||
<string name="button_confirm_convert_fbe">Wipe and convert</string>
|
|
||||||
|
|
||||||
<!-- Reset rate-limiting in the system service ShortcutManager. "ShortcutManager" is the name of a system service and not translatable.
|
<!-- Reset rate-limiting in the system service ShortcutManager. "ShortcutManager" is the name of a system service and not translatable.
|
||||||
If the word "rate-limit" is hard to translate, use "Reset ShortcutManager API call limit" as the source text, which means
|
If the word "rate-limit" is hard to translate, use "Reset ShortcutManager API call limit" as the source text, which means
|
||||||
the same thing in this context.
|
the same thing in this context.
|
||||||
|
@@ -88,12 +88,6 @@
|
|||||||
android:summary="@string/runningservices_settings_summary"
|
android:summary="@string/runningservices_settings_summary"
|
||||||
android:fragment="com.android.settings.applications.RunningServices" />
|
android:fragment="com.android.settings.applications.RunningServices" />
|
||||||
|
|
||||||
<Preference
|
|
||||||
android:key="convert_to_file_encryption"
|
|
||||||
android:title="@string/convert_to_file_encryption"
|
|
||||||
android:summary="@string/convert_to_file_encryption_enabled"
|
|
||||||
android:fragment="com.android.settings.applications.ConvertToFbe" />
|
|
||||||
|
|
||||||
<com.android.settings.development.ColorModePreference
|
<com.android.settings.development.ColorModePreference
|
||||||
android:key="picture_color_mode"
|
android:key="picture_color_mode"
|
||||||
android:title="@string/picture_color_mode"
|
android:title="@string/picture_color_mode"
|
||||||
|
@@ -1,55 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.applications;
|
|
||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.Button;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
|
||||||
|
|
||||||
public class ConfirmConvertToFbe extends SettingsPreferenceFragment {
|
|
||||||
static final String TAG = "ConfirmConvertToFBE";
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
|
||||||
Bundle savedInstanceState) {
|
|
||||||
View rootView = inflater.inflate(R.layout.confirm_convert_fbe, null);
|
|
||||||
|
|
||||||
final Button button = (Button) rootView.findViewById(R.id.button_confirm_convert_fbe);
|
|
||||||
button.setOnClickListener(new View.OnClickListener() {
|
|
||||||
public void onClick(View v) {
|
|
||||||
Intent intent = new Intent(Intent.ACTION_FACTORY_RESET);
|
|
||||||
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
|
|
||||||
intent.setPackage("android");
|
|
||||||
intent.putExtra(Intent.EXTRA_REASON, "convert_fbe");
|
|
||||||
getActivity().sendBroadcast(intent);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return rootView;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMetricsCategory() {
|
|
||||||
return SettingsEnums.CONVERT_FBE_CONFIRM;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,97 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2015 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.applications;
|
|
||||||
|
|
||||||
import android.annotation.Nullable;
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.app.settings.SettingsEnums;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.res.Resources;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.Button;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settings.core.InstrumentedFragment;
|
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
|
||||||
|
|
||||||
/* Class to prompt for conversion of userdata to file based encryption
|
|
||||||
*/
|
|
||||||
public class ConvertToFbe extends InstrumentedFragment {
|
|
||||||
static final String TAG = "ConvertToFBE";
|
|
||||||
private static final int KEYGUARD_REQUEST = 55;
|
|
||||||
|
|
||||||
private boolean runKeyguardConfirmation(int request) {
|
|
||||||
Resources res = getActivity().getResources();
|
|
||||||
final ChooseLockSettingsHelper.Builder builder =
|
|
||||||
new ChooseLockSettingsHelper.Builder(getActivity(), this);
|
|
||||||
return builder.setRequestCode(request)
|
|
||||||
.setTitle(res.getText(R.string.convert_to_file_encryption))
|
|
||||||
.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
getActivity().setTitle(R.string.convert_to_file_encryption);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
|
||||||
Bundle savedInstanceState) {
|
|
||||||
View rootView = inflater.inflate(R.layout.convert_fbe, null);
|
|
||||||
|
|
||||||
final Button button = rootView.findViewById(R.id.button_convert_fbe);
|
|
||||||
button.setOnClickListener(v -> {
|
|
||||||
if (!runKeyguardConfirmation(KEYGUARD_REQUEST)) {
|
|
||||||
convert();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return rootView;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
|
||||||
|
|
||||||
if (requestCode != KEYGUARD_REQUEST) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the user entered a valid keyguard credential, start the conversion
|
|
||||||
// process
|
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
|
||||||
convert();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void convert() {
|
|
||||||
new SubSettingLauncher(getContext())
|
|
||||||
.setDestination(ConfirmConvertToFbe.class.getName())
|
|
||||||
.setTitleRes(R.string.convert_to_file_encryption)
|
|
||||||
.setSourceMetricsCategory(getMetricsCategory())
|
|
||||||
.launch();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMetricsCategory() {
|
|
||||||
return SettingsEnums.CONVERT_FBE;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -477,7 +477,6 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
|
|||||||
controllers.add(new HdcpCheckingPreferenceController(context));
|
controllers.add(new HdcpCheckingPreferenceController(context));
|
||||||
controllers.add(new BluetoothSnoopLogPreferenceController(context));
|
controllers.add(new BluetoothSnoopLogPreferenceController(context));
|
||||||
controllers.add(new OemUnlockPreferenceController(context, activity, fragment));
|
controllers.add(new OemUnlockPreferenceController(context, activity, fragment));
|
||||||
controllers.add(new FileEncryptionPreferenceController(context));
|
|
||||||
controllers.add(new PictureColorModePreferenceController(context, lifecycle));
|
controllers.add(new PictureColorModePreferenceController(context, lifecycle));
|
||||||
controllers.add(new WebViewAppPreferenceController(context));
|
controllers.add(new WebViewAppPreferenceController(context));
|
||||||
controllers.add(new CoolColorTemperaturePreferenceController(context));
|
controllers.add(new CoolColorTemperaturePreferenceController(context));
|
||||||
|
@@ -1,85 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2017 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;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.os.RemoteException;
|
|
||||||
import android.os.ServiceManager;
|
|
||||||
import android.os.storage.IStorageManager;
|
|
||||||
import android.text.TextUtils;
|
|
||||||
import android.sysprop.CryptoProperties;
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
|
||||||
import androidx.preference.Preference;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
|
||||||
import com.android.settingslib.development.DeveloperOptionsPreferenceController;
|
|
||||||
|
|
||||||
public class FileEncryptionPreferenceController extends DeveloperOptionsPreferenceController
|
|
||||||
implements PreferenceControllerMixin {
|
|
||||||
|
|
||||||
private static final String KEY_CONVERT_FBE = "convert_to_file_encryption";
|
|
||||||
private static final String KEY_STORAGE_MANAGER = "mount";
|
|
||||||
|
|
||||||
private final IStorageManager mStorageManager;
|
|
||||||
|
|
||||||
public FileEncryptionPreferenceController(Context context) {
|
|
||||||
super(context);
|
|
||||||
|
|
||||||
mStorageManager = getStorageManager();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAvailable() {
|
|
||||||
if (mStorageManager == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
return mStorageManager.isConvertibleToFBE();
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPreferenceKey() {
|
|
||||||
return KEY_CONVERT_FBE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateState(Preference preference) {
|
|
||||||
if (CryptoProperties.type().orElse(CryptoProperties.type_values.NONE) !=
|
|
||||||
CryptoProperties.type_values.FILE) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
mPreference.setEnabled(false);
|
|
||||||
mPreference.setSummary(
|
|
||||||
mContext.getResources().getString(R.string.convert_to_file_encryption_done));
|
|
||||||
}
|
|
||||||
|
|
||||||
private IStorageManager getStorageManager() {
|
|
||||||
try {
|
|
||||||
return IStorageManager.Stub.asInterface(
|
|
||||||
ServiceManager.getService(KEY_STORAGE_MANAGER));
|
|
||||||
} catch (VerifyError e) {
|
|
||||||
// Used for tests since Robolectric cannot initialize this class.
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -15,7 +15,6 @@ com.android.settings.applications.appinfo.ExternalSourcesDetails
|
|||||||
com.android.settings.applications.appinfo.WriteSettingsDetails
|
com.android.settings.applications.appinfo.WriteSettingsDetails
|
||||||
com.android.settings.applications.AppLaunchSettings
|
com.android.settings.applications.AppLaunchSettings
|
||||||
com.android.settings.applications.AppStorageSettings
|
com.android.settings.applications.AppStorageSettings
|
||||||
com.android.settings.applications.ConfirmConvertToFbe
|
|
||||||
com.android.settings.applications.ProcessStatsDetail
|
com.android.settings.applications.ProcessStatsDetail
|
||||||
com.android.settings.applications.ProcessStatsSummary
|
com.android.settings.applications.ProcessStatsSummary
|
||||||
com.android.settings.applications.ProcessStatsUi
|
com.android.settings.applications.ProcessStatsUi
|
||||||
|
@@ -1,116 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2017 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;
|
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
|
||||||
import static org.mockito.Mockito.never;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.os.RemoteException;
|
|
||||||
import android.os.storage.IStorageManager;
|
|
||||||
import android.sysprop.CryptoProperties;
|
|
||||||
import androidx.preference.Preference;
|
|
||||||
import androidx.preference.PreferenceScreen;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.robolectric.RobolectricTestRunner;
|
|
||||||
import org.robolectric.RuntimeEnvironment;
|
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
|
||||||
public class FileEncryptionPreferenceControllerTest {
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private Preference mPreference;
|
|
||||||
@Mock
|
|
||||||
private PreferenceScreen mPreferenceScreen;
|
|
||||||
@Mock
|
|
||||||
private IStorageManager mStorageManager;
|
|
||||||
|
|
||||||
private Context mContext;
|
|
||||||
private FileEncryptionPreferenceController mController;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setup() {
|
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
mContext = RuntimeEnvironment.application;
|
|
||||||
mController = new FileEncryptionPreferenceController(mContext);
|
|
||||||
when(mPreferenceScreen.findPreference(mController.getPreferenceKey()))
|
|
||||||
.thenReturn(mPreference);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void isAvailable_storageManagerNull_shouldBeFalse() {
|
|
||||||
ReflectionHelpers.setField(mController, "mStorageManager", null);
|
|
||||||
|
|
||||||
assertThat(mController.isAvailable()).isFalse();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void isAvailable_notConvertibleToFBE_shouldBeFalse() throws RemoteException {
|
|
||||||
ReflectionHelpers.setField(mController, "mStorageManager", mStorageManager);
|
|
||||||
when(mStorageManager.isConvertibleToFBE()).thenReturn(false);
|
|
||||||
|
|
||||||
assertThat(mController.isAvailable()).isFalse();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void isAvailable_convertibleToFBE_shouldBeTrue() throws RemoteException {
|
|
||||||
ReflectionHelpers.setField(mController, "mStorageManager", mStorageManager);
|
|
||||||
when(mStorageManager.isConvertibleToFBE()).thenReturn(true);
|
|
||||||
|
|
||||||
assertThat(mController.isAvailable()).isTrue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void updateState_settingIsNotFile_shouldDoNothing() throws RemoteException {
|
|
||||||
ReflectionHelpers.setField(mController, "mStorageManager", mStorageManager);
|
|
||||||
when(mStorageManager.isConvertibleToFBE()).thenReturn(true);
|
|
||||||
mController.displayPreference(mPreferenceScreen);
|
|
||||||
CryptoProperties.type(CryptoProperties.type_values.NONE);
|
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
|
||||||
|
|
||||||
verify(mPreference, never()).setEnabled(anyBoolean());
|
|
||||||
verify(mPreference, never()).setSummary(anyString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void updateState_settingIsFile_shouldSetSummaryAndDisablePreference()
|
|
||||||
throws RemoteException {
|
|
||||||
ReflectionHelpers.setField(mController, "mStorageManager", mStorageManager);
|
|
||||||
when(mStorageManager.isConvertibleToFBE()).thenReturn(true);
|
|
||||||
mController.displayPreference(mPreferenceScreen);
|
|
||||||
CryptoProperties.type(CryptoProperties.type_values.FILE);
|
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
|
||||||
|
|
||||||
verify(mPreference).setEnabled(false);
|
|
||||||
verify(mPreference).setSummary(mContext.getString(R.string.convert_to_file_encryption_done));
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user