| OLD | NEW | 
|---|
| 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 222 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 233     --user_max_items_adjusted; | 233     --user_max_items_adjusted; | 
| 234 | 234 | 
| 235   size_t most_visited_items = | 235   size_t most_visited_items = | 
| 236       MulDiv(user_max_items_adjusted, kMostVisited, kTotal); | 236       MulDiv(user_max_items_adjusted, kMostVisited, kTotal); | 
| 237   size_t recently_closed_items = user_max_items_adjusted - most_visited_items; | 237   size_t recently_closed_items = user_max_items_adjusted - most_visited_items; | 
| 238   if (recently_closed_pages.size() < recently_closed_items) { | 238   if (recently_closed_pages.size() < recently_closed_items) { | 
| 239     most_visited_items += recently_closed_items - recently_closed_pages.size(); | 239     most_visited_items += recently_closed_items - recently_closed_pages.size(); | 
| 240     recently_closed_items = recently_closed_pages.size(); | 240     recently_closed_items = recently_closed_pages.size(); | 
| 241   } | 241   } | 
| 242 | 242 | 
|  | 243   // Record the desired number of icons to create in this JumpList update. | 
|  | 244   int icons_to_create = 0; | 
|  | 245 | 
| 243   if (most_visited_pages_have_updates) { | 246   if (most_visited_pages_have_updates) { | 
| 244     // Delete the content in JumpListIconsMostVisited folder and log the results | 247     // Delete the content in JumpListIconsMostVisited folder and log the results | 
| 245     // to UMA. | 248     // to UMA. | 
| 246     base::FilePath icon_dir_most_visited = icon_dir.DirName().Append( | 249     base::FilePath icon_dir_most_visited = icon_dir.DirName().Append( | 
| 247         icon_dir.BaseName().value() + FILE_PATH_LITERAL("MostVisited")); | 250         icon_dir.BaseName().value() + FILE_PATH_LITERAL("MostVisited")); | 
| 248 | 251 | 
| 249     DeleteDirectoryContentAndLogResults(icon_dir_most_visited, | 252     DeleteDirectoryContentAndLogResults(icon_dir_most_visited, | 
| 250                                         kFileDeleteLimit); | 253                                         kFileDeleteLimit); | 
| 251 | 254 | 
| 252     // If the directory doesn't exist (we have tried to create it in | 255     // If the directory doesn't exist (we have tried to create it in | 
| 253     // DeleteDirectoryContentAndLogResults) or is not empty, skip updating the | 256     // DeleteDirectoryContentAndLogResults) or is not empty, skip updating the | 
| 254     // jumplist icons. The jumplist links should be updated anyway, as it | 257     // jumplist icons. The jumplist links should be updated anyway, as it | 
| 255     // doesn't involve disk IO. In this case, Chrome's icon will be used for the | 258     // doesn't involve disk IO. In this case, Chrome's icon will be used for the | 
| 256     // new links. | 259     // new links. | 
| 257     if (base::DirectoryExists(icon_dir_most_visited) && | 260     if (base::DirectoryExists(icon_dir_most_visited) && | 
| 258         base::IsDirectoryEmpty(icon_dir_most_visited)) { | 261         base::IsDirectoryEmpty(icon_dir_most_visited)) { | 
| 259       // Create icon files for shortcuts in the "Most Visited" category. | 262       // Create icon files for shortcuts in the "Most Visited" category. | 
| 260       CreateIconFiles(icon_dir_most_visited, most_visited_pages, | 263       CreateIconFiles(icon_dir_most_visited, most_visited_pages, | 
| 261                       most_visited_items); | 264                       most_visited_items); | 
|  | 265 | 
|  | 266       icons_to_create += | 
|  | 267           std::min(most_visited_pages.size(), most_visited_items); | 
| 262     } | 268     } | 
| 263   } | 269   } | 
| 264 | 270 | 
| 265   if (recently_closed_pages_have_updates) { | 271   if (recently_closed_pages_have_updates) { | 
| 266     // Delete the content in JumpListIconsRecentClosed folder and log the | 272     // Delete the content in JumpListIconsRecentClosed folder and log the | 
| 267     // results to UMA. | 273     // results to UMA. | 
| 268     base::FilePath icon_dir_recent_closed = icon_dir.DirName().Append( | 274     base::FilePath icon_dir_recent_closed = icon_dir.DirName().Append( | 
| 269         icon_dir.BaseName().value() + FILE_PATH_LITERAL("RecentClosed")); | 275         icon_dir.BaseName().value() + FILE_PATH_LITERAL("RecentClosed")); | 
| 270 | 276 | 
| 271     DeleteDirectoryContentAndLogResults(icon_dir_recent_closed, | 277     DeleteDirectoryContentAndLogResults(icon_dir_recent_closed, | 
| 272                                         kFileDeleteLimit); | 278                                         kFileDeleteLimit); | 
| 273 | 279 | 
| 274     if (base::DirectoryExists(icon_dir_recent_closed) && | 280     if (base::DirectoryExists(icon_dir_recent_closed) && | 
| 275         base::IsDirectoryEmpty(icon_dir_recent_closed)) { | 281         base::IsDirectoryEmpty(icon_dir_recent_closed)) { | 
| 276       // Create icon files for shortcuts in the "Recently Closed" category. | 282       // Create icon files for shortcuts in the "Recently Closed" category. | 
| 277       CreateIconFiles(icon_dir_recent_closed, recently_closed_pages, | 283       CreateIconFiles(icon_dir_recent_closed, recently_closed_pages, | 
| 278                       recently_closed_items); | 284                       recently_closed_items); | 
|  | 285 | 
|  | 286       icons_to_create += | 
|  | 287           std::min(recently_closed_pages.size(), recently_closed_items); | 
| 279     } | 288     } | 
| 280   } | 289   } | 
| 281 | 290 | 
| 282   // TODO(chengx): Remove the UMA histogram after fixing http://crbug.com/40407. | 291   // TODO(chengx): Remove the UMA histogram after fixing http://crbug.com/40407. | 
|  | 292   UMA_HISTOGRAM_COUNTS_100("WinJumplist.CreateIconFilesCount", icons_to_create); | 
|  | 293 | 
|  | 294   // TODO(chengx): Remove the UMA histogram after fixing http://crbug.com/40407. | 
| 283   SCOPED_UMA_HISTOGRAM_TIMER("WinJumplist.UpdateJumpListDuration"); | 295   SCOPED_UMA_HISTOGRAM_TIMER("WinJumplist.UpdateJumpListDuration"); | 
| 284 | 296 | 
| 285   // Update the "Most Visited" category of the JumpList if it exists. | 297   // Update the "Most Visited" category of the JumpList if it exists. | 
| 286   // This update request is applied into the JumpList when we commit this | 298   // This update request is applied into the JumpList when we commit this | 
| 287   // transaction. | 299   // transaction. | 
| 288   if (!jumplist_updater.AddCustomCategory( | 300   if (!jumplist_updater.AddCustomCategory( | 
| 289           l10n_util::GetStringUTF16(IDS_NEW_TAB_MOST_VISITED), | 301           l10n_util::GetStringUTF16(IDS_NEW_TAB_MOST_VISITED), | 
| 290           most_visited_pages, most_visited_items)) { | 302           most_visited_pages, most_visited_items)) { | 
| 291     return false; | 303     return false; | 
| 292   } | 304   } | 
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 701 void JumpList::TopSitesLoaded(history::TopSites* top_sites) { | 713 void JumpList::TopSitesLoaded(history::TopSites* top_sites) { | 
| 702 } | 714 } | 
| 703 | 715 | 
| 704 void JumpList::TopSitesChanged(history::TopSites* top_sites, | 716 void JumpList::TopSitesChanged(history::TopSites* top_sites, | 
| 705                                ChangeReason change_reason) { | 717                                ChangeReason change_reason) { | 
| 706   top_sites->GetMostVisitedURLs( | 718   top_sites->GetMostVisitedURLs( | 
| 707       base::Bind(&JumpList::OnMostVisitedURLsAvailable, | 719       base::Bind(&JumpList::OnMostVisitedURLsAvailable, | 
| 708                  weak_ptr_factory_.GetWeakPtr()), | 720                  weak_ptr_factory_.GetWeakPtr()), | 
| 709       false); | 721       false); | 
| 710 } | 722 } | 
| OLD | NEW | 
|---|