Commit 71d94d64 authored by David Maunder's avatar David Maunder Committed by Commit Bot

File operations should be executed on SequencedTaskRunner

Previously operations were run concurrently which may lead
to incorrect results. For example, a delete may follow a
save on the queue, but the delete may finish executing first
which makes it ineffectual.

Bug: 1116506
Change-Id: Ia6136f8fbc9775c89fd1427aa736cdd6d972c662
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2356830Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: David Maunder <davidjm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#799344}
parent f3b1a4a8
......@@ -18,6 +18,8 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.task.AsyncTask;
import org.chromium.base.task.PostTask;
import org.chromium.base.task.SequencedTaskRunner;
import org.chromium.base.task.TaskTraits;
import org.chromium.content_public.browser.UiThreadTaskTraits;
import java.io.File;
......@@ -47,10 +49,16 @@ public class FilePersistedTabDataStorage implements PersistedTabDataStorage {
ContextUtils.getApplicationContext().getDir(sBaseDirName, Context.MODE_PRIVATE);
}
}
private SequencedTaskRunner mSequencedTaskRunner;
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
protected LinkedList<StorageRequest> mQueue = new LinkedList<>();
protected FilePersistedTabDataStorage() {
mSequencedTaskRunner =
PostTask.createSequencedTaskRunner(TaskTraits.USER_BLOCKING_MAY_BLOCK);
}
@MainThread
@Override
public void save(int tabId, String dataId, byte[] data) {
......@@ -338,7 +346,7 @@ public class FilePersistedTabDataStorage implements PersistedTabDataStorage {
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
protected void processNextItemOnQueue() {
if (mQueue.isEmpty()) return;
mQueue.poll().getAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
mQueue.poll().getAsyncTask().executeOnTaskRunner(mSequencedTaskRunner);
}
@Override
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment