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

Commit d0633316 authored by Jason Chiu's avatar Jason Chiu
Browse files

Cleanup notification channel slice

Fixes: 144897605
Test: robotest

Change-Id: I1b654f31c6b001ef6f1eed95a87ca0b2dd1afc2e
parent fb6711ae
Loading
Loading
Loading
Loading
+0 −14
Original line number Original line Diff line number Diff line
@@ -11890,20 +11890,6 @@
        <item quantity="other"><xliff:g id="service_count">%1$d</xliff:g> apps have full access to your device</item>
        <item quantity="other"><xliff:g id="service_count">%1$d</xliff:g> apps have full access to your device</item>
    </plurals>
    </plurals>
    <!-- Title for notification channel slice. [CHAR LIMIT=NONE] -->
    <string name="manage_app_notification">Manage <xliff:g id="app_name" example="Settings">%1$s</xliff:g> notifications</string>
    <!-- Title for no suggested app in notification channel slice. [CHAR LIMIT=NONE] -->
    <string name="no_suggested_app">No suggested application</string>
    <!-- Summary for the channels count is equal or less than 3 in notification channel slice. [CHAR LIMIT=NONE] -->
    <plurals name="notification_few_channel_count_summary">
        <item quantity="one"><xliff:g id="notification_channel_count" example="1">%1$d</xliff:g> notification channel.</item>
        <item quantity="other"><xliff:g id="notification_channel_count" example="3">%1$d</xliff:g> notification channels.</item>
    </plurals>
    <!-- Summary for the channels count is more than 3 in notification channel slice. [CHAR LIMIT=NONE] -->
    <string name="notification_many_channel_count_summary"><xliff:g id="notification_channel_count" example="4">%1$d</xliff:g> notification channels. Tap to manage all.</string>
    <!-- Summary for recently installed app in contextual notification channel slice. [CHAR LIMIT=NONE] -->
    <string name="recently_installed_app">You recently installed this app.</string>
    <!-- Title for the Switch output dialog (settings panel) with media related devices [CHAR LIMIT=50] -->
    <!-- Title for the Switch output dialog (settings panel) with media related devices [CHAR LIMIT=50] -->
    <string name="media_output_panel_title">Switch output</string>
    <string name="media_output_panel_title">Switch output</string>
    <!-- Summary for represent which device is playing media [CHAR LIMIT=NONE] -->
    <!-- Summary for represent which device is playing media [CHAR LIMIT=NONE] -->
+0 −5
Original line number Original line Diff line number Diff line
@@ -19,8 +19,6 @@ package com.android.settings.homepage.contextualcards;
import android.content.Context;
import android.content.Context;
import android.database.Cursor;
import android.database.Cursor;


import androidx.slice.Slice;

/** Feature provider for the contextual card feature. */
/** Feature provider for the contextual card feature. */
public interface ContextualCardFeatureProvider {
public interface ContextualCardFeatureProvider {
    /** Get contextual cards from the card provider */
    /** Get contextual cards from the card provider */
@@ -35,7 +33,4 @@ public interface ContextualCardFeatureProvider {
     * @return The number of rows updated
     * @return The number of rows updated
     */
     */
    int markCardAsDismissed(Context context, String cardName);
    int markCardAsDismissed(Context context, String cardName);

    /** Log package when user clicks contextual notification channel card. */
    void logNotificationPackage(Slice slice);
}
}
+0 −36
Original line number Original line Diff line number Diff line
@@ -16,33 +16,20 @@


package com.android.settings.homepage.contextualcards;
package com.android.settings.homepage.contextualcards;


import static android.content.Context.MODE_PRIVATE;

import static com.android.settings.homepage.contextualcards.CardDatabaseHelper.CARD_TABLE;
import static com.android.settings.homepage.contextualcards.CardDatabaseHelper.CARD_TABLE;


import android.content.ContentValues;
import android.content.ContentValues;
import android.content.Context;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Build;
import android.text.format.DateUtils;
import android.text.format.DateUtils;
import android.util.ArraySet;
import android.util.Log;
import android.util.Log;


import androidx.annotation.VisibleForTesting;
import androidx.annotation.VisibleForTesting;
import androidx.slice.Slice;
import androidx.slice.SliceMetadata;
import androidx.slice.core.SliceAction;


import com.android.settings.SettingsActivity;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.homepage.contextualcards.slices.ContextualNotificationChannelSlice;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.utils.ThreadUtils;


import java.util.Set;

public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureProvider {
public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureProvider {
    private static final String TAG = "ContextualCardFeatureProvider";
    private static final String TAG = "ContextualCardFeatureProvider";


@@ -79,29 +66,6 @@ public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureP
        return rowsUpdated;
        return rowsUpdated;
    }
    }


