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

Commit db68ddc1 authored by Fan Zhang's avatar Fan Zhang Committed by Android (Google) Code Review
Browse files

Merge "Properly check wallpaper state before showing suggestion" into oc-dev

parents a0316367 0c6bd7ef
Loading
Loading
Loading
Loading
+9 −25
Original line number Diff line number Diff line
@@ -17,19 +17,13 @@
package com.android.settings.dashboard.suggestions;

import android.app.AutomaticZenRule;
import android.app.IWallpaperManager;
import android.app.IWallpaperManager.Stub;
import android.app.IWallpaperManagerCallback;
import android.app.KeyguardManager;
import android.app.NotificationManager;
import android.app.WallpaperManager;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.support.annotation.VisibleForTesting;

import com.android.ims.ImsManager;
import com.android.settings.Settings.FingerprintEnrollSuggestionActivity;
@@ -49,10 +43,14 @@ import java.util.Collection;
 */
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) {
@@ -114,16 +112,9 @@ public class SuggestionsChecks {
        return false;
    }

    private boolean hasWallpaperSet() {
        IBinder b = ServiceManager.getService(Context.WALLPAPER_SERVICE);
        IWallpaperManager service = Stub.asInterface(b);
        try {
            return !service.isSetWallpaperAllowed(mContext.getOpPackageName()) ||
                    service.getWallpaper(mCallback, WallpaperManager.FLAG_SYSTEM,
                            new Bundle(), mContext.getUserId()) != null;
        } catch (RemoteException e) {
        }
        return false;
    @VisibleForTesting
    boolean hasWallpaperSet() {
        return mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_SYSTEM) > 0;
    }

    private boolean isFingerprintEnabled() {
@@ -133,11 +124,4 @@ public class SuggestionsChecks {
                mContext.getUserId());
        return (dpmFlags & DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT) == 0;
    }

    private final IWallpaperManagerCallback mCallback = new IWallpaperManagerCallback.Stub() {
        @Override
        public void onWallpaperChanged() throws RemoteException {
             // Don't care.
        }
    };
}
+33 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.dashboard.suggestions;

import android.app.WallpaperManager;
import android.content.Context;

public class WallpaperManagerWrapper {

    private final WallpaperManager mWallpaperManager;

    public WallpaperManagerWrapper(Context context) {
        mWallpaperManager = (WallpaperManager) context.getSystemService(Context.WALLPAPER_SERVICE);
    }

    public int getWallpaperId(int which) {
        return mWallpaperManager.getWallpaperId(which);
    }
}
+26 −3
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 Google Inc.
 * Copyright (C) 2017 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.
@@ -17,12 +17,12 @@
package com.android.settings.dashboard.suggestions;

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

import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;

import android.app.WallpaperManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
@@ -41,6 +41,8 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;


@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -54,7 +56,8 @@ public class SuggestionsChecksTest {
    private FingerprintManager mFingerprintManager;
    @Mock
    private DevicePolicyManager mDevicePolicyManager;

    @Mock
    private WallpaperManagerWrapper mWallpaperManager;
    private SuggestionsChecks mSuggestionsChecks;

    @Before
@@ -118,4 +121,24 @@ public class SuggestionsChecksTest {
                Settings.FingerprintEnrollSuggestionActivity.class));
        return tile;
    }

    @Test
    public void hasWallpaperSet_no_shouldReturnFalse() {
        ReflectionHelpers.setField(mSuggestionsChecks, "mWallpaperManager", mWallpaperManager);
        when(mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_SYSTEM))
                .thenReturn(0);

        assertThat(mSuggestionsChecks.hasWallpaperSet())
                .isFalse();
    }

    @Test
    public void hasWallpaperSet_yes_shouldReturnTrue() {
        ReflectionHelpers.setField(mSuggestionsChecks, "mWallpaperManager", mWallpaperManager);
        when(mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_SYSTEM))
                .thenReturn(100);

        assertThat(mSuggestionsChecks.hasWallpaperSet())
                .isTrue();
    }
}