OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 // This file defines the methods useful for uninstalling Chrome. | 5 // This file defines the methods useful for uninstalling Chrome. |
6 | 6 |
7 #include "chrome/installer/setup/uninstall.h" | 7 #include "chrome/installer/setup/uninstall.h" |
8 | 8 |
9 #include <windows.h> | 9 #include <windows.h> |
10 | 10 |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 ScheduleDirectoryForDeletion(user_data_dir); | 435 ScheduleDirectoryForDeletion(user_data_dir); |
436 result = DELETE_REQUIRES_REBOOT; | 436 result = DELETE_REQUIRES_REBOOT; |
437 } else { | 437 } else { |
438 result = DELETE_FAILED; | 438 result = DELETE_FAILED; |
439 } | 439 } |
440 } | 440 } |
441 | 441 |
442 if (result == DELETE_REQUIRES_REBOOT) { | 442 if (result == DELETE_REQUIRES_REBOOT) { |
443 ScheduleParentAndGrandparentForDeletion(user_data_dir); | 443 ScheduleParentAndGrandparentForDeletion(user_data_dir); |
444 } else { | 444 } else { |
445 const base::FilePath user_data_dir(user_data_dir.DirName()); | 445 const base::FilePath product_dir1(user_data_dir.DirName()); |
446 if (!user_data_dir.empty() && | 446 if (!product_dir1.empty() && |
447 DeleteEmptyDir(user_data_dir) == DELETE_SUCCEEDED) { | 447 DeleteEmptyDir(product_dir1) == DELETE_SUCCEEDED) { |
448 const base::FilePath product_dir(user_data_dir.DirName()); | 448 const base::FilePath product_dir2(product_dir1.DirName()); |
449 if (!product_dir.empty()) | 449 if (!product_dir2.empty()) |
450 DeleteEmptyDir(product_dir); | 450 DeleteEmptyDir(product_dir2); |
451 } | 451 } |
452 } | 452 } |
453 | 453 |
454 return result; | 454 return result; |
455 } | 455 } |
456 | 456 |
457 // Moves setup to a temporary file, outside of the install folder. Also attempts | 457 // Moves setup to a temporary file, outside of the install folder. Also attempts |
458 // to change the current directory to the TMP directory. On Windows, each | 458 // to change the current directory to the TMP directory. On Windows, each |
459 // process has a handle to its CWD. If setup.exe's CWD happens to be within the | 459 // process has a handle to its CWD. If setup.exe's CWD happens to be within the |
460 // install directory, deletion will fail as a result of the open handle. | 460 // install directory, deletion will fail as a result of the open handle. |
(...skipping 1013 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1474 // If we need a reboot to continue, schedule the parent directories for | 1474 // If we need a reboot to continue, schedule the parent directories for |
1475 // deletion unconditionally. If they are not empty, the session manager | 1475 // deletion unconditionally. If they are not empty, the session manager |
1476 // will not delete them on reboot. | 1476 // will not delete them on reboot. |
1477 ScheduleParentAndGrandparentForDeletion(target_path); | 1477 ScheduleParentAndGrandparentForDeletion(target_path); |
1478 } else if (DeleteChromeDirectoriesIfEmpty(target_path) == DELETE_FAILED) { | 1478 } else if (DeleteChromeDirectoriesIfEmpty(target_path) == DELETE_FAILED) { |
1479 *uninstall_status = UNINSTALL_FAILED; | 1479 *uninstall_status = UNINSTALL_FAILED; |
1480 } | 1480 } |
1481 } | 1481 } |
1482 | 1482 |
1483 } // namespace installer | 1483 } // namespace installer |
OLD | NEW |