Chromium Code Reviews| Index: chrome/installer/setup/uninstall.cc |
| diff --git a/chrome/installer/setup/uninstall.cc b/chrome/installer/setup/uninstall.cc |
| index f4c4d70a253314a8fbfd68c38f7f9964a60ae4f5..206ea493eb25e426229e726238cc0eb183816830 100644 |
| --- a/chrome/installer/setup/uninstall.cc |
| +++ b/chrome/installer/setup/uninstall.cc |
| @@ -445,8 +445,13 @@ DeleteResult DeleteAppHostFilesAndFolders(const InstallerState& installer_state, |
| if (!file_util::Delete(app_host_exe, false)) { |
| result = DELETE_FAILED; |
| LOG(ERROR) << "Failed to delete path: " << app_host_exe.value(); |
| - } else { |
| - DeleteEmptyParentDir(target_path); |
| + } else if (!target_path.empty() && file_util::IsDirectoryEmpty(target_path)) { |
|
gab
2012/08/08 20:32:59
I don't think target_path.empty() is possible at t
erikwright (departed)
2012/08/09 14:52:51
It may be empty if both Chrome and App Host were i
|
| + if (!file_util::Delete(target_path, true)) { |
| + result = DELETE_FAILED; |
| + LOG(ERROR) << "Failed to delete folder: " << target_path.value(); |
| + } else { |
| + DeleteEmptyParentDir(target_path); |
| + } |
| } |
| return result; |
| @@ -478,7 +483,7 @@ DeleteResult DeleteChromeFilesAndFolders(const InstallerState& installer_state, |
| if (to_delete.BaseName().value() == installer::kChromeAppHostExe) |
| continue; |
| - VLOG(1) << "Deleting install path " << target_path.value(); |
| + VLOG(1) << "Deleting install path " << to_delete.value(); |
| if (!file_util::Delete(to_delete, true)) { |
| LOG(ERROR) << "Failed to delete path (1st try): " << to_delete.value(); |
| if (installer_state.FindProduct(BrowserDistribution::CHROME_FRAME)) { |
| @@ -507,14 +512,21 @@ DeleteResult DeleteChromeFilesAndFolders(const InstallerState& installer_state, |
| } |
| if (result == DELETE_REQUIRES_REBOOT) { |
| + // Delete the Application directory at reboot if empty. |
|
gab
2012/08/08 20:32:59
This function does not seem to wait for reboot for
erikwright (departed)
2012/08/09 14:52:51
This is the implementation of ScheduleFileSystemEn
gab
2012/08/09 16:07:22
Indeed :), guess I missed that line when reading t
|
| + ScheduleFileSystemEntityForDeletion(target_path.value().c_str()); |
| // If we need a reboot to continue, schedule the parent directories for |
|
gab
2012/08/08 20:32:59
nit: add empty line between code and comment
erikwright (departed)
2012/08/09 14:52:51
Done.
|
| // deletion unconditionally. If they are not empty, the session manager |
| // will not delete them on reboot. |
| ScheduleParentAndGrandparentForDeletion(target_path); |
| - } else { |
| - // Now check and delete if the parent directories are empty |
| - // For example Google\Chrome or Chromium |
| - DeleteEmptyParentDir(target_path); |
| + } else if (file_util::IsDirectoryEmpty(target_path)) { |
| + if (!file_util::Delete(target_path, true)) { |
| + result = DELETE_FAILED; |
| + LOG(ERROR) << "Failed to delete folder: " << target_path.value(); |
|
gab
2012/08/08 20:32:59
Seems this log message is duplicated all over this
erikwright (departed)
2012/08/09 14:52:51
I thought about it, but it's also used in DeleteLo
|
| + } else { |
| + // Now check and delete if the parent directories are empty |
| + // For example Google\Chrome or Chromium |
| + DeleteEmptyParentDir(target_path); |
| + } |
| } |
| return result; |
| } |