From ba5ee79af8b230088b9f9172dcb1c4054e3869e0 Mon Sep 17 00:00:00 2001 From: Micha Hanselmann Date: Mon, 12 Aug 2019 22:49:48 -0700 Subject: [PATCH] move file dialog converter to gin (#19709) --- filenames.gni | 4 +-- shell/browser/api/atom_api_dialog.cc | 2 +- .../file_dialog_converter.cc | 27 ++++++++------- .../gin_converters/file_dialog_converter.h | 33 +++++++++++++++++++ .../file_dialog_converter_gin_adapter.h | 33 ------------------- .../file_dialog_converter.h | 18 +++++++--- 6 files changed, 62 insertions(+), 55 deletions(-) rename shell/common/{native_mate_converters => gin_converters}/file_dialog_converter.cc (77%) create mode 100644 shell/common/gin_converters/file_dialog_converter.h delete mode 100644 shell/common/gin_converters/file_dialog_converter_gin_adapter.h diff --git a/filenames.gni b/filenames.gni index bc495669a7c9..589f6b886682 100644 --- a/filenames.gni +++ b/filenames.gni @@ -466,7 +466,8 @@ filenames = { "shell/common/crash_reporter/win/crash_service_main.cc", "shell/common/crash_reporter/win/crash_service_main.h", "shell/common/gin_converters/callback_converter_gin_adapter.h", - "shell/common/gin_converters/file_dialog_converter_gin_adapter.h", + "shell/common/gin_converters/file_dialog_converter.cc", + "shell/common/gin_converters/file_dialog_converter.h", "shell/common/gin_converters/file_path_converter.h", "shell/common/gin_converters/gurl_converter.h", "shell/common/gin_converters/image_converter_gin_adapter.h", @@ -497,7 +498,6 @@ filenames = { "shell/common/native_mate_converters/callback.h", "shell/common/native_mate_converters/content_converter.cc", "shell/common/native_mate_converters/content_converter.h", - "shell/common/native_mate_converters/file_dialog_converter.cc", "shell/common/native_mate_converters/file_dialog_converter.h", "shell/common/native_mate_converters/file_path_converter.h", "shell/common/native_mate_converters/gfx_converter.cc", diff --git a/shell/browser/api/atom_api_dialog.cc b/shell/browser/api/atom_api_dialog.cc index abdc4bb896c0..3025278e2fd4 100644 --- a/shell/browser/api/atom_api_dialog.cc +++ b/shell/browser/api/atom_api_dialog.cc @@ -11,7 +11,7 @@ #include "shell/browser/ui/file_dialog.h" #include "shell/browser/ui/message_box.h" #include "shell/common/api/gin_utils.h" -#include "shell/common/gin_converters/file_dialog_converter_gin_adapter.h" +#include "shell/common/gin_converters/file_dialog_converter.h" #include "shell/common/gin_converters/message_box_converter.h" #include "shell/common/gin_converters/native_window_converter.h" #include "shell/common/gin_converters/net_converter_gin_adapter.h" diff --git a/shell/common/native_mate_converters/file_dialog_converter.cc b/shell/common/gin_converters/file_dialog_converter.cc similarity index 77% rename from shell/common/native_mate_converters/file_dialog_converter.cc rename to shell/common/gin_converters/file_dialog_converter.cc index f43c96e545d3..1d8c27ebd230 100644 --- a/shell/common/native_mate_converters/file_dialog_converter.cc +++ b/shell/common/gin_converters/file_dialog_converter.cc @@ -1,21 +1,20 @@ -// Copyright (c) 2015 GitHub, Inc. +// Copyright (c) 2019 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. -#include "shell/common/native_mate_converters/file_dialog_converter.h" +#include "shell/common/gin_converters/file_dialog_converter.h" -#include "native_mate/dictionary.h" +#include "gin/dictionary.h" #include "shell/browser/api/atom_api_browser_window.h" -#include "shell/browser/ui/file_dialog.h" -#include "shell/common/native_mate_converters/file_path_converter.h" -#include "shell/common/native_mate_converters/native_window_converter.h" +#include "shell/common/gin_converters/file_path_converter.h" +#include "shell/common/gin_converters/native_window_converter.h" -namespace mate { +namespace gin { bool Converter::FromV8(v8::Isolate* isolate, v8::Local val, file_dialog::Filter* out) { - mate::Dictionary dict; + gin::Dictionary dict(nullptr); if (!ConvertFromV8(isolate, val, &dict)) return false; if (!dict.Get("name", &(out->first))) @@ -28,19 +27,19 @@ bool Converter::FromV8(v8::Isolate* isolate, v8::Local Converter::ToV8( v8::Isolate* isolate, const file_dialog::Filter& in) { - mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate); + gin::Dictionary dict = gin::Dictionary::CreateEmpty(isolate); dict.Set("name", in.first); dict.Set("extensions", in.second); - return dict.GetHandle(); + return gin::ConvertToV8(isolate, dict); } bool Converter::FromV8( v8::Isolate* isolate, v8::Local val, file_dialog::DialogSettings* out) { - mate::Dictionary dict; + gin::Dictionary dict(nullptr); if (!ConvertFromV8(isolate, val, &dict)) return false; dict.Get("window", &(out->parent_window)); @@ -59,7 +58,7 @@ bool Converter::FromV8( v8::Local Converter::ToV8( v8::Isolate* isolate, const file_dialog::DialogSettings& in) { - mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate); + gin::Dictionary dict = gin::Dictionary::CreateEmpty(isolate); dict.Set("window", electron::api::BrowserWindow::From(isolate, in.parent_window)); @@ -72,7 +71,7 @@ v8::Local Converter::ToV8( dict.Set("showsTagField", in.shows_tag_field); dict.Set("securityScopedBookmarks", in.security_scoped_bookmarks); - return dict.GetHandle(); + return gin::ConvertToV8(isolate, dict); } -} // namespace mate +} // namespace gin diff --git a/shell/common/gin_converters/file_dialog_converter.h b/shell/common/gin_converters/file_dialog_converter.h new file mode 100644 index 000000000000..16b3b9b08866 --- /dev/null +++ b/shell/common/gin_converters/file_dialog_converter.h @@ -0,0 +1,33 @@ +// Copyright (c) 2019 GitHub, Inc. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + +#ifndef SHELL_COMMON_GIN_CONVERTERS_FILE_DIALOG_CONVERTER_H_ +#define SHELL_COMMON_GIN_CONVERTERS_FILE_DIALOG_CONVERTER_H_ + +#include "gin/converter.h" +#include "shell/browser/ui/file_dialog.h" + +namespace gin { + +template <> +struct Converter { + static v8::Local ToV8(v8::Isolate* isolate, + const file_dialog::Filter& in); + static bool FromV8(v8::Isolate* isolate, + v8::Local val, + file_dialog::Filter* out); +}; + +template <> +struct Converter { + static v8::Local ToV8(v8::Isolate* isolate, + const file_dialog::DialogSettings& in); + static bool FromV8(v8::Isolate* isolate, + v8::Local val, + file_dialog::DialogSettings* out); +}; + +} // namespace gin + +#endif // SHELL_COMMON_GIN_CONVERTERS_FILE_DIALOG_CONVERTER_H_ diff --git a/shell/common/gin_converters/file_dialog_converter_gin_adapter.h b/shell/common/gin_converters/file_dialog_converter_gin_adapter.h deleted file mode 100644 index c451b90c5b36..000000000000 --- a/shell/common/gin_converters/file_dialog_converter_gin_adapter.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) 2019 GitHub, Inc. -// Use of this source code is governed by the MIT license that can be -// found in the LICENSE file. - -#ifndef SHELL_COMMON_GIN_CONVERTERS_FILE_DIALOG_CONVERTER_GIN_ADAPTER_H_ -#define SHELL_COMMON_GIN_CONVERTERS_FILE_DIALOG_CONVERTER_GIN_ADAPTER_H_ - -#include "gin/converter.h" -#include "shell/common/native_mate_converters/file_dialog_converter.h" - -// TODO(deermichel): replace adapter with real implementation after removing -// mate -// -- this adapter forwards all conversions to the existing mate converter -- -// (other direction might be preferred, but this is safer for now :D) - -namespace gin { - -template <> -struct Converter { - static v8::Local ToV8(v8::Isolate* isolate, - const file_dialog::DialogSettings& in) { - return mate::ConvertToV8(isolate, in); - } - static bool FromV8(v8::Isolate* isolate, - v8::Local val, - file_dialog::DialogSettings* out) { - return mate::ConvertFromV8(isolate, val, out); - } -}; - -} // namespace gin - -#endif // SHELL_COMMON_GIN_CONVERTERS_FILE_DIALOG_CONVERTER_GIN_ADAPTER_H_ diff --git a/shell/common/native_mate_converters/file_dialog_converter.h b/shell/common/native_mate_converters/file_dialog_converter.h index d238e1ebb656..5a7b7b40d1b7 100644 --- a/shell/common/native_mate_converters/file_dialog_converter.h +++ b/shell/common/native_mate_converters/file_dialog_converter.h @@ -6,26 +6,34 @@ #define SHELL_COMMON_NATIVE_MATE_CONVERTERS_FILE_DIALOG_CONVERTER_H_ #include "native_mate/converter.h" -#include "shell/browser/ui/file_dialog.h" +#include "shell/common/gin_converters/file_dialog_converter.h" namespace mate { template <> struct Converter { static v8::Local ToV8(v8::Isolate* isolate, - const file_dialog::Filter& in); + const file_dialog::Filter& in) { + return gin::ConvertToV8(isolate, in); + } static bool FromV8(v8::Isolate* isolate, v8::Local val, - file_dialog::Filter* out); + file_dialog::Filter* out) { + return gin::ConvertFromV8(isolate, val, out); + } }; template <> struct Converter { static v8::Local ToV8(v8::Isolate* isolate, - const file_dialog::DialogSettings& in); + const file_dialog::DialogSettings& in) { + return gin::ConvertToV8(isolate, in); + } static bool FromV8(v8::Isolate* isolate, v8::Local val, - file_dialog::DialogSettings* out); + file_dialog::DialogSettings* out) { + return gin::ConvertFromV8(isolate, val, out); + } }; } // namespace mate