Index: chrome/browser/win/jumplist.cc |
diff --git a/chrome/browser/win/jumplist.cc b/chrome/browser/win/jumplist.cc |
index 6dad5579697389d68a137d050de08c7ae6b97199..26f88b2a3bf2a64b5483c62e43e29774736b51d0 100644 |
--- a/chrome/browser/win/jumplist.cc |
+++ b/chrome/browser/win/jumplist.cc |
@@ -123,8 +123,8 @@ bool CreateIconFile(const gfx::ImageSkia& image_skia, |
return true; |
} |
-// Helper method for RunUpdate to create icon files for the asynchrounously |
-// loaded icons. |
+// Helper method for RunUpdateJumpList to create icon files for the |
grt (UTC plus 2)
2017/04/28 07:37:07
please follow the function comment style guideline
chengx
2017/04/28 22:29:29
Done. I've updated the comments throughout the fil
|
+// asynchrounously loaded icons. |
void CreateIconFiles(const base::FilePath& icon_dir, |
const ShellLinkItemList& item_list, |
size_t max_items) { |
@@ -139,6 +139,25 @@ void CreateIconFiles(const base::FilePath& icon_dir, |
} |
} |
+// Helper method for RunUpdateJumpList to update icon files in |icon_dir|, which |
+// includes deleting old icons and creating at most |slot_limit| new icons for |
+// |page_list|. |
+void UpdateIconFiles(const base::FilePath& icon_dir, |
+ const ShellLinkItemList& page_list, |
+ size_t slot_limit) { |
+ DeleteDirectoryContentAndLogRuntime(icon_dir, kFileDeleteLimit); |
+ |
+ if (!base::DirectoryExists(icon_dir)) |
grt (UTC plus 2)
2017/04/28 07:37:07
base::CreateDirectory returns true if the director
chengx
2017/04/28 22:29:29
Done.
|
+ base::CreateDirectory(icon_dir); |
+ |
+ // If the directory still doesn't exist or is non-empty, skip updating the |
+ // jumplist icons for this jumplist category. The jumplist links should be |
+ // updated later on anyway, as it doesn't involve disk IO. In this case, |
grt (UTC plus 2)
2017/04/28 07:37:07
regarding this comment, are you saying that callin
chengx
2017/04/28 22:29:29
No, I didn't mean that. Calling the shell function
|
+ // Chrome's icon will be used for the new links. |
+ if (base::DirectoryExists(icon_dir) && base::IsDirectoryEmpty(icon_dir)) |
+ CreateIconFiles(icon_dir, page_list, slot_limit); |
+} |
+ |
// Updates the "Tasks" category of the JumpList. |
bool UpdateTaskCategory( |
JumpListUpdater* jumplist_updater, |
@@ -241,42 +260,23 @@ bool UpdateJumpList(const wchar_t* app_id, |
} |
if (most_visited_pages_have_updates) { |
- // Delete the content in JumpListIconsMostVisited folder and log the results |
+ // Delete the content in JumpListIconsMostVisited folder and log the runtime |
// to UMA. |
base::FilePath icon_dir_most_visited = icon_dir.DirName().Append( |
icon_dir.BaseName().value() + FILE_PATH_LITERAL("MostVisited")); |
- DeleteDirectoryContentAndLogResults(icon_dir_most_visited, |
- kFileDeleteLimit); |
- |
- // If the directory doesn't exist (we have tried to create it in |
- // DeleteDirectoryContentAndLogResults) or is not empty, skip updating the |
- // jumplist icons. The jumplist links should be updated anyway, as it |
- // doesn't involve disk IO. In this case, Chrome's icon will be used for the |
- // new links. |
- if (base::DirectoryExists(icon_dir_most_visited) && |
- base::IsDirectoryEmpty(icon_dir_most_visited)) { |
- // Create icon files for shortcuts in the "Most Visited" category. |
- CreateIconFiles(icon_dir_most_visited, most_visited_pages, |
- most_visited_items); |
- } |
+ UpdateIconFiles(icon_dir_most_visited, most_visited_pages, |
+ most_visited_items); |
} |
if (recently_closed_pages_have_updates) { |
// Delete the content in JumpListIconsRecentClosed folder and log the |
- // results to UMA. |
+ // runtime to UMA. |
base::FilePath icon_dir_recent_closed = icon_dir.DirName().Append( |
icon_dir.BaseName().value() + FILE_PATH_LITERAL("RecentClosed")); |
- DeleteDirectoryContentAndLogResults(icon_dir_recent_closed, |
- kFileDeleteLimit); |
- |
- if (base::DirectoryExists(icon_dir_recent_closed) && |
- base::IsDirectoryEmpty(icon_dir_recent_closed)) { |
- // Create icon files for shortcuts in the "Recently Closed" category. |
- CreateIconFiles(icon_dir_recent_closed, recently_closed_pages, |
- recently_closed_items); |
- } |
+ UpdateIconFiles(icon_dir_recent_closed, recently_closed_pages, |
+ recently_closed_items); |
} |
// TODO(chengx): Remove the UMA histogram after fixing http://crbug.com/40407. |
@@ -686,16 +686,15 @@ void JumpList::DeferredRunUpdate() { |
// Now we have JumpListIconsMostVisited folder and JumpListIconsRecentClosed |
// folder instead. |
delete_jumplisticons_task_runner_->PostTask( |
- FROM_HERE, |
- base::Bind(&DeleteDirectoryAndLogResults, icon_dir_, kFileDeleteLimit)); |
+ FROM_HERE, base::Bind(&DeleteDirectory, icon_dir_, kFileDeleteLimit)); |
// Post a task to delete JumpListIconsOld folder as it's no longer needed. |
base::FilePath icon_dir_old = icon_dir_.DirName().Append( |
icon_dir_.BaseName().value() + FILE_PATH_LITERAL("Old")); |
delete_jumplisticons_task_runner_->PostTask( |
- FROM_HERE, base::Bind(&DeleteDirectoryAndLogResults, |
- std::move(icon_dir_old), kFileDeleteLimit)); |
+ FROM_HERE, |
+ base::Bind(&DeleteDirectory, std::move(icon_dir_old), kFileDeleteLimit)); |
} |
void JumpList::TopSitesLoaded(history::TopSites* top_sites) { |