Browse Source

move file dialog converter to gin (#19709)

Micha Hanselmann 5 years ago
parent
commit
ba5ee79af8

+ 2 - 2
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",

+ 1 - 1
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"

+ 13 - 14
shell/common/native_mate_converters/file_dialog_converter.cc → 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<file_dialog::Filter>::FromV8(v8::Isolate* isolate,
                                             v8::Local<v8::Value> 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<file_dialog::Filter>::FromV8(v8::Isolate* isolate,
 v8::Local<v8::Value> Converter<file_dialog::Filter>::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<file_dialog::DialogSettings>::FromV8(
     v8::Isolate* isolate,
     v8::Local<v8::Value> 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<file_dialog::DialogSettings>::FromV8(
 v8::Local<v8::Value> Converter<file_dialog::DialogSettings>::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<v8::Value> Converter<file_dialog::DialogSettings>::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

+ 33 - 0
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<file_dialog::Filter> {
+  static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
+                                   const file_dialog::Filter& in);
+  static bool FromV8(v8::Isolate* isolate,
+                     v8::Local<v8::Value> val,
+                     file_dialog::Filter* out);
+};
+
+template <>
+struct Converter<file_dialog::DialogSettings> {
+  static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
+                                   const file_dialog::DialogSettings& in);
+  static bool FromV8(v8::Isolate* isolate,
+                     v8::Local<v8::Value> val,
+                     file_dialog::DialogSettings* out);
+};
+
+}  // namespace gin
+
+#endif  // SHELL_COMMON_GIN_CONVERTERS_FILE_DIALOG_CONVERTER_H_

+ 0 - 33
shell/common/gin_converters/file_dialog_converter_gin_adapter.h

@@ -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<file_dialog::DialogSettings> {
-  static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
-                                   const file_dialog::DialogSettings& in) {
-    return mate::ConvertToV8(isolate, in);
-  }
-  static bool FromV8(v8::Isolate* isolate,
-                     v8::Local<v8::Value> val,
-                     file_dialog::DialogSettings* out) {
-    return mate::ConvertFromV8(isolate, val, out);
-  }
-};
-
-}  // namespace gin
-
-#endif  // SHELL_COMMON_GIN_CONVERTERS_FILE_DIALOG_CONVERTER_GIN_ADAPTER_H_

+ 13 - 5
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<file_dialog::Filter> {
   static v8::Local<v8::Value> 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<v8::Value> val,
-                     file_dialog::Filter* out);
+                     file_dialog::Filter* out) {
+    return gin::ConvertFromV8(isolate, val, out);
+  }
 };
 
 template <>
 struct Converter<file_dialog::DialogSettings> {
   static v8::Local<v8::Value> 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<v8::Value> val,
-                     file_dialog::DialogSettings* out);
+                     file_dialog::DialogSettings* out) {
+    return gin::ConvertFromV8(isolate, val, out);
+  }
 };
 
 }  // namespace mate