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

Unified Diff: components/offline_pages/core/background/request_coordinator.h

Issue 2570433007: [OfflinePages] Adds StartImmediateProcessing() api to RequestCoordinator (Closed)
Patch Set: SetInternalStartProcessingCallbackForTest name Created 4 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
Index: components/offline_pages/core/background/request_coordinator.h
diff --git a/components/offline_pages/core/background/request_coordinator.h b/components/offline_pages/core/background/request_coordinator.h
index 6ff8f335bba8ed5916102d88fcbdfdc739bb6b88..5f13eb3fa8ba18294dd2fbeebd8b9c93eda9b3b9 100644
--- a/components/offline_pages/core/background/request_coordinator.h
+++ b/components/offline_pages/core/background/request_coordinator.h
@@ -110,6 +110,19 @@ class RequestCoordinator : public KeyedService,
bool StartScheduledProcessing(const DeviceConditions& device_conditions,
const base::Callback<void(bool)>& callback);
+ // Attempts to starts processing of one or more queued save page later
+ // requests (if device conditions are suitable) in immediate mode
+ // (opposed to scheduled background mode). This method is suitable to call
+ // when there is some user action that suggests the user wants to do this
+ // operation now, if possible, vs. trying to do it in the background when
+ // idle.
+ // Returns whether processing was started and that caller should expect
+ // a callback. If processing was already active or some condition was
+ // not suitable for immediate processing (e.g., network or low-end device),
+ // returns false.
+ bool StartImmediateProcessing(const DeviceConditions& device_conditions,
+ const base::Callback<void(bool)>& callback);
+
// Stops the current request processing if active. This is a way for
// caller to abort processing; otherwise, processing will complete on
// its own. In either case, the callback will be called when processing
@@ -133,12 +146,12 @@ class RequestCoordinator : public KeyedService,
scheduler_callback_ = callback;
}
- // A way to set the callback which would be called if the request will be
- // scheduled immediately. Used by testing harness to determine if a request
- // has been processed.
- void SetImmediateScheduleCallbackForTest(
+ // A way to set the callback which would be called if processing will be
+ // triggered immediately internally by the coordinator. Used by testing
+ // harness to determine if a request has been processed.
+ void SetInternalStartProcessingCallbackForTest(
const base::Callback<void(bool)> callback) {
- immediate_schedule_callback_ = callback;
+ internal_start_processing_callback_ = callback;
}
void StartImmediatelyForTest() { StartImmediatelyIfConnected(); }
@@ -253,7 +266,9 @@ class RequestCoordinator : public KeyedService,
// as to other device conditions).
void StartImmediatelyIfConnected();
- OfflinerImmediateStartStatus TryImmediateStart();
+ OfflinerImmediateStartStatus TryImmediateStart(
+ const DeviceConditions& device_conditions,
+ const base::Callback<void(bool)>& callback);
// Requests a callback upon the next network connection to start processing.
void RequestConnectedEventForStarting();
@@ -406,14 +421,20 @@ class RequestCoordinator : public KeyedService,
// A set of request_ids that we are holding off until the download manager is
// done with them.
std::set<int64_t> disabled_requests_;
- // Calling this returns to the scheduler across the JNI bridge.
+ // The processing callback to call when processing the current processing
+ // window stops. It is set from the Start*Processing() call that triggered
+ // the processing or it may be the |internal_start_processing_callback_| if
+ // processing was triggered internally.
+ // For StartScheduledProcessing() processing, calling its callback returns
+ // to the scheduler across the JNI bridge.
base::Callback<void(bool)> scheduler_callback_;
+ // Callback invoked when internally triggered processing is done. It is
+ // kept as a class member so that it may be overridden for test visibility.
+ base::Callback<void(bool)> internal_start_processing_callback_;
// Logger to record events.
RequestCoordinatorEventLogger event_logger_;
// Timer to watch for pre-render attempts running too long.
base::OneShotTimer watchdog_timer_;
- // Callback invoked when an immediate request is done (default empty).
- base::Callback<void(bool)> immediate_schedule_callback_;
// Used for potential immediate processing when we get network connection.
std::unique_ptr<ConnectionNotifier> connection_notifier_;
// Allows us to pass a weak pointer to callbacks.

Powered by Google App Engine
This is Rietveld 408576698