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

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

Merge "Move code from SuggestionChecks to FeatureProvider"

parents d1e65e73 31f699c2
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -1688,14 +1688,12 @@
                android:value="true" />
        </activity>

        <activity android:name=".Settings$ScreenLockSuggestionActivity"
        <activity android:name=".password.ScreenLockSuggestionActivity"
            android:icon="@drawable/ic_settings_security">
            <intent-filter android:priority="1">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="com.android.settings.suggested.category.LOCK_SCREEN" />
            </intent-filter>
            <meta-data android:name="com.android.settings.dismiss"
                       android:value="0,30" />
            <meta-data android:name="com.android.settings.title"
                       android:resource="@string/suggested_lock_settings_title" />
            <meta-data android:name="com.android.settings.summary"
@@ -1703,7 +1701,7 @@
            <meta-data android:name="com.android.settings.icon_tintable" android:value="true" />
        </activity>

        <activity android:name=".Settings$FingerprintEnrollSuggestionActivity"
        <activity android:name=".fingerprint.FingerprintEnrollSuggestionActivity"
            android:icon="@drawable/ic_suggestion_fingerprint">
            <intent-filter android:priority="2">
                <action android:name="android.intent.action.MAIN" />
@@ -2908,7 +2906,7 @@
                       android:value="true" />
        </activity>

        <activity android:name="Settings$WifiCallingSuggestionActivity"
        <activity android:name=".wifi.WifiCallingSuggestionActivity"
                  android:label="@string/wifi_calling_settings_title"
                  android:icon="@drawable/ic_settings_wireless"
                  android:taskAffinity="">
+0 −8
Original line number Diff line number Diff line
@@ -21,8 +21,6 @@ import android.util.FeatureFlagUtils;

import com.android.settings.applications.AppOpsSummary;
import com.android.settings.enterprise.EnterprisePrivacySettings;
import com.android.settings.fingerprint.FingerprintEnrollIntroduction;
import com.android.settings.password.ChooseLockGeneric;

