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

Side by Side Diff: chrome/browser/android/offline_pages/prerendering_offliner.cc

Issue 2683493002: Get signals working in the EXTRA_DATA section of MHTML (Closed)
Patch Set: FIx tests, add unit test 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 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 save_page_params.client_id = request.client_id(); 76 save_page_params.client_id = request.client_id();
77 save_page_params.proposed_offline_id = request.request_id(); 77 save_page_params.proposed_offline_id = request.request_id();
78 save_page_params.is_background = true; 78 save_page_params.is_background = true;
79 // Pass in the original URL if it is different from the last committed URL 79 // Pass in the original URL if it is different from the last committed URL
80 // when redirects occur. 80 // when redirects occur.
81 if (!request.original_url().is_empty()) 81 if (!request.original_url().is_empty())
82 save_page_params.original_url = request.original_url(); 82 save_page_params.original_url = request.original_url();
83 else if (save_page_params.url != request.url()) 83 else if (save_page_params.url != request.url())
84 save_page_params.original_url = request.url(); 84 save_page_params.original_url = request.url();
85 85
86 SavePage(save_page_params, std::move(archiver), 86 // Write the signal data into a single string.
87 std::string signal_string;
88 const std::vector<std::string>& signals = loader_->GetSignalData();
89
90 // TODO(petewil): Convert this to JSON.
91 for (std::string signal : signals) {
92 signal_string += signal;
93 signal_string += "\r\f";
94 }
95
96 SavePage(save_page_params, std::move(archiver), signal_string,
87 base::Bind(&PrerenderingOffliner::OnSavePageDone, 97 base::Bind(&PrerenderingOffliner::OnSavePageDone,
88 weak_ptr_factory_.GetWeakPtr(), request)); 98 weak_ptr_factory_.GetWeakPtr(), request));
89 } else { 99 } else {
90 // Clear pending request and app listener then run completion callback. 100 // Clear pending request and app listener then run completion callback.
91 pending_request_.reset(nullptr); 101 pending_request_.reset(nullptr);
92 app_listener_.reset(nullptr); 102 app_listener_.reset(nullptr);
93 completion_callback_.Run(request, load_status); 103 completion_callback_.Run(request, load_status);
94 } 104 }
95 } 105 }
96 106
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 } 256 }
247 257
248 void PrerenderingOffliner::SetApplicationStateForTesting( 258 void PrerenderingOffliner::SetApplicationStateForTesting(
249 base::android::ApplicationState application_state) { 259 base::android::ApplicationState application_state) {
250 OnApplicationStateChange(application_state); 260 OnApplicationStateChange(application_state);
251 } 261 }
252 262
253 void PrerenderingOffliner::SavePage( 263 void PrerenderingOffliner::SavePage(
254 const OfflinePageModel::SavePageParams& save_page_params, 264 const OfflinePageModel::SavePageParams& save_page_params,
255 std::unique_ptr<OfflinePageArchiver> archiver, 265 std::unique_ptr<OfflinePageArchiver> archiver,
266 const std::string& signal_data,
256 const SavePageCallback& save_callback) { 267 const SavePageCallback& save_callback) {
257 DCHECK(offline_page_model_); 268 DCHECK(offline_page_model_);
258 offline_page_model_->SavePage( 269 offline_page_model_->SavePage(save_page_params, std::move(archiver),
259 save_page_params, std::move(archiver), save_callback); 270 signal_data, save_callback);
260 } 271 }
261 272
262 PrerenderingLoader* PrerenderingOffliner::GetOrCreateLoader() { 273 PrerenderingLoader* PrerenderingOffliner::GetOrCreateLoader() {
263 if (!loader_) { 274 if (!loader_) {
264 loader_.reset(new PrerenderingLoader(browser_context_)); 275 loader_.reset(new PrerenderingLoader(browser_context_));
265 } 276 }
266 return loader_.get(); 277 return loader_.get();
267 } 278 }
268 279
269 void PrerenderingOffliner::OnApplicationStateChange( 280 void PrerenderingOffliner::OnApplicationStateChange(
(...skipping 13 matching lines...) Expand all
283 void PrerenderingOffliner::HandleApplicationStateChangeCancel( 294 void PrerenderingOffliner::HandleApplicationStateChangeCancel(
284 const SavePageRequest& request, 295 const SavePageRequest& request,
285 int64_t offline_id) { 296 int64_t offline_id) {
286 // This shouldn't be immediate, but account for case where request was reset 297 // This shouldn't be immediate, but account for case where request was reset
287 // while waiting for callback. 298 // while waiting for callback.
288 if (pending_request_ && pending_request_->request_id() != offline_id) 299 if (pending_request_ && pending_request_->request_id() != offline_id)
289 return; 300 return;
290 completion_callback_.Run(request, RequestStatus::FOREGROUND_CANCELED); 301 completion_callback_.Run(request, RequestStatus::FOREGROUND_CANCELED);
291 } 302 }
292 } // namespace offline_pages 303 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698