for (AsyncTask task : mRunningTasks) {
task.cancel(true /* mayInterruptIfRunning */);
}
+ mRunningTasks.clear();
}
public void addInflationTask(AsyncTask asyncInflationTask) {
mRunningTasks.add(asyncInflationTask);
}
+
+ public void onInflationTaskFinished(AsyncTask asyncInflationTask) {
+ mRunningTasks.remove(asyncInflationTask);
+ }
+
+ @VisibleForTesting
+ public ArraySet<AsyncTask> getRunningTasks() {
+ return mRunningTasks;
+ }
}
private final ArrayMap<String, Entry> mEntries = new ArrayMap<>();
public void testInflationThrowsErrorDoesntCallUpdated() throws Exception {
mRow.getPrivateLayout().removeAllViews();
mRow.getStatusBarNotification().getNotification().contentView
- = new RemoteViews(mContext.getPackageName(), R.layout.status_bar);;
+ = new RemoteViews(mContext.getPackageName(), R.layout.status_bar);
runThenWaitForInflation(() -> mNotificationInflater.inflateNotificationViews(),
true /* expectingException */, mNotificationInflater);
Assert.assertTrue(mRow.getPrivateLayout().getChildCount() == 0);
verify(mRow, times(0)).onNotificationUpdated();
}
+ @Test
+ public void testAsyncTaskRemoved() throws Exception {
+ mRow.getEntry().abortInflation();
+ runThenWaitForInflation(() -> mNotificationInflater.inflateNotificationViews(),
+ mNotificationInflater);
+ Assert.assertTrue(mRow.getEntry().getRunningTasks().size() == 0);
+ }
+
public static void runThenWaitForInflation(Runnable block,
NotificationInflater inflater) throws Exception {
runThenWaitForInflation(block, false /* expectingException */, inflater);