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:
@@ -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;
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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) && "
|
||||
|
||||
Reference in New Issue
Block a user