Merge "Fixes a bug where the asynctask wasn't removed when inflating" into oc-dev
am: 7188fda4af
Change-Id: If501b5b534bee5b95f446fd48012c4c6a779bb10
This commit is contained in:
@@ -222,11 +222,21 @@ public class NotificationData {
|
||||
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<>();
|
||||
|
||||
@@ -325,6 +325,7 @@ public class NotificationInflater {
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Notification.Builder builder) {
|
||||
mRow.getEntry().onInflationTaskFinished(this);
|
||||
if (mError == null) {
|
||||
finishInflation(mReInflateFlags, builder, mPackageContext);
|
||||
} else {
|
||||
|
||||
@@ -115,13 +115,21 @@ public class NotificationInflaterTest {
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user