diff --git a/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionCard.java deleted file mode 100644 index d4fc2750124..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionCard.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; - -public class AirplaneModeConditionCard implements ConditionalCard { - - private final Context mAppContext; - - public AirplaneModeConditionCard(Context appContext) { - mAppContext = appContext; - } - - @Override - public long getId() { - return AirplaneModeConditionController.ID; - } - - @Override - public CharSequence getActionText() { - return mAppContext.getText(R.string.condition_turn_off); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_AIRPLANE_MODE; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_airplanemode_active); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_airplane_title); - } - - @Override - public CharSequence getSummary() { - return mAppContext.getText(R.string.condition_airplane_summary); - } -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionController.java index 759956688e4..b6bb05af38d 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionController.java @@ -23,6 +23,9 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.provider.Settings; +import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; +import com.android.settings.homepage.contextualcards.ContextualCard; import com.android.settingslib.WirelessUtils; import java.util.Objects; @@ -65,6 +68,20 @@ public class AirplaneModeConditionController implements ConditionalCardControlle ConnectivityManager.from(mAppContext).setAirplaneMode(false); } + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_AIRPLANE_MODE) + .setActionText(mAppContext.getText(R.string.condition_turn_off)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_airplane_title)) + .setTitleText(mAppContext.getText(R.string.condition_airplane_title).toString()) + .setSummaryText(mAppContext.getText(R.string.condition_airplane_summary).toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_airplanemode_active)) + .build(); + } + @Override public void startMonitoringStateChange() { mAppContext.registerReceiver(mReceiver, AIRPLANE_MODE_FILTER); diff --git a/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionCard.java deleted file mode 100644 index e3de2d63f25..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionCard.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; - -public class BackgroundDataConditionCard implements ConditionalCard { - - private final Context mAppContext; - - public BackgroundDataConditionCard(Context appContext) { - mAppContext = appContext; - } - - @Override - public long getId() { - return BackgroundDataConditionController.ID; - } - - @Override - public CharSequence getActionText() { - return mAppContext.getText(R.string.condition_turn_off); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_BACKGROUND_DATA; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_data_saver); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_bg_data_title); - } - - @Override - public CharSequence getSummary() { - return mAppContext.getText(R.string.condition_bg_data_summary); - } -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionController.java index fa40cf359ef..8b0ee42b3c8 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionController.java @@ -20,7 +20,10 @@ import android.content.Context; import android.content.Intent; import android.net.NetworkPolicyManager; +import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; import com.android.settings.Settings; +import com.android.settings.homepage.contextualcards.ContextualCard; import java.util.Objects; @@ -59,6 +62,20 @@ public class BackgroundDataConditionController implements ConditionalCardControl mConditionManager.onConditionChanged(); } + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_BACKGROUND_DATA) + .setActionText(mAppContext.getText(R.string.condition_turn_off)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_bg_data_title)) + .setTitleText(mAppContext.getText(R.string.condition_bg_data_title).toString()) + .setSummaryText(mAppContext.getText(R.string.condition_bg_data_summary).toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_data_saver)) + .build(); + } + @Override public void startMonitoringStateChange() { diff --git a/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionCard.java deleted file mode 100644 index 4423592daf1..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionCard.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; - -public class BatterySaverConditionCard implements ConditionalCard { - - private final Context mAppContext; - - public BatterySaverConditionCard(Context appContext) { - mAppContext = appContext; - } - - @Override - public long getId() { - return BatterySaverConditionController.ID; - } - - @Override - public CharSequence getActionText() { - return mAppContext.getText(R.string.condition_turn_off); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_BATTERY_SAVER; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_battery_saver_accent_24dp); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_battery_title); - } - - @Override - public CharSequence getSummary() { - return mAppContext.getText(R.string.condition_battery_summary); - } -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionController.java index 8887c7db8f5..66901f30506 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionController.java @@ -24,6 +24,7 @@ import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; import com.android.settings.fuelgauge.BatterySaverReceiver; import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings; +import com.android.settings.homepage.contextualcards.ContextualCard; import com.android.settingslib.fuelgauge.BatterySaverUtils; import java.util.Objects; @@ -70,6 +71,20 @@ public class BatterySaverConditionController implements ConditionalCardControlle /*needFirstTimeWarning*/ false); } + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_BATTERY_SAVER) + .setActionText(mAppContext.getText(R.string.condition_turn_off)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_battery_title)) + .setTitleText(mAppContext.getText(R.string.condition_battery_title).toString()) + .setSummaryText(mAppContext.getText(R.string.condition_battery_summary).toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_battery_saver_accent_24dp)) + .build(); + } + @Override public void startMonitoringStateChange() { mReceiver.setListening(true); diff --git a/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionCard.java deleted file mode 100644 index e401de04be7..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionCard.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; - -public class CellularDataConditionCard implements ConditionalCard { - - private final Context mAppContext; - - public CellularDataConditionCard(Context appContext) { - mAppContext = appContext; - } - - @Override - public long getId() { - return CellularDataConditionController.ID; - } - - @Override - public CharSequence getActionText() { - return mAppContext.getText(R.string.condition_turn_on); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_CELLULAR_DATA; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_cellular_off); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_cellular_title); - } - - @Override - public CharSequence getSummary() { - return mAppContext.getText(R.string.condition_cellular_summary); - } -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionController.java index 5709bf672cd..b2fbbcbc1c4 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionController.java @@ -23,8 +23,11 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.telephony.TelephonyManager; +import com.android.internal.logging.nano.MetricsProto; import com.android.internal.telephony.TelephonyIntents; +import com.android.settings.R; import com.android.settings.Settings; +import com.android.settings.homepage.contextualcards.ContextualCard; import java.util.Objects; @@ -75,6 +78,20 @@ public class CellularDataConditionController implements ConditionalCardControlle mTelephonyManager.setDataEnabled(true); } + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_CELLULAR_DATA) + .setActionText(mAppContext.getText(R.string.condition_turn_on)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_cellular_title)) + .setTitleText(mAppContext.getText(R.string.condition_cellular_title).toString()) + .setSummaryText(mAppContext.getText(R.string.condition_cellular_summary).toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_cellular_off)) + .build(); + } + @Override public void startMonitoringStateChange() { mAppContext.registerReceiver(mReceiver, DATA_CONNECTION_FILTER); diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java index 1f1f757e120..eb658196500 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java @@ -26,7 +26,6 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -84,24 +83,7 @@ public class ConditionContextualCardController implements ContextualCardControll @Override public void onConditionsChanged() { - final List conditionCards = new ArrayList<>(); - final List conditionList = mConditionManager.getDisplayableCards(); - - for (ConditionalCard condition : conditionList) { - final ContextualCard conditionCard = - new ConditionalContextualCard.Builder() - .setConditionId(condition.getId()) - .setMetricsConstant(condition.getMetricsConstant()) - .setActionText(condition.getActionText()) - .setName(mContext.getPackageName() + "/" - + condition.getTitle().toString()) - .setTitleText(condition.getTitle().toString()) - .setSummaryText(condition.getSummary().toString()) - .setIconDrawable(condition.getIcon()) - .build(); - - conditionCards.add(conditionCard); - } + final List conditionCards = mConditionManager.getDisplayableCards(); if (mListener != null) { final Map> conditionalCards = new ArrayMap<>(); diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionManager.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionManager.java index d910b9075b4..c741b98c359 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionManager.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionManager.java @@ -22,6 +22,8 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; +import com.android.settings.homepage.contextualcards.ContextualCard; + import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; @@ -35,8 +37,6 @@ import java.util.concurrent.TimeoutException; public class ConditionManager { private static final String TAG = "ConditionManager"; - @VisibleForTesting - final List mCandidates; @VisibleForTesting final List mCardControllers; @@ -51,29 +51,27 @@ public class ConditionManager { public ConditionManager(Context context, ConditionListener listener) { mAppContext = context.getApplicationContext(); mExecutorService = Executors.newCachedThreadPool(); - mCandidates = new ArrayList<>(); mCardControllers = new ArrayList<>(); mListener = listener; initCandidates(); } /** - * Returns a list of {@link ConditionalCard}s eligible for display. + * Returns a list of {@link ContextualCard}s eligible for display. */ - public List getDisplayableCards() { - final List cards = new ArrayList<>(); - final List> displayableCards = new ArrayList<>(); + public List getDisplayableCards() { + final List cards = new ArrayList<>(); + final List> displayableCards = new ArrayList<>(); // Check displayable future - for (ConditionalCard card : mCandidates) { - final DisplayableChecker future = new DisplayableChecker( - card, getController(card.getId())); + for (ConditionalCardController card : mCardControllers) { + final DisplayableChecker future = new DisplayableChecker(getController(card.getId())); displayableCards.add(mExecutorService.submit(future)); } // Collect future and add displayable cards - for (Future cardFuture : displayableCards) { + for (Future cardFuture : displayableCards) { try { - final ConditionalCard card = cardFuture.get(DISPLAYABLE_CHECKER_TIMEOUT_MS, - TimeUnit.MILLISECONDS); + final ContextualCard card = cardFuture.get( + DISPLAYABLE_CHECKER_TIMEOUT_MS, TimeUnit.MILLISECONDS); if (card != null) { cards.add(card); } @@ -142,7 +140,7 @@ public class ConditionManager { } @NonNull - T getController(long id) { + private T getController(long id) { for (ConditionalCardController controller : mCardControllers) { if (controller.getId() == id) { return (T) controller; @@ -164,36 +162,22 @@ public class ConditionManager { mCardControllers.add(new RingerVibrateConditionController(mAppContext, this /* manager */)); mCardControllers.add(new RingerMutedConditionController(mAppContext, this /* manager */)); mCardControllers.add(new WorkModeConditionController(mAppContext, this /* manager */)); - - // Initialize ui model later. UI model depends on controller. - mCandidates.add(new AirplaneModeConditionCard(mAppContext)); - mCandidates.add(new BackgroundDataConditionCard(mAppContext)); - mCandidates.add(new BatterySaverConditionCard(mAppContext)); - mCandidates.add(new CellularDataConditionCard(mAppContext)); - mCandidates.add(new DndConditionCard(mAppContext, this /* manager */)); - mCandidates.add(new HotspotConditionCard(mAppContext, this /* manager */)); - mCandidates.add(new NightDisplayConditionCard(mAppContext)); - mCandidates.add(new RingerMutedConditionCard(mAppContext)); - mCandidates.add(new RingerVibrateConditionCard(mAppContext)); - mCandidates.add(new WorkModeConditionCard(mAppContext)); } /** * Returns card if controller says it's displayable. Otherwise returns null. */ - public static class DisplayableChecker implements Callable { + public static class DisplayableChecker implements Callable { - private final ConditionalCard mCard; private final ConditionalCardController mController; - private DisplayableChecker(ConditionalCard card, ConditionalCardController controller) { - mCard = card; + private DisplayableChecker(ConditionalCardController controller) { mController = controller; } @Override - public ConditionalCard call() throws Exception { - return mController.isDisplayable() ? mCard : null; + public ContextualCard call() throws Exception { + return mController.isDisplayable() ? mController.buildContextualCard() : null; } } } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionalCard.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionalCard.java deleted file mode 100644 index 4d80a735238..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionalCard.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.graphics.drawable.Drawable; - -/** - * UI Model for a conditional card displayed on homepage. - */ -public interface ConditionalCard { - - /** - * A stable ID for this card. - * - * @see {@link ConditionalCardController#getId()} - */ - long getId(); - - /** - * The text display on the card for click action. - */ - CharSequence getActionText(); - - /** - * Metrics constant used for logging user interaction. - */ - int getMetricsConstant(); - - Drawable getIcon(); - - CharSequence getTitle(); - - CharSequence getSummary(); -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionalCardController.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionalCardController.java index 0447b11e7e1..bc68cce787a 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionalCardController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionalCardController.java @@ -18,15 +18,15 @@ package com.android.settings.homepage.contextualcards.conditional; import android.content.Context; +import com.android.settings.homepage.contextualcards.ContextualCard; + /** - * Data controller for a {@link ConditionalCard}. + * Data controller for a {@link ConditionalContextualCard}. */ public interface ConditionalCardController { /** * A stable ID for this card. - * - * @see {@link ConditionalCard#getId()} */ long getId(); @@ -45,6 +45,11 @@ public interface ConditionalCardController { */ void onActionClick(); + /** + * Creates a UI model suitable for display, controlled by this controller. + */ + ContextualCard buildContextualCard(); + void startMonitoringStateChange(); void stopMonitoringStateChange(); diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCard.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCard.java index 5537dd56420..81219c33010 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCard.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCard.java @@ -22,7 +22,7 @@ import com.android.settings.homepage.contextualcards.ContextualCard; * Data class representing a conditional {@link ContextualCard}. * * Use this class to store additional attributes on top of {@link ContextualCard} for - * {@link ConditionalCard}. + * {@link ConditionalCardController}. */ public class ConditionalContextualCard extends ContextualCard { diff --git a/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCard.java deleted file mode 100644 index c4adaa48b9f..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCard.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; - -public class DndConditionCard implements ConditionalCard { - - private final Context mAppContext; - private final DndConditionCardController mController; - - public DndConditionCard(Context appContext, ConditionManager manager) { - mAppContext = appContext; - mController = manager.getController(getId()); - } - - @Override - public long getId() { - return DndConditionCardController.ID; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_zen_title); - } - - @Override - public CharSequence getSummary() { - return mController.getSummary(); - } - - @Override - public CharSequence getActionText() { - return mAppContext.getText(R.string.condition_turn_off); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_DND; - } -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java b/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java index 2903428d056..21cb6c0aa9a 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java @@ -29,6 +29,7 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; +import com.android.settings.homepage.contextualcards.ContextualCard; import com.android.settings.notification.ZenModeSettings; import java.util.Objects; @@ -88,6 +89,20 @@ public class DndConditionCardController implements ConditionalCardController { mNotificationManager.setZenMode(Settings.Global.ZEN_MODE_OFF, null, TAG); } + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_DND) + .setActionText(mAppContext.getText(R.string.condition_turn_off)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_zen_title)) + .setTitleText(mAppContext.getText(R.string.condition_zen_title).toString()) + .setSummaryText(getSummary().toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp)) + .build(); + } + public CharSequence getSummary() { final int zen = mNotificationManager.getZenMode(); final ZenModeConfig config; diff --git a/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionCard.java deleted file mode 100644 index 35c9251e6f5..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionCard.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.os.UserHandle; -import android.os.UserManager; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; -import com.android.settingslib.RestrictedLockUtilsInternal; - -public class HotspotConditionCard implements ConditionalCard { - - private final Context mAppContext; - private final ConditionManager mConditionManager; - - public HotspotConditionCard(Context appContext, ConditionManager manager) { - mAppContext = appContext; - mConditionManager = manager; - } - - @Override - public long getId() { - return HotspotConditionController.ID; - } - - @Override - public CharSequence getActionText() { - if (RestrictedLockUtilsInternal.hasBaseUserRestriction(mAppContext, - UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId())) { - return null; - } - return mAppContext.getText(R.string.condition_turn_off); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_HOTSPOT; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_hotspot); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_hotspot_title); - } - - @Override - public CharSequence getSummary() { - final HotspotConditionController controller = mConditionManager.getController(getId()); - return controller.getSummary(); - } -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java index 1a6aa0c0b01..eec7e4a2cdc 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java @@ -30,6 +30,7 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.TetherSettings; import com.android.settings.core.SubSettingLauncher; +import com.android.settings.homepage.contextualcards.ContextualCard; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtilsInternal; @@ -87,6 +88,20 @@ public class HotspotConditionController implements ConditionalCardController { } } + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_HOTSPOT) + .setActionText(mAppContext.getText(R.string.condition_turn_off)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_hotspot_title)) + .setTitleText(mAppContext.getText(R.string.condition_hotspot_title).toString()) + .setSummaryText(getSummary().toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_hotspot)) + .build(); + } + @Override public void startMonitoringStateChange() { mAppContext.registerReceiver(mReceiver, WIFI_AP_STATE_FILTER); diff --git a/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionCard.java deleted file mode 100644 index eadb6b292b2..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionCard.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; - -public class NightDisplayConditionCard implements ConditionalCard { - - private final Context mAppContext; - - public NightDisplayConditionCard(Context appContext) { - mAppContext = appContext; - } - - @Override - public long getId() { - return NightDisplayConditionController.ID; - } - - @Override - public CharSequence getActionText() { - return mAppContext.getText(R.string.condition_turn_off); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_NIGHT_DISPLAY; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_settings_night_display); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_night_display_title); - } - - @Override - public CharSequence getSummary() { - return mAppContext.getText(R.string.condition_night_display_summary); - } -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionController.java index 6b005650a44..d8d5f798ef3 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionController.java @@ -23,6 +23,7 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; import com.android.settings.display.NightDisplaySettings; +import com.android.settings.homepage.contextualcards.ContextualCard; import java.util.Objects; @@ -30,11 +31,13 @@ public class NightDisplayConditionController implements ConditionalCardControlle ColorDisplayController.Callback { static final int ID = Objects.hash("NightDisplayConditionController"); + private final Context mAppContext; private final ConditionManager mConditionManager; private final ColorDisplayController mController; public NightDisplayConditionController(Context appContext, ConditionManager manager) { mController = new ColorDisplayController(appContext); + mAppContext = appContext; mConditionManager = manager; } @@ -62,6 +65,22 @@ public class NightDisplayConditionController implements ConditionalCardControlle mController.setActivated(false); } + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_NIGHT_DISPLAY) + .setActionText(mAppContext.getText(R.string.condition_turn_off)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_night_display_title)) + .setTitleText(mAppContext.getText( + R.string.condition_night_display_title).toString()) + .setSummaryText( + mAppContext.getText(R.string.condition_night_display_summary).toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_settings_night_display)) + .build(); + } + @Override public void startMonitoringStateChange() { mController.setListener(this); diff --git a/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionCard.java deleted file mode 100644 index d7009f672af..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionCard.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; - -public class RingerMutedConditionCard implements ConditionalCard { - - private final Context mAppContext; - - public RingerMutedConditionCard(Context appContext) { - mAppContext = appContext; - } - - @Override - public long getId() { - return RingerMutedConditionController.ID; - } - - @Override - public CharSequence getActionText() { - return mAppContext.getText(R.string.condition_device_muted_action_turn_on_sound); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_DEVICE_MUTED; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_notifications_off_24dp); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_device_muted_title); - } - - @Override - public CharSequence getSummary() { - return mAppContext.getText(R.string.condition_device_muted_summary); - } -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionController.java index cbab1bbf598..75a72fd7da4 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionController.java @@ -23,15 +23,21 @@ import android.content.Context; import android.media.AudioManager; import android.provider.Settings; +import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; +import com.android.settings.homepage.contextualcards.ContextualCard; + import java.util.Objects; public class RingerMutedConditionController extends AbnormalRingerConditionController { static final int ID = Objects.hash("RingerMutedConditionController"); private final NotificationManager mNotificationManager; + private final Context mAppContext; public RingerMutedConditionController(Context appContext, ConditionManager conditionManager) { super(appContext, conditionManager); + mAppContext = appContext; mNotificationManager = (NotificationManager) appContext.getSystemService(NOTIFICATION_SERVICE); } @@ -52,4 +58,20 @@ public class RingerMutedConditionController extends AbnormalRingerConditionContr mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT; return isSilent && !zenModeEnabled; } + + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_DEVICE_MUTED) + .setActionText( + mAppContext.getText(R.string.condition_device_muted_action_turn_on_sound)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_device_muted_title)) + .setTitleText(mAppContext.getText(R.string.condition_device_muted_title).toString()) + .setSummaryText( + mAppContext.getText(R.string.condition_device_muted_summary).toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_notifications_off_24dp)) + .build(); + } } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionCard.java deleted file mode 100644 index 38e3d88fad1..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionCard.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; - -public class RingerVibrateConditionCard implements ConditionalCard { - - private final Context mAppContext; - - public RingerVibrateConditionCard(Context appContext) { - mAppContext = appContext; - } - - @Override - public long getId() { - return RingerVibrateConditionController.ID; - } - - @Override - public CharSequence getActionText() { - return mAppContext.getText(R.string.condition_device_muted_action_turn_on_sound); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_DEVICE_VIBRATE; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_volume_ringer_vibrate); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_device_vibrate_title); - } - - @Override - public CharSequence getSummary() { - return mAppContext.getText(R.string.condition_device_vibrate_summary); - } -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionController.java index e230e8c2875..4c355a3d0b7 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionController.java @@ -19,13 +19,20 @@ package com.android.settings.homepage.contextualcards.conditional; import android.content.Context; import android.media.AudioManager; +import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; +import com.android.settings.homepage.contextualcards.ContextualCard; + import java.util.Objects; public class RingerVibrateConditionController extends AbnormalRingerConditionController { static final int ID = Objects.hash("RingerVibrateConditionController"); + private final Context mAppContext; + public RingerVibrateConditionController(Context appContext, ConditionManager conditionManager) { super(appContext, conditionManager); + mAppContext = appContext; } @@ -38,4 +45,21 @@ public class RingerVibrateConditionController extends AbnormalRingerConditionCon public boolean isDisplayable() { return mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE; } + + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_DEVICE_VIBRATE) + .setActionText( + mAppContext.getText(R.string.condition_device_muted_action_turn_on_sound)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_device_vibrate_title)) + .setTitleText( + mAppContext.getText(R.string.condition_device_vibrate_title).toString()) + .setSummaryText( + mAppContext.getText(R.string.condition_device_vibrate_summary).toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_volume_ringer_vibrate)) + .build(); + } } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionCard.java b/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionCard.java deleted file mode 100644 index 86313ad621d..00000000000 --- a/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionCard.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; - -public class WorkModeConditionCard implements ConditionalCard { - - private final Context mAppContext; - - public WorkModeConditionCard(Context appContext) { - mAppContext = appContext; - } - - @Override - public long getId() { - return WorkModeConditionController.ID; - } - - @Override - public CharSequence getActionText() { - return mAppContext.getText(R.string.condition_turn_on); - } - - @Override - public int getMetricsConstant() { - return MetricsProto.MetricsEvent.SETTINGS_CONDITION_WORK_MODE; - } - - @Override - public Drawable getIcon() { - return mAppContext.getDrawable(R.drawable.ic_signal_workmode_enable); - } - - @Override - public CharSequence getTitle() { - return mAppContext.getText(R.string.condition_work_title); - } - - @Override - public CharSequence getSummary() { - return mAppContext.getText(R.string.condition_work_summary); - } - -} diff --git a/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java index 9cdac03ff7d..c508403fb39 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java @@ -25,7 +25,10 @@ import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; +import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; import com.android.settings.Settings; +import com.android.settings.homepage.contextualcards.ContextualCard; import java.util.List; import java.util.Objects; @@ -79,6 +82,20 @@ public class WorkModeConditionController implements ConditionalCardController { } } + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder() + .setConditionId(ID) + .setMetricsConstant(MetricsProto.MetricsEvent.SETTINGS_CONDITION_WORK_MODE) + .setActionText(mAppContext.getText(R.string.condition_turn_on)) + .setName(mAppContext.getPackageName() + "/" + + mAppContext.getText(R.string.condition_work_title)) + .setTitleText(mAppContext.getText(R.string.condition_work_title).toString()) + .setSummaryText(mAppContext.getText(R.string.condition_work_summary).toString()) + .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_signal_workmode_enable)) + .build(); + } + @Override public void startMonitoringStateChange() { mAppContext.registerReceiver(mReceiver, FILTER); diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/AbnormalRingerConditionControllerBaseTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/AbnormalRingerConditionControllerBaseTest.java index 91071db5d8e..d27e0242851 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/AbnormalRingerConditionControllerBaseTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/AbnormalRingerConditionControllerBaseTest.java @@ -23,6 +23,7 @@ import android.content.Context; import android.content.Intent; import android.media.AudioManager; +import com.android.settings.homepage.contextualcards.ContextualCard; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; @@ -79,5 +80,10 @@ public class AbnormalRingerConditionControllerBaseTest { public boolean isDisplayable() { return false; } + + @Override + public ContextualCard buildContextualCard() { + return new ConditionalContextualCard.Builder().build(); + } } } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardControllerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardControllerTest.java index 2befb21607d..ab82a543f93 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardControllerTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardControllerTest.java @@ -23,9 +23,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; -import android.graphics.drawable.Drawable; -import com.android.settings.R; +import com.android.settings.homepage.contextualcards.ContextualCard; import com.android.settings.homepage.contextualcards.ContextualCardUpdateListener; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -74,8 +73,8 @@ public class ConditionContextualCardControllerTest { @Test public void onConditionsChanged_listenerIsSet_shouldUpdateData() { - final FakeConditionalCard fakeConditionalCard = new FakeConditionalCard(mContext); - final List conditionalCards = new ArrayList<>(); + final ContextualCard fakeConditionalCard = new ConditionalContextualCard.Builder().build(); + final List conditionalCards = new ArrayList<>(); conditionalCards.add(fakeConditionalCard); when(mConditionManager.getDisplayableCards()).thenReturn(conditionalCards); mController.setCardUpdateListener(mListener); @@ -87,8 +86,8 @@ public class ConditionContextualCardControllerTest { @Test public void onConditionsChanged_listenerNotSet_shouldNotUpdateData() { - final FakeConditionalCard fakeConditionalCard = new FakeConditionalCard(mContext); - final List conditionalCards = new ArrayList<>(); + final ContextualCard fakeConditionalCard = new ConditionalContextualCard.Builder().build(); + final List conditionalCards = new ArrayList<>(); conditionalCards.add(fakeConditionalCard); when(mConditionManager.getDisplayableCards()).thenReturn(conditionalCards); @@ -96,43 +95,4 @@ public class ConditionContextualCardControllerTest { verify(mListener, never()).onContextualCardUpdated(any()); } - - private class FakeConditionalCard implements ConditionalCard { - - private final Context mContext; - - public FakeConditionalCard(Context context) { - mContext = context; - } - - @Override - public long getId() { - return 100; - } - - @Override - public CharSequence getActionText() { - return "action_text_test"; - } - - @Override - public int getMetricsConstant() { - return 1; - } - - @Override - public Drawable getIcon() { - return mContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp); - } - - @Override - public CharSequence getTitle() { - return "title_text_test"; - } - - @Override - public CharSequence getSummary() { - return "summary_text_test"; - } - } } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionManagerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionManagerTest.java index 82c638126aa..e8d5caa2fd2 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionManagerTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionManagerTest.java @@ -40,8 +40,6 @@ public class ConditionManagerTest { private static final long ID = 123L; - @Mock - private ConditionalCard mCard; @Mock private ConditionalCardController mController; @Mock @@ -57,14 +55,11 @@ public class ConditionManagerTest { mContext = RuntimeEnvironment.application; mManager = spy(new ConditionManager(mContext, mConditionListener)); - assertThat(mManager.mCandidates.size()).isEqualTo(mManager.mCardControllers.size()); - when(mController.getId()).thenReturn(ID); - when(mCard.getId()).thenReturn(ID); - - mManager.mCandidates.clear(); + when(mController.buildContextualCard()).thenReturn( + new ConditionalContextualCard.Builder() + .build()); mManager.mCardControllers.clear(); - mManager.mCandidates.add(mCard); mManager.mCardControllers.add(mController); } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/DndConditionalCardTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/DndConditionalCardTest.java deleted file mode 100644 index 506d3bfb309..00000000000 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/DndConditionalCardTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import android.content.Context; - -import com.android.settings.testutils.SettingsRobolectricTestRunner; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RuntimeEnvironment; - -@RunWith(SettingsRobolectricTestRunner.class) -public class DndConditionalCardTest { - - @Mock - private ConditionManager mManager; - private DndConditionCardController mController; - - private Context mContext; - private DndConditionCard mCard; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); - - mController = new DndConditionCardController(mContext, mManager); - when(mManager.getController(anyLong())).thenReturn(mController); - - mCard = new DndConditionCard(mContext, mManager); - } - - @Test - public void getId_sameAsController() { - assertThat(mCard.getId()).isEqualTo(mController.getId()); - } - -} diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionCardTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionCardTest.java deleted file mode 100644 index 0ade54d77ad..00000000000 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionCardTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2018 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.homepage.contextualcards.conditional; - - -import static com.google.common.truth.Truth.assertThat; - -import android.content.Context; - -import com.android.settings.R; -import com.android.settings.testutils.SettingsRobolectricTestRunner; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.MockitoAnnotations; -import org.robolectric.RuntimeEnvironment; - -@RunWith(SettingsRobolectricTestRunner.class) -public class RingerVibrateConditionCardTest { - - private Context mContext; - private RingerVibrateConditionCard mCard; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = RuntimeEnvironment.application; - mCard = new RingerVibrateConditionCard(mContext); - } - - @Test - public void verifyText() { - assertThat(mCard.getTitle()).isEqualTo( - mContext.getText(R.string.condition_device_vibrate_title)); - assertThat(mCard.getSummary()).isEqualTo( - mContext.getText(R.string.condition_device_vibrate_summary)); - assertThat(mCard.getActionText()).isEqualTo( - mContext.getText(R.string.condition_device_muted_action_turn_on_sound)); - } -}