From 2eac39b393c3602e2d4f906292c91c50a4c0f22d Mon Sep 17 00:00:00 2001 From: Stefanot Date: Fri, 13 Jan 2017 14:58:41 +0000 Subject: [PATCH] Add SuggestionFeatureProvider interface. The interface is added so that a vendor can add new suggestions to the settings app, and customize details for these suggestions. Test: make RunSettingsRoboTests BUG: 34219298 Change-Id: I373c63709b1aaf68360aa2561a2ecfc3194e0e2b --- .../dashboard/SuggestionFeatureProvider.java | 30 +++++++++++++++++ .../SuggestionFeatureProviderImpl.java | 33 +++++++++++++++++++ .../settings/dashboard/SuggestionsChecks.java | 8 +++++ .../settings/overlay/FeatureFactory.java | 3 ++ .../settings/overlay/FeatureFactoryImpl.java | 12 +++++++ 5 files changed, 86 insertions(+) create mode 100644 src/com/android/settings/dashboard/SuggestionFeatureProvider.java create mode 100644 src/com/android/settings/dashboard/SuggestionFeatureProviderImpl.java diff --git a/src/com/android/settings/dashboard/SuggestionFeatureProvider.java b/src/com/android/settings/dashboard/SuggestionFeatureProvider.java new file mode 100644 index 00000000000..4b331fac5ed --- /dev/null +++ b/src/com/android/settings/dashboard/SuggestionFeatureProvider.java @@ -0,0 +1,30 @@ +/* + * 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; + +import android.content.Context; + +/** Interface should be implemented if you have added new suggestions */ +public interface SuggestionFeatureProvider { + + /** Return true if className is the name of a class of one of your newly added suggestion. */ + boolean isPresent(String className); + + /** Return true if the suggestion has already been completed and does not need to be shown */ + boolean isSuggestionCompleted(Context context); + +} \ No newline at end of file diff --git a/src/com/android/settings/dashboard/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/SuggestionFeatureProviderImpl.java new file mode 100644 index 00000000000..1b1db89c0ba --- /dev/null +++ b/src/com/android/settings/dashboard/SuggestionFeatureProviderImpl.java @@ -0,0 +1,33 @@ +/* + * 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; + +import android.content.Context; + +public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider { + + @Override + public boolean isPresent(String className) { + return false; + } + + @Override + public boolean isSuggestionCompleted(Context context) { + return false; + } + +} diff --git a/src/com/android/settings/dashboard/SuggestionsChecks.java b/src/com/android/settings/dashboard/SuggestionsChecks.java index b816a79a202..02fbe5530fc 100644 --- a/src/com/android/settings/dashboard/SuggestionsChecks.java +++ b/src/com/android/settings/dashboard/SuggestionsChecks.java @@ -36,6 +36,7 @@ import com.android.settings.Settings.ScreenLockSuggestionActivity; import com.android.settings.Settings.WifiCallingSuggestionActivity; import com.android.settings.Settings.ZenModeAutomationSuggestionActivity; import com.android.settings.WallpaperSuggestionActivity; +import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.drawer.Tile; import java.util.Collection; @@ -66,6 +67,13 @@ public class SuggestionsChecks { } else if (className.equals(FingerprintEnrollSuggestionActivity.class.getName())) { return isDeviceSecured() || !isFingerprintEnabled(); } + + SuggestionFeatureProvider provider = + FeatureFactory.getFactory(mContext).getSuggestionFeatureProvider(); + if (provider != null && provider.isPresent(className)) { + return provider.isSuggestionCompleted(mContext); + } + return false; } diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java index 287a661c7ab..277642d6079 100644 --- a/src/com/android/settings/overlay/FeatureFactory.java +++ b/src/com/android/settings/overlay/FeatureFactory.java @@ -21,6 +21,7 @@ import android.text.TextUtils; import android.util.Log; import com.android.settings.R; +import com.android.settings.dashboard.SuggestionFeatureProvider; import com.android.settings.fuelgauge.PowerUsageFeatureProvider; /** @@ -60,6 +61,8 @@ public abstract class FeatureFactory { return sFactory; } + public abstract SuggestionFeatureProvider getSuggestionFeatureProvider(); + public abstract SupportFeatureProvider getSupportFeatureProvider(Context context); public abstract PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context); diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java index 0abd8652514..a31ce726026 100644 --- a/src/com/android/settings/overlay/FeatureFactoryImpl.java +++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java @@ -18,6 +18,8 @@ package com.android.settings.overlay; import android.content.Context; import android.support.annotation.Keep; +import com.android.settings.dashboard.SuggestionFeatureProvider; +import com.android.settings.dashboard.SuggestionFeatureProviderImpl; import com.android.settings.fuelgauge.PowerUsageFeatureProvider; /** @@ -26,6 +28,8 @@ import com.android.settings.fuelgauge.PowerUsageFeatureProvider; @Keep public class FeatureFactoryImpl extends FeatureFactory { + private SuggestionFeatureProvider mSuggestionFeatureProvider; + @Override public SupportFeatureProvider getSupportFeatureProvider(Context context) { return null; @@ -41,4 +45,12 @@ public class FeatureFactoryImpl extends FeatureFactory { return null; } + @Override + public SuggestionFeatureProvider getSuggestionFeatureProvider() { + if (mSuggestionFeatureProvider == null) { + mSuggestionFeatureProvider = new SuggestionFeatureProviderImpl(); + } + return mSuggestionFeatureProvider; + } + }