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

Commit e0347c87 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix crash on "Connection preferences"" am: b75c9528 am: 3cda0e98 am: 32129f14

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/1485157

Change-Id: I46ad006bdb3700ac4cba29711db589e5afaca448
parents 9afa792c 32129f14
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ public class PrintSettingPreferenceController extends BasePreferenceController i
    @Override
    public int getAvailabilityStatus() {
        return mPackageManager.hasSystemFeature(PackageManager.FEATURE_PRINTING)
                && mPrintManager != null
                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
    }

@@ -71,13 +72,17 @@ public class PrintSettingPreferenceController extends BasePreferenceController i

    @Override
    public void onStart() {
        if (mPrintManager != null) {
            mPrintManager.addPrintJobStateChangeListener(this);
        }
    }

    @Override
    public void onStop() {
        if (mPrintManager != null) {
            mPrintManager.removePrintJobStateChangeListener(this);
        }
    }

    @Override
    public void onPrintJobStateChanged(PrintJobId printJobId) {
+44 −0
Original line number Diff line number Diff line
@@ -19,14 +19,19 @@ package com.android.settings.print;
import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;

import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.pm.PackageManager;
import android.os.UserManager;
import android.print.PrintJob;
import android.print.PrintJobInfo;
@@ -61,6 +66,8 @@ public class PrintSettingsPreferenceControllerTest {
    private UserManager mUserManager;
    @Mock
    private RestrictedPreference mPreference;
    @Mock
    private PackageManager mPackageManager;

    private Context mContext;
    private PrintSettingPreferenceController mController;
@@ -77,6 +84,7 @@ public class PrintSettingsPreferenceControllerTest {
        mLifecycleOwner = () -> mLifecycle;
        mLifecycle = new Lifecycle(mLifecycleOwner);
        ReflectionHelpers.setField(mController, "mPrintManager", mPrintManager);
        ReflectionHelpers.setField(mController, "mPackageManager", mPackageManager);
        mLifecycle.addObserver(mController);
    }

@@ -89,6 +97,17 @@ public class PrintSettingsPreferenceControllerTest {
        verify(mPrintManager).removePrintJobStateChangeListener(mController);
    }

    @Test
    public void onStartStop_printManagerIsNull_doNothing() {
        ReflectionHelpers.setField(mController, "mPrintManager", null);

        mLifecycle.handleLifecycleEvent(ON_START);
        mLifecycle.handleLifecycleEvent(ON_STOP);

        verify(mPrintManager, never()).addPrintJobStateChangeListener(mController);
        verify(mPrintManager, never()).removePrintJobStateChangeListener(mController);
    }

    @Test
    public void updateState_hasActiveJob_shouldSetSummaryToNumberOfJobs() {
        final List<PrintJob> printJobs = new ArrayList<>();
@@ -133,4 +152,29 @@ public class PrintSettingsPreferenceControllerTest {
        mController.updateState(mPreference);
        verify(mPreference).checkRestrictionAndSetDisabled(UserManager.DISALLOW_PRINTING);
    }

    @Test
    public void getAvailabilityStatus_hasFeature_returnsAvailable() {
        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_PRINTING))
                .thenReturn(true);

        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
    }

    @Test
    public void getAvailabilityStatus_noFeature_returnsUnsupported() {
        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_PRINTING))
                .thenReturn(false);

        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }

    @Test
    public void getAvailabilityStatus_printManagerIsNull_returnsUnsupported() {
        ReflectionHelpers.setField(mController, "mPrintManager", null);
        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_PRINTING))
                .thenReturn(true);

        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }
}