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

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

Issue 2104393002: Adds UMA for PrerenderingOffliner request processing result status. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" 9 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h"
9 #include "components/offline_pages/background/save_page_request.h" 10 #include "components/offline_pages/background/save_page_request.h"
10 #include "components/offline_pages/offline_page_model.h" 11 #include "components/offline_pages/offline_page_model.h"
11 #include "content/public/browser/browser_context.h" 12 #include "content/public/browser/browser_context.h"
12 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
13 14
14 namespace offline_pages { 15 namespace offline_pages {
15 16
17 namespace {
18
19 void RecordStatusUma(Offliner::RequestStatus request_status) {
20 UMA_HISTOGRAM_ENUMERATION(
21 "OfflinePages.Background.OfflinerStatus",
22 static_cast<int>(request_status),
23 static_cast<int>(Offliner::RequestStatus::STATUS_COUNT));
24 }
25
26 } // namespace
27
16 PrerenderingOffliner::PrerenderingOffliner( 28 PrerenderingOffliner::PrerenderingOffliner(
17 content::BrowserContext* browser_context, 29 content::BrowserContext* browser_context,
18 const OfflinerPolicy* policy, 30 const OfflinerPolicy* policy,
19 OfflinePageModel* offline_page_model) 31 OfflinePageModel* offline_page_model)
20 : browser_context_(browser_context), 32 : browser_context_(browser_context),
21 offline_page_model_(offline_page_model), 33 offline_page_model_(offline_page_model),
22 pending_request_(nullptr), 34 pending_request_(nullptr),
23 weak_ptr_factory_(this) {} 35 weak_ptr_factory_(this) {}
24 36
25 PrerenderingOffliner::~PrerenderingOffliner() {} 37 PrerenderingOffliner::~PrerenderingOffliner() {}
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 // same as LastCommittedURL from the snapshot. 71 // same as LastCommittedURL from the snapshot.
60 // TODO(dougarnett): Raise issue of how to better deal with redirects. 72 // TODO(dougarnett): Raise issue of how to better deal with redirects.
61 SavePage(web_contents->GetLastCommittedURL(), request.client_id(), 73 SavePage(web_contents->GetLastCommittedURL(), request.client_id(),
62 std::move(archiver), 74 std::move(archiver),
63 base::Bind(&PrerenderingOffliner::OnSavePageDone, 75 base::Bind(&PrerenderingOffliner::OnSavePageDone,
64 weak_ptr_factory_.GetWeakPtr(), request, 76 weak_ptr_factory_.GetWeakPtr(), request,
65 completion_callback)); 77 completion_callback));
66 } else { 78 } else {
67 // Clear pending request and then run the completion callback. 79 // Clear pending request and then run the completion callback.
68 pending_request_.reset(nullptr); 80 pending_request_.reset(nullptr);
81 RecordStatusUma(load_status);
69 completion_callback.Run(request, load_status); 82 completion_callback.Run(request, load_status);
70 } 83 }
71 } 84 }
72 85
73 void PrerenderingOffliner::OnSavePageDone( 86 void PrerenderingOffliner::OnSavePageDone(
74 const SavePageRequest& request, 87 const SavePageRequest& request,
75 const CompletionCallback& completion_callback, 88 const CompletionCallback& completion_callback,
76 SavePageResult save_result, 89 SavePageResult save_result,
77 int64_t offline_id) { 90 int64_t offline_id) {
78 // Check if request is still pending receiving a callback. 91 // Check if request is still pending receiving a callback.
(...skipping 11 matching lines...) Expand all
90 pending_request_.reset(nullptr); 103 pending_request_.reset(nullptr);
91 GetOrCreateLoader()->StopLoading(); 104 GetOrCreateLoader()->StopLoading();
92 105
93 // Determine status and run the completion callback. 106 // Determine status and run the completion callback.
94 Offliner::RequestStatus save_status; 107 Offliner::RequestStatus save_status;
95 if (save_result == SavePageResult::SUCCESS) { 108 if (save_result == SavePageResult::SUCCESS) {
96 save_status = RequestStatus::SAVED; 109 save_status = RequestStatus::SAVED;
97 } else { 110 } else {
98 // TODO(dougarnett): Consider reflecting some recommendation to retry the 111 // TODO(dougarnett): Consider reflecting some recommendation to retry the
99 // request based on specific save error cases. 112 // request based on specific save error cases.
100 save_status = RequestStatus::FAILED_SAVE; 113 save_status = RequestStatus::SAVE_FAILED;
101 } 114 }
115 RecordStatusUma(save_status);
102 completion_callback.Run(request, save_status); 116 completion_callback.Run(request, save_status);
103 } 117 }
104 118
105 bool PrerenderingOffliner::LoadAndSave(const SavePageRequest& request, 119 bool PrerenderingOffliner::LoadAndSave(const SavePageRequest& request,
106 const CompletionCallback& callback) { 120 const CompletionCallback& callback) {
107 if (pending_request_) { 121 if (pending_request_) {
108 DVLOG(1) << "Already have pending request"; 122 DVLOG(1) << "Already have pending request";
109 return false; 123 return false;
110 } 124 }
111 125
(...skipping 19 matching lines...) Expand all
131 pending_request_.reset(nullptr); 145 pending_request_.reset(nullptr);
132 146
133 return accepted; 147 return accepted;
134 } 148 }
135 149
136 void PrerenderingOffliner::Cancel() { 150 void PrerenderingOffliner::Cancel() {
137 if (pending_request_) { 151 if (pending_request_) {
138 pending_request_.reset(nullptr); 152 pending_request_.reset(nullptr);
139 GetOrCreateLoader()->StopLoading(); 153 GetOrCreateLoader()->StopLoading();
140 // TODO(dougarnett): Consider ability to cancel SavePage request. 154 // TODO(dougarnett): Consider ability to cancel SavePage request.
155 RecordStatusUma(Offliner::RequestStatus::REQUEST_CANCELED);
141 } 156 }
142 } 157 }
143 158
144 void PrerenderingOffliner::SetLoaderForTesting( 159 void PrerenderingOffliner::SetLoaderForTesting(
145 std::unique_ptr<PrerenderingLoader> loader) { 160 std::unique_ptr<PrerenderingLoader> loader) {
146 DCHECK(!loader_); 161 DCHECK(!loader_);
147 loader_ = std::move(loader); 162 loader_ = std::move(loader);
148 } 163 }
149 164
150 void PrerenderingOffliner::SavePage( 165 void PrerenderingOffliner::SavePage(
151 const GURL& url, 166 const GURL& url,
152 const ClientId& client_id, 167 const ClientId& client_id,
153 std::unique_ptr<OfflinePageArchiver> archiver, 168 std::unique_ptr<OfflinePageArchiver> archiver,
154 const SavePageCallback& callback) { 169 const SavePageCallback& callback) {
155 DCHECK(offline_page_model_); 170 DCHECK(offline_page_model_);
156 offline_page_model_->SavePage(url, client_id, std::move(archiver), callback); 171 offline_page_model_->SavePage(url, client_id, std::move(archiver), callback);
157 } 172 }
158 173
159 PrerenderingLoader* PrerenderingOffliner::GetOrCreateLoader() { 174 PrerenderingLoader* PrerenderingOffliner::GetOrCreateLoader() {
160 if (!loader_) { 175 if (!loader_) {
161 loader_.reset(new PrerenderingLoader(browser_context_)); 176 loader_.reset(new PrerenderingLoader(browser_context_));
162 } 177 }
163 return loader_.get(); 178 return loader_.get();
164 } 179 }
165 180
166 } // namespace offline_pages 181 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698