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

Side by Side Diff: chrome/browser/win/jumplist.cc

Issue 2811393002: Log UpdateJumpList() and CreateIconFiles() execution time to UMA (Closed)
Patch Set: Merge branch 'master' of https://chromium.googlesource.com/chromium/src into lookintoupdatejumplist Created 3 years, 8 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
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/win/jumplist.h" 5 #include "chrome/browser/win/jumplist.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 // Add this icon file to the list and return its absolute path. 114 // Add this icon file to the list and return its absolute path.
115 // The IShellLink::SetIcon() function needs the absolute path to an icon. 115 // The IShellLink::SetIcon() function needs the absolute path to an icon.
116 *icon_path = path; 116 *icon_path = path;
117 return true; 117 return true;
118 } 118 }
119 119
120 // Helper method for RunUpdate to create icon files for the asynchrounously 120 // Helper method for RunUpdate to create icon files for the asynchrounously
121 // loaded icons. 121 // loaded icons.
122 void CreateIconFiles(const base::FilePath& icon_dir, 122 void CreateIconFiles(const base::FilePath& icon_dir,
123 const ShellLinkItemList& item_list) { 123 const ShellLinkItemList& item_list) {
124 // TODO(chengx): Remove the UMA histogram after fixing http://crbug.com/40407.
125 SCOPED_UMA_HISTOGRAM_TIMER("WinJumplist.CreateIconFilesDuration");
126
124 for (ShellLinkItemList::const_iterator item = item_list.begin(); 127 for (ShellLinkItemList::const_iterator item = item_list.begin();
125 item != item_list.end(); ++item) { 128 item != item_list.end(); ++item) {
126 base::FilePath icon_path; 129 base::FilePath icon_path;
127 if (CreateIconFile((*item)->icon_image(), icon_dir, &icon_path)) 130 if (CreateIconFile((*item)->icon_image(), icon_dir, &icon_path))
128 (*item)->set_icon(icon_path.value(), 0); 131 (*item)->set_icon(icon_path.value(), 0);
129 } 132 }
130 } 133 }
131 134
132 // Updates the "Tasks" category of the JumpList. 135 // Updates the "Tasks" category of the JumpList.
133 bool UpdateTaskCategory( 136 bool UpdateTaskCategory(
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 } 173 }
171 174
172 return jumplist_updater->AddTasks(items); 175 return jumplist_updater->AddTasks(items);
173 } 176 }
174 177
175 // Updates the application JumpList. 178 // Updates the application JumpList.
176 bool UpdateJumpList(const wchar_t* app_id, 179 bool UpdateJumpList(const wchar_t* app_id,
177 const ShellLinkItemList& most_visited_pages, 180 const ShellLinkItemList& most_visited_pages,
178 const ShellLinkItemList& recently_closed_pages, 181 const ShellLinkItemList& recently_closed_pages,
179 IncognitoModePrefs::Availability incognito_availability) { 182 IncognitoModePrefs::Availability incognito_availability) {
183 // TODO(chengx): Remove the UMA histogram after fixing http://crbug.com/40407.
184 SCOPED_UMA_HISTOGRAM_TIMER("WinJumplist.UpdateJumpListDuration");
185
180 // JumpList is implemented only on Windows 7 or later. 186 // JumpList is implemented only on Windows 7 or later.
181 // So, we should return now when this function is called on earlier versions 187 // So, we should return now when this function is called on earlier versions
182 // of Windows. 188 // of Windows.
183 if (!JumpListUpdater::IsEnabled()) 189 if (!JumpListUpdater::IsEnabled())
184 return true; 190 return true;
185 191
186 JumpListUpdater jumplist_updater(app_id); 192 JumpListUpdater jumplist_updater(app_id);
187 if (!jumplist_updater.BeginUpdate()) 193 if (!jumplist_updater.BeginUpdate())
188 return false; 194 return false;
189 195
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 254
249 // Make local copies of lists so we can release the lock. 255 // Make local copies of lists so we can release the lock.
250 local_most_visited_pages = data->most_visited_pages_; 256 local_most_visited_pages = data->most_visited_pages_;
251 local_recently_closed_pages = data->recently_closed_pages_; 257 local_recently_closed_pages = data->recently_closed_pages_;
252 } 258 }
253 259
254 // If JumpListIcons directory doesn't exist or is not empty, skip updating the 260 // If JumpListIcons directory doesn't exist or is not empty, skip updating the
255 // jumplist icons. The jumplist links should be updated anyway, as it doesn't 261 // jumplist icons. The jumplist links should be updated anyway, as it doesn't
256 // involve disk IO. 262 // involve disk IO.
257 if (base::DirectoryExists(icon_dir) && base::IsDirectoryEmpty(icon_dir)) { 263 if (base::DirectoryExists(icon_dir) && base::IsDirectoryEmpty(icon_dir)) {
264 // TODO(chengx): Remove the UMA histogram after fixing
265 // http://crbug.com/40407.
266 UMA_HISTOGRAM_COUNTS_100(
267 "WinJumplist.CreateIconFilesCount",
268 local_most_visited_pages.size() + local_recently_closed_pages.size());
269
258 // Create icon files for shortcuts in the "Most Visited" category. 270 // Create icon files for shortcuts in the "Most Visited" category.
259 CreateIconFiles(icon_dir, local_most_visited_pages); 271 CreateIconFiles(icon_dir, local_most_visited_pages);
260 272
261 // Create icon files for shortcuts in the "Recently Closed" 273 // Create icon files for shortcuts in the "Recently Closed"
262 // category. 274 // category.
263 CreateIconFiles(icon_dir, local_recently_closed_pages); 275 CreateIconFiles(icon_dir, local_recently_closed_pages);
264 } 276 }
265 277
266 // Create a new JumpList and replace the current JumpList with it. The 278 // Create a new JumpList and replace the current JumpList with it. The
267 // jumplist links are updated anyway, while the jumplist icons may not as 279 // jumplist links are updated anyway, while the jumplist icons may not as
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 void JumpList::TopSitesLoaded(history::TopSites* top_sites) { 627 void JumpList::TopSitesLoaded(history::TopSites* top_sites) {
616 } 628 }
617 629
618 void JumpList::TopSitesChanged(history::TopSites* top_sites, 630 void JumpList::TopSitesChanged(history::TopSites* top_sites,
619 ChangeReason change_reason) { 631 ChangeReason change_reason) {
620 top_sites->GetMostVisitedURLs( 632 top_sites->GetMostVisitedURLs(
621 base::Bind(&JumpList::OnMostVisitedURLsAvailable, 633 base::Bind(&JumpList::OnMostVisitedURLsAvailable,
622 weak_ptr_factory_.GetWeakPtr()), 634 weak_ptr_factory_.GetWeakPtr()),
623 false); 635 false);
624 } 636 }
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698