Skip to content

Commit

Permalink
Allow using a = b in *.serialization.in files
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=251160

Reviewed by Chris Dumez.

This fixes a shortcut I took in 259180@main.
Expose the information to the IPC testing API as if b contained a,
which is equivalent from the point of view of serialization.
No actual serializers need to be generated.

* Source/WebKit/Scripts/generate-serializers.py:
(generate_serialized_type_info):
(generate_serialized_type_info.in):
(parse_serialized_types):
(main):
(main.in):
* Source/WebKit/Scripts/webkit/tests/SerializedTypeInfo.cpp:
(WebKit::allSerializedTypes):
* Source/WebKit/Scripts/webkit/tests/TestSerializedType.serialization.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/UIProcess/VisitedLinkStore.messages.in:
* Source/WebKit/WebProcess/WebPage/VisitedLinkTableController.messages.in:

Canonical link: https://commits.webkit.org/259383@main
  • Loading branch information
achristensen07 committed Jan 25, 2023
1 parent 42ad013 commit e7b14b5
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 6 deletions.
20 changes: 16 additions & 4 deletions Source/WebKit/Scripts/generate-serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,7 @@ def generate_impl(serialized_types, serialized_enums, headers):
return '\n'.join(result)


def generate_serialized_type_info(serialized_types, serialized_enums, headers):
def generate_serialized_type_info(serialized_types, serialized_enums, headers, typedefs):
result = []
result.append(_license_header)
result.append('#include "config.h"')
Expand Down Expand Up @@ -630,6 +630,10 @@ def generate_serialized_type_info(serialized_types, serialized_enums, headers):
else:
result.append(' }, {')
result.append(' } },')
for typedef in typedefs:
result.append(' { "' + typedef[0] + '"_s, {')
result.append(' { "' + typedef[1] + '"_s, "alias"_s }')
result.append(' } },')
result.append(' };')
result.append('}')
result.append('')
Expand Down Expand Up @@ -665,6 +669,7 @@ def generate_serialized_type_info(serialized_types, serialized_enums, headers):
def parse_serialized_types(file, file_name):
serialized_types = []
serialized_enums = []
typedefs = []
headers = []

attributes = None
Expand Down Expand Up @@ -766,6 +771,10 @@ def parse_serialized_types(file, file_name):
if match:
struct_or_class, name = match.groups()
continue
match = re.search(r'using (.*) = (.*)', line)
if match:
typedefs.append(match.groups())
continue

if underlying_type is not None:
members.append(EnumMember(line.strip(' ,'), member_condition))
Expand Down Expand Up @@ -804,21 +813,24 @@ def parse_serialized_types(file, file_name):
if match:
member_type, member_name = match.groups()
members.append(MemberVariable(member_type, member_name, member_condition, []))
return [serialized_types, serialized_enums, headers]
return [serialized_types, serialized_enums, headers, typedefs]


def main(argv):
serialized_types = []
serialized_enums = []
typedefs = []
headers = []
file_extension = argv[1]
for i in range(3, len(argv)):
with open(argv[2] + argv[i]) as file:
new_types, new_enums, new_headers = parse_serialized_types(file, argv[i])
new_types, new_enums, new_headers, new_typedefs = parse_serialized_types(file, argv[i])
for type in new_types:
serialized_types.append(type)
for enum in new_enums:
serialized_enums.append(enum)
for typedef in new_typedefs:
typedefs.append(typedef)
for header in new_headers:
headers.append(header)
headers.sort()
Expand All @@ -828,7 +840,7 @@ def main(argv):
with open('GeneratedSerializers.%s' % file_extension, "w+") as output:
output.write(generate_impl(serialized_types, serialized_enums, headers))
with open('SerializedTypeInfo.%s' % file_extension, "w+") as output:
output.write(generate_serialized_type_info(serialized_types, serialized_enums, headers))
output.write(generate_serialized_type_info(serialized_types, serialized_enums, headers, typedefs))
return 0


Expand Down
3 changes: 3 additions & 0 deletions Source/WebKit/Scripts/webkit/tests/SerializedTypeInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,9 @@ Vector<SerializedTypeInfo> allSerializedTypes()
"secondMember"_s
}
} },
{ "WebCore::SharedStringHash"_s, {
{ "uint32_t"_s, "alias"_s }
} },
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,5 @@ struct NullableSoftLinkedMember {
WebCore::StepsTimingFunction,
WebCore::SpringTimingFunction
}

using WebCore::SharedStringHash = uint32_t
2 changes: 2 additions & 0 deletions Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
Original file line number Diff line number Diff line change
Expand Up @@ -2892,3 +2892,5 @@ header: <WebCore/TextManipulationController.h>
uint64_t index;
WebCore::TextManipulationControllerManipulationFailure::Type type;
};

using WebCore::SharedStringHash = uint32_t
2 changes: 1 addition & 1 deletion Source/WebKit/UIProcess/VisitedLinkStore.messages.in
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

messages -> VisitedLinkStore {
AddVisitedLinkHashFromPage(WebKit::WebPageProxyIdentifier pageProxyID, uint32_t linkHash)
AddVisitedLinkHashFromPage(WebKit::WebPageProxyIdentifier pageProxyID, WebCore::SharedStringHash linkHash)
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

messages -> VisitedLinkTableController {
SetVisitedLinkTable(WebKit::SharedMemory::Handle handle)
VisitedLinkStateChanged(Vector<uint32_t> linkHashes)
VisitedLinkStateChanged(Vector<WebCore::SharedStringHash> linkHashes)
AllVisitedLinkStateChanged()
RemoveAllVisitedLinks()
}

0 comments on commit e7b14b5

Please sign in to comment.