Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1309)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java

Issue 1536893002: Simplify synchronous fetching in WebsitePermissionsFetcher. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java
index 663fb569c7f2824615ce95f97387aaf4d5193304..a0f3d7c65296a808a633bd93d15f1db08ca0cad5 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java
@@ -162,53 +162,58 @@ public class WebsitePermissionsFetcher {
}
/**
- * A single task in the WebsitePermissionsFetcher task queue. We need
- * fetching of features to be serialized, as we need to have all the origins
- * in place prior to populating the hosts.
+ * A single task in the WebsitePermissionsFetcher task queue. We need fetching of features to be
+ * serialized, as we need to have all the origins in place prior to populating the hosts.
*/
- private interface Task {
- void run(TaskQueue queue);
+ private abstract class Task {
+ /** Override this method to implement a synchronous task. */
+ void run() {}
+
+ /**
+ * Override this method to implement an asynchronous task. Call queue.next() once execution
+ * is complete.
+ */
+ void runAsync(TaskQueue queue) {
+ run();
+ queue.next();
+ }
}
/**
- * A queue used to store the sequence of tasks to run to fetch the website
- * preferences. Each task is run sequentially (although the queue as a whole
- * is run asynchronously). Each task should call queue.next() at the end to
- * run the next task in the queue.
+ * A queue used to store the sequence of tasks to run to fetch the website preferences. Each
+ * task is run sequentially, and some of the tasks may run asynchronously.
*/
private static class TaskQueue extends LinkedList<Task> {
void next() {
- if (!isEmpty()) removeFirst().run(this);
+ if (!isEmpty()) removeFirst().runAsync(this);
}
}
- private class GeolocationInfoFetcher implements Task {
+ private class GeolocationInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (GeolocationInfo info : WebsitePreferenceBridge.getGeolocationInfo()) {
WebsiteAddress address = WebsiteAddress.create(info.getOrigin());
if (address == null) continue;
createSiteByOriginAndHost(address).setGeolocationInfo(info);
}
- queue.next();
}
}
- private class MidiInfoFetcher implements Task {
+ private class MidiInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (MidiInfo info : WebsitePreferenceBridge.getMidiInfo()) {
WebsiteAddress address = WebsiteAddress.create(info.getOrigin());
if (address == null) continue;
createSiteByOriginAndHost(address).setMidiInfo(info);
}
- queue.next();
}
}
- private class PopupExceptionInfoFetcher implements Task {
+ private class PopupExceptionInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (ContentSettingException exception :
WebsitePreferenceBridge.getContentSettingsExceptions(
ContentSettingsType.CONTENT_SETTINGS_TYPE_POPUPS)) {
@@ -222,13 +227,12 @@ public class WebsitePermissionsFetcher {
site.setPopupException(exception);
}
}
- queue.next();
}
}
- private class JavaScriptExceptionInfoFetcher implements Task {
+ private class JavaScriptExceptionInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (ContentSettingException exception
: WebsitePreferenceBridge.getContentSettingsExceptions(
ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT)) {
@@ -241,40 +245,37 @@ public class WebsitePermissionsFetcher {
site.setJavaScriptException(exception);
}
}
- queue.next();
}
}
- private class CookieInfoFetcher implements Task {
+ private class CookieInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (CookieInfo info : WebsitePreferenceBridge.getCookieInfo()) {
WebsiteAddress address = WebsiteAddress.create(info.getOrigin());
if (address == null) continue;
createSiteByOriginAndHost(address).setCookieInfo(info);
}
- queue.next();
}
}
/**
* Class for fetching the fullscreen information.
*/
- private class FullscreenInfoFetcher implements Task {
+ private class FullscreenInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (FullscreenInfo info : WebsitePreferenceBridge.getFullscreenInfo()) {
WebsiteAddress address = WebsiteAddress.create(info.getOrigin());
if (address == null) continue;
createSiteByOriginAndHost(address).setFullscreenInfo(info);
}
- queue.next();
}
}
- private class LocalStorageInfoFetcher implements Task {
+ private class LocalStorageInfoFetcher extends Task {
@Override
- public void run(final TaskQueue queue) {
+ public void runAsync(final TaskQueue queue) {
WebsitePreferenceBridge.fetchLocalStorageInfo(
new WebsitePreferenceBridge.LocalStorageInfoReadyCallback() {
@SuppressWarnings("unchecked")
@@ -296,9 +297,9 @@ public class WebsitePermissionsFetcher {
}
}
- private class WebStorageInfoFetcher implements Task {
+ private class WebStorageInfoFetcher extends Task {
@Override
- public void run(final TaskQueue queue) {
+ public void runAsync(final TaskQueue queue) {
WebsitePreferenceBridge.fetchStorageInfo(
new WebsitePreferenceBridge.StorageInfoReadyCallback() {
@SuppressWarnings("unchecked")
@@ -319,60 +320,55 @@ public class WebsitePermissionsFetcher {
}
}
- private class ProtectedMediaIdentifierInfoFetcher implements Task {
+ private class ProtectedMediaIdentifierInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (ProtectedMediaIdentifierInfo info :
WebsitePreferenceBridge.getProtectedMediaIdentifierInfo()) {
WebsiteAddress address = WebsiteAddress.create(info.getOrigin());
if (address == null) continue;
createSiteByOriginAndHost(address).setProtectedMediaIdentifierInfo(info);
}
- queue.next();
}
}
- private class PushNotificationInfoFetcher implements Task {
+ private class PushNotificationInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (PushNotificationInfo info : WebsitePreferenceBridge.getPushNotificationInfo()) {
WebsiteAddress address = WebsiteAddress.create(info.getOrigin());
if (address == null) continue;
createSiteByOriginAndHost(address).setPushNotificationInfo(info);
}
- queue.next();
}
}
- private class CameraCaptureInfoFetcher implements Task {
+ private class CameraCaptureInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (CameraInfo info : WebsitePreferenceBridge.getCameraInfo()) {
WebsiteAddress address = WebsiteAddress.create(info.getOrigin());
if (address == null) continue;
createSiteByOriginAndHost(address).setCameraInfo(info);
}
- queue.next();
}
}
- private class MicrophoneCaptureInfoFetcher implements Task {
+ private class MicrophoneCaptureInfoFetcher extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
for (MicrophoneInfo info : WebsitePreferenceBridge.getMicrophoneInfo()) {
WebsiteAddress address = WebsiteAddress.create(info.getOrigin());
if (address == null) continue;
createSiteByOriginAndHost(address).setMicrophoneInfo(info);
}
- queue.next();
}
}
- private class PermissionsAvailableCallbackRunner implements Task {
+ private class PermissionsAvailableCallbackRunner extends Task {
@Override
- public void run(TaskQueue queue) {
+ public void run() {
mCallback.onWebsitePermissionsAvailable(mSitesByOrigin, mSitesByHost);
- queue.next();
}
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698