refactor: make util::Promise type safe when chaining in native (#19809)

* refactor: make util::Promise type safe when chaining in native

* fixup! refactor: make util::Promise type safe when chaining in native

* chore: remove spare brackets
This commit is contained in:
Samuel Attard 2019-08-22 17:03:28 -07:00 committed by GitHub
parent f7e3e1f97a
commit 6a3922d330
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 275 additions and 343 deletions

View file

@ -157,13 +157,15 @@ class FileChooserDialog {
gtk_window_present_with_time(GTK_WINDOW(dialog_), time);
}
void RunSaveAsynchronous(electron::util::Promise promise) {
save_promise_.reset(new electron::util::Promise(std::move(promise)));
void RunSaveAsynchronous(electron::util::Promise<mate::Dictionary> promise) {
save_promise_.reset(
new electron::util::Promise<mate::Dictionary>(std::move(promise)));
RunAsynchronous();
}
void RunOpenAsynchronous(electron::util::Promise promise) {
open_promise_.reset(new electron::util::Promise(std::move(promise)));
void RunOpenAsynchronous(electron::util::Promise<mate::Dictionary> promise) {
open_promise_.reset(
new electron::util::Promise<mate::Dictionary>(std::move(promise)));
RunAsynchronous();
}
@ -204,8 +206,8 @@ class FileChooserDialog {
GtkWidget* preview_;
Filters filters_;
std::unique_ptr<electron::util::Promise> save_promise_;
std::unique_ptr<electron::util::Promise> open_promise_;
std::unique_ptr<electron::util::Promise<mate::Dictionary>> save_promise_;
std::unique_ptr<electron::util::Promise<mate::Dictionary>> open_promise_;
// Callback for when we update the preview for the selection.
CHROMEG_CALLBACK_0(FileChooserDialog, void, OnUpdatePreview, GtkWidget*);
@ -225,7 +227,7 @@ void FileChooserDialog::OnFileDialogResponse(GtkWidget* widget, int response) {
dict.Set("canceled", true);
dict.Set("filePath", base::FilePath());
}
save_promise_->Resolve(dict.GetHandle());
save_promise_->Resolve(dict);
} else if (open_promise_) {
mate::Dictionary dict =
mate::Dictionary::CreateEmpty(open_promise_->isolate());
@ -236,7 +238,7 @@ void FileChooserDialog::OnFileDialogResponse(GtkWidget* widget, int response) {
dict.Set("canceled", true);
dict.Set("filePaths", std::vector<base::FilePath>());
}
open_promise_->Resolve(dict.GetHandle());
open_promise_->Resolve(dict);
}
delete this;
}
@ -312,7 +314,7 @@ bool ShowOpenDialogSync(const DialogSettings& settings,
}
void ShowOpenDialog(const DialogSettings& settings,
electron::util::Promise promise) {
electron::util::Promise<mate::Dictionary> promise) {
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
if (settings.properties & OPEN_DIALOG_OPEN_DIRECTORY)
action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;
@ -335,7 +337,7 @@ bool ShowSaveDialogSync(const DialogSettings& settings, base::FilePath* path) {
}
void ShowSaveDialog(const DialogSettings& settings,
electron::util::Promise promise) {
electron::util::Promise<mate::Dictionary> promise) {
FileChooserDialog* save_dialog =
new FileChooserDialog(GTK_FILE_CHOOSER_ACTION_SAVE, settings);
save_dialog->RunSaveAsynchronous(std::move(promise));