    @Override
    public void logNotificationPackage(Slice slice) {
        if (slice == null || !slice.getUri().equals(
                CustomSliceRegistry.CONTEXTUAL_NOTIFICATION_CHANNEL_SLICE_URI)) {
            return;
        }

        final SliceAction primaryAction = SliceMetadata.from(mContext, slice).getPrimaryAction();
        final String currentPackage = primaryAction.getAction().getIntent()
                .getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
                .getString(AppInfoBase.ARG_PACKAGE_NAME);

        final SharedPreferences prefs = mContext.getSharedPreferences(
                ContextualNotificationChannelSlice.PREFS, MODE_PRIVATE);
        final Set<String> interactedPackages = prefs.getStringSet(
                ContextualNotificationChannelSlice.PREF_KEY_INTERACTED_PACKAGES, new ArraySet<>());

        final Set<String> newInteractedPackages = new ArraySet<>(interactedPackages);
        newInteractedPackages.add(currentPackage);
        prefs.edit().putStringSet(ContextualNotificationChannelSlice.PREF_KEY_INTERACTED_PACKAGES,
                newInteractedPackages).apply();
    }

    @VisibleForTesting
    @VisibleForTesting
    int resetDismissedTime(long threshold) {
    int resetDismissedTime(long threshold) {
        final SQLiteDatabase database =
        final SQLiteDatabase database =
+2 −4
Original line number Original line Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.settings.homepage.contextualcards;


import static com.android.settings.intelligence.ContextualCardProto.ContextualCard.Category.STICKY_VALUE;
import static com.android.settings.intelligence.ContextualCardProto.ContextualCard.Category.STICKY_VALUE;
import static com.android.settings.slices.CustomSliceRegistry.BLUETOOTH_DEVICES_SLICE_URI;
import static com.android.settings.slices.CustomSliceRegistry.BLUETOOTH_DEVICES_SLICE_URI;
import static com.android.settings.slices.CustomSliceRegistry.CONTEXTUAL_NOTIFICATION_CHANNEL_SLICE_URI;
import static com.android.settings.slices.CustomSliceRegistry.CONTEXTUAL_WIFI_SLICE_URI;
import static com.android.settings.slices.CustomSliceRegistry.CONTEXTUAL_WIFI_SLICE_URI;


import android.app.settings.SettingsEnums;
import android.app.settings.SettingsEnums;
@@ -201,7 +200,7 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
                    cards.add(card);
                    cards.add(card);
                }
                }
            } catch (ExecutionException | InterruptedException | TimeoutException e) {
            } catch (ExecutionException | InterruptedException | TimeoutException e) {
                Log.w(TAG, "Failed to get eligible state for card, likely timeout. Skipping", e);
                Log.w(TAG, "Failed to get eligible state for card: " + e.toString());
            }
            }
        }
        }
        return cards;
        return cards;
@@ -209,8 +208,7 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>


    private boolean isLargeCard(ContextualCard card) {
    private boolean isLargeCard(ContextualCard card) {
        return card.getSliceUri().equals(CONTEXTUAL_WIFI_SLICE_URI)
        return card.getSliceUri().equals(CONTEXTUAL_WIFI_SLICE_URI)
                || card.getSliceUri().equals(BLUETOOTH_DEVICES_SLICE_URI)
                || card.getSliceUri().equals(BLUETOOTH_DEVICES_SLICE_URI);
                || card.getSliceUri().equals(CONTEXTUAL_NOTIFICATION_CHANNEL_SLICE_URI);
    }
    }


    public interface CardContentLoaderListener {
    public interface CardContentLoaderListener {
+0 −9
Original line number Original line Diff line number Diff line
@@ -56,14 +56,6 @@ public class SettingsContextualCardProvider extends ContextualCardProvider {
                        .setCardName(CustomSliceRegistry.BATTERY_FIX_SLICE_URI.toString())
                        .setCardName(CustomSliceRegistry.BATTERY_FIX_SLICE_URI.toString())
                        .setCardCategory(ContextualCard.Category.IMPORTANT)
                        .setCardCategory(ContextualCard.Category.IMPORTANT)
                        .build();
                        .build();
        final String contextualNotificationChannelSliceUri =
                CustomSliceRegistry.CONTEXTUAL_NOTIFICATION_CHANNEL_SLICE_URI.toString();
        final ContextualCard notificationChannelCard =
                ContextualCard.newBuilder()
                        .setSliceUri(contextualNotificationChannelSliceUri)
                        .setCardName(contextualNotificationChannelSliceUri)
                        .setCardCategory(ContextualCard.Category.POSSIBLE)
                        .build();
        final String contextualAdaptiveSleepSliceUri =
        final String contextualAdaptiveSleepSliceUri =
                CustomSliceRegistry.CONTEXTUAL_ADAPTIVE_SLEEP_URI.toString();
                CustomSliceRegistry.CONTEXTUAL_ADAPTIVE_SLEEP_URI.toString();
        final ContextualCard contextualAdaptiveSleepCard =
        final ContextualCard contextualAdaptiveSleepCard =
@@ -89,7 +81,6 @@ public class SettingsContextualCardProvider extends ContextualCardProvider {
                .addCard(connectedDeviceCard)
                .addCard(connectedDeviceCard)
                .addCard(lowStorageCard)
                .addCard(lowStorageCard)
                .addCard(batteryFixCard)
                .addCard(batteryFixCard)
                .addCard(notificationChannelCard)
                .addCard(contextualAdaptiveSleepCard)
                .addCard(contextualAdaptiveSleepCard)
                .addCard(contextualFaceSettingsCard)
                .addCard(contextualFaceSettingsCard)
                .addCard(darkThemeCard)
                .addCard(darkThemeCard)
Loading