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

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

Issue 2717813002: Not update jumplist icons when deletion of JumplistIcon folder fails (Closed)
Patch Set: Skip updating jumplist icons if deletion of src folder fails. Created 3 years, 9 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 | no next file » | 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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 DELETE_SRC_FAILED = 1 << 2, 258 DELETE_SRC_FAILED = 1 << 2,
259 CREATE_SRC_FAILED = 1 << 3, 259 CREATE_SRC_FAILED = 1 << 3,
260 // This value is beyond the sum of all bit fields above and 260 // This value is beyond the sum of all bit fields above and
261 // should remain last (shifted by one more than the last value) 261 // should remain last (shifted by one more than the last value)
262 END = 1 << 4 262 END = 1 << 4
263 }; 263 };
264 264
265 // This variable records the status of three folder operations. 265 // This variable records the status of three folder operations.
266 uint32_t folder_operation_status = FolderOperationResult::SUCCESS; 266 uint32_t folder_operation_status = FolderOperationResult::SUCCESS;
267 267
268 // This variable records the status of |icon_dir| deletion.
269 bool icon_dir_delete_success = true;
270
268 if (!base::DeleteFile(icon_dir_old, true)) { 271 if (!base::DeleteFile(icon_dir_old, true)) {
269 folder_operation_status |= FolderOperationResult::DELETE_DEST_FAILED; 272 folder_operation_status |= FolderOperationResult::DELETE_DEST_FAILED;
270 // If deletion of |icon_dir_old| fails, do not move |icon_dir| to 273 // If deletion of |icon_dir_old| fails, do not move |icon_dir| to
271 // |icon_dir_old|, instead, delete |icon_dir| directly to avoid bloating 274 // |icon_dir_old|, instead, delete |icon_dir| directly to avoid bloating
272 // |icon_dir_old| by moving more things to it. 275 // |icon_dir_old| by moving more things to it.
273 if (!base::DeleteFile(icon_dir, true)) 276 if (!base::DeleteFile(icon_dir, true)) {
274 folder_operation_status |= FolderOperationResult::DELETE_SRC_FAILED; 277 folder_operation_status |= FolderOperationResult::DELETE_SRC_FAILED;
278 icon_dir_delete_success = false;
279 }
275 } else if (!base::Move(icon_dir, icon_dir_old)) { 280 } else if (!base::Move(icon_dir, icon_dir_old)) {
276 folder_operation_status |= FolderOperationResult::MOVE_FAILED; 281 folder_operation_status |= FolderOperationResult::MOVE_FAILED;
277 // If Move() fails, delete |icon_dir| to avoid file accumulation in this 282 // If Move() fails, delete |icon_dir| to avoid file accumulation in this
278 // directory, which can eventually lead the folder to be huge. 283 // directory, which can eventually lead the folder to be huge.
279 if (!base::DeleteFile(icon_dir, true)) 284 if (!base::DeleteFile(icon_dir, true)) {
280 folder_operation_status |= FolderOperationResult::DELETE_SRC_FAILED; 285 folder_operation_status |= FolderOperationResult::DELETE_SRC_FAILED;
286 icon_dir_delete_success = false;
287 }
281 } 288 }
282 if (!base::CreateDirectory(icon_dir)) 289
gab 2017/03/03 07:35:01 Prefer an early exit (return;) above instead of ca
chengx 2017/03/03 21:07:34 Sounds good. I have updated accordingly. Btw, I t
290 // If deletion of |icon_dir| fails, no need to create the same directory.
291 if (icon_dir_delete_success && !base::CreateDirectory(icon_dir))
283 folder_operation_status |= FolderOperationResult::CREATE_SRC_FAILED; 292 folder_operation_status |= FolderOperationResult::CREATE_SRC_FAILED;
284 293
285 UMA_HISTOGRAM_ENUMERATION("WinJumplist.DetailedFolderResults", 294 UMA_HISTOGRAM_ENUMERATION("WinJumplist.DetailedFolderResults",
286 folder_operation_status, 295 folder_operation_status,
287 FolderOperationResult::END); 296 FolderOperationResult::END);
288 297
289 // Create temporary icon files for shortcuts in the "Most Visited" category. 298 // If deletion of |icon_dir| fails, skip updating jumplist icons to avoid
290 CreateIconFiles(icon_dir, local_most_visited_pages); 299 // bloating the JumplistIcons folder.
300 if (icon_dir_delete_success) {
301 // Create temporary icon files for shortcuts in the "Most Visited" category.
302 CreateIconFiles(icon_dir, local_most_visited_pages);
291 303
292 // Create temporary icon files for shortcuts in the "Recently Closed" 304 // Create temporary icon files for shortcuts in the "Recently Closed"
293 // category. 305 // category.
294 CreateIconFiles(icon_dir, local_recently_closed_pages); 306 CreateIconFiles(icon_dir, local_recently_closed_pages);
295 307
296 // We finished collecting all resources needed for updating an application 308 // We finished collecting all resources needed for updating an application
297 // JumpList. So, create a new JumpList and replace the current JumpList 309 // JumpList. So, create a new JumpList and replace the current JumpList
298 // with it. 310 // with it.
299 UpdateJumpList(app_id.c_str(), 311 UpdateJumpList(app_id.c_str(), local_most_visited_pages,
300 local_most_visited_pages, 312 local_recently_closed_pages, incognito_availability);
301 local_recently_closed_pages, 313 }
302 incognito_availability);
303 } 314 }
304 315
305 } // namespace 316 } // namespace
306 317
307 JumpList::JumpListData::JumpListData() {} 318 JumpList::JumpListData::JumpListData() {}
308 319
309 JumpList::JumpListData::~JumpListData() {} 320 JumpList::JumpListData::~JumpListData() {}
310 321
311 JumpList::JumpList(Profile* profile) 322 JumpList::JumpList(Profile* profile)
312 : RefcountedKeyedService(content::BrowserThread::GetTaskRunnerForThread( 323 : RefcountedKeyedService(content::BrowserThread::GetTaskRunnerForThread(
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 void JumpList::TopSitesLoaded(history::TopSites* top_sites) { 633 void JumpList::TopSitesLoaded(history::TopSites* top_sites) {
623 } 634 }
624 635
625 void JumpList::TopSitesChanged(history::TopSites* top_sites, 636 void JumpList::TopSitesChanged(history::TopSites* top_sites,
626 ChangeReason change_reason) { 637 ChangeReason change_reason) {
627 top_sites->GetMostVisitedURLs( 638 top_sites->GetMostVisitedURLs(
628 base::Bind(&JumpList::OnMostVisitedURLsAvailable, 639 base::Bind(&JumpList::OnMostVisitedURLsAvailable,
629 weak_ptr_factory_.GetWeakPtr()), 640 weak_ptr_factory_.GetWeakPtr()),
630 false); 641 false);
631 } 642 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698