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

Unified Diff: content/browser/background_fetch/background_fetch_job_data.cc

Issue 2708943002: Create the BackgroundFetchBatchManager and initiate a download. (Closed)
Patch Set: fixed nits Created 3 years, 10 months 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: content/browser/background_fetch/background_fetch_job_data.cc
diff --git a/content/browser/background_fetch/background_fetch_job_data.cc b/content/browser/background_fetch/background_fetch_job_data.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a434d7fd344c8b16d29c0a0f4153c66f5db14828
--- /dev/null
+++ b/content/browser/background_fetch/background_fetch_job_data.cc
@@ -0,0 +1,57 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/background_fetch/background_fetch_job_data.h"
+
+#include "base/memory/ptr_util.h"
+#include "content/browser/background_fetch/background_fetch_job_info.h"
+
+namespace content {
+
+BackgroundFetchJobData::BackgroundFetchJobData(
+ BackgroundFetchRequestInfos request_infos)
+ : request_infos_(std::move(request_infos)) {}
+
+BackgroundFetchJobData::~BackgroundFetchJobData() {}
+
+// TODO(harkness): Provide more detail about status and where the returned data
+// is now available.
+bool BackgroundFetchJobData::BackgroundFetchRequestInfoComplete(
+ const std::string& fetch_guid) {
+ // Make sure that the request was expected to be in-progress.
+ auto index_iter = request_info_index_.find(fetch_guid);
+ DCHECK(index_iter != request_info_index_.end());
+ DCHECK_EQ(fetch_guid, request_infos_[index_iter->second].guid());
+
+ // Set the request as complete and delete it from the in-progress index.
+ request_infos_[index_iter->second].set_complete(true);
+ request_info_index_.erase(index_iter);
+
+ // Return a boolean indicating whether there are more requests to be
+ // processed.
+ return next_request_info_ != request_infos_.size();
+}
+
+const BackgroundFetchRequestInfo&
+BackgroundFetchJobData::GetNextBackgroundFetchRequestInfo() {
+ DCHECK(next_request_info_ != request_infos_.size());
+
+ const BackgroundFetchRequestInfo& next_request =
+ request_infos_[next_request_info_];
+ DCHECK(!next_request.complete());
+ request_info_index_[next_request.guid()] = next_request_info_++;
+
+ return next_request;
+}
+
+bool BackgroundFetchJobData::IsComplete() const {
+ return ((next_request_info_ == request_infos_.size()) &&
+ request_info_index_.empty());
+}
+
+bool BackgroundFetchJobData::HasRequestsRemaining() const {
+ return next_request_info_ != request_infos_.size();
+}
+
+} // namespace content

Powered by Google App Engine
This is Rietveld 408576698