Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_DATA_MANAGER_H_ | 5 #ifndef CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_DATA_MANAGER_H_ |
| 6 #define CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_DATA_MANAGER_H_ | 6 #define CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_DATA_MANAGER_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <unordered_map> | |
| 11 #include <vector> | |
| 10 | 12 |
| 11 #include "base/macros.h" | 13 #include "base/macros.h" |
| 12 #include "content/browser/background_fetch/fetch_request.h" | 14 #include "content/browser/background_fetch/fetch_request.h" |
| 13 #include "content/common/content_export.h" | 15 #include "content/common/content_export.h" |
| 14 #include "url/origin.h" | 16 #include "url/origin.h" |
| 15 | 17 |
| 16 namespace content { | 18 namespace content { |
| 17 | 19 |
| 18 class BackgroundFetchContext; | 20 class BackgroundFetchContext; |
| 21 class BatchRequest; | |
| 19 | 22 |
| 20 // The BackgroundFetchDataManager keeps track of all of the outstanding requests | 23 // The BackgroundFetchDataManager keeps track of all of the outstanding requests |
| 21 // which are in process in the DownloadManager. When Chromium restarts, it is | 24 // which are in process in the DownloadManager. When Chromium restarts, it is |
| 22 // responsibile for reconnecting all the in progress downloads with an observer | 25 // responsibile for reconnecting all the in progress downloads with an observer |
| 23 // which will keep the metadata up to date. | 26 // which will keep the metadata up to date. |
| 24 class CONTENT_EXPORT BackgroundFetchDataManager { | 27 class CONTENT_EXPORT BackgroundFetchDataManager { |
| 25 public: | 28 public: |
| 26 explicit BackgroundFetchDataManager( | 29 explicit BackgroundFetchDataManager( |
| 27 BackgroundFetchContext* background_fetch_context); | 30 BackgroundFetchContext* background_fetch_context); |
| 28 ~BackgroundFetchDataManager(); | 31 ~BackgroundFetchDataManager(); |
| 29 | 32 |
| 33 // The BatchData class provides the interface from the BatchProcessor to the | |
| 34 // data storage. | |
|
Peter Beverloo
2017/02/24 02:05:16
This comment doesn't really mean anything to me. W
harkness
2017/02/24 11:47:11
We could do that, but I like encapsulating the pie
Peter Beverloo
2017/02/24 15:43:14
That sounds like the sort of improvements we could
| |
| 35 class BatchData { | |
| 36 public: | |
| 37 using FetchRequests = std::vector<FetchRequest>; | |
|
Peter Beverloo
2017/02/24 02:05:16
This is a source of lots of potential copies too.
harkness
2017/02/24 11:47:11
Done.
| |
| 38 BatchData(); | |
|
Peter Beverloo
2017/02/24 02:05:16
Please delete the argument-less constructor (it's
harkness
2017/02/24 11:47:11
Done.
| |
| 39 BatchData(const BatchRequest& batch_request, | |
| 40 const FetchRequests& fetch_requests); | |
| 41 ~BatchData(); | |
| 42 bool FetchRequestComplete(const std::string& fetch_uid); | |
|
Peter Beverloo
2017/02/24 02:05:16
All of these are public methods, please document t
Peter Beverloo
2017/02/24 02:05:16
uid -> guid
harkness
2017/02/24 11:47:11
Sorry, I had actually done that, but it looks like
harkness
2017/02/24 11:47:11
Done.
| |
| 43 const FetchRequest& GetNextFetchRequest(); | |
| 44 bool IsComplete() const; | |
| 45 bool HasRequestsRemaining() const; | |
| 46 | |
| 47 private: | |
| 48 FetchRequests fetch_requests_; | |
| 49 | |
| 50 // Map from fetch_uid to index in fetch_requests_. Only currently | |
| 51 // outstanding requests should be in this map. | |
| 52 std::unordered_map<std::string, int> fetch_request_index_; | |
| 53 unsigned long next_fetch_request_ = 0; | |
|
Peter Beverloo
2017/02/24 02:05:16
nit: we try to avoid using unsigned types per the
harkness
2017/02/24 11:47:11
Updated to size_t.
| |
| 54 }; | |
| 55 | |
| 30 // Called by BackgroundFetchContext when a new request is started, this will | 56 // Called by BackgroundFetchContext when a new request is started, this will |
| 31 // store all of the necessary metadata to track the request. | 57 // store all of the necessary metadata to track the request. |
| 32 void CreateRequest(const FetchRequest& fetch_request); | 58 BatchData* CreateRequest(const BatchRequest& batch_request, |
|
Peter Beverloo
2017/02/24 02:05:16
Document the memory model of the returned pointer.
harkness
2017/02/24 11:47:11
Done.
| |
| 59 const std::vector<FetchRequest>& fetch_requests); | |
| 33 | 60 |
| 34 private: | 61 private: |
| 35 // BackgroundFetchContext owns this BackgroundFetchDataManager, so the | 62 // BackgroundFetchContext owns this BackgroundFetchDataManager, so the |
| 36 // DataManager is guaranteed to be destructed before the Context. | 63 // DataManager is guaranteed to be destructed before the Context. |
| 37 BackgroundFetchContext* background_fetch_context_; | 64 BackgroundFetchContext* background_fetch_context_; |
| 38 | 65 |
| 39 // Map from <sw_registration_id, tag> to the FetchRequest for that tag. | 66 // Map from <sw_registration_id, tag> to the FetchRequest for that tag. |
| 40 using FetchIdentifier = std::pair<int64_t, std::string>; | 67 using BatchIdentifier = std::pair<int64_t, std::string>; |
| 41 std::map<FetchIdentifier, FetchRequest> fetch_map_; | 68 std::map<BatchIdentifier, std::string> service_worker_tag_map_; |
| 69 | |
| 70 std::map<std::string, BatchData*> batch_map_; | |
|
Peter Beverloo
2017/02/24 02:05:16
This must be std::unique_ptr<BatchData>. Manual me
Peter Beverloo
2017/02/24 02:05:16
Document what the index is. Do we depend on orderi
harkness
2017/02/24 11:47:11
Done.
harkness
2017/02/24 11:47:11
Done.
| |
| 42 | 71 |
| 43 DISALLOW_COPY_AND_ASSIGN(BackgroundFetchDataManager); | 72 DISALLOW_COPY_AND_ASSIGN(BackgroundFetchDataManager); |
| 44 }; | 73 }; |
| 45 | 74 |
| 46 } // namespace content | 75 } // namespace content |
| 47 | 76 |
| 48 #endif // CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_DATA_MANAGER_H_ | 77 #endif // CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_DATA_MANAGER_H_ |
| OLD | NEW |