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

Commit 1e81c405 authored by Jan Tomljanovic's avatar Jan Tomljanovic Committed by Android (Google) Code Review
Browse files

Merge "Call system service API instead of checking the phenotype flag directly."

parents 248e6211 9d2ec95c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <uses-permission android:name="android.permission.READ_APP_SPECIFIC_LOCALES" />
    <uses-permission android:name="android.permission.QUERY_ADMIN_POLICY" />
    <uses-permission android:name="android.permission.READ_SAFETY_CENTER_STATUS" />

    <application
            android:name=".SettingsApplication"
+3 −3
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ import com.android.settings.enterprise.EnterprisePrivacySettings;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.safetycenter.SafetyCenterStatus;
import com.android.settings.safetycenter.SafetyCenterStatusHolder;
import com.android.settings.security.SecuritySettingsFeatureProvider;

import com.google.android.setupdesign.util.ThemeHelper;
@@ -152,7 +152,7 @@ public class Settings extends SettingsActivity {
        /** Redirects to SafetyCenter if enabled. */
        @VisibleForTesting
        public void handleSafetyCenterRedirection() {
            if (SafetyCenterStatus.isEnabled()) {
            if (SafetyCenterStatusHolder.get().isEnabled(this)) {
                try {
                    startActivity(new Intent(Intent.ACTION_SAFETY_CENTER));
                    finish();
@@ -213,7 +213,7 @@ public class Settings extends SettingsActivity {
        /** Redirects to SafetyCenter if enabled. */
        @VisibleForTesting
        public void handleSafetyCenterRedirection() {
            if (SafetyCenterStatus.isEnabled()) {
            if (SafetyCenterStatusHolder.get().isEnabled(this)) {
                try {
                    startActivity(new Intent(Intent.ACTION_SAFETY_CENTER));
                    finish();
+2 −2
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ import android.content.Context;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.notification.LockScreenNotificationPreferenceController;
import com.android.settings.safetycenter.SafetyCenterStatus;
import com.android.settings.safetycenter.SafetyCenterStatusHolder;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -93,7 +93,7 @@ public class PrivacyDashboardFragment extends DashboardFragment {

                @Override
                protected boolean isPageSearchEnabled(Context context) {
                    return !SafetyCenterStatus.isEnabled();
                    return !SafetyCenterStatusHolder.get().isEnabled(context);
                }
            };
}
+2 −2
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ import android.annotation.NonNull;
import android.content.Context;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.safetycenter.SafetyCenterStatus;
import com.android.settings.safetycenter.SafetyCenterStatusHolder;

/** The preference controller for the top level privacy tile. */
public class TopLevelPrivacyEntryPreferenceController  extends BasePreferenceController {
@@ -31,7 +31,7 @@ public class TopLevelPrivacyEntryPreferenceController extends BasePreferenceCon

    @Override
    public int getAvailabilityStatus() {
        if (!SafetyCenterStatus.isEnabled()) {
        if (!SafetyCenterStatusHolder.get().isEnabled(mContext)) {
            return AVAILABLE;
        }
        return CONDITIONALLY_UNAVAILABLE;
+62 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 * Copyright (C) 2022 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.
@@ -16,21 +16,47 @@

package com.android.settings.safetycenter;

import android.provider.DeviceConfig;
import android.content.Context;
import android.safetycenter.SafetyCenterManager;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;

/** Knows whether safety center is enabled or disabled. */
public class SafetyCenterStatus {
public class SafetyCenterStatusHolder {

    private static final String TAG = "SafetyCenterStatusHolder";

    /** Whether SafetyCenter page is enabled. */
    @VisibleForTesting
    public static final String SAFETY_CENTER_IS_ENABLED = "safety_center_is_enabled";
    public static SafetyCenterStatusHolder sInstance;

    private SafetyCenterStatusHolder() {}

    /** Returns an instance of {@link SafetyCenterStatusHolder}. */
    public static SafetyCenterStatusHolder get() {
        if (sInstance == null) {
            sInstance = new SafetyCenterStatusHolder();
        }
        return sInstance;
    }

    /** Returns true is SafetyCenter page is enabled, false otherwise. */
    public static boolean isEnabled() {
        // TODO(b/208625216): use SafetyManager API instead
        return DeviceConfig.getBoolean(
                DeviceConfig.NAMESPACE_PRIVACY, SAFETY_CENTER_IS_ENABLED, false);
    public boolean isEnabled(Context context) {
        if (context == null) {
            Log.e(TAG, "Context is null at SafetyCenterStatusHolder#isEnabled");
            return false;
        }
        SafetyCenterManager safetyCenterManager =
                context.getSystemService(SafetyCenterManager.class);
        if (safetyCenterManager == null) {
            Log.w(TAG, "System service SAFETY_CENTER_SERVICE (SafetyCenterManager) is null");
            return false;
        }
        try {
            return safetyCenterManager.isSafetyCenterEnabled();
        } catch (RuntimeException e) {
            Log.e(TAG, "Calling isSafetyCenterEnabled failed.", e);
            return false;
        }
    }
}
Loading