Fix intermittent failure JsSkusBrowserTest.AttachSkus (#30791)

Fix for the render frame observer which is created on the stack in the
test file, but its `OnDestruct` calls `delete this;`

https://github.com/brave/brave-core/commit/9d896aaa5d0b0873434bee37a92f89e78e8661fe#diff-9b6f35d6bb55585416f5c5b7f[…]531e094f6039534e46870f267e84R68
Added the `delete this;`

And then a later commit added the test which created it on the stack:
https://github.com/brave/brave-core/commit/0a03ac5defcc619296085cdd8e4654521efe6ec5#diff-10e48a4b1e39427a1c98f8882[…]4d712ff32b2affd45df70ee319e2R35

i
This commit is contained in:
Brian R. Bondy
2025-08-25 14:14:52 -04:00
committed by GitHub
parent d47749e8c4
commit dbab29c929
4 changed files with 12 additions and 6 deletions
@@ -18,6 +18,12 @@
namespace skus {
// static
SkusRenderFrameObserver* SkusRenderFrameObserver::Create(
content::RenderFrame* render_frame) {
return new SkusRenderFrameObserver(render_frame);
}
SkusRenderFrameObserver::SkusRenderFrameObserver(
content::RenderFrame* render_frame)
: RenderFrameObserver(render_frame) {}
@@ -6,8 +6,6 @@
#ifndef BRAVE_COMPONENTS_SKUS_RENDERER_SKUS_RENDER_FRAME_OBSERVER_H_
#define BRAVE_COMPONENTS_SKUS_RENDERER_SKUS_RENDER_FRAME_OBSERVER_H_
#include <memory>
#include "brave/components/skus/renderer/skus_js_handler.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_frame_observer.h"
@@ -25,15 +23,17 @@ namespace skus {
// See `browser/brave_content_browser_client.cc` for more information.
class SkusRenderFrameObserver : public content::RenderFrameObserver {
public:
explicit SkusRenderFrameObserver(content::RenderFrame* render_frame);
static SkusRenderFrameObserver* Create(content::RenderFrame* render_frame);
SkusRenderFrameObserver(const SkusRenderFrameObserver&) = delete;
SkusRenderFrameObserver& operator=(const SkusRenderFrameObserver&) = delete;
~SkusRenderFrameObserver() override;
// RenderFrameObserver implementation.
void DidClearWindowObject() override;
private:
explicit SkusRenderFrameObserver(content::RenderFrame* render_frame);
~SkusRenderFrameObserver() override;
// RenderFrameObserver implementation.
void OnDestruct() override;
+1 -1
View File
@@ -178,7 +178,7 @@ void BraveContentRendererClient::RenderFrameCreated(
if (base::FeatureList::IsEnabled(skus::features::kSkusFeature) &&
!IsIncognitoProcess()) {
new skus::SkusRenderFrameObserver(render_frame);
skus::SkusRenderFrameObserver::Create(render_frame);
}
#if BUILDFLAG(IS_ANDROID)
+1 -1
View File
@@ -30,7 +30,7 @@ class JsSkusBrowserTest : public content::RenderViewTest {
};
TEST_F(JsSkusBrowserTest, AttachSkus) {
SkusRenderFrameObserver observer(GetMainRenderFrame());
SkusRenderFrameObserver::Create(GetMainRenderFrame());
std::u16string command =
u"Number((window.chrome !== undefined) && (window.chrome.braveSkus !== "
u"undefined) && "