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

Commit 3bc6b32b authored by Antoan Angelov's avatar Antoan Angelov Committed by Android (Google) Code Review
Browse files

Merge "Don't start DPC with the FLAG_ACTIVITY_NEW_TASK flag" into sc-v2-dev

parents 1ab7ad3e c5346baa
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.settings.enterprise;

import android.content.Context;

import java.util.Date;

public interface EnterprisePrivacyFeatureProvider {
@@ -131,7 +133,7 @@ public interface EnterprisePrivacyFeatureProvider {
     * Launches the Device Owner or Profile Owner's activity that displays the "Your work policy
     * info" page. Returns {@code true} if the activity has indeed been launched.
     */
    boolean showWorkPolicyInfo();
    boolean showWorkPolicyInfo(Context activityContext);

    /**
     * Launches the parental controls settings page. Returns {@code true} if the activity has
+5 −7
Original line number Diff line number Diff line
@@ -227,17 +227,17 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
    }

    @Override
    public boolean showWorkPolicyInfo() {
    public boolean showWorkPolicyInfo(Context activityContext) {
        Intent intent = getWorkPolicyInfoIntentDO();
        if (intent != null) {
            mContext.startActivity(intent);
            activityContext.startActivity(intent);
            return true;
        }

        intent = getWorkPolicyInfoIntentPO();
        final UserInfo userInfo = getManagedProfileUserInfo();
        if (intent != null && userInfo != null) {
            mContext.startActivityAsUser(intent, userInfo.getUserHandle());
            activityContext.startActivityAsUser(intent, userInfo.getUserHandle());
            return true;
        }

@@ -305,8 +305,7 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
        // Only search for the required action in the Device Owner's package
        final Intent intent =
                new Intent(Settings.ACTION_SHOW_WORK_POLICY_INFO)
                        .setPackage(ownerComponent.getPackageName())
                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        .setPackage(ownerComponent.getPackageName());
        final List<ResolveInfo> activities = mPm.queryIntentActivities(intent, 0);
        if (activities.size() != 0) {
            return intent;
@@ -329,8 +328,7 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
        // Only search for the required action in the Profile Owner's package
        final Intent intent =
                new Intent(Settings.ACTION_SHOW_WORK_POLICY_INFO)
                        .setPackage(ownerComponent.getPackageName())
                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        .setPackage(ownerComponent.getPackageName());
        final List<ResolveInfo> activities = mPm.queryIntentActivitiesAsUser(intent, 0, userId);
        if (activities.size() != 0) {
            return intent;
+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ public class WorkPolicyInfoPreferenceController extends BasePreferenceController
    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (TextUtils.equals(getPreferenceKey(), preference.getKey())) {
            mEnterpriseProvider.showWorkPolicyInfo();
            mEnterpriseProvider.showWorkPolicyInfo(preference.getContext());
            return true;
        }
        return false;
+7 −7
Original line number Diff line number Diff line
@@ -356,7 +356,7 @@ public class EnterprisePrivacyFeatureProviderImplTest {
        addWorkPolicyInfoIntent(mOwner.getPackageName(), true, false);
        assertThat(mProvider.hasWorkPolicyInfo()).isFalse();

        assertThat(mProvider.showWorkPolicyInfo()).isFalse();
        assertThat(mProvider.showWorkPolicyInfo(mContext)).isFalse();
        verify(mContext, never()).startActivity(any());
    }

@@ -365,12 +365,12 @@ public class EnterprisePrivacyFeatureProviderImplTest {
        // If the intent is not resolved, then there's no info to show for DO
        when(mDevicePolicyManager.getDeviceOwnerComponentOnAnyUser()).thenReturn(mOwner);
        assertThat(mProvider.hasWorkPolicyInfo()).isFalse();
        assertThat(mProvider.showWorkPolicyInfo()).isFalse();
        assertThat(mProvider.showWorkPolicyInfo(mContext)).isFalse();

        // If the intent is resolved, then we can use it to launch the activity
        Intent intent = addWorkPolicyInfoIntent(mOwner.getPackageName(), true, false);
        assertThat(mProvider.hasWorkPolicyInfo()).isTrue();
        assertThat(mProvider.showWorkPolicyInfo()).isTrue();
        assertThat(mProvider.showWorkPolicyInfo(mContext)).isTrue();
        verify(mContext).startActivity(intentEquals(intent));
    }

@@ -382,12 +382,12 @@ public class EnterprisePrivacyFeatureProviderImplTest {

        // If the intent is not resolved, then there's no info to show for PO
        assertThat(mProvider.hasWorkPolicyInfo()).isFalse();
        assertThat(mProvider.showWorkPolicyInfo()).isFalse();
        assertThat(mProvider.showWorkPolicyInfo(mContext)).isFalse();

        // If the intent is resolved, then we can use it to launch the activity in managed profile
        Intent intent = addWorkPolicyInfoIntent(mOwner.getPackageName(), false, true);
        assertThat(mProvider.hasWorkPolicyInfo()).isTrue();
        assertThat(mProvider.showWorkPolicyInfo()).isTrue();
        assertThat(mProvider.showWorkPolicyInfo(mContext)).isTrue();
        verify(mContext)
                .startActivityAsUser(
                        intentEquals(intent),
@@ -402,12 +402,12 @@ public class EnterprisePrivacyFeatureProviderImplTest {

        // If the intent is not resolved, then there's no info to show for COMP
        assertThat(mProvider.hasWorkPolicyInfo()).isFalse();
        assertThat(mProvider.showWorkPolicyInfo()).isFalse();
        assertThat(mProvider.showWorkPolicyInfo(mContext)).isFalse();

        // If the intent is resolved, then we can use it to launch the activity for device owner
        Intent intent = addWorkPolicyInfoIntent(mOwner.getPackageName(), true, true);
        assertThat(mProvider.hasWorkPolicyInfo()).isTrue();
        assertThat(mProvider.showWorkPolicyInfo()).isTrue();
        assertThat(mProvider.showWorkPolicyInfo(mContext)).isTrue();
        verify(mContext).startActivity(intentEquals(intent));
    }

+2 −2
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ public class WorkPolicyInfoPreferenceControllerTest {

        final Preference pref = new Preference(mContext);
        assertThat(controller.handlePreferenceTreeClick(pref)).isFalse();
        verify(mEnterpriseProvider, never()).showWorkPolicyInfo();
        verify(mEnterpriseProvider, never()).showWorkPolicyInfo(mContext);
    }

    @Test
@@ -92,6 +92,6 @@ public class WorkPolicyInfoPreferenceControllerTest {
        final Preference pref = new Preference(mContext);
        pref.setKey(controller.getPreferenceKey());
        assertThat(controller.handlePreferenceTreeClick(pref)).isTrue();
        verify(mEnterpriseProvider).showWorkPolicyInfo();
        verify(mEnterpriseProvider).showWorkPolicyInfo(mContext);
    }
}