diff --git a/chromium_src/third_party/blink/renderer/core/execution_context/navigator_base.h b/chromium_src/third_party/blink/renderer/core/execution_context/navigator_base.h index 534db7ddbee..03feaeeec9b 100644 --- a/chromium_src/third_party/blink/renderer/core/execution_context/navigator_base.h +++ b/chromium_src/third_party/blink/renderer/core/execution_context/navigator_base.h @@ -8,6 +8,10 @@ #include "third_party/blink/renderer/core/frame/navigator_id.h" +namespace blink { +class Brave; +} // namespace blink + #define userAgent \ userAgent_ChromiumImpl() const; \ String userAgent diff --git a/patches/third_party-blink-renderer-core-execution_context-navigator_base.cc.patch b/patches/third_party-blink-renderer-core-execution_context-navigator_base.cc.patch new file mode 100644 index 00000000000..4db0fece6fd --- /dev/null +++ b/patches/third_party-blink-renderer-core-execution_context-navigator_base.cc.patch @@ -0,0 +1,12 @@ +diff --git a/third_party/blink/renderer/core/execution_context/navigator_base.cc b/third_party/blink/renderer/core/execution_context/navigator_base.cc +index 0910e68f91b9090655f054976e34bffc1dbdc549..dfaa5cca797427dc6719334d4424d706ed92be5a 100644 +--- a/third_party/blink/renderer/core/execution_context/navigator_base.cc ++++ b/third_party/blink/renderer/core/execution_context/navigator_base.cc +@@ -94,6 +94,7 @@ void NavigatorBase::Trace(Visitor* visitor) const { + visitor->Trace(storage_bucket_manager_); + visitor->Trace(usb_); + visitor->Trace(wake_lock_); ++ visitor->Trace(brave_navigator_); + } + + unsigned int NavigatorBase::hardwareConcurrency() const { diff --git a/patches/third_party-blink-renderer-core-execution_context-navigator_base.h.patch b/patches/third_party-blink-renderer-core-execution_context-navigator_base.h.patch index a10dc54ccde..e6b55bdb2fa 100644 --- a/patches/third_party-blink-renderer-core-execution_context-navigator_base.h.patch +++ b/patches/third_party-blink-renderer-core-execution_context-navigator_base.h.patch @@ -1,21 +1,22 @@ diff --git a/third_party/blink/renderer/core/execution_context/navigator_base.h b/third_party/blink/renderer/core/execution_context/navigator_base.h -index 85b582e97a0d23fb66f4d4d2d28322519b200b0f..951a14666eb0719930bac91fa2e941cbe98a3881 100644 +index aed72d412ad8601a9de8a7f3ea31ccf42c279a8d..bb9a7675fd71114890602ca479251b6f5be4fe25 100644 --- a/third_party/blink/renderer/core/execution_context/navigator_base.h +++ b/third_party/blink/renderer/core/execution_context/navigator_base.h -@@ -49,7 +49,7 @@ class CORE_EXPORT NavigatorBase : public ScriptWrappable, - public NavigatorOnLine, - public NavigatorUA, - public ExecutionContextClient, -- public Supplementable { -+ public Supplementable { - public: - enum class Supplements { - kLockManager = 0, -@@ -67,6 +67,7 @@ class CORE_EXPORT NavigatorBase : public ScriptWrappable, - kNavigatorML = 12, - kSerial = 13, - kGeolocation = 14 -+ , kBraveNavigator, - }; +@@ -181,6 +181,9 @@ class CORE_EXPORT NavigatorBase : public ScriptWrappable, + wake_lock_ = wake_lock; + } - explicit NavigatorBase(ExecutionContext* context); ++ ForwardDeclaredMember GetBraveNavigator() const { return brave_navigator_; } ++ void SetBraveNavigator(ForwardDeclaredMember brave_navigator) { brave_navigator_ = brave_navigator; } ++ + protected: + ExecutionContext* GetUAExecutionContext() const override; + UserAgentMetadata GetUserAgentMetadata() const override; +@@ -202,6 +205,7 @@ class CORE_EXPORT NavigatorBase : public ScriptWrappable, + ForwardDeclaredMember storage_bucket_manager_; + ForwardDeclaredMember usb_; + ForwardDeclaredMember wake_lock_; ++ ForwardDeclaredMember brave_navigator_; + }; + + } // namespace blink diff --git a/third_party/blink/renderer/modules/brave/brave.cc b/third_party/blink/renderer/modules/brave/brave.cc index 866760cf5a1..88a84f392ac 100644 --- a/third_party/blink/renderer/modules/brave/brave.cc +++ b/third_party/blink/renderer/modules/brave/brave.cc @@ -10,13 +10,13 @@ namespace blink { -Brave::Brave(NavigatorBase& navigator) : Supplement(navigator) {} +Brave::Brave(NavigatorBase& navigator) : navigator_base_(navigator) {} Brave* Brave::brave(NavigatorBase& navigator) { - auto* supplement = Supplement::From(navigator); + auto supplement = navigator.GetBraveNavigator(); if (!supplement) { supplement = MakeGarbageCollected(navigator); - Supplement::ProvideTo(navigator, supplement); + navigator.SetBraveNavigator(supplement); } return supplement; } @@ -31,7 +31,7 @@ ScriptPromise Brave::isBrave(ScriptState* script_state) { void Brave::Trace(Visitor* visitor) const { ScriptWrappable::Trace(visitor); - Supplement::Trace(visitor); + visitor->Trace(navigator_base_); } } // namespace blink diff --git a/third_party/blink/renderer/modules/brave/brave.h b/third_party/blink/renderer/modules/brave/brave.h index 3eefa8e3079..aa172d36fe9 100644 --- a/third_party/blink/renderer/modules/brave/brave.h +++ b/third_party/blink/renderer/modules/brave/brave.h @@ -16,13 +16,10 @@ namespace blink { class ScriptState; class MODULES_EXPORT Brave final : public ScriptWrappable, - public Supplement { + public GarbageCollectedMixin { DEFINE_WRAPPERTYPEINFO(); public: - static constexpr auto kSupplementIndex = - NavigatorBase::Supplements::kBraveNavigator; - static Brave* brave(NavigatorBase& navigator); explicit Brave(NavigatorBase& navigator); @@ -31,6 +28,9 @@ class MODULES_EXPORT Brave final : public ScriptWrappable, void Trace(Visitor*) const override; ScriptPromise isBrave(ScriptState*); + + private: + Member navigator_base_; }; } // namespace blink