1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_CSP_CSP_VIOLATION_REPORT_BODY_H_ 6 #define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_CSP_CSP_VIOLATION_REPORT_BODY_H_ 7 8 #include "third_party/blink/renderer/bindings/core/v8/source_location.h" 9 #include "third_party/blink/renderer/bindings/core/v8/v8_object_builder.h" 10 #include "third_party/blink/renderer/bindings/core/v8/v8_security_policy_violation_event_init.h" 11 #include "third_party/blink/renderer/core/frame/location_report_body.h" 12 13 namespace blink { 14 15 class CORE_EXPORT CSPViolationReportBody : public LocationReportBody { 16 DEFINE_WRAPPERTYPEINFO(); 17 18 public: CSPViolationReportBody(const SecurityPolicyViolationEventInit & violation_data)19 explicit CSPViolationReportBody( 20 const SecurityPolicyViolationEventInit& violation_data) 21 : LocationReportBody(violation_data.sourceFile(), 22 violation_data.lineNumber(), 23 violation_data.columnNumber()), 24 document_url_(violation_data.documentURI()), 25 referrer_(violation_data.referrer()), 26 blocked_url_(violation_data.blockedURI()), 27 effective_directive_(violation_data.effectiveDirective()), 28 original_policy_(violation_data.originalPolicy()), 29 sample_(violation_data.sample()), 30 disposition_(violation_data.disposition()), 31 status_code_(violation_data.statusCode()) {} 32 33 ~CSPViolationReportBody() override = default; 34 documentURL()35 const String& documentURL() const { return document_url_; } referrer()36 const String& referrer() const { return referrer_; } blockedURL()37 const String& blockedURL() const { return blocked_url_; } effectiveDirective()38 const String& effectiveDirective() const { return effective_directive_; } originalPolicy()39 const String& originalPolicy() const { return original_policy_; } sample()40 const String& sample() const { return sample_; } disposition()41 const String& disposition() const { return disposition_; } statusCode()42 uint16_t statusCode() const { return status_code_; } 43 44 void BuildJSONValue(V8ObjectBuilder& builder) const override; 45 46 private: 47 const String document_url_; 48 const String referrer_; 49 const String blocked_url_; 50 const String effective_directive_; 51 const String original_policy_; 52 const String sample_; 53 const String disposition_; 54 const uint16_t status_code_; 55 }; 56 57 } // namespace blink 58 59 #endif // THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_CSP_CSP_VIOLATION_REPORT_BODY_H_ 60