Merge "Remove assistant tests" into oc-dev
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index 545fcdf..ac037b5 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -1749,15 +1749,6 @@
             <meta-data android:name="test_category" android:value="@string/test_category_notifications" />
         </activity>
 
-        <activity android:name=".notifications.NotificationAssistantVerifierActivity"
-                  android:label="@string/nas_test">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.cts.intent.category.MANUAL_TEST" />
-            </intent-filter>
-            <meta-data android:name="test_category" android:value="@string/test_category_notifications" />
-        </activity>
-
         <activity android:name=".notifications.ConditionProviderVerifierActivity"
                   android:label="@string/cp_test">
             <intent-filter>
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/MockAssistant.java b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/MockAssistant.java
deleted file mode 100644
index 5150a26..0000000
--- a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/MockAssistant.java
+++ /dev/null
@@ -1,555 +0,0 @@
-/*
- * Copyright (C) 2016 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.cts.verifier.notifications;
-
-import android.app.Activity;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.service.notification.Adjustment;
-import android.service.notification.NotificationAssistantService;
-import android.service.notification.SnoozeCriterion;
-import android.service.notification.StatusBarNotification;
-import android.util.ArrayMap;
-import android.util.Log;
-import android.util.Pair;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-public class MockAssistant extends NotificationAssistantService {
-    static final String TAG = "MockAssistant";
-
-    static final String SERVICE_BASE = "android.service.notification.cts.";
-    static final String SERVICE_CHECK = SERVICE_BASE + "SERVICE_CHECK";
-    static final String SERVICE_ENQUEUED = SERVICE_BASE + "SERVICE_ENQUEUED";
-    static final String SERVICE_POSTED = SERVICE_BASE + "SERVICE_POSTED";
-    static final String SERVICE_PAYLOADS = SERVICE_BASE + "SERVICE_PAYLOADS";
-    static final String SERVICE_REMOVED = SERVICE_BASE + "SERVICE_REMOVED";
-    static final String SERVICE_REMOVED_REASON = SERVICE_BASE + "SERVICE_REMOVED_REASON";
-    static final String SERVICE_RESET = SERVICE_BASE + "SERVICE_RESET";
-    static final String SERVICE_CLEAR_ONE = SERVICE_BASE + "SERVICE_CLEAR_ONE";
-    static final String SERVICE_CLEAR_ALL = SERVICE_BASE + "SERVICE_CLEAR_ALL";
-    public static final String SERVICE_ORDER = SERVICE_BASE + "SERVICE_ORDER";
-    public static final String SERVICE_DND = SERVICE_BASE + "SERVICE_DND";
-    public static final String SERVICE_ADJUSTMENT = SERVICE_BASE + "SERVICE_ADJUSTMENT";
-    public static final String SERVICE_CREATE_CHANNEL = SERVICE_BASE + "CREATE_CHANNEL";
-    public static final String SERVICE_UPDATE_CHANNEL = SERVICE_BASE + "UPDATE_CHANNEL";
-    public static final String SERVICE_DELETE_CHANNEL = SERVICE_BASE + "DELETE_CHANNEL";
-    public static final String SERVICE_CHECK_CHANNELS = SERVICE_BASE + "CHECK_CHANNELS";
-    public static final String SERVICE_ADJUST_ENQUEUE = SERVICE_BASE + "ADJUST_ENQUEUE";
-    public static final String SERVICE_SNOOZE_UNTIL_CONTEXT = SERVICE_BASE + "CONTEXT_SNOOZE";
-    public static final String SERVICE_SNOOZED = SERVICE_BASE + "SNOOZED_UNTIL_CONTEXT";
-    public static final String SERVICE_UNSNOOZE_ONE = SERVICE_BASE + "SERVICE_UNSNOOZE_ONE";
-
-    static final String EXTRA_PAYLOAD = "PAYLOAD";
-    static final String EXTRA_INT = "INT";
-    static final String EXTRA_TAG = "TAG";
-    static final String EXTRA_CODE = "CODE";
-    static final String EXTRA_BUNDLE = "BUNDLE";
-    static final String EXTRA_PKG = "PKG";
-    static final String EXTRA_CHANNEL = "CHANNEL";
-
-    static final int RESULT_NO_SERVER = Activity.RESULT_FIRST_USER + 1;
-
-    public static final String KEY_FLAGS = "flag";
-    public static final String KEY_ICON = "icon";
-    public static final String KEY_ID = "id";
-    public static final String KEY_PACKAGE = "pkg";
-    public static final String KEY_WHEN = "when";
-    public static final String KEY_TAG = "tag";
-    public static final String KEY_RANK = "rank";
-    public static final String KEY_AMBIENT = "ambient";
-    public static final String KEY_MATCHES_ZEN_FILTER = "matches_zen_filter";
-    public static final String KEY_REASON = "reason";
-    public static final String KEY_PEOPLE = "people";
-    public static final String KEY_CHANNEL = "channel";
-    public static final String KEY_SNOOZE_CRITERIA = "snooze";
-
-    private ArrayList<String> mEnqueued = new ArrayList<>();
-    private ArrayList<String> mPosted = new ArrayList<>();
-    private ArrayMap<String, Bundle> mNotifications = new ArrayMap<>();
-    private ArrayMap<String, String> mNotificationKeys = new ArrayMap<>();
-    private ArrayList<String> mRemoved = new ArrayList<String>();
-    private ArrayMap<String, Bundle> mRemovedReason = new ArrayMap<>();
-    private ArrayMap<String, String> mSnoozedUntilContext = new ArrayMap<>();
-    private ArrayList<String> mOrder = new ArrayList<>();
-    private Set<String> mTestPackages = new HashSet<>();
-    private BroadcastReceiver mReceiver;
-    private int mDND = -1;
-    private boolean adjustEnqueue = false;
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        Log.d(TAG, "created");
-
-        mTestPackages.add("com.android.cts.verifier");
-        mTestPackages.add("com.android.cts.robot");
-
-        mEnqueued = new ArrayList<String>();
-        mPosted = new ArrayList<String>();
-        mRemoved = new ArrayList<String>();
-        mRemovedReason = new ArrayMap<>();
-
-        mReceiver = new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                String action = intent.getAction();
-                Log.d(TAG, action);
-                if (SERVICE_CHECK.equals(action)) {
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_ENQUEUED.equals(action)) {
-                    Bundle bundle = new Bundle();
-                    bundle.putStringArrayList(EXTRA_PAYLOAD, mEnqueued);
-                    setResultExtras(bundle);
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_POSTED.equals(action)) {
-                    Bundle bundle = new Bundle();
-                    bundle.putStringArrayList(EXTRA_PAYLOAD, mPosted);
-                    setResultExtras(bundle);
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_DND.equals(action)) {
-                    Bundle bundle = new Bundle();
-                    bundle.putInt(EXTRA_INT, mDND);
-                    setResultExtras(bundle);
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_ORDER.equals(action)) {
-                    Bundle bundle = new Bundle();
-                    bundle.putStringArrayList(EXTRA_PAYLOAD, mOrder);
-                    setResultExtras(bundle);
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_PAYLOADS.equals(action)) {
-                    Bundle bundle = new Bundle();
-                    ArrayList<Bundle> payloadData = new ArrayList<>(mNotifications.size());
-                    for (Bundle notiStats : mNotifications.values()) {
-                        payloadData.add(notiStats);
-                    }
-                    bundle.putParcelableArrayList(EXTRA_PAYLOAD, payloadData);
-                    setResultExtras(bundle);
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_REMOVED.equals(action)) {
-                    Bundle bundle = new Bundle();
-                    bundle.putStringArrayList(EXTRA_PAYLOAD, mRemoved);
-                    setResultExtras(bundle);
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_REMOVED_REASON.equals(action)) {
-                    Bundle bundle = new Bundle();
-                    ArrayList<Bundle> payloadData = new ArrayList<>(mRemovedReason.size());
-                    for (Bundle notiStats : mRemovedReason.values()) {
-                        payloadData.add(notiStats);
-                    }
-                    bundle.putParcelableArrayList(EXTRA_PAYLOAD, payloadData);
-                    setResultExtras(bundle);
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_SNOOZED.equals(action)) {
-                    Bundle bundle = new Bundle();
-                    ArrayList<Bundle> payloadData = new ArrayList<>(mSnoozedUntilContext.size());
-                    for (String tag : mSnoozedUntilContext.keySet()) {
-                        Bundle b = new Bundle();
-                        b.putString(EXTRA_TAG, tag);
-                        b.putString(EXTRA_PAYLOAD, mSnoozedUntilContext.get(tag));
-                        payloadData.add(b);
-                    }
-                    bundle.putParcelableArrayList(EXTRA_PAYLOAD, payloadData);
-                    setResultExtras(bundle);
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_CLEAR_ONE.equals(action)) {
-                    String tag = intent.getStringExtra(EXTRA_TAG);
-                    String key = mNotificationKeys.get(tag);
-                    if (key != null) {
-                        MockAssistant.this.cancelNotification(key);
-                    } else {
-                        Log.w(TAG, "Notification does not exist: " + tag);
-                    }
-                } else if (SERVICE_CLEAR_ALL.equals(action)) {
-                    MockAssistant.this.cancelAllNotifications();
-                } else if (SERVICE_RESET.equals(action)) {
-                    resetData();
-                } else if (SERVICE_ADJUSTMENT.equals(action)) {
-                    String tag = intent.getStringExtra(EXTRA_TAG);
-                    String key = mNotificationKeys.get(tag);
-                    Bundle signals = intent.getBundleExtra(EXTRA_BUNDLE);
-                    Adjustment adjustment = new Adjustment(context.getPackageName(),
-                            key, signals, "", 0);
-                    MockAssistant.this.adjustNotification(adjustment);
-                } else if (SERVICE_CHECK_CHANNELS.equals(action)) {
-                    String pkg = intent.getStringExtra(EXTRA_PKG);
-                    Bundle bundle = new Bundle();
-                    List<NotificationChannel> channels =
-                            MockAssistant.this.getNotificationChannels(pkg);
-                    bundle.putParcelableArrayList(EXTRA_PAYLOAD,
-                            new ArrayList<NotificationChannel>(channels));
-                    setResultExtras(bundle);
-                    setResultCode(Activity.RESULT_OK);
-                } else if (SERVICE_CREATE_CHANNEL.equals(action)) {
-                    String pkg = intent.getStringExtra(EXTRA_PKG);
-                    NotificationChannel channel = intent.getParcelableExtra(EXTRA_CHANNEL);
-                    try {
-                        MockAssistant.this.createNotificationChannel(pkg, channel);
-                    } catch (Exception e) {
-                        Log.e(TAG, "creation failed", e);
-                    }
-                } else if (SERVICE_UPDATE_CHANNEL.equals(action)) {
-                    String pkg = intent.getStringExtra(EXTRA_PKG);
-                    NotificationChannel channel = intent.getParcelableExtra(EXTRA_CHANNEL);
-                    MockAssistant.this.updateNotificationChannel(pkg, channel);
-                } else if (SERVICE_DELETE_CHANNEL.equals(action)) {
-                    String pkg = intent.getStringExtra(EXTRA_PKG);
-                    String id = intent.getStringExtra(EXTRA_TAG);
-                    MockAssistant.this.deleteNotificationChannel(pkg, id);
-                } else if (SERVICE_ADJUST_ENQUEUE.equals(action)) {
-                    adjustEnqueue = true;
-                } else if (SERVICE_SNOOZE_UNTIL_CONTEXT.equals(action)) {
-                    String tag = intent.getStringExtra(EXTRA_TAG);
-                    String snoozeCriterionId = intent.getStringExtra(EXTRA_PAYLOAD);
-                    MockAssistant.this.snoozeNotification(
-                            mNotificationKeys.get(tag), snoozeCriterionId);
-                } else if (SERVICE_UNSNOOZE_ONE.equals(action)) {
-                    String tag = intent.getStringExtra(EXTRA_TAG);
-                    String key = mNotificationKeys.get(tag);
-                    MockAssistant.this.unsnoozeNotification(key);
-                } else {
-                    Log.w(TAG, "unknown action");
-                    setResultCode(Activity.RESULT_CANCELED);
-                }
-            }
-        };
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(SERVICE_CHECK);
-        filter.addAction(SERVICE_DND);
-        filter.addAction(SERVICE_ENQUEUED);
-        filter.addAction(SERVICE_POSTED);
-        filter.addAction(SERVICE_ORDER);
-        filter.addAction(SERVICE_PAYLOADS);
-        filter.addAction(SERVICE_REMOVED);
-        filter.addAction(SERVICE_REMOVED_REASON);
-        filter.addAction(SERVICE_CLEAR_ONE);
-        filter.addAction(SERVICE_CLEAR_ALL);
-        filter.addAction(SERVICE_RESET);
-        filter.addAction(SERVICE_ADJUSTMENT);
-        filter.addAction(SERVICE_CHECK_CHANNELS);
-        filter.addAction(SERVICE_CREATE_CHANNEL);
-        filter.addAction(SERVICE_DELETE_CHANNEL);
-        filter.addAction(SERVICE_UPDATE_CHANNEL);
-        filter.addAction(SERVICE_ADJUST_ENQUEUE);
-        filter.addAction(SERVICE_SNOOZE_UNTIL_CONTEXT);
-        filter.addAction(SERVICE_SNOOZED);
-        filter.addAction(SERVICE_UNSNOOZE_ONE);
-        registerReceiver(mReceiver, filter);
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        unregisterReceiver(mReceiver);
-        mReceiver = null;
-        Log.d(TAG, "destroyed");
-    }
-
-    @Override
-    public void onListenerConnected() {
-        super.onListenerConnected();
-        mDND = getCurrentInterruptionFilter();
-        Log.d(TAG, "initial value of CurrentInterruptionFilter is " + mDND);
-    }
-
-    @Override
-    public void onInterruptionFilterChanged(int interruptionFilter) {
-        super.onInterruptionFilterChanged(interruptionFilter);
-        mDND = interruptionFilter;
-        Log.d(TAG, "value of CurrentInterruptionFilter changed to " + mDND);
-    }
-
-    public void resetData() {
-        mEnqueued.clear();
-        mPosted.clear();
-        mNotifications.clear();
-        mRemoved.clear();
-        mRemovedReason.clear();
-        mOrder.clear();
-        mSnoozedUntilContext.clear();
-    }
-
-    @Override
-    public void onNotificationRankingUpdate(RankingMap rankingMap) {
-        String[] orderedKeys = rankingMap.getOrderedKeys();
-        mOrder.clear();
-        Ranking rank = new Ranking();
-        for( int i = 0; i < orderedKeys.length; i++) {
-            String key = orderedKeys[i];
-            mOrder.add(key);
-            rankingMap.getRanking(key, rank);
-            Bundle note = mNotifications.get(key);
-            if (note != null) {
-                note.putInt(KEY_RANK, rank.getRank());
-                note.putBoolean(KEY_AMBIENT, rank.isAmbient());
-                note.putBoolean(KEY_MATCHES_ZEN_FILTER, rank.matchesInterruptionFilter());
-                note.putParcelable(KEY_CHANNEL, rank.getChannel());
-                note.putStringArray(KEY_PEOPLE, rank.getAdditionalPeople() == null ? null
-                        : rank.getAdditionalPeople().toArray(new String[]{}));
-                note.putParcelableArray(KEY_SNOOZE_CRITERIA, rank.getSnoozeCriteria() == null
-                        ? null
-                        : rank.getSnoozeCriteria().toArray(new SnoozeCriterion[] {}));
-            }
-        }
-    }
-
-    @Override
-    public Adjustment onNotificationEnqueued(StatusBarNotification sbn) {
-        if (!mTestPackages.contains(sbn.getPackageName())) { return null; }
-        Log.d(TAG, "enqueued: " + sbn.getTag());
-        mEnqueued.add(sbn.getTag());
-
-        if (adjustEnqueue) {
-            Map<String, Bundle> adjustments =
-                    NotificationAssistantVerifierActivity.getAdjustments();
-            Bundle signals = adjustments.get(sbn.getNotification().getSortKey());
-            Adjustment adjustment = new Adjustment(sbn.getPackageName(),
-                    sbn.getKey(), signals, "", 0);
-            return adjustment;
-        }
-        return null;
-    }
-
-    @Override
-    public void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) {
-        if (!mTestPackages.contains(sbn.getPackageName())) { return; }
-        Log.d(TAG, "posted: " + sbn.getTag());
-        mPosted.add(sbn.getTag());
-        mNotifications.put(sbn.getKey(), packNotification(sbn));
-        mNotificationKeys.put(sbn.getTag(), sbn.getKey());
-        onNotificationRankingUpdate(rankingMap);
-    }
-
-    @Override
-    public void onNotificationRemoved(StatusBarNotification sbn, RankingMap rankingMap) {
-        Log.d(TAG, "removed: " + sbn.getTag());
-        mRemoved.add(sbn.getTag());
-        mNotifications.remove(sbn.getKey());
-        mNotificationKeys.remove(sbn.getTag());
-        onNotificationRankingUpdate(rankingMap);
-    }
-
-    @Override
-    public void onNotificationRemoved(StatusBarNotification sbn, RankingMap rankingMap,
-            int reason) {
-        if (!mTestPackages.contains(sbn.getPackageName())) { return; }
-        Log.d(TAG, "removed: " + sbn.getTag());
-        mRemoved.add(sbn.getTag());
-        Bundle removed = new Bundle();
-        removed.putString(KEY_TAG, sbn.getTag());
-        removed.putInt(KEY_REASON, reason);
-
-        mNotifications.remove(sbn.getKey());
-        mNotificationKeys.remove(sbn.getTag());
-        mRemovedReason.put(sbn.getTag(), removed);
-        onNotificationRankingUpdate(rankingMap);
-    }
-
-    @Override
-    public void onNotificationSnoozedUntilContext(StatusBarNotification sbn,
-            String snoozeCriteriaId) {
-        if (!mTestPackages.contains(sbn.getPackageName())) { return; }
-        Log.d(TAG, "snooze until criteria " + sbn.getKey());
-        mSnoozedUntilContext.put(sbn.getTag(), snoozeCriteriaId);
-    }
-
-    private Bundle packNotification(StatusBarNotification sbn) {
-        Bundle notification = new Bundle();
-        notification.putString(KEY_TAG, sbn.getTag());
-        notification.putInt(KEY_ID, sbn.getId());
-        notification.putString(KEY_PACKAGE, sbn.getPackageName());
-        notification.putLong(KEY_WHEN, sbn.getNotification().when);
-        notification.putInt(KEY_ICON, sbn.getNotification().icon);
-        notification.putInt(KEY_FLAGS, sbn.getNotification().flags);
-        return notification;
-    }
-
-    public static void resetListenerData(Context context) {
-        sendCommand(context, SERVICE_RESET, null, 0);
-    }
-
-    public static void probeListenerStatus(Context context, StatusCatcher catcher) {
-        requestStatus(context, SERVICE_CHECK, catcher);
-    }
-
-    public static void probeFilter(Context context, IntegerResultCatcher catcher) {
-        requestIntegerResult(context, SERVICE_DND, catcher);
-    }
-
-    public static void probeListenerEnqueued(Context context, StringListResultCatcher catcher) {
-        requestStringListResult(context, SERVICE_ENQUEUED, catcher);
-    }
-
-    public static void probeListenerPosted(Context context, StringListResultCatcher catcher) {
-        requestStringListResult(context, SERVICE_POSTED, catcher);
-    }
-
-    public static void probeListenerPayloads(Context context, BundleListResultCatcher catcher) {
-        requestBundleListResult(context, SERVICE_PAYLOADS, catcher);
-    }
-
-    public static void probeListenerRemoved(Context context, StringListResultCatcher catcher) {
-        requestStringListResult(context, SERVICE_REMOVED, catcher);
-    }
-
-    public static void probeListenerRemovedWithReason(Context context,
-            BundleListResultCatcher catcher) {
-        requestBundleListResult(context, SERVICE_REMOVED_REASON, catcher);
-    }
-
-    public static void probeAssistantSnoozeContext(Context context,
-            BundleListResultCatcher catcher) {
-        requestBundleListResult(context, SERVICE_SNOOZED, catcher);
-    }
-
-    public static void probeChannels(Context context, String pkg, BundleListResultCatcher catcher) {
-        Intent broadcast = new Intent(SERVICE_CHECK_CHANNELS);
-        broadcast.putExtra(EXTRA_PKG, pkg);
-        context.sendOrderedBroadcast(broadcast, null, catcher, null, RESULT_NO_SERVER, null, null);
-    }
-
-    public static void adjustEnqueue(Context context) {
-        sendCommand(context, SERVICE_ADJUST_ENQUEUE, null, 0);
-    }
-
-    public static void clearOne(Context context, String tag, int code) {
-        sendCommand(context, SERVICE_CLEAR_ONE, tag, code);
-    }
-
-    public static void clearAll(Context context) {
-        sendCommand(context, SERVICE_CLEAR_ALL, null, 0);
-    }
-
-    public static void createChannel(Context context, String pkg, NotificationChannel channel) {
-        Intent broadcast = new Intent(SERVICE_CREATE_CHANNEL);
-        broadcast.putExtra(EXTRA_PKG, pkg);
-        broadcast.putExtra(EXTRA_CHANNEL, channel);
-        context.sendBroadcast(broadcast);
-    }
-
-    public static void updateChannel(Context context, String pkg, NotificationChannel channel) {
-        Intent broadcast = new Intent(SERVICE_UPDATE_CHANNEL);
-        broadcast.putExtra(EXTRA_PKG, pkg);
-        broadcast.putExtra(EXTRA_CHANNEL, channel);
-        context.sendBroadcast(broadcast);
-    }
-
-    public static void deleteChannel(Context context, String pkg, String id) {
-        Intent broadcast = new Intent(SERVICE_DELETE_CHANNEL);
-        broadcast.putExtra(EXTRA_PKG, pkg);
-        broadcast.putExtra(EXTRA_TAG, id);
-        context.sendBroadcast(broadcast);
-    }
-
-    public static void applyAdjustment(Context context, String tag, Bundle signals) {
-        Intent broadcast = new Intent(SERVICE_ADJUSTMENT);
-        broadcast.putExtra(EXTRA_TAG, tag);
-        broadcast.putExtra(EXTRA_BUNDLE, signals);
-        context.sendBroadcast(broadcast);
-    }
-
-    public static void snoozeUntilContext(Context context, String tag, String id) {
-        Intent broadcast = new Intent(SERVICE_SNOOZE_UNTIL_CONTEXT);
-        broadcast.putExtra(EXTRA_TAG, tag);
-        broadcast.putExtra(EXTRA_PAYLOAD, id);
-        context.sendBroadcast(broadcast);
-    }
-
-    private static void sendCommand(Context context, String action, String tag, int code) {
-        Intent broadcast = new Intent(action);
-        if (tag != null) {
-            broadcast.putExtra(EXTRA_TAG, tag);
-            broadcast.putExtra(EXTRA_CODE, code);
-        }
-        context.sendBroadcast(broadcast);
-    }
-
-    public static void unsnoozeOne(Context context, String tag) {
-        sendCommand(context, SERVICE_UNSNOOZE_ONE, tag, 0);
-    }
-
-    public abstract static class StatusCatcher extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            accept(Integer.valueOf(getResultCode()));
-        }
-
-        abstract public void accept(int result);
-    }
-
-    private static void requestStatus(Context context, String action,
-            StatusCatcher catcher) {
-        Intent broadcast = new Intent(action);
-        context.sendOrderedBroadcast(broadcast, null, catcher, null, RESULT_NO_SERVER, null, null);
-    }
-
-    public abstract static class IntegerResultCatcher extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            accept(getResultExtras(true).getInt(EXTRA_INT, -1));
-        }
-
-        abstract public void accept(int result);
-    }
-
-    private static void requestIntegerResult(Context context, String action,
-            IntegerResultCatcher catcher) {
-        Intent broadcast = new Intent(action);
-        context.sendOrderedBroadcast(broadcast, null, catcher, null, RESULT_NO_SERVER, null, null);
-    }
-
-    public abstract static class StringListResultCatcher extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            accept(getResultExtras(true).getStringArrayList(EXTRA_PAYLOAD));
-        }
-
-        abstract public void accept(List<String> result);
-    }
-
-    private static void requestStringListResult(Context context, String action,
-            StringListResultCatcher catcher) {
-        Intent broadcast = new Intent(action);
-        context.sendOrderedBroadcast(broadcast, null, catcher, null, RESULT_NO_SERVER, null, null);
-    }
-
-
-    public abstract static class BundleListResultCatcher extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            accept(getResultExtras(true).getParcelableArrayList(EXTRA_PAYLOAD));
-        }
-
-        abstract public void accept(ArrayList<Parcelable> result);
-    }
-
-    private static void requestBundleListResult(Context context, String action,
-            BundleListResultCatcher catcher) {
-        Intent broadcast = new Intent(action);
-        context.sendOrderedBroadcast(broadcast, null, catcher, null, RESULT_NO_SERVER, null, null);
-    }
-}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/NotificationAssistantVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/NotificationAssistantVerifierActivity.java
deleted file mode 100644
index 191d0f1..0000000
--- a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/NotificationAssistantVerifierActivity.java
+++ /dev/null
@@ -1,1524 +0,0 @@
-/*
- * Copyright (C) 2016 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.cts.verifier.notifications;
-
-import static android.service.notification.NotificationListenerService.REASON_LISTENER_CANCEL;
-
-import static com.android.cts.verifier.notifications.MockAssistant.EXTRA_PAYLOAD;
-import static com.android.cts.verifier.notifications.MockAssistant.EXTRA_TAG;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_CHANNEL;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_FLAGS;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_ICON;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_ID;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_PACKAGE;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_PEOPLE;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_REASON;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_SNOOZE_CRITERIA;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_TAG;
-import static com.android.cts.verifier.notifications.MockAssistant.KEY_WHEN;
-import static com.android.cts.verifier.notifications.MockAssistant.StatusCatcher;
-import static com.android.cts.verifier.notifications.MockAssistant.StringListResultCatcher;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.app.Notification;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.provider.Settings;
-import android.provider.Settings.Secure;
-import android.service.notification.Adjustment;
-import android.service.notification.SnoozeCriterion;
-import android.util.ArrayMap;
-import android.util.Log;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.android.cts.verifier.R;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-
-public class NotificationAssistantVerifierActivity extends InteractiveVerifierActivity
-        implements Runnable {
-    private static final String TAG = "NoAssistantVerifier";
-
-    protected static final String ASSISTANT_PATH = "com.android.cts.verifier/" +
-            "com.android.cts.verifier.notifications.MockAssistant";
-    private static final String ENABLED_NOTIFICATION_ASSISTANT_SETTING =
-            "enabled_notification_assistant";
-    private static final String THIS_PKG = "com.android.cts.verifier";
-    private static final String OTHER_PKG = "android";
-
-    public static final String ORIGINAL_CHANNEL_ID = TAG + ": original";
-    public static final String NEW_CHANNEL_ID = TAG + ": new";
-
-    private String mTag1;
-    private String mTag2;
-    private String mTag3;
-    private int mIcon1;
-    private int mIcon2;
-    private int mIcon3;
-    private int mId1;
-    private int mId2;
-    private int mId3;
-    private long mWhen1;
-    private long mWhen2;
-    private long mWhen3;
-    private int mFlag1;
-    private int mFlag2;
-    private int mFlag3;
-
-    @Override
-    int getTitleResource() {
-        return R.string.nas_test;
-    }
-
-    @Override
-    int getInstructionsResource() {
-        return R.string.nas_info;
-    }
-
-    // Test Setup
-
-    @Override
-    protected List<InteractiveTestCase> createTestItems() {
-        List<InteractiveTestCase> tests = new ArrayList<>();
-        tests.add(new IsEnabledTest());
-        tests.add(new ServiceStartedTest());
-        tests.add(new NotificationEnqueuedTest());
-        tests.add(new NotificationReceivedTest());
-        tests.add(new DataIntactTest());
-        tests.add(new DismissOneTest());
-        tests.add(new DismissOneWithReasonTest());
-        tests.add(new DismissAllTest());
-        tests.add(new CreateChannelTest());
-        tests.add(new UpdateChannelTest());
-        tests.add(new DeleteChannelTest());
-        tests.add(new UpdateLiveChannelTest());
-        tests.add(new AdjustNotificationTest());
-        tests.add(new AdjustEnqueuedNotificationTest());
-        tests.add(new SnoozeNotificationUntilContextTest());
-        tests.add(new UnsnoozeNotificationTest());
-        tests.add(new IsDisabledTest());
-        tests.add(new ServiceStoppedTest());
-        tests.add(new NotificationNotEnqueuedTest());
-        tests.add(new NotificationNotReceivedTest());
-        return tests;
-    }
-
-    @SuppressLint("NewApi")
-    private void sendNotifications(String channelId) {
-        mTag1 = UUID.randomUUID().toString();
-        mTag2 = UUID.randomUUID().toString();
-        mTag3 = UUID.randomUUID().toString();
-
-        mNm.cancelAll();
-
-        mWhen1 = System.currentTimeMillis() + 1;
-        mWhen2 = System.currentTimeMillis() + 2;
-        mWhen3 = System.currentTimeMillis() + 3;
-
-        mIcon1 = R.drawable.ic_stat_alice;
-        mIcon2 = R.drawable.ic_stat_bob;
-        mIcon3 = R.drawable.ic_stat_charlie;
-
-        mId1 = NOTIFICATION_ID + 1;
-        mId2 = NOTIFICATION_ID + 2;
-        mId3 = NOTIFICATION_ID + 3;
-
-        mPackageString = "com.android.cts.verifier";
-
-        Notification n1 = new Notification.Builder(mContext, channelId)
-                .setContentTitle("One")
-                .setSortKey(Adjustment.KEY_CHANNEL_ID)
-                .setContentText(mTag1.toString())
-                .setPriority(Notification.PRIORITY_LOW)
-                .setSmallIcon(mIcon1)
-                .setWhen(mWhen1)
-                .setDeleteIntent(makeIntent(1, mTag1))
-                .setOnlyAlertOnce(true)
-                .build();
-        mNm.notify(mTag1, mId1, n1);
-        mFlag1 = Notification.FLAG_ONLY_ALERT_ONCE;
-
-        Notification n2 = new Notification.Builder(mContext, channelId)
-                .setContentTitle("Two")
-                .setSortKey(Adjustment.KEY_PEOPLE)
-                .setContentText(mTag2.toString())
-                .setPriority(Notification.PRIORITY_HIGH)
-                .setSmallIcon(mIcon2)
-                .setWhen(mWhen2)
-                .setDeleteIntent(makeIntent(2, mTag2))
-                .setAutoCancel(true)
-                .build();
-        mNm.notify(mTag2, mId2, n2);
-        mFlag2 = Notification.FLAG_AUTO_CANCEL;
-
-        Notification n3 = new Notification.Builder(mContext, channelId)
-                .setContentTitle("Three")
-                .setSortKey(Adjustment.KEY_SNOOZE_CRITERIA)
-                .setContentText(mTag3.toString())
-                .setPriority(Notification.PRIORITY_LOW)
-                .setSmallIcon(mIcon3)
-                .setWhen(mWhen3)
-                .setDeleteIntent(makeIntent(3, mTag3))
-                .setAutoCancel(true)
-                .setOnlyAlertOnce(true)
-                .build();
-        mNm.notify(mTag3, mId3, n3);
-        mFlag3 = Notification.FLAG_ONLY_ALERT_ONCE | Notification.FLAG_AUTO_CANCEL;
-    }
-
-    private void createChannels() {
-        try {
-            NotificationChannel newChannel = new NotificationChannel(
-                    NEW_CHANNEL_ID, NEW_CHANNEL_ID, NotificationManager.IMPORTANCE_LOW);
-            mNm.createNotificationChannel(newChannel);
-        } catch (Exception e) {
-            Log.e(TAG, "failed to create channel", e);
-        }
-        try {
-            NotificationChannel originalChannel = new NotificationChannel(ORIGINAL_CHANNEL_ID,
-                    ORIGINAL_CHANNEL_ID, NotificationManager.IMPORTANCE_LOW);
-            mNm.createNotificationChannel(originalChannel);
-        } catch (Exception e) {
-            Log.e(TAG, "failed to create channel", e);
-        }
-    }
-
-    private void deleteChannels() {
-        mNm.cancelAll();
-        mNm.deleteNotificationChannel(ORIGINAL_CHANNEL_ID);
-        mNm.deleteNotificationChannel(NEW_CHANNEL_ID);
-    }
-
-    // Tests
-
-    protected class IsEnabledTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createSettingsItem(parent, R.string.nas_enable_service);
-        }
-
-        @Override
-        boolean autoStart() {
-            return true;
-        }
-
-        @Override
-        void test() {
-            mNm.cancelAll();
-            Intent settings = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS);
-            if (settings.resolveActivity(mPackageManager) == null) {
-                logFail("no settings activity");
-                status = FAIL;
-            } else {
-                String listeners = Secure.getString(getContentResolver(),
-                        ENABLED_NOTIFICATION_ASSISTANT_SETTING);
-                if (listeners != null && listeners.equals(ASSISTANT_PATH)) {
-                    status = PASS;
-                } else {
-                    status = WAIT_FOR_USER;
-                }
-                next();
-            }
-        }
-
-        void tearDown() {
-            // wait for the service to start
-            delay();
-        }
-    }
-
-    protected class ServiceStartedTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nls_service_started);
-        }
-
-        @Override
-        void test() {
-            MockAssistant.probeListenerStatus(mContext,
-                    new MockAssistant.StatusCatcher() {
-                        @Override
-                        public void accept(int result) {
-                            if (result == Activity.RESULT_OK) {
-                                status = PASS;
-                                next();
-                            } else {
-                                logFail();
-                                status = RETEST;
-                                delay();
-                            }
-                        }
-                    });
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            MockListener.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class NotificationEnqueuedTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nas_note_enqueued_received);
-
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            // wait for notifications to move through the system
-            delay();
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-        }
-
-        @Override
-        void test() {
-            MockAssistant.probeListenerEnqueued(mContext,
-                    new StringListResultCatcher() {
-                        @Override
-                        public void accept(List<String> result) {
-                            if (result != null && result.size() > 0 && result.contains(mTag1)) {
-                                status = PASS;
-                            } else {
-                                logFail();
-                                status = FAIL;
-                            }
-                            next();
-                        }
-                    });
-            delay();  // in case the catcher never returns
-        }
-    }
-
-    private class NotificationReceivedTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nls_note_received);
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            // wait for notifications to move through the system
-            delay();
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-        }
-
-        @Override
-        void test() {
-            MockAssistant.probeListenerPosted(mContext,
-                    new StringListResultCatcher() {
-                        @Override
-                        public void accept(List<String> result) {
-                            if (result != null && result.size() > 0 && result.contains(mTag1)) {
-                                status = PASS;
-                            } else {
-                                logFail();
-                                status = FAIL;
-                            }
-                            next();
-                        }
-                    });
-            delay();  // in case the catcher never returns
-        }
-    }
-
-    private class DataIntactTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nls_payload_intact);
-        }
-
-        @Override
-        void test() {
-            MockAssistant.probeListenerPayloads(mContext,
-                    new MockAssistant.BundleListResultCatcher() {
-                        @Override
-                        public void accept(ArrayList<Parcelable> result) {
-                            Set<String> found = new HashSet<String>();
-                            if (result == null || result.size() == 0) {
-                                status = FAIL;
-                                return;
-                            }
-                            boolean pass = true;
-                            for (Parcelable payloadData : result) {
-                                Bundle payload = (Bundle) payloadData;
-                                pass &= checkEquals(mPackageString,
-                                        payload.getString(KEY_PACKAGE),
-                                        "data integrity test: notification package (%s, %s)");
-                                String tag = payload.getString(KEY_TAG);
-                                if (mTag1.equals(tag)) {
-                                    found.add(mTag1);
-                                    pass &= checkEquals(mIcon1, payload.getInt(KEY_ICON),
-                                            "data integrity test: notification icon (%d, %d)");
-                                    pass &= checkFlagSet(mFlag1, payload.getInt(KEY_FLAGS),
-                                            "data integrity test: notification flags (%d, %d)");
-                                    pass &= checkEquals(mId1, payload.getInt(KEY_ID),
-                                            "data integrity test: notification ID (%d, %d)");
-                                    pass &= checkEquals(mWhen1, payload.getLong(KEY_WHEN),
-                                            "data integrity test: notification when (%d, %d)");
-                                } else if (mTag2.equals(tag)) {
-                                    found.add(mTag2);
-                                    pass &= checkEquals(mIcon2, payload.getInt(KEY_ICON),
-                                            "data integrity test: notification icon (%d, %d)");
-                                    pass &= checkFlagSet(mFlag2, payload.getInt(KEY_FLAGS),
-                                            "data integrity test: notification flags (%d, %d)");
-                                    pass &= checkEquals(mId2, payload.getInt(KEY_ID),
-                                            "data integrity test: notification ID (%d, %d)");
-                                    pass &= checkEquals(mWhen2, payload.getLong(KEY_WHEN),
-                                            "data integrity test: notification when (%d, %d)");
-                                } else if (mTag3.equals(tag)) {
-                                    found.add(mTag3);
-                                    pass &= checkEquals(mIcon3, payload.getInt(KEY_ICON),
-                                            "data integrity test: notification icon (%d, %d)");
-                                    pass &= checkFlagSet(mFlag3, payload.getInt(KEY_FLAGS),
-                                            "data integrity test: notification flags (%d, %d)");
-                                    pass &= checkEquals(mId3, payload.getInt(KEY_ID),
-                                            "data integrity test: notification ID (%d, %d)");
-                                    pass &= checkEquals(mWhen3, payload.getLong(KEY_WHEN),
-                                            "data integrity test: notification when (%d, %d)");
-                                } else {
-                                    pass = false;
-                                    logFail("unexpected notification tag: " + tag);
-                                }
-                            }
-
-                            pass &= found.size() == 3;
-                            status = pass ? PASS : FAIL;
-                            next();
-                        }
-                    });
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            mNm.cancelAll();
-            sleep(1000);
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class DismissOneTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nls_clear_one);
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            if (status == READY) {
-                MockAssistant.clearOne(mContext, mTag1, mId1);
-                status = RETEST;
-            } else {
-                MockAssistant.probeListenerRemoved(mContext,
-                        new StringListResultCatcher() {
-                            @Override
-                            public void accept(List<String> result) {
-                                if (result != null && result.size() != 0
-                                        && result.contains(mTag1)
-                                        && !result.contains(mTag2)
-                                        && !result.contains(mTag3)) {
-                                    status = PASS;
-                                } else {
-                                    logFail();
-                                    status = FAIL;
-                                }
-                                next();
-                            }
-                        });
-            }
-            delay();
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-            sleep(1000);
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class DismissOneWithReasonTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nls_clear_one_reason);
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            if (status == READY) {
-                MockAssistant.clearOne(mContext, mTag2, mId2);
-                status = RETEST;
-            } else {
-                MockAssistant.probeListenerRemovedWithReason(mContext,
-                        new MockAssistant.BundleListResultCatcher() {
-                            @Override
-                            public void accept(ArrayList<Parcelable> result) {
-                                if (result == null || result.size() == 0) {
-                                    status = FAIL;
-                                    return;
-                                }
-                                boolean pass = true;
-                                for (Parcelable payloadData : result) {
-                                    Bundle payload = (Bundle) payloadData;
-                                    pass &= checkEquals(mTag2,
-                                            payload.getString(KEY_TAG),
-                                            "data dismissal test: notification tag (%s, %s)");
-                                    pass &= checkEquals(REASON_LISTENER_CANCEL,
-                                            payload.getInt(KEY_REASON),
-                                            "data dismissal test: reason (%d, %d)");
-                                }
-                                status = pass ? PASS : FAIL;
-                                next();
-                            }
-                        });
-            }
-            delay();
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-            sleep(1000);
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class DismissAllTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nls_clear_all);
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            if (status == READY) {
-                MockAssistant.clearAll(mContext);
-                status = RETEST;
-            } else {
-                MockAssistant.probeListenerRemoved(mContext,
-                        new StringListResultCatcher() {
-                            @Override
-                            public void accept(List<String> result) {
-                                if (result != null && result.size() != 0
-                                        && result.contains(mTag1)
-                                        && result.contains(mTag2)
-                                        && result.contains(mTag3)) {
-                                    status = PASS;
-                                } else {
-                                    logFail();
-                                    status = FAIL;
-                                }
-                                next();
-                            }
-                        });
-            }
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-            sleep(1000);
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class IsDisabledTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createSettingsItem(parent, R.string.nas_disable_service);
-        }
-
-        @Override
-        boolean autoStart() {
-            return true;
-        }
-
-        @Override
-        void test() {
-            String listeners = Secure.getString(getContentResolver(),
-                    ENABLED_NOTIFICATION_ASSISTANT_SETTING);
-            if (listeners == null || !listeners.equals(ASSISTANT_PATH)) {
-                status = PASS;
-            } else {
-                status = WAIT_FOR_USER;
-            }
-            next();
-        }
-
-        @Override
-        void tearDown() {
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class ServiceStoppedTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nls_service_stopped);
-        }
-
-        @Override
-        void test() {
-            MockAssistant.probeListenerStatus(mContext,
-                    new StatusCatcher() {
-                        @Override
-                        public void accept(int result) {
-                            if (result == Activity.RESULT_OK) {
-                                logFail();
-                                status = FAIL;
-                            } else {
-                                status = PASS;
-                            }
-                            next();
-                        }
-                    });
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            // wait for intent to move through the system
-            delay();
-        }
-    }
-
-    private class NotificationNotEnqueuedTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nas_note_missed_enqueued);
-
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            MockAssistant.probeListenerEnqueued(mContext,
-                    new StringListResultCatcher() {
-                        @Override
-                        public void accept(List<String> result) {
-                            if (result == null || result.size() == 0) {
-                                status = PASS;
-                            } else {
-                                logFail();
-                                status = FAIL;
-                            }
-                            next();
-                        }
-                    });
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-            sleep(1000);
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class NotificationNotReceivedTest extends InteractiveTestCase {
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nls_note_missed);
-
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            MockAssistant.probeListenerPosted(mContext,
-                    new StringListResultCatcher() {
-                        @Override
-                        public void accept(List<String> result) {
-                            if (result == null || result.size() == 0) {
-                                status = PASS;
-                            } else {
-                                logFail();
-                                status = FAIL;
-                            }
-                            next();
-                        }
-                    });
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-            sleep(1000);
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class AdjustNotificationTest extends InteractiveTestCase {
-        private ArrayList<String> people;
-        private ArrayList<SnoozeCriterion> snooze;
-        private Map<String, Bundle> adjustments;
-
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nas_adjustment_payload_intact);
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            adjustments = getAdjustments();
-            snooze = adjustments.get(Adjustment.KEY_SNOOZE_CRITERIA).getParcelableArrayList(
-                    Adjustment.KEY_SNOOZE_CRITERIA);
-            people = adjustments.get(Adjustment.KEY_PEOPLE).getStringArrayList(
-                    Adjustment.KEY_PEOPLE);
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            if (status == READY) {
-                MockAssistant.probeListenerPosted(mContext,
-                        new StringListResultCatcher() {
-                            @Override
-                            public void accept(List<String> result) {
-                                if (result != null && result.size() > 0 && result.contains(mTag1)) {
-                                    MockAssistant.applyAdjustment(mContext, mTag1,
-                                            adjustments.get(Adjustment.KEY_CHANNEL_ID));
-                                    MockAssistant.applyAdjustment(mContext, mTag2,
-                                            adjustments.get(Adjustment.KEY_PEOPLE));
-                                    MockAssistant.applyAdjustment(mContext, mTag3,
-                                            adjustments.get(Adjustment.KEY_SNOOZE_CRITERIA));
-                                    status = RETEST;
-                                } else {
-                                    logFail();
-                                    status = FAIL;
-                                }
-                                delay(3000);
-                            }
-                        });
-            } else {
-                MockAssistant.probeListenerPayloads(mContext,
-                        new MockAssistant.BundleListResultCatcher() {
-                            @Override
-                            public void accept(ArrayList<Parcelable> result) {
-                                Set<String> found = new HashSet<>();
-                                if (result == null || result.size() == 0) {
-                                    status = FAIL;
-                                    return;
-                                }
-                                boolean pass = true;
-                                for (Parcelable payloadData : result) {
-                                    Bundle payload = (Bundle) payloadData;
-                                    pass &= checkEquals(mPackageString,
-                                            payload.getString(KEY_PACKAGE),
-                                            "data integrity test: notification package (%s, %s)");
-
-                                    String tag = payload.getString(KEY_TAG);
-                                    if (mTag1.equals(tag)) {
-                                        found.add(mTag1);
-                                        pass &= checkEquals(NEW_CHANNEL_ID,
-                                                ((NotificationChannel) payload.getParcelable(
-                                                        KEY_CHANNEL)).getId(),
-                                                "data integrity test: notification channel ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(null,
-                                                payload.getStringArray(KEY_PEOPLE),
-                                                "data integrity test, notification people ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(null,
-                                                payload.getParcelableArray(KEY_SNOOZE_CRITERIA),
-                                                "data integrity test, notification snooze ("
-                                                        + "%s, %s)");
-                                    } else if (mTag2.equals(tag)) {
-                                        found.add(mTag2);
-                                        pass &= checkEquals(ORIGINAL_CHANNEL_ID,
-                                                ((NotificationChannel) payload.getParcelable(
-                                                        KEY_CHANNEL)).getId(),
-                                                "data integrity test: notification channel ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(people.toArray(new String[]{}),
-                                                payload.getStringArray(KEY_PEOPLE),
-                                                "data integrity test, notification people ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(null,
-                                                payload.getParcelableArray(KEY_SNOOZE_CRITERIA),
-                                                "data integrity test, notification snooze ("
-                                                        + "%s, %s)");
-                                    } else if (mTag3.equals(tag)) {
-                                        found.add(mTag3);
-                                        pass &= checkEquals(ORIGINAL_CHANNEL_ID,
-                                                ((NotificationChannel) payload.getParcelable(
-                                                        KEY_CHANNEL)).getId(),
-                                                "data integrity test: notification channel ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(null,
-                                                payload.getStringArray(KEY_PEOPLE),
-                                                "data integrity test, notification people ("
-                                                        + "%s, %s)");;
-                                        pass &= checkEquals(snooze.toArray(new SnoozeCriterion[]{}),
-                                                payload.getParcelableArray(KEY_SNOOZE_CRITERIA),
-                                                "data integrity test, notification snooze ("
-                                                        + "%s, %s)");
-                                    } else {
-                                        pass = false;
-                                        logFail("unexpected notification tag: " + tag);
-                                    }
-                                }
-
-                                pass &= found.size() == 3;
-                                status = pass ? PASS : FAIL;
-                                next();
-                            }
-                        });
-            }
-            delay(6000);  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-            sleep(1000);
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class AdjustEnqueuedNotificationTest extends InteractiveTestCase {
-        private ArrayList<String> people;
-        private ArrayList<SnoozeCriterion> snooze;
-        private Map<String, Bundle> adjustments;
-
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nas_adjustment_enqueue_payload_intact);
-        }
-
-        @Override
-        void setUp() {
-            MockAssistant.adjustEnqueue(mContext);
-            createChannels();
-            adjustments = getAdjustments();
-            snooze = adjustments.get(Adjustment.KEY_SNOOZE_CRITERIA).getParcelableArrayList(
-                    Adjustment.KEY_SNOOZE_CRITERIA);
-            people = adjustments.get(Adjustment.KEY_PEOPLE).getStringArrayList(
-                    Adjustment.KEY_PEOPLE);
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            if (status == READY) {
-                MockAssistant.probeListenerEnqueued(mContext,
-                        new StringListResultCatcher() {
-                            @Override
-                            public void accept(List<String> result) {
-                                if (result != null && result.size() > 0 && result.contains(mTag1)) {
-                                    status = RETEST;
-                                } else {
-                                    logFail();
-                                    status = FAIL;
-                                }
-                                next();
-                            }
-                        });
-            } else {
-                MockAssistant.probeListenerPayloads(mContext,
-                        new MockAssistant.BundleListResultCatcher() {
-                            @Override
-                            public void accept(ArrayList<Parcelable> result) {
-                                Set<String> found = new HashSet<>();
-                                if (result == null || result.size() == 0) {
-                                    status = FAIL;
-                                    return;
-                                }
-                                boolean pass = true;
-                                for (Parcelable payloadData : result) {
-                                    Bundle payload = (Bundle) payloadData;
-                                    pass &= checkEquals(mPackageString,
-                                            payload.getString(KEY_PACKAGE),
-                                            "data integrity test: notification package (%s, %s)");
-
-                                    String tag = payload.getString(KEY_TAG);
-                                    if (mTag1.equals(tag)) {
-                                        found.add(mTag1);
-                                        pass &= checkEquals(NEW_CHANNEL_ID,
-                                                ((NotificationChannel) payload.getParcelable(
-                                                        KEY_CHANNEL)).getId(),
-                                                "data integrity test: notification channel ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(null,
-                                                payload.getStringArray(KEY_PEOPLE),
-                                                "data integrity test, notification people ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(null,
-                                                payload.getParcelableArray(KEY_SNOOZE_CRITERIA),
-                                                "data integrity test, notification snooze ("
-                                                        + "%s, %s)");
-                                    } else if (mTag2.equals(tag)) {
-                                        found.add(mTag2);
-                                        pass &= checkEquals(ORIGINAL_CHANNEL_ID,
-                                                ((NotificationChannel) payload.getParcelable(
-                                                        KEY_CHANNEL)).getId(),
-                                                "data integrity test: notification channel ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(people.toArray(new String[]{}),
-                                                payload.getStringArray(KEY_PEOPLE),
-                                                "data integrity test, notification people ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(null,
-                                                payload.getParcelableArray(KEY_SNOOZE_CRITERIA),
-                                                "data integrity test, notification snooze ("
-                                                        + "%s, %s)");
-                                    } else if (mTag3.equals(tag)) {
-                                        found.add(mTag3);
-                                        pass &= checkEquals(ORIGINAL_CHANNEL_ID,
-                                                ((NotificationChannel) payload.getParcelable(
-                                                        KEY_CHANNEL)).getId(),
-                                                "data integrity test: notification channel ("
-                                                        + "%s, %s)");
-                                        pass &= checkEquals(null,
-                                                payload.getStringArray(KEY_PEOPLE),
-                                                "data integrity test, notification people ("
-                                                        + "%s, %s)");;
-                                        pass &= checkEquals(snooze.toArray(new SnoozeCriterion[]{}),
-                                                payload.getParcelableArray(KEY_SNOOZE_CRITERIA),
-                                                "data integrity test, notification snooze ("
-                                                        + "%s, %s)");
-                                    } else {
-                                        pass = false;
-                                        logFail("unexpected notification tag: " + tag);
-                                    }
-                                }
-
-                                pass &= found.size() == 3;
-                                status = pass ? PASS : FAIL;
-                                next();
-                            }
-                        });
-            }
-            delay(6000);  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-            sleep(1000);
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    public static Map<String, Bundle> getAdjustments() {
-        Map<String, Bundle> adjustments = new ArrayMap<>();
-        Bundle bundle1 = new Bundle();
-        Bundle bundle2 = new Bundle();
-        Bundle bundle3 = new Bundle();
-        SnoozeCriterion snooze1 = new SnoozeCriterion("id1", "1", "2");
-        SnoozeCriterion snooze2 = new SnoozeCriterion("id2", "2", "3");
-        String people1 = "people1";
-        String people2 = "people2";
-        ArrayList<String> people = new ArrayList<>();
-        ArrayList<SnoozeCriterion> snooze = new ArrayList<>();
-        NotificationChannel newChannel = new NotificationChannel("new", "new",
-                NotificationManager.IMPORTANCE_LOW);
-
-        bundle1.putString(Adjustment.KEY_CHANNEL_ID, newChannel.getId());
-        adjustments.put(Adjustment.KEY_CHANNEL_ID, bundle1);
-
-        people.add(people1);
-        people.add(people2);
-        bundle2.putStringArrayList(Adjustment.KEY_PEOPLE, people);
-        adjustments.put(Adjustment.KEY_PEOPLE, bundle2);
-
-        snooze.add(snooze1);
-        snooze.add(snooze2);
-        bundle3.putParcelableArrayList(Adjustment.KEY_SNOOZE_CRITERIA, snooze);
-        adjustments.put(Adjustment.KEY_SNOOZE_CRITERIA, bundle3);
-        return adjustments;
-    }
-
-    private class CreateChannelTest extends InteractiveTestCase {
-        private NotificationChannel channel = new NotificationChannel(UUID.randomUUID().toString(),
-                "new", NotificationManager.IMPORTANCE_LOW);
-
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nas_create_channel);
-        }
-
-        @Override
-        void setUp() {
-            MockAssistant.createChannel(mContext, OTHER_PKG, channel);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            MockAssistant.probeChannels(mContext, OTHER_PKG,
-                    new MockAssistant.BundleListResultCatcher() {
-                        @Override
-                        public void accept(ArrayList<Parcelable> result) {
-                            if (result == null || result.size() == 0) {
-                                logFail(result == null ? "no results"
-                                        : String.format("%d results returned", result.size()));
-                                status = FAIL;
-                                return;
-                            }
-                            boolean pass = false;
-                            for (Parcelable payloadData : result) {
-                                NotificationChannel payload = (NotificationChannel) payloadData;
-                                pass |= compareChannels(payload, channel);
-                            }
-                            status = pass ? PASS : FAIL;
-                            next();
-                        }
-                    });
-
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            MockAssistant.deleteChannel(
-                    mContext, OTHER_PKG, channel.getId());
-            delay();
-        }
-    }
-
-    private class DeleteChannelTest extends InteractiveTestCase {
-        private NotificationChannel channel = new NotificationChannel(UUID.randomUUID().toString(),
-                "new", NotificationManager.IMPORTANCE_LOW);
-
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nas_delete_channel);
-        }
-
-        @Override
-        void setUp() {
-            MockAssistant.createChannel(mContext, OTHER_PKG, channel);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            if (status == READY) {
-                MockAssistant.probeChannels(mContext, OTHER_PKG,
-                        new MockAssistant.BundleListResultCatcher() {
-                            @Override
-                            public void accept(ArrayList<Parcelable> result) {
-                                if (result == null || result.size() == 0) {
-                                    status = FAIL;
-                                    logFail();
-                                    return;
-                                }
-                                boolean pass = false;
-                                for (Parcelable payloadData : result) {
-                                    NotificationChannel payload = (NotificationChannel) payloadData;
-                                    pass |= compareChannels(channel, payload);
-                                }
-                                if (pass) {
-                                    MockAssistant.deleteChannel(
-                                            mContext, OTHER_PKG, channel.getId());
-                                    status = RETEST;
-                                }
-                                delay();
-                            }
-                        });
-            } else if (status == RETEST) {
-                MockAssistant.probeChannels(mContext, OTHER_PKG,
-                        new MockAssistant.BundleListResultCatcher() {
-                            @Override
-                            public void accept(ArrayList<Parcelable> result) {
-                                if (result == null || result.size() <= 1) {
-                                    status = PASS;
-                                } else {
-                                    boolean fail = false;
-                                    for (Parcelable payloadData : result) {
-                                        NotificationChannel payload =
-                                                (NotificationChannel) payloadData;
-                                        fail |= compareChannels(channel, payload);
-                                    }
-                                    if (fail) {
-                                        logFail();
-                                        status = FAIL;
-                                    } else {
-                                        status = PASS;
-                                    }
-                                }
-                                next();
-                            }
-                        });
-            }
-
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            MockAssistant.deleteChannel(
-                    mContext, OTHER_PKG, channel.getId());
-            delay();
-        }
-    }
-
-    private class UpdateChannelTest extends InteractiveTestCase {
-        private String id = UUID.randomUUID().toString();
-        private NotificationChannel channel = new NotificationChannel(id, "new",
-                NotificationManager.IMPORTANCE_LOW);
-        private NotificationChannel updatedChannel = new NotificationChannel(id, "new",
-                NotificationManager.IMPORTANCE_MIN);
-
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nas_update_channel);
-        }
-
-        @Override
-        void setUp() {
-            updatedChannel.setVibrationPattern(new long[] {467, 2478, 24738});
-            updatedChannel.setSound(new Uri.Builder().appendPath("sound").build(), null);
-            updatedChannel.enableLights(true);
-            updatedChannel.enableVibration(true);
-            updatedChannel.setBypassDnd(true);
-            updatedChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
-            MockAssistant.createChannel(mContext, OTHER_PKG, channel);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            if (status == READY) {
-                MockAssistant.probeChannels(mContext, OTHER_PKG,
-                        new MockAssistant.BundleListResultCatcher() {
-                            @Override
-                            public void accept(ArrayList<Parcelable> result) {
-                                if (result == null || result.size() == 0) {
-                                    status = FAIL;
-                                    next();
-                                    return;
-                                }
-                                boolean pass = false;
-                                for (Parcelable payloadData : result) {
-                                    NotificationChannel payload = (NotificationChannel) payloadData;
-                                    pass |= compareChannels(channel, payload);
-                                }
-                                if (pass) {
-                                    MockAssistant.updateChannel(
-                                            mContext, OTHER_PKG, updatedChannel);
-                                    status = RETEST;
-                                } else {
-                                    status = FAIL;
-                                    next();
-                                }
-                            }
-                        });
-            } else if (status == RETEST) {
-                MockAssistant.probeChannels(mContext, OTHER_PKG,
-                        new MockAssistant.BundleListResultCatcher() {
-                            @Override
-                            public void accept(ArrayList<Parcelable> result) {
-                                if (result == null || result.size() == 0) {
-                                    status = FAIL;
-                                    next();
-                                    return;
-                                }
-                                boolean pass = false;
-                                for (Parcelable payloadData : result) {
-                                    NotificationChannel payload = (NotificationChannel) payloadData;
-                                    pass |= compareChannels(updatedChannel, payload);
-                                }
-                                status = pass ? PASS : FAIL;
-                                next();
-                            }
-                        });
-            }
-
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            MockAssistant.deleteChannel(
-                    mContext, OTHER_PKG, channel.getId());
-            delay();
-        }
-    }
-
-    private class UpdateLiveChannelTest extends InteractiveTestCase {
-        private String id = "channelToBlock-" + System.currentTimeMillis();
-        private NotificationChannel channel = new NotificationChannel(id, "new",
-                NotificationManager.IMPORTANCE_LOW);
-
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nas_block_channel);
-        }
-
-        @Override
-        void setUp() {
-            try {
-                mNm.createNotificationChannel(channel);
-            } catch (Exception e) {
-                Log.e(TAG, "failed to create channel", e);
-            }
-            sendNotifications(channel.getId());
-            status = READY;
-            delay(6000);
-        }
-
-        @Override
-        void test() {
-            if (status == READY) {
-                MockAssistant.probeListenerPosted(mContext,
-                        new StringListResultCatcher() {
-                            @Override
-                            public void accept(List<String> result) {
-                                if (result != null && result.size() > 0 && result.contains(mTag1)) {
-                                    channel.setImportance(NotificationManager.IMPORTANCE_NONE);
-                                    MockAssistant.updateChannel(mContext, THIS_PKG, channel);
-                                    status = RETEST;
-                                } else {
-                                    logFail();
-                                    status = FAIL;
-                                }
-                                delay(3000);
-                            }
-                        });
-            } else if (status == RETEST) {
-                MockAssistant.probeListenerRemoved(mContext,
-                        new StringListResultCatcher() {
-                            @Override
-                            public void accept(List<String> result) {
-                                if (result != null && result.size() == 3) {
-                                    status = PASS;
-                                } else {
-                                    logFail();
-                                    status = FAIL;
-                                }
-                                next();
-                            }
-                        });
-            }
-            delay();  // in case the catcher never returns
-        }
-
-        @Override
-        void tearDown() {
-            MockAssistant.deleteChannel(mContext, THIS_PKG, channel.getId());
-            mNm.cancel(mTag1, mId1);
-            mNm.cancel(mTag2, mId2);
-            mNm.cancel(mTag2, mId3);
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class SnoozeNotificationUntilContextTest extends InteractiveTestCase {
-        String snoozeContextId1 = "hello1";
-        String snoozeContextId3 = "hello3";
-
-        boolean queryIds = false;
-
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nas_snooze_context);
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            if (status == READY) {
-                MockAssistant.snoozeUntilContext(mContext, mTag1, snoozeContextId1);
-                MockAssistant.snoozeUntilContext(mContext, mTag3, snoozeContextId3);
-                status = RETEST;
-            } else {
-                if (queryIds) {
-                    MockAssistant.probeAssistantSnoozeContext(mContext,
-                            new MockAssistant.BundleListResultCatcher() {
-                                @Override
-                                public void accept(ArrayList<Parcelable> result) {
-                                    boolean foundOne = false;
-                                    boolean foundTwo = false;
-                                    boolean foundThree = false;
-                                    for (Parcelable payloadData : result) {
-                                        Bundle payload = (Bundle) payloadData;
-                                        String tag = payload.getString(EXTRA_TAG);
-                                        String snoozeCriterionId = payload.getString(EXTRA_PAYLOAD);
-                                        if (mTag1.equals(tag)
-                                                && snoozeContextId1.equals(snoozeCriterionId)) {
-                                            foundOne = true;
-                                        }
-                                        if (mTag2.equals(tag)) {
-                                            foundTwo = true;
-                                        }
-                                        if (mTag3.equals(tag)
-                                                && snoozeContextId3.equals(snoozeCriterionId)) {
-                                            foundThree = true;
-                                        }
-                                    }
-                                    if (foundOne && foundThree && !foundTwo) {
-                                        status = PASS;
-                                    } else {
-                                        logFail();
-                                        status = FAIL;
-                                    }
-                                    delay();
-                                }
-                            });
-                } else {
-                    MockAssistant.probeListenerRemoved(mContext,
-                            new StringListResultCatcher() {
-                                @Override
-                                public void accept(List<String> result) {
-                                    if (result != null && result.size() != 0
-                                            && result.contains(mTag1)
-                                            && !result.contains(mTag2)
-                                            && result.contains(mTag3)) {
-                                        status = RETEST;
-                                        queryIds = true;
-                                    } else {
-                                        logFail();
-                                        status = FAIL;
-                                    }
-                                    delay();
-                                }
-                            });
-                }
-            }
-            delay();
-        }
-
-        @Override
-        void tearDown() {
-            mNm.cancel(mTag1, mId1);
-            mNm.cancel(mTag2, mId2);
-            mNm.cancel(mTag2, mId3);
-            deleteChannels();
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private class UnsnoozeNotificationTest extends InteractiveTestCase {
-        final static int READY_TO_SNOOZE = 0;
-        final static int SNOOZED = 1;
-        final static int READY_TO_UNSNOOZE = 2;
-        final static int UNSNOOZED = 3;
-        int state = -1;
-        @Override
-        View inflate(ViewGroup parent) {
-            return createAutoItem(parent, R.string.nls_unsnooze_one);
-        }
-
-        @Override
-        void setUp() {
-            createChannels();
-            sendNotifications(ORIGINAL_CHANNEL_ID);
-            status = READY;
-            delay();
-        }
-
-        @Override
-        void test() {
-            status = RETEST;
-
-            if (state == READY_TO_SNOOZE) {
-                MockAssistant.snoozeUntilContext(mContext, mTag1, "hello");
-                state = SNOOZED;
-            } else if (state == SNOOZED) {
-                MockAssistant.probeListenerRemovedWithReason(mContext,
-                        new MockAssistant.BundleListResultCatcher() {
-                            @Override
-                            public void accept(ArrayList<Parcelable> result) {
-                                if (result == null || result.size() == 0) {
-                                    status = FAIL;
-                                    return;
-                                }
-                                boolean pass = true;
-                                for (Parcelable payloadData : result) {
-                                    Bundle payload = (Bundle) payloadData;
-                                    pass &= checkEquals(mTag1,
-                                            payload.getString(KEY_TAG),
-                                            "data dismissal test: notification tag (%s, %s)");
-                                    pass &= checkEquals(MockAssistant.REASON_SNOOZED,
-                                            payload.getInt(KEY_REASON),
-                                            "data dismissal test: reason (%d, %d)");
-                                }
-                                status = pass ? PASS : FAIL;
-                                next();
-                            }
-                        });
-            } else if (state == READY_TO_UNSNOOZE) {
-                MockAssistant.unsnoozeOne(mContext, mTag1);
-                state = UNSNOOZED;
-            } else {
-                MockAssistant.probeListenerPosted(mContext,
-                        new MockAssistant.StringListResultCatcher() {
-                            @Override
-                            public void accept(List<String> result) {
-                                if (result != null && result.size() != 0
-                                        && result.contains(mTag1)) {
-                                    status = PASS;
-                                } else {
-                                    logFail();
-                                    status = FAIL;
-                                }
-                                next();
-                            }
-                        });
-            }
-        }
-
-        @Override
-        void tearDown() {
-            deleteChannels();
-            MockAssistant.resetListenerData(mContext);
-            delay();
-        }
-    }
-
-    private boolean compareChannels(NotificationChannel expected, NotificationChannel actual) {
-        boolean pass = true;
-        String msg = "Channel mismatch (%s, %s)";
-        if (actual == null || expected == null) {
-            logWithStack(String.format("Channel mismatch (%s, %s)", expected, actual));
-            return false;
-        }
-        pass &= checkEquals(expected.getId(), actual.getId(), msg);
-        pass &= checkEquals(expected.getName(), actual.getName(), msg);
-        pass &= checkEquals(expected.canShowBadge(), actual.canShowBadge(), msg);
-        pass &= checkEquals(expected.shouldVibrate(), actual.shouldVibrate(), msg);
-        pass &= checkEquals(expected.shouldShowLights(), actual.shouldShowLights(), msg);
-        pass &= checkEquals(expected.getImportance(), actual.getImportance(), msg);
-        pass &= checkEquals(
-                expected.getLockscreenVisibility(), actual.getLockscreenVisibility(), msg);
-        pass &= checkEquals(expected.getSound(), actual.getSound(), msg);
-        pass &= checkEquals(expected.canBypassDnd(), actual.canBypassDnd(), msg);
-        pass &= checkEquals(expected.getVibrationPattern(), actual.getVibrationPattern(), msg);
-        pass &= checkEquals(expected.getAudioAttributes(), actual.getAudioAttributes(), msg);
-        return pass;
-    }
-
-    protected View createSettingsItem(ViewGroup parent, int messageId) {
-        return createUserItem(parent, R.string.nls_start_settings, messageId);
-    }
-
-    @Override
-    public void launchSettings() {
-        startActivity(new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS));
-    }
-
-    @Override
-    public void actionPressed(View v) {
-        Object tag = v.getTag();
-        if (tag instanceof Integer) {
-            int id = ((Integer) tag).intValue();
-            if (id == R.string.nls_start_settings) {
-                launchSettings();
-            } else if (id == R.string.attention_ready) {
-                mCurrentTest.status = READY;
-                next();
-            }
-        }
-    }
-}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/NotificationListenerVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/NotificationListenerVerifierActivity.java
index 79295d8..5bad113 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/NotificationListenerVerifierActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/NotificationListenerVerifierActivity.java
@@ -403,7 +403,7 @@
         void tearDown() {
             mNm.cancelAll();
             deleteChannel();
-            MockAssistant.resetListenerData(mContext);
+            MockListener.resetListenerData(mContext);
             delay();
         }
     }