| 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_JOB_CONTROLLER_H_ | 5 #ifndef CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_JOB_CONTROLLER_H_ |
| 6 #define CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_JOB_CONTROLLER_H_ | 6 #define CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_JOB_CONTROLLER_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <unordered_map> | 10 #include <unordered_map> |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 BackgroundFetchJobController( | 41 BackgroundFetchJobController( |
| 42 const BackgroundFetchRegistrationId& registration_id, | 42 const BackgroundFetchRegistrationId& registration_id, |
| 43 const BackgroundFetchOptions& options, | 43 const BackgroundFetchOptions& options, |
| 44 BackgroundFetchDataManager* data_manager, | 44 BackgroundFetchDataManager* data_manager, |
| 45 BrowserContext* browser_context, | 45 BrowserContext* browser_context, |
| 46 scoped_refptr<net::URLRequestContextGetter> request_context, | 46 scoped_refptr<net::URLRequestContextGetter> request_context, |
| 47 CompletedCallback completed_callback, | 47 CompletedCallback completed_callback, |
| 48 const net::NetworkTrafficAnnotationTag& traffic_annotation); | 48 const net::NetworkTrafficAnnotationTag& traffic_annotation); |
| 49 ~BackgroundFetchJobController(); | 49 ~BackgroundFetchJobController(); |
| 50 | 50 |
| 51 // Starts fetching the |initial_fetches|. The controller will continue to | 51 // Starts fetching the first few requests. The controller will continue to |
| 52 // fetch new content until all requests have been handled. | 52 // fetch new content until all requests have been handled. |
| 53 void Start( | 53 void Start(); |
| 54 std::vector<scoped_refptr<BackgroundFetchRequestInfo>> initial_requests); | |
| 55 | 54 |
| 56 // Updates the representation of this Background Fetch in the user interface | 55 // Updates the representation of this Background Fetch in the user interface |
| 57 // to match the given |title|. | 56 // to match the given |title|. |
| 58 void UpdateUI(const std::string& title); | 57 void UpdateUI(const std::string& title); |
| 59 | 58 |
| 60 // Immediately aborts this Background Fetch by request of the developer. | 59 // Immediately aborts this Background Fetch by request of the developer. |
| 61 void Abort(); | 60 void Abort(); |
| 62 | 61 |
| 63 // Returns the current state of this Job Controller. | 62 // Returns the current state of this Job Controller. |
| 64 State state() const { return state_; } | 63 State state() const { return state_; } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 78 void StartRequest(scoped_refptr<BackgroundFetchRequestInfo> request); | 77 void StartRequest(scoped_refptr<BackgroundFetchRequestInfo> request); |
| 79 | 78 |
| 80 // Called when the given |request| has started fetching, after having been | 79 // Called when the given |request| has started fetching, after having been |
| 81 // assigned the |download_guid| by the download system. | 80 // assigned the |download_guid| by the download system. |
| 82 void DidStartRequest(scoped_refptr<BackgroundFetchRequestInfo> request, | 81 void DidStartRequest(scoped_refptr<BackgroundFetchRequestInfo> request, |
| 83 const std::string& download_guid); | 82 const std::string& download_guid); |
| 84 | 83 |
| 85 // Called when the given |request| has been completed. | 84 // Called when the given |request| has been completed. |
| 86 void DidCompleteRequest(scoped_refptr<BackgroundFetchRequestInfo> request); | 85 void DidCompleteRequest(scoped_refptr<BackgroundFetchRequestInfo> request); |
| 87 | 86 |
| 88 // Called when a completed download has been marked as such in the DataManager | 87 // Called when a completed download has been marked as such in DataManager. |
| 89 // and the next request, if any, has been read from storage. | 88 void DidMarkRequestCompleted(bool has_pending_or_active_requests); |
| 90 void DidGetNextRequest(scoped_refptr<BackgroundFetchRequestInfo> request); | |
| 91 | 89 |
| 92 // The registration id on behalf of which this controller is fetching data. | 90 // The registration id on behalf of which this controller is fetching data. |
| 93 BackgroundFetchRegistrationId registration_id_; | 91 BackgroundFetchRegistrationId registration_id_; |
| 94 | 92 |
| 95 // Options for the represented background fetch registration. | 93 // Options for the represented background fetch registration. |
| 96 BackgroundFetchOptions options_; | 94 BackgroundFetchOptions options_; |
| 97 | 95 |
| 98 // The current state of this Job Controller. | 96 // The current state of this Job Controller. |
| 99 State state_ = State::INITIALIZED; | 97 State state_ = State::INITIALIZED; |
| 100 | 98 |
| 101 // Inner core of this job controller which lives on the UI thread. | 99 // Inner core of this job controller which lives on the UI thread. |
| 102 std::unique_ptr<Core, BrowserThread::DeleteOnUIThread> ui_core_; | 100 std::unique_ptr<Core, BrowserThread::DeleteOnUIThread> ui_core_; |
| 103 base::WeakPtr<Core> ui_core_ptr_; | 101 base::WeakPtr<Core> ui_core_ptr_; |
| 104 | 102 |
| 105 // The DataManager's lifetime is controlled by the BackgroundFetchContext and | 103 // The DataManager's lifetime is controlled by the BackgroundFetchContext and |
| 106 // will be kept alive until after the JobController is destroyed. | 104 // will be kept alive until after the JobController is destroyed. |
| 107 BackgroundFetchDataManager* data_manager_; | 105 BackgroundFetchDataManager* data_manager_; |
| 108 | 106 |
| 109 // Number of outstanding acknowledgements we still expect to receive. | |
| 110 int pending_completed_file_acknowledgements_ = 0; | |
| 111 | |
| 112 // Callback for when all fetches have been completed. | 107 // Callback for when all fetches have been completed. |
| 113 CompletedCallback completed_callback_; | 108 CompletedCallback completed_callback_; |
| 114 | 109 |
| 115 // Traffic annotation for network request. | 110 // Traffic annotation for network request. |
| 116 const net::NetworkTrafficAnnotationTag traffic_annotation_; | 111 const net::NetworkTrafficAnnotationTag traffic_annotation_; |
| 117 | 112 |
| 118 base::WeakPtrFactory<BackgroundFetchJobController> weak_ptr_factory_; | 113 base::WeakPtrFactory<BackgroundFetchJobController> weak_ptr_factory_; |
| 119 | 114 |
| 120 DISALLOW_COPY_AND_ASSIGN(BackgroundFetchJobController); | 115 DISALLOW_COPY_AND_ASSIGN(BackgroundFetchJobController); |
| 121 }; | 116 }; |
| 122 | 117 |
| 123 } // namespace content | 118 } // namespace content |
| 124 | 119 |
| 125 #endif // CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_JOB_CONTROLLER_H_ | 120 #endif // CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_JOB_CONTROLLER_H_ |
| OLD | NEW |