Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/android/offline_pages/prerendering_offliner.h" | 5 #include "chrome/browser/android/offline_pages/prerendering_offliner.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
| 9 #include "base/sys_info.h" | 9 #include "base/sys_info.h" |
| 10 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" | 10 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 184 } else { | 184 } else { |
| 185 // Create app listener for the pending request. | 185 // Create app listener for the pending request. |
| 186 app_listener_.reset(new base::android::ApplicationStatusListener( | 186 app_listener_.reset(new base::android::ApplicationStatusListener( |
| 187 base::Bind(&PrerenderingOffliner::OnApplicationStateChange, | 187 base::Bind(&PrerenderingOffliner::OnApplicationStateChange, |
| 188 weak_ptr_factory_.GetWeakPtr()))); | 188 weak_ptr_factory_.GetWeakPtr()))); |
| 189 } | 189 } |
| 190 | 190 |
| 191 return accepted; | 191 return accepted; |
| 192 } | 192 } |
| 193 | 193 |
| 194 void PrerenderingOffliner::Cancel() { | 194 void PrerenderingOffliner::Cancel(const CancelCallback& callback) { |
| 195 int64_t request_id = 0L; | |
|
fgorski
2017/02/27 18:07:25
0LL?
chili
2017/02/28 00:44:14
Done.
| |
| 195 if (pending_request_) { | 196 if (pending_request_) { |
| 197 request_id = pending_request_->request_id(); | |
| 196 pending_request_.reset(nullptr); | 198 pending_request_.reset(nullptr); |
| 197 app_listener_.reset(nullptr); | 199 app_listener_.reset(nullptr); |
| 198 GetOrCreateLoader()->StopLoading(); | 200 GetOrCreateLoader()->StopLoading(); |
| 199 // TODO(dougarnett): Consider ability to cancel SavePage request. | 201 // TODO(dougarnett): Consider ability to cancel SavePage request. |
| 200 } | 202 } |
| 203 callback.Run(request_id); | |
| 201 } | 204 } |
| 202 | 205 |
| 203 void PrerenderingOffliner::SetLoaderForTesting( | 206 void PrerenderingOffliner::SetLoaderForTesting( |
| 204 std::unique_ptr<PrerenderingLoader> loader) { | 207 std::unique_ptr<PrerenderingLoader> loader) { |
| 205 DCHECK(!loader_); | 208 DCHECK(!loader_); |
| 206 loader_ = std::move(loader); | 209 loader_ = std::move(loader); |
| 207 } | 210 } |
| 208 | 211 |
| 209 void PrerenderingOffliner::SetLowEndDeviceForTesting(bool is_low_end_device) { | 212 void PrerenderingOffliner::SetLowEndDeviceForTesting(bool is_low_end_device) { |
| 210 is_low_end_device_ = is_low_end_device; | 213 is_low_end_device_ = is_low_end_device; |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 231 return loader_.get(); | 234 return loader_.get(); |
| 232 } | 235 } |
| 233 | 236 |
| 234 void PrerenderingOffliner::OnApplicationStateChange( | 237 void PrerenderingOffliner::OnApplicationStateChange( |
| 235 base::android::ApplicationState application_state) { | 238 base::android::ApplicationState application_state) { |
| 236 if (pending_request_ && is_low_end_device_ && | 239 if (pending_request_ && is_low_end_device_ && |
| 237 application_state == | 240 application_state == |
| 238 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES) { | 241 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES) { |
| 239 DVLOG(1) << "App became active, canceling current offlining request"; | 242 DVLOG(1) << "App became active, canceling current offlining request"; |
| 240 SavePageRequest* request = pending_request_.get(); | 243 SavePageRequest* request = pending_request_.get(); |
| 241 Cancel(); | 244 Cancel(base::Bind(&PrerenderingOffliner::HandleApplicationStateChangeCancel, |
|
fgorski
2017/02/27 18:07:25
add the same comment as before please.
chili
2017/02/28 00:44:14
Done.
| |
| 242 completion_callback_.Run(*request, | 245 weak_ptr_factory_.GetWeakPtr(), *request)); |
| 243 Offliner::RequestStatus::FOREGROUND_CANCELED); | |
| 244 } | 246 } |
| 245 } | 247 } |
| 246 | 248 |
| 249 void PrerenderingOffliner::HandleApplicationStateChangeCancel( | |
| 250 const SavePageRequest& request, | |
| 251 int64_t offline_id) { | |
| 252 completion_callback_.Run(request, RequestStatus::FOREGROUND_CANCELED); | |
| 253 } | |
| 247 } // namespace offline_pages | 254 } // namespace offline_pages |
| OLD | NEW |