Browse Source

fix: explicitly define REFGUID from ::GUID&, not base::GUID (#30442)

* fix: explicitly define REFGUID from ::GUID&

Ref: https://chromium-review.googlesource.com/c/chromium/src/+/3076480

* fix: duplicate GUID_NULL symbol, add comment
Keeley Hammond 3 years ago
parent
commit
60650abf09
2 changed files with 13 additions and 6 deletions
  1. 1 5
      shell/common/crash_keys.cc
  2. 12 1
      shell/common/gin_converters/guid_converter.h

+ 1 - 5
shell/common/crash_keys.cc

@@ -41,15 +41,13 @@
 #include "shell/browser/api/electron_api_service_worker_context.h"
 #include "shell/browser/api/electron_api_session.h"
 #include "shell/browser/api/electron_api_system_preferences.h"
+#include "shell/browser/api/electron_api_tray.h"
 #include "shell/browser/api/electron_api_url_loader.h"
 #include "shell/browser/api/electron_api_web_contents.h"
 #include "shell/browser/api/electron_api_web_frame_main.h"
 #include "shell/browser/api/electron_api_web_request.h"
 #include "shell/browser/api/event.h"
 #include "shell/common/api/electron_api_native_image.h"
-#if !defined(OS_WIN)
-#include "shell/browser/api/electron_api_tray.h"
-#endif
 
 namespace electron {
 
@@ -207,10 +205,8 @@ void SetCrashKeyForGinWrappable(gin::WrapperInfo* info) {
   else if (info == &electron::api::DesktopCapturer::kWrapperInfo)
     crash_location = "DesktopCapturer";
 #endif
-#if !defined(OS_WIN)
   else if (info == &electron::api::Tray::kWrapperInfo)
     crash_location = "Tray";
-#endif  // OS_WIN
   else if (info == &electron::api::NetLog::kWrapperInfo)
     crash_location = "NetLog";
   else if (info == &electron::api::NativeImage::kWrapperInfo)

+ 12 - 1
shell/common/gin_converters/guid_converter.h

@@ -10,6 +10,17 @@
 #include "gin/converter.h"
 
 #if defined(OS_WIN)
+// c.f.:
+// https://chromium-review.googlesource.com/c/chromium/src/+/3076480
+// REFGUID is currently incorrectly inheriting its type
+// from base::GUID, when it should be inheriting from ::GUID.
+// This workaround prevents build errors until the CL is merged
+#ifdef _REFGUID_DEFINED
+#undef REFGUID
+#endif
+#define REFGUID const ::GUID&
+#define _REFGUID_DEFINED
+
 #include <rpc.h>
 
 #include "base/strings/sys_string_conversions.h"
@@ -18,7 +29,6 @@
 
 #if defined(OS_WIN)
 typedef GUID UUID;
-const GUID GUID_NULL = {};
 #else
 typedef struct {
 } UUID;
@@ -58,6 +68,7 @@ struct Converter<UUID> {
   }
   static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, UUID val) {
 #if defined(OS_WIN)
+    const GUID GUID_NULL = {};
     if (val == GUID_NULL) {
       return StringToV8(isolate, "");
     } else {