mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 11:49:44 +00:00
LibWeb/CSP: Implement SecurityPolicyViolationEvent
This is used to report violations of policies to the element/global object that caused it.
This commit is contained in:
parent
564cd1849b
commit
02236be737
Notes:
github-actions[bot]
2025-03-18 23:56:31 +00:00
Author: https://github.com/Lubrsi
Commit: 02236be737
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3972
9 changed files with 168 additions and 0 deletions
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* Copyright (c) 2025, Luke Wilde <luke@ladybird.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibWeb/Bindings/SecurityPolicyViolationEventPrototype.h>
|
||||
#include <LibWeb/DOM/Event.h>
|
||||
|
||||
namespace Web::ContentSecurityPolicy {
|
||||
|
||||
struct SecurityPolicyViolationEventInit final : public DOM::EventInit {
|
||||
String document_uri;
|
||||
String referrer;
|
||||
String blocked_uri;
|
||||
String violated_directive;
|
||||
String effective_directive;
|
||||
String original_policy;
|
||||
String source_file;
|
||||
String sample;
|
||||
Bindings::SecurityPolicyViolationEventDisposition disposition { Bindings::SecurityPolicyViolationEventDisposition::Enforce };
|
||||
u16 status_code { 0 };
|
||||
u32 line_number { 0 };
|
||||
u32 column_number { 0 };
|
||||
};
|
||||
|
||||
class SecurityPolicyViolationEvent final : public DOM::Event {
|
||||
WEB_PLATFORM_OBJECT(SecurityPolicyViolationEvent, DOM::Event);
|
||||
GC_DECLARE_ALLOCATOR(SecurityPolicyViolationEvent);
|
||||
|
||||
public:
|
||||
[[nodiscard]] static GC::Ref<SecurityPolicyViolationEvent> create(JS::Realm&, FlyString const& event_name, SecurityPolicyViolationEventInit const& = {});
|
||||
static WebIDL::ExceptionOr<GC::Ref<SecurityPolicyViolationEvent>> construct_impl(JS::Realm&, FlyString const& event_name, SecurityPolicyViolationEventInit const& event_init);
|
||||
|
||||
virtual ~SecurityPolicyViolationEvent() override;
|
||||
|
||||
String const& document_uri() const { return m_document_uri; }
|
||||
String const& referrer() const { return m_referrer; }
|
||||
String const& blocked_uri() const { return m_blocked_uri; }
|
||||
String const& violated_directive() const { return m_violated_directive; }
|
||||
String const& effective_directive() const { return m_effective_directive; }
|
||||
String const& original_policy() const { return m_original_policy; }
|
||||
String const& source_file() const { return m_source_file; }
|
||||
String const& sample() const { return m_sample; }
|
||||
Bindings::SecurityPolicyViolationEventDisposition disposition() const { return m_disposition; }
|
||||
u16 status_code() const { return m_status_code; }
|
||||
u32 line_number() const { return m_line_number; }
|
||||
u32 column_number() const { return m_column_number; }
|
||||
|
||||
private:
|
||||
SecurityPolicyViolationEvent(JS::Realm&, FlyString const& event_name, SecurityPolicyViolationEventInit const&);
|
||||
|
||||
virtual void initialize(JS::Realm&) override;
|
||||
|
||||
String m_document_uri;
|
||||
String m_referrer;
|
||||
String m_blocked_uri;
|
||||
String m_violated_directive;
|
||||
String m_effective_directive;
|
||||
String m_original_policy;
|
||||
String m_source_file;
|
||||
String m_sample;
|
||||
Bindings::SecurityPolicyViolationEventDisposition m_disposition { Bindings::SecurityPolicyViolationEventDisposition::Enforce };
|
||||
u16 m_status_code { 0 };
|
||||
u32 m_line_number { 0 };
|
||||
u32 m_column_number { 0 };
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue