fix: make shell.moveItemToTrash return false on Windows when move is unsuccessful (#25170)

* test: add tests for shell.moveItemToTrash (#25113)

* fix: make shell.moveItemToTrash return false on Windows when move unsuccessful (#25124)

Co-authored-by: Jeremy Rose <jeremya@chromium.org>
This commit is contained in:
Markus Olsson
2020-08-27 14:00:50 -07:00
committed by GitHub
parent 1c3ebfdc30
commit 749b134e09
3 changed files with 64 additions and 2 deletions

View File

@@ -12,6 +12,7 @@
#include "base/nix/xdg_util.h"
#include "base/process/kill.h"
#include "base/process/launch.h"
#include "base/threading/thread_restrictions.h"
#include "ui/gtk/gtk_util.h"
#include "url/gurl.h"
@@ -51,6 +52,8 @@ bool XDGUtil(const std::vector<std::string>& argv,
return false;
if (wait_for_exit) {
base::ScopedAllowBaseSyncPrimitivesForTesting
allow_sync; // required by WaitForExit
int exit_code = -1;
bool success = process.WaitForExit(&exit_code);
if (!callback.is_null())

View File

@@ -387,10 +387,14 @@ bool MoveItemToTrash(const base::FilePath& path, bool delete_on_fail) {
if (!delete_sink)
return false;
BOOL pfAnyOperationsAborted;
// Processes the queued command DeleteItem. This will trigger
// the DeleteFileProgressSink to check for Recycle Bin.
return SUCCEEDED(pfo->DeleteItem(delete_item.Get(), delete_sink.Get())) &&
SUCCEEDED(pfo->PerformOperations());
SUCCEEDED(pfo->PerformOperations()) &&
SUCCEEDED(pfo->GetAnyOperationsAborted(&pfAnyOperationsAborted)) &&
!pfAnyOperationsAborted;
}
bool GetFolderPath(int key, base::FilePath* result) {