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

Side by Side Diff: components/offline_pages/offline_page_model.cc

Issue 2022283003: Record offline histograms with suffix via Histogram::FactoryGet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/offline_pages/offline_page_model.h" 5 #include "components/offline_pages/offline_page_model.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/files/file_util.h" 11 #include "base/files/file_util.h"
12 #include "base/location.h" 12 #include "base/location.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/metrics/histogram_macros.h" 14 #include "base/metrics/histogram_macros.h"
15 #include "base/optional.h" 15 #include "base/optional.h"
16 #include "base/rand_util.h" 16 #include "base/rand_util.h"
17 #include "base/sequenced_task_runner.h" 17 #include "base/sequenced_task_runner.h"
18 #include "base/strings/string_number_conversions.h" 18 #include "base/strings/string_number_conversions.h"
19 #include "base/threading/thread_task_runner_handle.h" 19 #include "base/threading/thread_task_runner_handle.h"
20 #include "base/time/time.h" 20 #include "base/time/time.h"
21 #include "components/offline_pages/archive_manager.h" 21 #include "components/offline_pages/archive_manager.h"
22 #include "components/offline_pages/client_namespace_constants.h"
22 #include "components/offline_pages/client_policy_controller.h" 23 #include "components/offline_pages/client_policy_controller.h"
23 #include "components/offline_pages/offline_page_item.h" 24 #include "components/offline_pages/offline_page_item.h"
24 #include "components/offline_pages/offline_page_storage_manager.h" 25 #include "components/offline_pages/offline_page_storage_manager.h"
25 #include "url/gurl.h" 26 #include "url/gurl.h"
26 27
27 using ArchiverResult = offline_pages::OfflinePageArchiver::ArchiverResult; 28 using ArchiverResult = offline_pages::OfflinePageArchiver::ArchiverResult;
28 29
29 namespace offline_pages { 30 namespace offline_pages {
30 31
31 namespace { 32 namespace {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 case ArchiverResult::ERROR_SECURITY_CERTIFICATE: 68 case ArchiverResult::ERROR_SECURITY_CERTIFICATE:
68 result = SavePageResult::SECURITY_CERTIFICATE_ERROR; 69 result = SavePageResult::SECURITY_CERTIFICATE_ERROR;
69 break; 70 break;
70 default: 71 default:
71 NOTREACHED(); 72 NOTREACHED();
72 result = SavePageResult::CONTENT_UNAVAILABLE; 73 result = SavePageResult::CONTENT_UNAVAILABLE;
73 } 74 }
74 return result; 75 return result;
75 } 76 }
76 77
77 std::string AddHistogramSuffix(const ClientId& client_id,
78 const char* histogram_name) {
79 if (client_id.name_space.empty()) {
80 NOTREACHED();
81 return histogram_name;
82 }
83 std::string adjusted_histogram_name(histogram_name);
84 adjusted_histogram_name += ".";
85 adjusted_histogram_name += client_id.name_space;
86 return adjusted_histogram_name;
87 }
88
89 void ReportStorageHistogramsAfterSave( 78 void ReportStorageHistogramsAfterSave(
90 const ArchiveManager::StorageStats& storage_stats) { 79 const ArchiveManager::StorageStats& storage_stats) {
91 const int kMB = 1024 * 1024; 80 const int kMB = 1024 * 1024;
92 int free_disk_space_mb = 81 int free_disk_space_mb =
93 static_cast<int>(storage_stats.free_disk_space / kMB); 82 static_cast<int>(storage_stats.free_disk_space / kMB);
94 UMA_HISTOGRAM_CUSTOM_COUNTS("OfflinePages.SavePage.FreeSpaceMB", 83 UMA_HISTOGRAM_CUSTOM_COUNTS("OfflinePages.SavePage.FreeSpaceMB",
95 free_disk_space_mb, 1, 500000, 50); 84 free_disk_space_mb, 1, 500000, 50);
96 85
97 int total_page_size_mb = 86 int total_page_size_mb =
98 static_cast<int>(storage_stats.total_archives_size / kMB); 87 static_cast<int>(storage_stats.total_archives_size / kMB);
(...skipping 16 matching lines...) Expand all
115 int percentage_of_free = static_cast<int>( 104 int percentage_of_free = static_cast<int>(
116 1.0 * storage_stats.total_archives_size / 105 1.0 * storage_stats.total_archives_size /
117 (storage_stats.total_archives_size + storage_stats.free_disk_space) * 106 (storage_stats.total_archives_size + storage_stats.free_disk_space) *
118 100); 107 100);
119 UMA_HISTOGRAM_PERCENTAGE( 108 UMA_HISTOGRAM_PERCENTAGE(
120 "OfflinePages.DeletePage.TotalPageSizeAsPercentageOfFreeSpace", 109 "OfflinePages.DeletePage.TotalPageSizeAsPercentageOfFreeSpace",
121 percentage_of_free); 110 percentage_of_free);
122 } 111 }
123 } 112 }
124 113
114 void ReportPageHistogramAfterSave(const ClientId& client_id,
115 SavePageResult result) {
116 if (client_id.name_space == kBookmarkNamespace) {
117 UMA_HISTOGRAM_ENUMERATION("OfflinePages.SavePageResult.bookmark",
dewittj 2016/05/31 22:38:45 Please open a bug to move this to the diagnostics
118 static_cast<int>(result),
119 static_cast<int>(SavePageResult::RESULT_COUNT));
120 } else if (client_id.name_space == kLastNNamespace) {
121 UMA_HISTOGRAM_ENUMERATION("OfflinePages.SavePageResult.last_n",
122 static_cast<int>(result),
123 static_cast<int>(SavePageResult::RESULT_COUNT));
124 } else {
125 UMA_HISTOGRAM_ENUMERATION("OfflinePages.SavePageResult",
126 static_cast<int>(result),
127 static_cast<int>(SavePageResult::RESULT_COUNT));
128 }
129 }
130
131 void ReportPageHistogramsAfterDelete(
132 const std::map<int64_t, OfflinePageItem>& offline_pages,
133 const std::vector<int64_t>& deleted_offline_ids) {
134 base::Time now = base::Time::Now();
135 int64_t total_size = 0;
136 for (int64_t offline_id : deleted_offline_ids) {
137 auto iter = offline_pages.find(offline_id);
138 if (iter == offline_pages.end())
139 continue;
140 total_size += iter->second.file_size;
141 ClientId client_id = iter->second.client_id;
142
143 int lifetime_minutes = (now - iter->second.creation_time).InMinutes();
144 int since_last_access_minutes =
145 (now - iter->second.last_access_time).InMinutes();
146 int last_access_to_creation_minutes =
147 (iter->second.last_access_time - iter->second.creation_time).
148 InMinutes();
149 int max_minutes = base::TimeDelta::FromDays(365).InMinutes();
150 int page_size_in_kb = iter->second.file_size / 1024;
151 int account_count = iter->second.access_count;
152
153 if (client_id.name_space == kBookmarkNamespace) {
154 UMA_HISTOGRAM_CUSTOM_COUNTS(
155 "OfflinePages.PageLifetime.bookmark",
156 lifetime_minutes, 1, max_minutes, 100);
157 UMA_HISTOGRAM_CUSTOM_COUNTS(
158 "OfflinePages.DeletePage.TimeSinceLastOpen.bookmark",
159 since_last_access_minutes, 1, max_minutes, 100);
160 UMA_HISTOGRAM_CUSTOM_COUNTS(
161 "OfflinePages.DeletePage.LastOpenToCreated.bookmark",
162 last_access_to_creation_minutes, 1, max_minutes, 100);
163 UMA_HISTOGRAM_MEMORY_KB("OfflinePages.DeletePage.PageSize.bookmark",
164 page_size_in_kb);
165 UMA_HISTOGRAM_COUNTS("OfflinePages.DeletePage.AccessCount.bookmark",
166 account_count);
167 } else if (client_id.name_space == kBookmarkNamespace) {
168 UMA_HISTOGRAM_CUSTOM_COUNTS(
169 "OfflinePages.PageLifetime.last_n",
170 lifetime_minutes, 1, max_minutes, 100);
171 UMA_HISTOGRAM_CUSTOM_COUNTS(
172 "OfflinePages.DeletePage.TimeSinceLastOpen.last_n",
173 since_last_access_minutes, 1, max_minutes, 100);
174 UMA_HISTOGRAM_CUSTOM_COUNTS(
175 "OfflinePages.DeletePage.LastOpenToCreated.last_n",
176 last_access_to_creation_minutes, 1, max_minutes, 100);
177 UMA_HISTOGRAM_MEMORY_KB("OfflinePages.DeletePage.PageSize.last_n",
178 page_size_in_kb);
179 UMA_HISTOGRAM_COUNTS("OfflinePages.DeletePage.AccessCount.last_n",
180 account_count);
181 } else {
182 UMA_HISTOGRAM_CUSTOM_COUNTS(
183 "OfflinePages.PageLifetime",
184 lifetime_minutes, 1, max_minutes, 100);
185 UMA_HISTOGRAM_CUSTOM_COUNTS(
186 "OfflinePages.DeletePage.TimeSinceLastOpen",
187 since_last_access_minutes, 1, max_minutes, 100);
188 UMA_HISTOGRAM_CUSTOM_COUNTS(
189 "OfflinePages.DeletePage.LastOpenToCreated",
190 last_access_to_creation_minutes, 1, max_minutes, 100);
191 UMA_HISTOGRAM_MEMORY_KB("OfflinePages.DeletePage.PageSize",
192 page_size_in_kb);
193 UMA_HISTOGRAM_COUNTS("OfflinePages.DeletePage.AccessCount",
194 account_count);
195 }
196 }
197
198 if (deleted_offline_ids.size() > 1) {
199 UMA_HISTOGRAM_COUNTS("OfflinePages.BatchDelete.Count",
200 static_cast<int32_t>(deleted_offline_ids.size()));
201 UMA_HISTOGRAM_MEMORY_KB(
202 "OfflinePages.BatchDelete.TotalPageSize", total_size / 1024);
203 }
204 }
205
206 void ReportPageHistogramsAfterAccess(const OfflinePageItem& offline_page_item) {
207 int minutes =
208 (base::Time::Now() - offline_page_item.last_access_time).InMinutes();
209 int max = kMaxOpenedPageHistogramBucket.InMinutes();
210 if (offline_page_item.client_id.name_space == kBookmarkNamespace) {
211 // When the access account is still zero, the page is opened for the first
212 // time since its creation.
213 if (offline_page_item.access_count == 0) {
214 UMA_HISTOGRAM_CUSTOM_COUNTS(
215 "OfflinePages.FirstOpenSinceCreated.bookmark", minutes, 1, max, 50);
216 } else {
217 UMA_HISTOGRAM_CUSTOM_COUNTS(
218 "OfflinePages.OpenSinceLastOpen.bookmark", minutes, 1, max, 50);
219 }
220 } else if (offline_page_item.client_id.name_space == kLastNNamespace) {
221 if (offline_page_item.access_count == 0) {
222 UMA_HISTOGRAM_CUSTOM_COUNTS(
223 "OfflinePages.FirstOpenSinceCreated.last_n", minutes, 1, max, 50);
224 } else {
225 UMA_HISTOGRAM_CUSTOM_COUNTS(
226 "OfflinePages.OpenSinceLastOpen.last_n", minutes, 1, max, 50);
227 }
228 } else {
229 if (offline_page_item.access_count == 0) {
230 UMA_HISTOGRAM_CUSTOM_COUNTS(
231 "OfflinePages.FirstOpenSinceCreated", minutes, 1, max, 50);
232 } else {
233 UMA_HISTOGRAM_CUSTOM_COUNTS(
234 "OfflinePages.OpenSinceLastOpen", minutes, 1, max, 50);
235 }
236 }
237 }
238
125 } // namespace 239 } // namespace
126 240
127 // static 241 // static
128 bool OfflinePageModel::CanSavePage(const GURL& url) { 242 bool OfflinePageModel::CanSavePage(const GURL& url) {
129 return url.SchemeIsHTTPOrHTTPS(); 243 return url.SchemeIsHTTPOrHTTPS();
130 } 244 }
131 245
132 // protected 246 // protected
133 OfflinePageModel::OfflinePageModel() 247 OfflinePageModel::OfflinePageModel()
134 : is_loaded_(false), weak_ptr_factory_(this) {} 248 : is_loaded_(false), weak_ptr_factory_(this) {}
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 void OfflinePageModel::MarkPageAccessed(int64_t offline_id) { 308 void OfflinePageModel::MarkPageAccessed(int64_t offline_id) {
195 DCHECK(is_loaded_); 309 DCHECK(is_loaded_);
196 auto iter = offline_pages_.find(offline_id); 310 auto iter = offline_pages_.find(offline_id);
197 if (iter == offline_pages_.end()) 311 if (iter == offline_pages_.end())
198 return; 312 return;
199 313
200 // Make a copy of the cached item and update it. The cached item should only 314 // Make a copy of the cached item and update it. The cached item should only
201 // be updated upon the successful store operation. 315 // be updated upon the successful store operation.
202 OfflinePageItem offline_page_item = iter->second; 316 OfflinePageItem offline_page_item = iter->second;
203 317
204 base::Time now = base::Time::Now(); 318 ReportPageHistogramsAfterAccess(offline_page_item);
205 base::TimeDelta time_since_last_accessed =
206 now - offline_page_item.last_access_time;
207 319
208 // When the access account is still zero, the page is opened for the first 320 offline_page_item.last_access_time = base::Time::Now();
209 // time since its creation.
210 UMA_HISTOGRAM_CUSTOM_COUNTS(
211 AddHistogramSuffix(
212 offline_page_item.client_id,
213 (offline_page_item.access_count == 0) ?
214 "OfflinePages.FirstOpenSinceCreated" :
215 "OfflinePages.OpenSinceLastOpen").c_str(),
216 time_since_last_accessed.InMinutes(), 1,
217 kMaxOpenedPageHistogramBucket.InMinutes(), 50);
218
219 offline_page_item.last_access_time = now;
220 offline_page_item.access_count++; 321 offline_page_item.access_count++;
221 322
222 store_->AddOrUpdateOfflinePage( 323 store_->AddOrUpdateOfflinePage(
223 offline_page_item, 324 offline_page_item,
224 base::Bind(&OfflinePageModel::OnMarkPageAccesseDone, 325 base::Bind(&OfflinePageModel::OnMarkPageAccesseDone,
225 weak_ptr_factory_.GetWeakPtr(), offline_page_item)); 326 weak_ptr_factory_.GetWeakPtr(), offline_page_item));
226 } 327 }
227 328
228 void OfflinePageModel::DeletePagesByOfflineId( 329 void OfflinePageModel::DeletePagesByOfflineId(
229 const std::vector<int64_t>& offline_ids, 330 const std::vector<int64_t>& offline_ids,
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 } 696 }
596 697
597 void OfflinePageModel::OnAddOfflinePageDone(OfflinePageArchiver* archiver, 698 void OfflinePageModel::OnAddOfflinePageDone(OfflinePageArchiver* archiver,
598 const SavePageCallback& callback, 699 const SavePageCallback& callback,
599 const OfflinePageItem& offline_page, 700 const OfflinePageItem& offline_page,
600 bool success) { 701 bool success) {
601 SavePageResult result; 702 SavePageResult result;
602 if (success) { 703 if (success) {
603 offline_pages_[offline_page.offline_id] = offline_page; 704 offline_pages_[offline_page.offline_id] = offline_page;
604 result = SavePageResult::SUCCESS; 705 result = SavePageResult::SUCCESS;
605 UMA_HISTOGRAM_TIMES( 706 if (offline_page.client_id.name_space == kBookmarkNamespace) {
606 AddHistogramSuffix( 707 UMA_HISTOGRAM_TIMES("OfflinePages.SavePageTime.bookmark",
607 offline_page.client_id, "OfflinePages.SavePageTime").c_str(), 708 base::Time::Now() - offline_page.creation_time);
608 base::Time::Now() - offline_page.creation_time); 709 // 50 buckets capped between 1Kb and 10Mb.
609 // 50 buckets capped between 1Kb and 10Mb. 710 UMA_HISTOGRAM_COUNTS_10000("OfflinePages.PageSize.bookmark",
610 UMA_HISTOGRAM_COUNTS_10000(AddHistogramSuffix( 711 offline_page.file_size / 1024);
611 offline_page.client_id, "OfflinePages.PageSize").c_str(), 712 } else if (offline_page.client_id.name_space == kLastNNamespace) {
612 offline_page.file_size / 1024); 713 UMA_HISTOGRAM_TIMES("OfflinePages.SavePageTime.last_n",
714 base::Time::Now() - offline_page.creation_time);
715 // 50 buckets capped between 1Kb and 10Mb.
716 UMA_HISTOGRAM_COUNTS_10000("OfflinePages.PageSize.last_n",
717 offline_page.file_size / 1024);
718 } else {
719 UMA_HISTOGRAM_TIMES("OfflinePages.SavePageTime",
720 base::Time::Now() - offline_page.creation_time);
721 // 50 buckets capped between 1Kb and 10Mb.
722 UMA_HISTOGRAM_COUNTS_10000("OfflinePages.PageSize",
723 offline_page.file_size / 1024);
724 }
613 } else { 725 } else {
614 result = SavePageResult::STORE_FAILURE; 726 result = SavePageResult::STORE_FAILURE;
615 } 727 }
616 InformSavePageDone(callback, result, offline_page.client_id, 728 InformSavePageDone(callback, result, offline_page.client_id,
617 offline_page.offline_id); 729 offline_page.offline_id);
618 DeletePendingArchiver(archiver); 730 DeletePendingArchiver(archiver);
619 731
620 FOR_EACH_OBSERVER(Observer, observers_, OfflinePageModelChanged(this)); 732 FOR_EACH_OBSERVER(Observer, observers_, OfflinePageModelChanged(this));
621 } 733 }
622 734
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 777
666 FOR_EACH_OBSERVER(Observer, observers_, OfflinePageModelLoaded(this)); 778 FOR_EACH_OBSERVER(Observer, observers_, OfflinePageModelLoaded(this));
667 779
668 CheckForExternalFileDeletion(); 780 CheckForExternalFileDeletion();
669 } 781 }
670 782
671 void OfflinePageModel::InformSavePageDone(const SavePageCallback& callback, 783 void OfflinePageModel::InformSavePageDone(const SavePageCallback& callback,
672 SavePageResult result, 784 SavePageResult result,
673 const ClientId& client_id, 785 const ClientId& client_id,
674 int64_t offline_id) { 786 int64_t offline_id) {
675 UMA_HISTOGRAM_ENUMERATION( 787 ReportPageHistogramAfterSave(client_id, result);
676 AddHistogramSuffix(client_id, "OfflinePages.SavePageResult").c_str(),
677 static_cast<int>(result),
678 static_cast<int>(SavePageResult::RESULT_COUNT));
679 archive_manager_->GetStorageStats( 788 archive_manager_->GetStorageStats(
680 base::Bind(&ReportStorageHistogramsAfterSave)); 789 base::Bind(&ReportStorageHistogramsAfterSave));
681 callback.Run(result, offline_id); 790 callback.Run(result, offline_id);
682 } 791 }
683 792
684 void OfflinePageModel::DeletePendingArchiver(OfflinePageArchiver* archiver) { 793 void OfflinePageModel::DeletePendingArchiver(OfflinePageArchiver* archiver) {
685 pending_archivers_.erase(std::find( 794 pending_archivers_.erase(std::find(
686 pending_archivers_.begin(), pending_archivers_.end(), archiver)); 795 pending_archivers_.begin(), pending_archivers_.end(), archiver));
687 } 796 }
688 797
689 void OfflinePageModel::OnDeleteArchiveFilesDone( 798 void OfflinePageModel::OnDeleteArchiveFilesDone(
690 const std::vector<int64_t>& offline_ids, 799 const std::vector<int64_t>& offline_ids,
691 const DeletePageCallback& callback, 800 const DeletePageCallback& callback,
692 bool success) { 801 bool success) {
693 if (!success) { 802 if (!success) {
694 InformDeletePageDone(callback, DeletePageResult::DEVICE_FAILURE); 803 InformDeletePageDone(callback, DeletePageResult::DEVICE_FAILURE);
695 return; 804 return;
696 } 805 }
697 806
698 store_->RemoveOfflinePages( 807 store_->RemoveOfflinePages(
699 offline_ids, 808 offline_ids,
700 base::Bind(&OfflinePageModel::OnRemoveOfflinePagesDone, 809 base::Bind(&OfflinePageModel::OnRemoveOfflinePagesDone,
701 weak_ptr_factory_.GetWeakPtr(), offline_ids, callback)); 810 weak_ptr_factory_.GetWeakPtr(), offline_ids, callback));
702 } 811 }
703 812
704 void OfflinePageModel::OnRemoveOfflinePagesDone( 813 void OfflinePageModel::OnRemoveOfflinePagesDone(
705 const std::vector<int64_t>& offline_ids, 814 const std::vector<int64_t>& offline_ids,
706 const DeletePageCallback& callback, 815 const DeletePageCallback& callback,
707 bool success) { 816 bool success) {
817 ReportPageHistogramsAfterDelete(offline_pages_, offline_ids);
818
708 // Delete the offline page from the in memory cache regardless of success in 819 // Delete the offline page from the in memory cache regardless of success in
709 // store. 820 // store.
710 base::Time now = base::Time::Now();
711 int64_t total_size = 0;
712 for (int64_t offline_id : offline_ids) { 821 for (int64_t offline_id : offline_ids) {
713 auto iter = offline_pages_.find(offline_id); 822 auto iter = offline_pages_.find(offline_id);
714 if (iter == offline_pages_.end()) 823 if (iter == offline_pages_.end())
715 continue; 824 continue;
716 total_size += iter->second.file_size;
717 ClientId client_id = iter->second.client_id;
718 UMA_HISTOGRAM_CUSTOM_COUNTS(
719 AddHistogramSuffix(client_id, "OfflinePages.PageLifetime").c_str(),
720 (now - iter->second.creation_time).InMinutes(),
721 1,
722 base::TimeDelta::FromDays(365).InMinutes(),
723 100);
724 UMA_HISTOGRAM_CUSTOM_COUNTS(
725 AddHistogramSuffix(
726 client_id, "OfflinePages.DeletePage.TimeSinceLastOpen").c_str(),
727 (now - iter->second.last_access_time).InMinutes(),
728 1,
729 base::TimeDelta::FromDays(365).InMinutes(),
730 100);
731 UMA_HISTOGRAM_CUSTOM_COUNTS(
732 AddHistogramSuffix(
733 client_id, "OfflinePages.DeletePage.LastOpenToCreated").c_str(),
734 (iter->second.last_access_time - iter->second.creation_time).
735 InMinutes(),
736 1,
737 base::TimeDelta::FromDays(365).InMinutes(),
738 100);
739 UMA_HISTOGRAM_MEMORY_KB(
740 AddHistogramSuffix(
741 client_id, "OfflinePages.DeletePage.PageSize").c_str(),
742 iter->second.file_size / 1024);
743 UMA_HISTOGRAM_COUNTS(
744 AddHistogramSuffix(
745 client_id, "OfflinePages.DeletePage.AccessCount").c_str(),
746 iter->second.access_count);
747 FOR_EACH_OBSERVER( 825 FOR_EACH_OBSERVER(
748 Observer, observers_, 826 Observer, observers_,
749 OfflinePageDeleted(iter->second.offline_id, iter->second.client_id)); 827 OfflinePageDeleted(iter->second.offline_id, iter->second.client_id));
750 offline_pages_.erase(iter); 828 offline_pages_.erase(iter);
751 } 829 }
752 if (offline_ids.size() > 1) { 830
753 UMA_HISTOGRAM_COUNTS("OfflinePages.BatchDelete.Count",
754 static_cast<int32_t>(offline_ids.size()));
755 UMA_HISTOGRAM_MEMORY_KB(
756 "OfflinePages.BatchDelete.TotalPageSize", total_size / 1024);
757 }
758 // Deleting multiple pages always succeeds when it gets to this point. 831 // Deleting multiple pages always succeeds when it gets to this point.
759 InformDeletePageDone(callback, (success || offline_ids.size() > 1) 832 InformDeletePageDone(callback, (success || offline_ids.size() > 1)
760 ? DeletePageResult::SUCCESS 833 ? DeletePageResult::SUCCESS
761 : DeletePageResult::STORE_FAILURE); 834 : DeletePageResult::STORE_FAILURE);
762 } 835 }
763 836
764 void OfflinePageModel::InformDeletePageDone(const DeletePageCallback& callback, 837 void OfflinePageModel::InformDeletePageDone(const DeletePageCallback& callback,
765 DeletePageResult result) { 838 DeletePageResult result) {
766 UMA_HISTOGRAM_ENUMERATION( 839 UMA_HISTOGRAM_ENUMERATION(
767 "OfflinePages.DeletePageResult", 840 "OfflinePages.DeletePageResult",
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 void OfflinePageModel::RunWhenLoaded(const base::Closure& task) { 935 void OfflinePageModel::RunWhenLoaded(const base::Closure& task) {
863 if (!is_loaded_) { 936 if (!is_loaded_) {
864 delayed_tasks_.push_back(task); 937 delayed_tasks_.push_back(task);
865 return; 938 return;
866 } 939 }
867 940
868 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task); 941 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task);
869 } 942 }
870 943
871 } // namespace offline_pages 944 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698