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) {
// set page type selector.
page_rule->setSelectorText(context, "namedpage");
EXPECT_EQ("namedpage", page_rule->selectorText());
context->NotifyContextDestroyed();
}
} // namespace blink
......@@ -110,6 +110,10 @@ class MockIdleTask : public IdleTask {
class ScriptedIdleTaskControllerTest : public testing::Test {
public:
~ScriptedIdleTaskControllerTest() override {
execution_context_->NotifyContextDestroyed();
}
void SetUp() override {
execution_context_ = MakeGarbageCollected<NullExecutionContext>();
}
......
......@@ -73,7 +73,9 @@ ExecutionContext::ExecutionContext(v8::Isolate* isolate, Agent* agent)
DCHECK(agent_);
}
ExecutionContext::~ExecutionContext() = default;
ExecutionContext::~ExecutionContext() {
DCHECK(is_context_destroyed_);
}
// static
ExecutionContext* ExecutionContext::From(const ScriptState* script_state) {
......
......@@ -67,6 +67,9 @@ class FakeURLRegistry : public URLRegistry {
class PublicURLManagerTest : public testing::Test {
public:
PublicURLManagerTest() : url_store_receiver_(&url_store_) {}
~PublicURLManagerTest() override {
execution_context_->NotifyContextDestroyed();
}
void SetUp() override {
execution_context_ = MakeGarbageCollected<NullExecutionContext>();
......
......@@ -39,16 +39,20 @@ class ContentSecurityPolicyTest : public testing::Test {
: csp(MakeGarbageCollected<ContentSecurityPolicy>()),
secure_url("https://example.test/image.png"),
secure_origin(SecurityOrigin::Create(secure_url)) {}
~ContentSecurityPolicyTest() override {
execution_context->NotifyContextDestroyed();
}
protected:
void SetUp() override { execution_context = CreateExecutionContext(); }
NullExecutionContext* CreateExecutionContext() {
NullExecutionContext* context =
MakeGarbageCollected<NullExecutionContext>();
context->SetUpSecurityContextForTesting();
context->GetSecurityContext().SetSecurityOriginForTesting(secure_origin);
return context;
void SetUp() override { CreateExecutionContext(); }
void CreateExecutionContext() {
if (execution_context)
execution_context->NotifyContextDestroyed();
execution_context = MakeGarbageCollected<NullExecutionContext>();
execution_context->SetUpSecurityContextForTesting();
execution_context->GetSecurityContext().SetSecurityOriginForTesting(
secure_origin);
}
Persistent<ContentSecurityPolicy> csp;
......@@ -113,7 +117,7 @@ TEST_F(ContentSecurityPolicyTest, ParseInsecureRequestPolicy) {
EXPECT_EQ(mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone,
csp->GetInsecureRequestPolicy());
execution_context = CreateExecutionContext();
CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin(secure_origin);
csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate());
EXPECT_EQ(
......@@ -636,7 +640,7 @@ TEST_F(ContentSecurityPolicyTest, DirectiveType) {
TEST_F(ContentSecurityPolicyTest, RequestsAllowedWhenBypassingCSP) {
const KURL base;
execution_context = CreateExecutionContext();
CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin(
secure_origin); // https://example.com
execution_context->SetURL(secure_url); // https://example.com
......@@ -683,7 +687,7 @@ TEST_F(ContentSecurityPolicyTest, RequestsAllowedWhenBypassingCSP) {
}
TEST_F(ContentSecurityPolicyTest, FilesystemAllowedWhenBypassingCSP) {
const KURL base;
execution_context = CreateExecutionContext();
CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin(
secure_origin); // https://example.com
execution_context->SetURL(secure_url); // https://example.com
......@@ -731,7 +735,7 @@ TEST_F(ContentSecurityPolicyTest, FilesystemAllowedWhenBypassingCSP) {
TEST_F(ContentSecurityPolicyTest, BlobAllowedWhenBypassingCSP) {
const KURL base;
execution_context = CreateExecutionContext();
CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin(
secure_origin); // https://example.com
execution_context->SetURL(secure_url); // https://example.com
......@@ -779,7 +783,7 @@ TEST_F(ContentSecurityPolicyTest, BlobAllowedWhenBypassingCSP) {
TEST_F(ContentSecurityPolicyTest, CSPBypassDisabledWhenSchemeIsPrivileged) {
const KURL base;
execution_context = CreateExecutionContext();
CreateExecutionContext();
execution_context->GetSecurityContext().SetSecurityOrigin(secure_origin);
execution_context->SetURL(BlankURL());
csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate());
......@@ -1274,7 +1278,7 @@ TEST_F(ContentSecurityPolicyTest, OpaqueOriginBeforeBind) {
// are applied. This shouldn't change the application of the 'self'
// determination.
secure_origin = secure_origin->DeriveNewOpaqueOrigin();
execution_context = CreateExecutionContext();
CreateExecutionContext();
csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate());
csp->DidReceiveHeader("default-src 'self';",
ContentSecurityPolicyType::kEnforce,
......
......@@ -19,6 +19,7 @@ class SourceListDirectiveTest : public testing::Test {
public:
SourceListDirectiveTest()
: csp(MakeGarbageCollected<ContentSecurityPolicy>()) {}
~SourceListDirectiveTest() override { context->NotifyContextDestroyed(); }
protected:
struct Source {
......
......@@ -119,6 +119,10 @@ class MockBaseFetchContext final : public BaseFetchContext {
class BaseFetchContextTest : public testing::Test {
protected:
~BaseFetchContextTest() override {
execution_context_->NotifyContextDestroyed();
}
void SetUp() override {
execution_context_ = MakeGarbageCollected<NullExecutionContext>();
static_cast<NullExecutionContext*>(execution_context_.Get())
......
......@@ -93,6 +93,9 @@ class OriginTrialContextTest : public testing::Test {
->SetTrialTokenValidatorForTesting(
std::unique_ptr<MockTokenValidator>(token_validator_));
}
~OriginTrialContextTest() override {
execution_context_->NotifyContextDestroyed();
}
MockTokenValidator* TokenValidator() { return token_validator_; }
......
......@@ -45,6 +45,8 @@ class TestPerformance : public Performance {
class PerformanceTest : public PageTestBase {
protected:
~PerformanceTest() override { execution_context_->NotifyContextDestroyed(); }
void Initialize(ScriptState* script_state) {
v8::Local<v8::Function> callback =
v8::Function::New(script_state->GetContext(), nullptr).ToLocalChecked();
......
......@@ -21,6 +21,7 @@ class DOMFileSystemBaseTest : public testing::Test {
GetFileMetadata(file_path_, *context_, file_metadata_);
file_metadata_.platform_path = file_path_;
}
~DOMFileSystemBaseTest() override { context_->NotifyContextDestroyed(); }
protected:
Persistent<ExecutionContext> context_ =
......
......@@ -29,6 +29,9 @@ class VideoFrameRequestCallbackCollectionTest : public PageTestBase {
: execution_context_(MakeGarbageCollected<NullExecutionContext>()),
collection_(MakeGarbageCollected<VideoFrameRequestCallbackCollection>(
execution_context_.Get())) {}
~VideoFrameRequestCallbackCollectionTest() override {
execution_context_->NotifyContextDestroyed();
}
VideoFrameRequestCallbackCollection* collection() {
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