Commit a40ca8f5 authored by Tal Pressman's avatar Tal Pressman Committed by Chromium LUCI CQ

Check that ExecutionContext notified its listeners of destruction.

Change-Id: If5bc40ac15f246c8419a2ad92dcd06346ae62d12
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2633488Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Tal Pressman <talp@google.com>
Cr-Commit-Position: refs/heads/master@{#844673}
parent 3243ca77
...@@ -53,6 +53,8 @@ TEST(CSSPageRule, selectorText) { ...@@ -53,6 +53,8 @@ TEST(CSSPageRule, selectorText) {
// set page type selector. // set page type selector.
page_rule->setSelectorText(context, "namedpage"); page_rule->setSelectorText(context, "namedpage");
EXPECT_EQ("namedpage", page_rule->selectorText()); EXPECT_EQ("namedpage", page_rule->selectorText());
context->NotifyContextDestroyed();
} }
} // namespace blink } // namespace blink
...@@ -110,6 +110,10 @@ class MockIdleTask : public IdleTask { ...@@ -110,6 +110,10 @@ class MockIdleTask : public IdleTask {
class ScriptedIdleTaskControllerTest : public testing::Test { class ScriptedIdleTaskControllerTest : public testing::Test {
public: public:
~ScriptedIdleTaskControllerTest() override {
execution_context_->NotifyContextDestroyed();
}
void SetUp() override { void SetUp() override {
execution_context_ = MakeGarbageCollected<NullExecutionContext>(); execution_context_ = MakeGarbageCollected<NullExecutionContext>();
} }
......
...@@ -73,7 +73,9 @@ ExecutionContext::ExecutionContext(v8::Isolate* isolate, Agent* agent) ...@@ -73,7 +73,9 @@ ExecutionContext::ExecutionContext(v8::Isolate* isolate, Agent* agent)
DCHECK(agent_); DCHECK(agent_);
} }
ExecutionContext::~ExecutionContext() = default; ExecutionContext::~ExecutionContext() {
DCHECK(is_context_destroyed_);
}
// static // static
ExecutionContext* ExecutionContext::From(const ScriptState* script_state) { ExecutionContext* ExecutionContext::From(const ScriptState* script_state) {
......
...@@ -67,6 +67,9 @@ class FakeURLRegistry : public URLRegistry { ...@@ -67,6 +67,9 @@ class FakeURLRegistry : public URLRegistry {
class PublicURLManagerTest : public testing::Test { class PublicURLManagerTest : public testing::Test {
public: public:
PublicURLManagerTest() : url_store_receiver_(&url_store_) {} PublicURLManagerTest() : url_store_receiver_(&url_store_) {}
~PublicURLManagerTest() override {
execution_context_->NotifyContextDestroyed();
}
void SetUp() override { void SetUp() override {
execution_context_ = MakeGarbageCollected<NullExecutionContext>(); execution_context_ = MakeGarbageCollected<NullExecutionContext>();
......
...@@ -39,16 +39,20 @@ class ContentSecurityPolicyTest : public testing::Test { ...@@ -39,16 +39,20 @@ class ContentSecurityPolicyTest : public testing::Test {
: csp(MakeGarbageCollected<ContentSecurityPolicy>()), : csp(MakeGarbageCollected<ContentSecurityPolicy>()),
secure_url("https://example.test/image.png"), secure_url("https://example.test/image.png"),
secure_origin(SecurityOrigin::Create(secure_url)) {} secure_origin(SecurityOrigin::Create(secure_url)) {}
~ContentSecurityPolicyTest() override {
execution_context->NotifyContextDestroyed();
}
protected: protected:
void SetUp() override { execution_context = CreateExecutionContext(); } void SetUp() override { CreateExecutionContext(); }
NullExecutionContext* CreateExecutionContext() { void CreateExecutionContext() {
NullExecutionContext* context = if (execution_context)
MakeGarbageCollected<NullExecutionContext>(); execution_context->NotifyContextDestroyed();
context->SetUpSecurityContextForTesting(); execution_context = MakeGarbageCollected<NullExecutionContext>();
context->GetSecurityContext().SetSecurityOriginForTesting(secure_origin); execution_context->SetUpSecurityContextForTesting();
return context; execution_context->GetSecurityContext().SetSecurityOriginForTesting(
secure_origin);
} }
Persistent<ContentSecurityPolicy> csp; Persistent<ContentSecurityPolicy> csp;
...@@ -113,7 +117,7 @@ TEST_F(ContentSecurityPolicyTest, ParseInsecureRequestPolicy) { ...@@ -113,7 +117,7 @@ TEST_F(ContentSecurityPolicyTest, ParseInsecureRequestPolicy) {
EXPECT_EQ(mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, EXPECT_EQ(mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone,
csp->GetInsecureRequestPolicy()); csp->GetInsecureRequestPolicy());
execution_context = CreateExecutionContext(); CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin(secure_origin); execution_context->GetSecurityContext().SetSecurityOrigin(secure_origin);
csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate()); csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate());
EXPECT_EQ( EXPECT_EQ(
...@@ -636,7 +640,7 @@ TEST_F(ContentSecurityPolicyTest, DirectiveType) { ...@@ -636,7 +640,7 @@ TEST_F(ContentSecurityPolicyTest, DirectiveType) {
TEST_F(ContentSecurityPolicyTest, RequestsAllowedWhenBypassingCSP) { TEST_F(ContentSecurityPolicyTest, RequestsAllowedWhenBypassingCSP) {
const KURL base; const KURL base;
execution_context = CreateExecutionContext(); CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin( execution_context->GetSecurityContext().SetSecurityOrigin(
secure_origin); // https://example.com secure_origin); // https://example.com
execution_context->SetURL(secure_url); // https://example.com execution_context->SetURL(secure_url); // https://example.com
...@@ -683,7 +687,7 @@ TEST_F(ContentSecurityPolicyTest, RequestsAllowedWhenBypassingCSP) { ...@@ -683,7 +687,7 @@ TEST_F(ContentSecurityPolicyTest, RequestsAllowedWhenBypassingCSP) {
} }
TEST_F(ContentSecurityPolicyTest, FilesystemAllowedWhenBypassingCSP) { TEST_F(ContentSecurityPolicyTest, FilesystemAllowedWhenBypassingCSP) {
const KURL base; const KURL base;
execution_context = CreateExecutionContext(); CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin( execution_context->GetSecurityContext().SetSecurityOrigin(
secure_origin); // https://example.com secure_origin); // https://example.com
execution_context->SetURL(secure_url); // https://example.com execution_context->SetURL(secure_url); // https://example.com
...@@ -731,7 +735,7 @@ TEST_F(ContentSecurityPolicyTest, FilesystemAllowedWhenBypassingCSP) { ...@@ -731,7 +735,7 @@ TEST_F(ContentSecurityPolicyTest, FilesystemAllowedWhenBypassingCSP) {
TEST_F(ContentSecurityPolicyTest, BlobAllowedWhenBypassingCSP) { TEST_F(ContentSecurityPolicyTest, BlobAllowedWhenBypassingCSP) {
const KURL base; const KURL base;
execution_context = CreateExecutionContext(); CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin( execution_context->GetSecurityContext().SetSecurityOrigin(
secure_origin); // https://example.com secure_origin); // https://example.com
execution_context->SetURL(secure_url); // https://example.com execution_context->SetURL(secure_url); // https://example.com
...@@ -779,7 +783,7 @@ TEST_F(ContentSecurityPolicyTest, BlobAllowedWhenBypassingCSP) { ...@@ -779,7 +783,7 @@ TEST_F(ContentSecurityPolicyTest, BlobAllowedWhenBypassingCSP) {
TEST_F(ContentSecurityPolicyTest, CSPBypassDisabledWhenSchemeIsPrivileged) { TEST_F(ContentSecurityPolicyTest, CSPBypassDisabledWhenSchemeIsPrivileged) {
const KURL base; const KURL base;
execution_context = CreateExecutionContext(); CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin(secure_origin); execution_context->GetSecurityContext().SetSecurityOrigin(secure_origin);
execution_context->SetURL(BlankURL()); execution_context->SetURL(BlankURL());
csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate()); csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate());
...@@ -1274,7 +1278,7 @@ TEST_F(ContentSecurityPolicyTest, OpaqueOriginBeforeBind) { ...@@ -1274,7 +1278,7 @@ TEST_F(ContentSecurityPolicyTest, OpaqueOriginBeforeBind) {
// are applied. This shouldn't change the application of the 'self' // are applied. This shouldn't change the application of the 'self'
// determination. // determination.
secure_origin = secure_origin->DeriveNewOpaqueOrigin(); secure_origin = secure_origin->DeriveNewOpaqueOrigin();
execution_context = CreateExecutionContext(); CreateExecutionContext();
csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate()); csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate());
csp->DidReceiveHeader("default-src 'self';", csp->DidReceiveHeader("default-src 'self';",
ContentSecurityPolicyType::kEnforce, ContentSecurityPolicyType::kEnforce,
......
...@@ -19,6 +19,7 @@ class SourceListDirectiveTest : public testing::Test { ...@@ -19,6 +19,7 @@ class SourceListDirectiveTest : public testing::Test {
public: public:
SourceListDirectiveTest() SourceListDirectiveTest()
: csp(MakeGarbageCollected<ContentSecurityPolicy>()) {} : csp(MakeGarbageCollected<ContentSecurityPolicy>()) {}
~SourceListDirectiveTest() override { context->NotifyContextDestroyed(); }
protected: protected:
struct Source { struct Source {
......
...@@ -119,6 +119,10 @@ class MockBaseFetchContext final : public BaseFetchContext { ...@@ -119,6 +119,10 @@ class MockBaseFetchContext final : public BaseFetchContext {
class BaseFetchContextTest : public testing::Test { class BaseFetchContextTest : public testing::Test {
protected: protected:
~BaseFetchContextTest() override {
execution_context_->NotifyContextDestroyed();
}
void SetUp() override { void SetUp() override {
execution_context_ = MakeGarbageCollected<NullExecutionContext>(); execution_context_ = MakeGarbageCollected<NullExecutionContext>();
static_cast<NullExecutionContext*>(execution_context_.Get()) static_cast<NullExecutionContext*>(execution_context_.Get())
......
...@@ -93,6 +93,9 @@ class OriginTrialContextTest : public testing::Test { ...@@ -93,6 +93,9 @@ class OriginTrialContextTest : public testing::Test {
->SetTrialTokenValidatorForTesting( ->SetTrialTokenValidatorForTesting(
std::unique_ptr<MockTokenValidator>(token_validator_)); std::unique_ptr<MockTokenValidator>(token_validator_));
} }
~OriginTrialContextTest() override {
execution_context_->NotifyContextDestroyed();
}
MockTokenValidator* TokenValidator() { return token_validator_; } MockTokenValidator* TokenValidator() { return token_validator_; }
......
...@@ -45,6 +45,8 @@ class TestPerformance : public Performance { ...@@ -45,6 +45,8 @@ class TestPerformance : public Performance {
class PerformanceTest : public PageTestBase { class PerformanceTest : public PageTestBase {
protected: protected:
~PerformanceTest() override { execution_context_->NotifyContextDestroyed(); }
void Initialize(ScriptState* script_state) { void Initialize(ScriptState* script_state) {
v8::Local<v8::Function> callback = v8::Local<v8::Function> callback =
v8::Function::New(script_state->GetContext(), nullptr).ToLocalChecked(); v8::Function::New(script_state->GetContext(), nullptr).ToLocalChecked();
......
...@@ -21,6 +21,7 @@ class DOMFileSystemBaseTest : public testing::Test { ...@@ -21,6 +21,7 @@ class DOMFileSystemBaseTest : public testing::Test {
GetFileMetadata(file_path_, *context_, file_metadata_); GetFileMetadata(file_path_, *context_, file_metadata_);
file_metadata_.platform_path = file_path_; file_metadata_.platform_path = file_path_;
} }
~DOMFileSystemBaseTest() override { context_->NotifyContextDestroyed(); }
protected: protected:
Persistent<ExecutionContext> context_ = Persistent<ExecutionContext> context_ =
......
...@@ -29,6 +29,9 @@ class VideoFrameRequestCallbackCollectionTest : public PageTestBase { ...@@ -29,6 +29,9 @@ class VideoFrameRequestCallbackCollectionTest : public PageTestBase {
: execution_context_(MakeGarbageCollected<NullExecutionContext>()), : execution_context_(MakeGarbageCollected<NullExecutionContext>()),
collection_(MakeGarbageCollected<VideoFrameRequestCallbackCollection>( collection_(MakeGarbageCollected<VideoFrameRequestCallbackCollection>(
execution_context_.Get())) {} execution_context_.Get())) {}
~VideoFrameRequestCallbackCollectionTest() override {
execution_context_->NotifyContextDestroyed();
}
VideoFrameRequestCallbackCollection* collection() { VideoFrameRequestCallbackCollection* collection() {
return collection_.Get(); return collection_.Get();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment