Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: be8e1cbed551b67d0203aac123801f202143abd4
https://github.com/WebKit/WebKit/commit/be8e1cbed551b67d0203aac123801f202143abd4
Author: Alex Christensen <[email protected]>
Date: 2023-04-19 (Wed, 19 Apr 2023)
Changed paths:
M Source/WebCore/Modules/reporting/DeprecationReportBody.cpp
M Source/WebCore/Modules/reporting/DeprecationReportBody.h
M Source/WebCore/Modules/reporting/ReportBody.cpp
M Source/WebCore/Modules/reporting/ReportBody.h
M Source/WebCore/Modules/reporting/TestReportBody.cpp
M Source/WebCore/Modules/reporting/TestReportBody.h
M Source/WebCore/loader/COEPInheritenceViolationReportBody.cpp
M Source/WebCore/loader/COEPInheritenceViolationReportBody.h
M Source/WebCore/loader/CORPViolationReportBody.cpp
M Source/WebCore/loader/CORPViolationReportBody.h
M Source/WebCore/page/csp/CSPViolationReportBody.cpp
M Source/WebCore/page/csp/CSPViolationReportBody.h
M
Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in
M Source/WebKit/Scripts/generate-serializers.py
M Source/WebKit/Scripts/webkit/tests/GeneratedSerializers.cpp
M Source/WebKit/Scripts/webkit/tests/GeneratedSerializers.h
M Source/WebKit/Scripts/webkit/tests/SerializedTypeInfo.cpp
M Source/WebKit/Scripts/webkit/tests/TestSerializedType.serialization.in
M Source/WebKit/Shared/SessionState.serialization.in
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
Log Message:
-----------
Verify non-serialized members of serialized types are not accidentally
forgotten
https://bugs.webkit.org/show_bug.cgi?id=255551
rdar://108161764
Reviewed by Chris Dumez.
I introduce the NotSerialized attribute for members that are ... not serialized.
Until we have https://wg21.link/P1240 in the language, we can't iterate the
members
at compile time and make sure we got them all. We already use
MembersInCorrectOrder
to make sure we got them in the correct order, but we didn't have a check that
we
got them all until now. This makes a struct that has the same members in the
same
order and static_asserts that it has the same size as the actual struct.
To reduce memory use and make this new sizeof trick work, I made
ReportBody::type()
a virtual function call instead of using another byte to store the type.
* Source/WebCore/Modules/reporting/DeprecationReportBody.cpp:
(WebCore::DeprecationReportBody::DeprecationReportBody):
* Source/WebCore/Modules/reporting/DeprecationReportBody.h:
* Source/WebCore/Modules/reporting/ReportBody.cpp:
(WebCore::ReportBody::ReportBody): Deleted.
(WebCore::ReportBody::reportBodyType const): Deleted.
* Source/WebCore/Modules/reporting/ReportBody.h:
* Source/WebCore/Modules/reporting/TestReportBody.cpp:
(WebCore::TestReportBody::TestReportBody):
* Source/WebCore/Modules/reporting/TestReportBody.h:
* Source/WebCore/loader/COEPInheritenceViolationReportBody.cpp:
(WebCore::COEPInheritenceViolationReportBody::COEPInheritenceViolationReportBody):
* Source/WebCore/loader/COEPInheritenceViolationReportBody.h:
* Source/WebCore/loader/CORPViolationReportBody.cpp:
(WebCore::CORPViolationReportBody::CORPViolationReportBody):
* Source/WebCore/loader/CORPViolationReportBody.h:
* Source/WebCore/page/csp/CSPViolationReportBody.cpp:
(WebCore::CSPViolationReportBody::CSPViolationReportBody):
* Source/WebCore/page/csp/CSPViolationReportBody.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in:
* Source/WebKit/Scripts/generate-serializers.py:
(SerializedType.__init__):
(SerializedType.has_bit_field):
(SerializedType):
(SerializedType.serialized_members):
(check_type_members):
(check_type_members.is):
(check_type_members.is.is):
(encode_type):
(decode_type):
(construct_type):
(generate_impl):
(generate_serialized_type_info):
* Source/WebKit/Scripts/webkit/tests/GeneratedSerializers.cpp:
(IPC::ArgumentCoder<Namespace::Subnamespace::StructName>::encode):
(IPC::ArgumentCoder<Namespace::EmptyConstructorNullable>::encode):
(IPC::ArgumentCoder<WithoutNamespace>::encode):
(IPC::ArgumentCoder<WithoutNamespaceWithAttributes>::encode):
(IPC::ArgumentCoder<WTF::CreateUsingClass>::encode):
(IPC::ArgumentCoder<NullableSoftLinkedMember>::encode):
(IPC::ArgumentCoder<Namespace::ConditionalCommonClass>::encode):
(IPC::ArgumentCoder<Namesapce::CommonClass>::encode):
(IPC::ArgumentCoder<Namesapce::AnotherCommonClass>::encode):
(IPC::ArgumentCoder<Namesapce::AnotherCommonClass>::decode):
* Source/WebKit/Scripts/webkit/tests/GeneratedSerializers.h:
* Source/WebKit/Scripts/webkit/tests/SerializedTypeInfo.cpp:
* Source/WebKit/Scripts/webkit/tests/TestSerializedType.serialization.in:
* Source/WebKit/Shared/SessionState.serialization.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
Canonical link: https://commits.webkit.org/263133@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes