fix: shell.trashItem crash when called in renderer (#28748)

This commit is contained in:
Jeremy Rose 2021-04-22 13:46:41 -07:00 committed by GitHub
parent d2654c652a
commit be3c2fd0af
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 11 deletions

View file

@ -14,24 +14,32 @@
namespace platform_util {
void TrashItemOnBlockingThread(
const base::FilePath& full_path,
base::OnceCallback<void(bool, const std::string&)> callback) {
struct TrashItemResult {
bool success;
std::string error;
};
TrashItemResult TrashItemOnBlockingThread(const base::FilePath& full_path) {
std::string error;
bool success = internal::PlatformTrashItem(full_path, &error);
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), success, error));
return {success, error};
}
void TrashItem(const base::FilePath& full_path,
base::OnceCallback<void(bool, const std::string&)> callback) {
// XXX: is continue_on_shutdown right?
base::ThreadPool::PostTask(FROM_HERE,
{base::MayBlock(), base::WithBaseSyncPrimitives(),
base::TaskPriority::USER_BLOCKING,
base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
base::BindOnce(&TrashItemOnBlockingThread,
full_path, std::move(callback)));
base::ThreadPool::PostTaskAndReplyWithResult(
FROM_HERE,
{base::MayBlock(), base::WithBaseSyncPrimitives(),
base::TaskPriority::USER_BLOCKING,
base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
base::BindOnce(&TrashItemOnBlockingThread, full_path),
base::BindOnce(
[](base::OnceCallback<void(bool, const std::string&)> callback,
TrashItemResult result) {
std::move(callback).Run(result.success, result.error);
},
std::move(callback)));
}
} // namespace platform_util