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

Commit db3767e7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix search index for a financed device" into sc-dev

parents 33583e79 90684812
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -111,6 +111,12 @@
            android:summary="@string/summary_placeholder"
            android:fragment="com.android.settings.enterprise.EnterprisePrivacySettings" />

        <Preference
            android:key="financed_privacy"
            android:title="@string/financed_privacy_settings"
            android:summary="@string/summary_placeholder"
            android:fragment="com.android.settings.enterprise.EnterprisePrivacySettings" />

    </PreferenceCategory>

    <Preference
+16 −30
Original line number Diff line number Diff line
@@ -13,61 +13,47 @@
 */
package com.android.settings.enterprise;

import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;

import android.app.admin.DevicePolicyManager;
import android.content.Context;

import androidx.preference.Preference;

import com.android.settings.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.AbstractPreferenceController;

import java.util.Objects;

public class EnterprisePrivacyPreferenceController extends AbstractPreferenceController implements
        PreferenceControllerMixin {

    private static final String KEY_ENTERPRISE_PRIVACY = "enterprise_privacy";
    private final EnterprisePrivacyFeatureProvider mFeatureProvider;
    private final PrivacyPreferenceControllerHelper mPrivacyPreferenceControllerHelper;

    public EnterprisePrivacyPreferenceController(Context context) {
        super(context);
        mFeatureProvider = FeatureFactory.getFactory(context)
                .getEnterprisePrivacyFeatureProvider(context);
        this(Objects.requireNonNull(context), new PrivacyPreferenceControllerHelper(context));
    }

    @Override
    public void updateState(Preference preference) {
        if (preference == null) {
            return;
        }
        if (isFinancedDevice()) {
            preference.setTitle(R.string.financed_privacy_settings);
    @VisibleForTesting
    EnterprisePrivacyPreferenceController(
            Context context, PrivacyPreferenceControllerHelper privacyPreferenceControllerHelper) {
        super(Objects.requireNonNull(context));
        mPrivacyPreferenceControllerHelper = Objects.requireNonNull(
                privacyPreferenceControllerHelper);
    }

        final String organizationName = mFeatureProvider.getDeviceOwnerOrganizationName();
        if (organizationName == null) {
            preference.setSummary(R.string.enterprise_privacy_settings_summary_generic);
        } else {
            preference.setSummary(mContext.getResources().getString(
                    R.string.enterprise_privacy_settings_summary_with_name, organizationName));
        }
    @Override
    public void updateState(Preference preference) {
        mPrivacyPreferenceControllerHelper.updateState(preference);
    }

    @Override
    public boolean isAvailable() {
        return mFeatureProvider.hasDeviceOwner();
        return mPrivacyPreferenceControllerHelper.hasDeviceOwner()
                && !mPrivacyPreferenceControllerHelper.isFinancedDevice();
    }

    @Override
    public String getPreferenceKey() {
        return KEY_ENTERPRISE_PRIVACY;
    }

    private boolean isFinancedDevice() {
        final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
        return dpm.isDeviceManaged() && dpm.getDeviceOwnerType(
                dpm.getDeviceOwnerComponentOnAnyUser()) == DEVICE_OWNER_TYPE_FINANCED;
    }
}
+62 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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.enterprise;

import android.content.Context;

import androidx.preference.Preference;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;

import java.util.Objects;

/** Preference controller which displays a financed preference for financed devices. */
public class FinancedPrivacyPreferenceController extends AbstractPreferenceController implements
        PreferenceControllerMixin {

    private static final String PREF_KEY_FINANCED_PRIVACY = "financed_privacy";
    private final PrivacyPreferenceControllerHelper mPrivacyPreferenceControllerHelper;

    public FinancedPrivacyPreferenceController(Context context) {
        this(Objects.requireNonNull(context), new PrivacyPreferenceControllerHelper(context));
    }

    @VisibleForTesting
    FinancedPrivacyPreferenceController(
            Context context, PrivacyPreferenceControllerHelper privacyPreferenceControllerHelper) {
        super(Objects.requireNonNull(context));
        mPrivacyPreferenceControllerHelper = Objects.requireNonNull(
                privacyPreferenceControllerHelper);
    }

    @Override
    public void updateState(Preference preference) {
        mPrivacyPreferenceControllerHelper.updateState(preference);
    }

    @Override
    public boolean isAvailable() {
        return mPrivacyPreferenceControllerHelper.isFinancedDevice();
    }

    @Override
    public String getPreferenceKey() {
        return PREF_KEY_FINANCED_PRIVACY;
    }
}
+70 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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.enterprise;

import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;

import android.app.admin.DevicePolicyManager;
import android.content.Context;

import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;

import java.util.Objects;

/** Helper class for the privacy preference in Settings for a managed device. */
class PrivacyPreferenceControllerHelper {

    private final Context mContext;
    private final EnterprisePrivacyFeatureProvider mFeatureProvider;
    private final DevicePolicyManager mDevicePolicyManager;

    PrivacyPreferenceControllerHelper(Context context) {
        mContext = Objects.requireNonNull(context);
        mFeatureProvider = FeatureFactory.getFactory(context)
                .getEnterprisePrivacyFeatureProvider(context);
        mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
    }

    /** Updates the privacy preference summary. */
    void updateState(Preference preference) {
        if (preference == null) {
            return;
        }

        final String organizationName = mFeatureProvider.getDeviceOwnerOrganizationName();
        if (organizationName == null) {
            preference.setSummary(R.string.enterprise_privacy_settings_summary_generic);
        } else {
            preference.setSummary(mContext.getResources().getString(
                    R.string.enterprise_privacy_settings_summary_with_name, organizationName));
        }
    }

    /** Returns {@code true} if the device has a device owner. */
    boolean hasDeviceOwner() {
        return mFeatureProvider.hasDeviceOwner();
    }

    boolean isFinancedDevice() {
        return mDevicePolicyManager.isDeviceManaged() && mDevicePolicyManager.getDeviceOwnerType(
                mDevicePolicyManager.getDeviceOwnerComponentOnAnyUser())
                == DEVICE_OWNER_TYPE_FINANCED;
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.settings.biometrics.fingerprint.FingerprintProfileStatusPrefe
import com.android.settings.biometrics.fingerprint.FingerprintStatusPreferenceController;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.enterprise.EnterprisePrivacyPreferenceController;
import com.android.settings.enterprise.FinancedPrivacyPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.security.trustagent.ManageTrustAgentsPreferenceController;
import com.android.settings.security.trustagent.TrustAgentListPreferenceController;
@@ -103,6 +104,7 @@ public class SecuritySettings extends DashboardFragment {
            Lifecycle lifecycle, SecuritySettings host) {
        final List<AbstractPreferenceController> controllers = new ArrayList<>();
        controllers.add(new EnterprisePrivacyPreferenceController(context));
        controllers.add(new FinancedPrivacyPreferenceController(context));
        controllers.add(new ManageTrustAgentsPreferenceController(context));
        controllers.add(new ScreenPinningPreferenceController(context));
        controllers.add(new SimLockPreferenceController(context));
Loading