OSDN Git Service

Kill service before trying to cancel notifications.
authorFelipe Leme <felipeal@google.com>
Mon, 8 Aug 2016 22:39:13 +0000 (15:39 -0700)
committerFelipe Leme <felipeal@google.com>
Tue, 9 Aug 2016 00:16:46 +0000 (17:16 -0700)
BUG: 30639703
Change-Id: Ib564371797e31e1dde37416efdb89641fb3024b1

packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java

index c7c7fc5..902c71d 100644 (file)
@@ -588,6 +588,10 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
     }
 
     private void cancelExistingNotifications() {
+        // Must kill service first, because notifications from a foreground service cannot be
+        // canceled.
+        killService();
+
         NotificationManager nm = NotificationManager.from(mContext);
         StatusBarNotification[] activeNotifications = nm.getActiveNotifications();
         if (activeNotifications.length == 0) {
@@ -899,6 +903,26 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
         fail("Service status didn't change to " + expectRunning);
     }
 
+    private void killService() {
+        String service = BugreportProgressService.class.getName();
+
+        if (!isServiceRunning(service)) return;
+
+        Log.w(TAG, "Service '" + service + "' is still running, killing it");
+        silentlyExecuteShellCommand("am stopservice com.android.shell/.BugreportProgressService");
+
+        waitForService(false);
+    }
+
+    private void silentlyExecuteShellCommand(String cmd) {
+        Log.w(TAG, "silentlyExecuteShellCommand: '" + cmd + "'");
+        try {
+            UiDevice.getInstance(getInstrumentation()).executeShellCommand(cmd);
+        } catch (IOException e) {
+            Log.w(TAG, "error executing shell comamand '" + cmd + "'", e);
+        }
+    }
+
     private void createTextFile(String path, String content) throws IOException {
         Log.v(TAG, "createFile(" + path + ")");
         try (Writer writer = new BufferedWriter(new OutputStreamWriter(