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

Side by Side Diff: content/browser/background_fetch/background_fetch_job_controller_unittest.cc

Issue 2753583002: Add the JobComplete callback and error/interrupt information (Closed)
Patch Set: added argument name Created 3 years, 9 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 unified diff | Download patch
OLDNEW
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 #include "content/browser/background_fetch/background_fetch_job_controller.h" 5 #include "content/browser/background_fetch/background_fetch_job_controller.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 download_manager_); 86 download_manager_);
87 } 87 }
88 88
89 void TearDown() override { job_controller_->Shutdown(); } 89 void TearDown() override { job_controller_->Shutdown(); }
90 90
91 void InitializeJobController( 91 void InitializeJobController(
92 std::unique_ptr<BackgroundFetchJobData> job_data) { 92 std::unique_ptr<BackgroundFetchJobData> job_data) {
93 job_controller_ = base::MakeUnique<BackgroundFetchJobController>( 93 job_controller_ = base::MakeUnique<BackgroundFetchJobController>(
94 kJobGuid, &browser_context_, 94 kJobGuid, &browser_context_,
95 BrowserContext::GetDefaultStoragePartition(&browser_context_), 95 BrowserContext::GetDefaultStoragePartition(&browser_context_),
96 std::move(job_data)); 96 std::move(job_data),
97 base::BindOnce(&BackgroundFetchJobControllerTest::DidCompleteJob,
98 base::Unretained(this)));
97 } 99 }
98 100
101 void DidCompleteJob() { did_complete_job_ = true; }
102
99 void StartProcessing() { 103 void StartProcessing() {
100 base::RunLoop run_loop; 104 base::RunLoop run_loop;
101 BrowserThread::PostTask( 105 BrowserThread::PostTask(
102 BrowserThread::IO, FROM_HERE, 106 BrowserThread::IO, FROM_HERE,
103 base::Bind(&BackgroundFetchJobControllerTest::StartProcessingOnIO, 107 base::Bind(&BackgroundFetchJobControllerTest::StartProcessingOnIO,
104 base::Unretained(this), run_loop.QuitClosure())); 108 base::Unretained(this), run_loop.QuitClosure()));
105 run_loop.Run(); 109 run_loop.Run();
106 } 110 }
107 111
108 void StartProcessingOnIO(const base::Closure& closure) { 112 void StartProcessingOnIO(const base::Closure& closure) {
109 job_controller_->StartProcessing(); 113 job_controller_->StartProcessing();
110 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, closure); 114 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, closure);
111 } 115 }
112 116
113 BackgroundFetchJobController* job_controller() { 117 BackgroundFetchJobController* job_controller() {
114 return job_controller_.get(); 118 return job_controller_.get();
115 } 119 }
116 MockDownloadManagerWithCallback* download_manager() { 120 MockDownloadManagerWithCallback* download_manager() {
117 return download_manager_; 121 return download_manager_;
118 } 122 }
119 123
120 DownloadItem::Observer* ItemObserver() const { return job_controller_.get(); } 124 DownloadItem::Observer* ItemObserver() const { return job_controller_.get(); }
121 125
126 bool did_complete_job() const { return did_complete_job_; }
127
122 private: 128 private:
129 bool did_complete_job_ = false;
123 TestBrowserThreadBundle thread_bundle_; 130 TestBrowserThreadBundle thread_bundle_;
124 TestBrowserContext browser_context_; 131 TestBrowserContext browser_context_;
125 std::unique_ptr<BackgroundFetchJobController> job_controller_; 132 std::unique_ptr<BackgroundFetchJobController> job_controller_;
126 MockDownloadManagerWithCallback* download_manager_; 133 MockDownloadManagerWithCallback* download_manager_;
127 }; 134 };
128 135
129 TEST_F(BackgroundFetchJobControllerTest, SingleRequestJob) { 136 TEST_F(BackgroundFetchJobControllerTest, SingleRequestJob) {
130 BackgroundFetchJobInfo job_info(kTag, url::Origin(GURL(kOrigin)), 137 BackgroundFetchJobInfo job_info(kTag, url::Origin(GURL(kOrigin)),
131 kServiceWorkerRegistrationId); 138 kServiceWorkerRegistrationId);
132 BackgroundFetchRequestInfo request_info(GURL(kTestUrl), kJobGuid); 139 BackgroundFetchRequestInfo request_info(GURL(kTestUrl), kJobGuid);
(...skipping 14 matching lines...) Expand all
147 StartProcessing(); 154 StartProcessing();
148 155
149 // Get one of the pending downloads from the download manager. 156 // Get one of the pending downloads from the download manager.
150 auto& download_items = download_manager()->download_items(); 157 auto& download_items = download_manager()->download_items();
151 ASSERT_EQ(1U, download_items.size()); 158 ASSERT_EQ(1U, download_items.size());
152 FakeDownloadItem* item = download_items[0].get(); 159 FakeDownloadItem* item = download_items[0].get();
153 160
154 // Update the observer with no actual change. 161 // Update the observer with no actual change.
155 ItemObserver()->OnDownloadUpdated(item); 162 ItemObserver()->OnDownloadUpdated(item);
156 EXPECT_FALSE(job_data->IsComplete()); 163 EXPECT_FALSE(job_data->IsComplete());
164 EXPECT_FALSE(did_complete_job());
157 165
158 // Update the item to be completed then update the observer. The JobController 166 // Update the item to be completed then update the observer. The JobController
159 // should update the JobData that the request is complete. 167 // should update the JobData that the request is complete.
160 item->SetState(DownloadItem::DownloadState::COMPLETE); 168 item->SetState(DownloadItem::DownloadState::COMPLETE);
161 ItemObserver()->OnDownloadUpdated(item); 169 ItemObserver()->OnDownloadUpdated(item);
162 EXPECT_TRUE(job_data->IsComplete()); 170 EXPECT_TRUE(job_data->IsComplete());
171
172 EXPECT_TRUE(did_complete_job());
163 } 173 }
164 174
165 TEST_F(BackgroundFetchJobControllerTest, MultipleRequestJob) { 175 TEST_F(BackgroundFetchJobControllerTest, MultipleRequestJob) {
166 BackgroundFetchJobInfo job_info(kTag, url::Origin(GURL(kOrigin)), 176 BackgroundFetchJobInfo job_info(kTag, url::Origin(GURL(kOrigin)),
167 kServiceWorkerRegistrationId); 177 kServiceWorkerRegistrationId);
168 std::vector<BackgroundFetchRequestInfo> request_infos; 178 std::vector<BackgroundFetchRequestInfo> request_infos;
169 for (int i = 0; i < 10; i++) { 179 for (int i = 0; i < 10; i++) {
170 request_infos.emplace_back(GURL(kTestUrl), base::IntToString(i)); 180 request_infos.emplace_back(GURL(kTestUrl), base::IntToString(i));
171 } 181 }
172 182
(...skipping 23 matching lines...) Expand all
196 206
197 for (size_t i = 0; i < 9; i++) { 207 for (size_t i = 0; i < 9; i++) {
198 // Update the next item to be completed then update the observer. 208 // Update the next item to be completed then update the observer.
199 ASSERT_EQ(i + 1, download_items.size()); 209 ASSERT_EQ(i + 1, download_items.size());
200 item = download_items[i].get(); 210 item = download_items[i].get();
201 item->SetState(DownloadItem::DownloadState::COMPLETE); 211 item->SetState(DownloadItem::DownloadState::COMPLETE);
202 ItemObserver()->OnDownloadUpdated(item); 212 ItemObserver()->OnDownloadUpdated(item);
203 EXPECT_FALSE(job_data->IsComplete()); 213 EXPECT_FALSE(job_data->IsComplete());
204 } 214 }
205 EXPECT_FALSE(job_data->HasRequestsRemaining()); 215 EXPECT_FALSE(job_data->HasRequestsRemaining());
216 EXPECT_FALSE(did_complete_job());
206 217
207 // Finally, update the last request to be complete. The JobController should 218 // Finally, update the last request to be complete. The JobController should
208 // see that there are no more requests and mark the job as done. 219 // see that there are no more requests and mark the job as done.
209 ASSERT_EQ(10U, download_items.size()); 220 ASSERT_EQ(10U, download_items.size());
210 item = download_items[9].get(); 221 item = download_items[9].get();
211 item->SetState(DownloadItem::DownloadState::COMPLETE); 222 item->SetState(DownloadItem::DownloadState::COMPLETE);
212 ItemObserver()->OnDownloadUpdated(item); 223 ItemObserver()->OnDownloadUpdated(item);
213 EXPECT_TRUE(job_data->IsComplete()); 224 EXPECT_TRUE(job_data->IsComplete());
225
226 EXPECT_TRUE(did_complete_job());
214 } 227 }
215 228
216 } // namespace content 229 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698