Merge "Add policy disclosure for printing."

This commit is contained in:
Vladislav Kuzkokov
2018-02-22 14:54:36 +00:00
committed by Android (Google) Code Review
3 changed files with 25 additions and 6 deletions

View File

@@ -50,7 +50,7 @@
settings:controller="com.android.settings.connecteddevice.BluetoothOnWhileDrivingPreferenceController" settings:controller="com.android.settings.connecteddevice.BluetoothOnWhileDrivingPreferenceController"
android:order="-2"/> android:order="-2"/>
<Preference <com.android.settingslib.RestrictedPreference
android:key="connected_device_printing" android:key="connected_device_printing"
android:title="@string/print_settings" android:title="@string/print_settings"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"

View File

@@ -18,6 +18,7 @@ package com.android.settings.print;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.UserManager;
import android.print.PrintJob; import android.print.PrintJob;
import android.print.PrintJobId; import android.print.PrintJobId;
import android.print.PrintJobInfo; import android.print.PrintJobInfo;
@@ -29,6 +30,7 @@ import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.wrapper.PrintManagerWrapper; import com.android.settings.wrapper.PrintManagerWrapper;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -41,12 +43,14 @@ import java.util.List;
public class PrintSettingPreferenceController extends BasePreferenceController implements public class PrintSettingPreferenceController extends BasePreferenceController implements
LifecycleObserver, OnStart, OnStop, PrintManager.PrintJobStateChangeListener { LifecycleObserver, OnStart, OnStop, PrintManager.PrintJobStateChangeListener {
private static final String KEY_PRINTING_SETTINGS = "connected_device_printing";
private final PackageManager mPackageManager; private final PackageManager mPackageManager;
private PrintManagerWrapper mPrintManager; private PrintManagerWrapper mPrintManager;
private Preference mPreference; private Preference mPreference;
public PrintSettingPreferenceController(Context context) { public PrintSettingPreferenceController(Context context) {
super(context, "connected_device_printing" /* preferenceKey */); super(context, KEY_PRINTING_SETTINGS);
mPackageManager = context.getPackageManager(); mPackageManager = context.getPackageManager();
mPrintManager = new PrintManagerWrapper(context); mPrintManager = new PrintManagerWrapper(context);
} }
@@ -84,6 +88,8 @@ public class PrintSettingPreferenceController extends BasePreferenceController i
return; return;
} }
preference.setSummary(getSummary()); preference.setSummary(getSummary());
((RestrictedPreference) preference).checkRestrictionAndSetDisabled(
UserManager.DISALLOW_PRINTING);
} }
@Override @Override

View File

@@ -20,26 +20,29 @@ import static android.arch.lifecycle.Lifecycle.Event.ON_START;
import static android.arch.lifecycle.Lifecycle.Event.ON_STOP; import static android.arch.lifecycle.Lifecycle.Event.ON_STOP;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
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.arch.lifecycle.LifecycleOwner; import android.arch.lifecycle.LifecycleOwner;
import android.content.Context; import android.content.Context;
import android.os.UserManager;
import android.print.PrintJob; import android.print.PrintJob;
import android.print.PrintJobInfo; import android.print.PrintJobInfo;
import android.print.PrintManager; import android.print.PrintManager;
import android.printservice.PrintServiceInfo; import android.printservice.PrintServiceInfo;
import android.support.v7.preference.Preference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.PrintManagerWrapper; import com.android.settings.wrapper.PrintManagerWrapper;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
@@ -57,8 +60,11 @@ public class PrintSettingsPreferenceControllerTest {
@Mock @Mock
private PrintManagerWrapper mPrintManager; private PrintManagerWrapper mPrintManager;
@Mock
private UserManager mUserManager;
private Context mContext; private Context mContext;
private Preference mPreference; @Mock
private RestrictedPreference mPreference;
private PrintSettingPreferenceController mController; private PrintSettingPreferenceController mController;
private LifecycleOwner mLifecycleOwner; private LifecycleOwner mLifecycleOwner;
private Lifecycle mLifecycle; private Lifecycle mLifecycle;
@@ -66,8 +72,9 @@ public class PrintSettingsPreferenceControllerTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = spy(RuntimeEnvironment.application);
mPreference = new Preference(mContext); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
mPreference = spy(new RestrictedPreference(mContext));
mController = new PrintSettingPreferenceController(mContext); mController = new PrintSettingPreferenceController(mContext);
mLifecycleOwner = () -> mLifecycle; mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner); mLifecycle = new Lifecycle(mLifecycleOwner);
@@ -122,4 +129,10 @@ public class PrintSettingsPreferenceControllerTest {
assertThat(mPreference.getSummary()) assertThat(mPreference.getSummary())
.isEqualTo(mContext.getString(R.string.print_settings_summary_no_service)); .isEqualTo(mContext.getString(R.string.print_settings_summary_no_service));
} }
@Test
public void updateState_shouldCheckRestriction() {
mController.updateState(mPreference);
verify(mPreference).checkRestrictionAndSetDisabled(UserManager.DISALLOW_PRINTING);
}
} }