/**
 * Top-level Settings activity
@@ -157,12 +155,6 @@ public class Settings extends SettingsActivity {
    public static class ManageExternalSourcesActivity extends SettingsActivity {
        /* empty */ }
    public static class ManageAppExternalSourcesActivity extends SettingsActivity { /* empty */ }

    public static class WifiCallingSuggestionActivity extends SettingsActivity { /* empty */ }
    public static class FingerprintEnrollSuggestionActivity extends FingerprintEnrollIntroduction {
        /* empty */
    }
    public static class ScreenLockSuggestionActivity extends ChooseLockGeneric { /* empty */ }
    public static class DoubleTapPowerSuggestionActivity extends SettingsActivity { /* empty */ }
    public static class DoubleTwistSuggestionActivity extends SettingsActivity { /* empty */ }
    public static class AmbientDisplaySuggestionActivity extends SettingsActivity { /* empty */ }
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ public interface SuggestionFeatureProvider {
    boolean isSmartSuggestionEnabled(Context context);

    /** Return true if the suggestion has already been completed and does not need to be shown */
    boolean isSuggestionCompleted(Context context, @NonNull ComponentName suggestion);
    boolean isSuggestionComplete(Context context, @NonNull ComponentName suggestion);

    /**
     * Returns the {@link SharedPreferences} that holds metadata for suggestions.
+18 −4
Original line number Diff line number Diff line
@@ -39,13 +39,18 @@ import com.android.settings.Settings.DoubleTwistSuggestionActivity;
import com.android.settings.Settings.NightDisplaySuggestionActivity;
import com.android.settings.Settings.SwipeToNotificationSuggestionActivity;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.fingerprint.FingerprintEnrollSuggestionActivity;
import com.android.settings.fingerprint.FingerprintSuggestionActivity;
import com.android.settings.gestures.DoubleTapPowerPreferenceController;
import com.android.settings.gestures.DoubleTapScreenPreferenceController;
import com.android.settings.gestures.DoubleTwistPreferenceController;
import com.android.settings.gestures.PickupGesturePreferenceController;
import com.android.settings.gestures.SwipeToNotificationPreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.password.ScreenLockSuggestionActivity;
import com.android.settings.support.NewDeviceIntroSuggestionActivity;
import com.android.settings.wallpaper.WallpaperSuggestionActivity;
import com.android.settings.wifi.WifiCallingSuggestionActivity;
import com.android.settingslib.drawer.Tile;
import com.android.settingslib.suggestions.SuggestionParser;

@@ -96,12 +101,21 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider
    }

    @Override
    public boolean isSuggestionCompleted(Context context, @NonNull ComponentName component) {
    public boolean isSuggestionComplete(Context context, @NonNull ComponentName component) {
        final String className = component.getClassName();
        if (className.equals(NightDisplaySuggestionActivity.class.getName())) {
        if (className.equals(WallpaperSuggestionActivity.class.getName())) {
            return WallpaperSuggestionActivity.isSuggestionComplete(context);
        } else if (className.equals(FingerprintSuggestionActivity.class.getName())) {
            return FingerprintSuggestionActivity.isSuggestionComplete(context);
        } else if (className.equals(FingerprintEnrollSuggestionActivity.class.getName())) {
            return FingerprintEnrollSuggestionActivity.isSuggestionComplete(context);
        } else if (className.equals(ScreenLockSuggestionActivity.class.getName())) {
            return ScreenLockSuggestionActivity.isSuggestionComplete(context);
        } else if (className.equals(WifiCallingSuggestionActivity.class.getName())) {
            return WifiCallingSuggestionActivity.isSuggestionComplete(context);
        } else if (className.equals(NightDisplaySuggestionActivity.class.getName())) {
            return hasUsedNightDisplay(context);
        }
        if (className.equals(NewDeviceIntroSuggestionActivity.class.getName())) {
        } else if (className.equals(NewDeviceIntroSuggestionActivity.class.getName())) {
            return NewDeviceIntroSuggestionActivity.isSuggestionComplete(context);
        } else if (className.equals(DoubleTapPowerSuggestionActivity.class.getName())) {
            return DoubleTapPowerPreferenceController
+1 −66
Original line number Diff line number Diff line
@@ -16,23 +16,10 @@

package com.android.settings.dashboard.suggestions;

import android.app.KeyguardManager;
import android.app.WallpaperManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
import android.support.annotation.VisibleForTesting;

import com.android.ims.ImsManager;
import com.android.settings.Settings.FingerprintEnrollSuggestionActivity;
import com.android.settings.Settings.ScreenLockSuggestionActivity;
import com.android.settings.Settings.WifiCallingSuggestionActivity;
import com.android.settings.Utils;
import com.android.settings.fingerprint.FingerprintSuggestionActivity;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wallpaper.WallpaperSuggestionActivity;
import com.android.settings.wrapper.WallpaperManagerWrapper;
import com.android.settingslib.drawer.Tile;

/**
@@ -43,69 +30,17 @@ public class SuggestionsChecks {
    private static final String TAG = "SuggestionsChecks";
    private final Context mContext;

    private final WallpaperManagerWrapper mWallpaperManager;

    public SuggestionsChecks(Context context) {
        mContext = context.getApplicationContext();
        mWallpaperManager = new WallpaperManagerWrapper(mContext);
    }

    public boolean isSuggestionComplete(Tile suggestion) {
        ComponentName component = suggestion.intent.getComponent();
        String className = component.getClassName();
        if (className.equals(WallpaperSuggestionActivity.class.getName())) {
            return hasWallpaperSet();
        } else if (className.equals(WifiCallingSuggestionActivity.class.getName())) {
            return isWifiCallingUnavailableOrEnabled();
        } else if (className.equals(FingerprintSuggestionActivity.class.getName())) {
            return !Utils.hasFingerprintHardware(mContext) || !isFingerprintEnabled()
                    || isNotSingleFingerprintEnrolled();
        } else if (className.equals(ScreenLockSuggestionActivity.class.getName())) {
            return isDeviceSecured();
        } else if (className.equals(FingerprintEnrollSuggestionActivity.class.getName())) {
            final FingerprintManager manager = Utils.getFingerprintManagerOrNull(mContext);
            if (manager == null || !isFingerprintEnabled()
                    || !Utils.hasFingerprintHardware(mContext)) {
                return true;
            }
            return manager.hasEnrolledFingerprints();
        }

        final SuggestionFeatureProvider provider =
                FeatureFactory.getFactory(mContext).getSuggestionFeatureProvider(mContext);

        return provider.isSuggestionCompleted(mContext, component);
    }

    private boolean isDeviceSecured() {
        KeyguardManager km = mContext.getSystemService(KeyguardManager.class);
        return km.isKeyguardSecure();
    }

    private boolean isNotSingleFingerprintEnrolled() {
        FingerprintManager manager = Utils.getFingerprintManagerOrNull(mContext);
        return manager == null || manager.getEnrolledFingerprints().size() != 1;
        return provider.isSuggestionComplete(mContext, component);
    }

    public boolean isWifiCallingUnavailableOrEnabled() {
        if (!ImsManager.isWfcEnabledByPlatform(mContext) ||
                !ImsManager.isWfcProvisionedOnDevice(mContext)) {
            return true;
        }
        return ImsManager.isWfcEnabledByUser(mContext)
                && ImsManager.isNonTtyOrTtyOnVolteEnabled(mContext);
    }

    @VisibleForTesting
    boolean hasWallpaperSet() {
        return mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_SYSTEM) > 0;
    }

    private boolean isFingerprintEnabled() {
        DevicePolicyManager dpManager =
                (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
        final int dpmFlags = dpManager.getKeyguardDisabledFeatures(null, /* admin */
                mContext.getUserId());
        return (dpmFlags & DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT) == 0;
    }
}
Loading