Diff
Modified: trunk/Source/WebKit/ChangeLog (271236 => 271237)
--- trunk/Source/WebKit/ChangeLog 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/ChangeLog 2021-01-07 17:04:21 UTC (rev 271237)
@@ -1,3 +1,44 @@
+2021-01-07 Kimmo Kinnunen <[email protected]>
+
+ WebKit IPC builtin messages should be part of the model
+ https://bugs.webkit.org/show_bug.cgi?id=220318
+
+ Reviewed by Chris Dumez.
+
+ Add IPC and AsyncReply message receivers to the IPC model
+ so that their messages can be part of the generator dynamic logic instead of
+ being part of the static textual templates.
+
+ IPC receiver is a built-in message receiver that has few async messages.
+
+ AsyncReply receiver is a built-in message receiver that has one async message
+ for each message declared as 'Async' in any receiver.
+
+ This helps to refine features such as "is message asynchronous" more easily.
+
+ Adds new test case TestWithIfMessage to check a case that went wrong when
+ making the change.
+
+ Moves parsing tests to parser_unittest.py so that TestWithIfMessage does not
+ need to be added to the parsing tests. The said test is not intended to exercises
+ anything particular in the parsing.
+
+ Adds test logic for asserting MessageNames.{h,cpp} and MessageArgumentDescriptions.cpp
+ are as expected.
+
+ * Scripts/generate-message-receiver.py:
+ (main):
+ * Scripts/webkit/messages.py:
+ * Scripts/webkit/model.py:
+ (check_global_model_inputs):
+ (generate_global_model):
+ * Scripts/webkit/model_unittest.py:
+ * Scripts/webkit/tests/MessageNames.cpp:
+ (IPC::description):
+ (IPC::receiverName):
+ (IPC::isValidMessageName):
+ * Scripts/webkit/tests/MessageNames.h:
+
2021-01-07 Lauro Moura <[email protected]>
REGRESSION(r270425) [GTK] wheel scrolling stopped working
Modified: trunk/Source/WebKit/Scripts/generate-message-receiver.py (271236 => 271237)
--- trunk/Source/WebKit/Scripts/generate-message-receiver.py 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/Scripts/generate-message-receiver.py 2021-01-07 17:04:21 UTC (rev 271237)
@@ -54,13 +54,17 @@
sys.stderr.write("Error: %s defined in file %s/%s.messages.in instead of %s.messages.in\n" % (receiver.name, base_dir, parameter, receiver.name))
sys.exit(1)
- errors = webkit.model.check_global_model(receivers)
+ errors = webkit.model.check_global_model_inputs(receivers)
if errors:
for e in errors:
sys.stderr.write("Error: %s\n" % e)
sys.exit(1)
+ receivers = webkit.model.generate_global_model(receivers)
+
for receiver in receivers:
+ if receiver.has_attribute(webkit.model.BUILTIN_ATTRIBUTE):
+ continue
with open('%sMessageReceiver.cpp' % receiver.name, "w+") as implementation_output:
implementation_output.write(webkit.messages.generate_message_handler(receiver))
Modified: trunk/Source/WebKit/Scripts/webkit/messages.py (271236 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/messages.py 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/Scripts/webkit/messages.py 2021-01-07 17:04:21 UTC (rev 271237)
@@ -25,6 +25,7 @@
import sys
from webkit import parser
+from webkit.model import BUILTIN_ATTRIBUTE, ASYNC_ATTRIBUTE
_license_header = """/*
* Copyright (C) 2010-2021 Apple Inc. All rights reserved.
@@ -58,8 +59,52 @@
LEGACY_RECEIVER_ATTRIBUTE = 'LegacyReceiver'
NOT_REFCOUNTED_RECEIVER_ATTRIBUTE = 'NotRefCounted'
SYNCHRONOUS_ATTRIBUTE = 'Synchronous'
-ASYNC_ATTRIBUTE = 'Async'
+
+def receiver_enumerator_order_key(receiver_name):
+ if receiver_name == 'IPC':
+ return 1
+ elif receiver_name == 'AsyncReply':
+ return 2
+ return 0
+
+
+class MessageEnumerator(object):
+
+ def __init__(self, receiver, messages):
+ self.receiver = receiver
+ self.messages = messages
+
+ def __str__(self):
+ if self.messages[0].has_attribute(BUILTIN_ATTRIBUTE):
+ return self.messages[0].name
+ if self.receiver.name == 'AsyncReply':
+ return self.messages[0].name
+ return '%s_%s' % (self.receiver.name, self.messages[0].name)
+
+ @classmethod
+ def sort_key(cls, obj):
+ return receiver_enumerator_order_key(obj.receiver.name), str(obj)
+
+
+def get_message_enumerators(receivers):
+ enumerators = []
+ for receiver in receivers:
+ receiver_enumerators = {}
+ for message in receiver.messages:
+ if message.name not in receiver_enumerators:
+ receiver_enumerators[message.name] = MessageEnumerator(receiver, messages=[message])
+ else:
+ receiver_enumerators[message.name].messages.append(message)
+ enumerators += receiver_enumerators.values()
+ assert(len(enumerators) == len(set(enumerators)))
+ return sorted(enumerators, key=MessageEnumerator.sort_key)
+
+
+def get_receiver_enumerators(receivers):
+ return sorted((r.name for r in receivers), key=lambda n: (receiver_enumerator_order_key(n), n))
+
+
def messages_header_filename(receiver):
return '%sMessages.h' % receiver.name
@@ -911,45 +956,19 @@
result.append('namespace IPC {\n')
result.append('\n')
result.append('enum class ReceiverName : uint8_t {')
-
- enum_value = 1
- first_receiver = True
- for receiver in receivers:
- result.append('\n')
- result.append(' ')
- if not first_receiver:
- result.append(', ')
- first_receiver = False
- result.append('%s = %d' % (receiver.name, enum_value))
- enum_value = enum_value + 1
- result.append('\n , IPC = %d' % enum_value)
- enum_value = enum_value + 1
- result.append('\n , AsyncReply = %d' % enum_value)
- enum_value = enum_value + 1
- result.append('\n , Invalid = %d' % enum_value)
+ result.append('\n ')
+ enums = ['%s = %d' % (e, v) for v, e in enumerate(get_receiver_enumerators(receivers), 1)]
+ result.append('\n , '.join(enums))
+ result.append('\n , Invalid = %d' % (len(enums) + 1))
result.append('\n};\n')
result.append('\n')
- result.append('enum class MessageName : uint16_t {')
- enum_values = set()
- for receiver in receivers:
- for message in receiver.messages:
- enum_values.add('%s_%s' % (receiver.name, message.name))
- if message.has_attribute(ASYNC_ATTRIBUTE):
- enum_values.add('%s_%sReply' % (receiver.name, message.name))
+ message_enumerators = get_message_enumerators(receivers)
- first_message = True
- for enum_value in sorted(enum_values):
- result.append('\n ')
- if not first_message:
- result.append(', ')
- first_message = False
- result.append(enum_value)
- result.append('\n , WrappedAsyncMessageForTesting')
- result.append('\n , SyncMessageReply')
- result.append('\n , InitializeConnection')
- result.append('\n , LegacySessionState')
- result.append('\n , Last = LegacySessionState')
+ result.append('enum class MessageName : uint16_t {')
+ result.append('\n ')
+ result.append('\n , '.join(str(e) for e in message_enumerators))
+ result.append('\n , Last = %s' % message_enumerators[-1])
result.append('\n};\n')
result.append('\n')
result.append('ReceiverName receiverName(MessageName);\n')
@@ -987,24 +1006,11 @@
result.append('const char* description(MessageName name)\n')
result.append('{\n')
result.append(' switch (name) {\n')
- enum_values = set()
- for receiver in receivers:
- for message in receiver.messages:
- enum_values.add('%s_%s' % (receiver.name, message.name))
- if message.has_attribute(ASYNC_ATTRIBUTE):
- enum_values.add('%s_%sReply' % (receiver.name, message.name))
- for enum_value in sorted(enum_values):
- result.append(' case MessageName::%s:\n' % enum_value)
- result.append(' return "%s";\n' % enum_value)
- result.append(' case MessageName::WrappedAsyncMessageForTesting:\n')
- result.append(' return "IPC::WrappedAsyncMessageForTesting";\n')
- result.append(' case MessageName::SyncMessageReply:\n')
- result.append(' return "IPC::SyncMessageReply";\n')
- result.append(' case MessageName::InitializeConnection:\n')
- result.append(' return "IPC::InitializeConnection";\n')
- result.append(' case MessageName::LegacySessionState:\n')
- result.append(' return "IPC::LegacySessionState";\n')
+ message_enumerators = get_message_enumerators(receivers)
+ for enumerator in message_enumerators:
+ result.append(' case MessageName::%s:\n' % enumerator)
+ result.append(' return "%s";\n' % enumerator)
result.append(' }\n')
result.append(' ASSERT_NOT_REACHED();\n')
result.append(' return "<invalid message name>";\n')
@@ -1013,30 +1019,14 @@
result.append('ReceiverName receiverName(MessageName messageName)\n')
result.append('{\n')
result.append(' switch (messageName) {\n')
- message_receiver_map = dict()
- async_reply_messages = set()
- for receiver in receivers:
- messages = set()
- for message in receiver.messages:
- messages.add('%s_%s' % (receiver.name, message.name))
- if message.has_attribute(ASYNC_ATTRIBUTE):
- async_reply_messages.add('%s_%sReply' % (receiver.name, message.name))
- if len(messages):
- message_receiver_map[receiver.name] = messages
-
- for receiver_name, message_names in message_receiver_map.items():
- for message_name in sorted(message_names):
- result.append(' case MessageName::%s:\n' % message_name)
- result.append(' return ReceiverName::%s;\n' % receiver_name)
-
- for async_reply_message in sorted(async_reply_messages):
- result.append(' case MessageName::%s:\n' % async_reply_message)
- result.append(' return ReceiverName::AsyncReply;\n')
- result.append(' case MessageName::WrappedAsyncMessageForTesting:\n')
- result.append(' case MessageName::SyncMessageReply:\n')
- result.append(' case MessageName::InitializeConnection:\n')
- result.append(' case MessageName::LegacySessionState:\n')
- result.append(' return ReceiverName::IPC;\n')
+ prev_enumerator = None
+ for enumerator in message_enumerators:
+ if prev_enumerator and prev_enumerator.receiver != enumerator.receiver:
+ result.append(' return ReceiverName::%s;\n' % prev_enumerator.receiver.name)
+ result.append(' case MessageName::%s:\n' % enumerator)
+ prev_enumerator = enumerator
+ if prev_enumerator:
+ result.append(' return ReceiverName::%s;\n' % prev_enumerator.receiver.name)
result.append(' }\n')
result.append(' ASSERT_NOT_REACHED();\n')
result.append(' return ReceiverName::Invalid;\n')
@@ -1044,25 +1034,14 @@
result.append('\n')
result.append('bool isValidMessageName(MessageName messageName)\n')
result.append('{\n')
- for receiver in receivers:
- for message in receiver.messages:
+ for enumerator in message_enumerators:
+ for message in enumerator.messages:
if message.condition:
result.append('#if %s\n' % message.condition)
- result.append(' if (messageName == IPC::MessageName::%s_%s)\n' % (receiver.name, message.name))
+ result.append(' if (messageName == IPC::MessageName::%s)\n' % enumerator)
result.append(' return true;\n')
- if message.has_attribute(ASYNC_ATTRIBUTE):
- result.append(' if (messageName == IPC::MessageName::%s_%sReply)\n' % (receiver.name, message.name))
- result.append(' return true;\n')
if message.condition:
result.append('#endif\n')
- result.append(' if (messageName == IPC::MessageName::WrappedAsyncMessageForTesting)\n')
- result.append(' return true;\n')
- result.append(' if (messageName == IPC::MessageName::SyncMessageReply)\n')
- result.append(' return true;\n')
- result.append(' if (messageName == IPC::MessageName::InitializeConnection)\n')
- result.append(' return true;\n')
- result.append(' if (messageName == IPC::MessageName::LegacySessionState)\n')
- result.append(' return true;\n')
result.append(' return false;\n')
result.append('};\n')
result.append('\n')
@@ -1075,6 +1054,8 @@
result.append('{\n')
result.append(' switch (name) {\n')
for receiver in receivers:
+ if receiver.has_attribute(BUILTIN_ATTRIBUTE):
+ continue
if receiver.condition:
result.append('#if %s\n' % receiver.condition)
previous_message_condition = None
@@ -1106,10 +1087,14 @@
result.append('{\n')
result.append(' switch (name) {\n')
for receiver in receivers:
+ if receiver.has_attribute(BUILTIN_ATTRIBUTE):
+ continue
if receiver.condition:
result.append('#if %s\n' % receiver.condition)
previous_message_condition = None
for message in receiver.messages:
+ if message.has_attribute(BUILTIN_ATTRIBUTE):
+ continue
argument_list = arguments_from_message(message)
if argument_list is None:
continue
@@ -1155,6 +1140,8 @@
'"JSIPCBinding.h"': [None]
}
for receiver in receivers:
+ if receiver.has_attribute(BUILTIN_ATTRIBUTE):
+ continue
header_conditions['"%s"' % messages_header_filename(receiver)] = [None]
collect_header_conditions_for_receiver(receiver, header_conditions)
@@ -1204,7 +1191,7 @@
if message.condition:
result.append('#if %s\n' % message.condition)
previous_message_condition = message.condition
- result.append(' case MessageName::%s_%s:\n' % (receiver.name, message.name))
+ result.append(' case MessageName::%s:\n' % MessageEnumerator(receiver, [message]))
result.append(' return true;\n')
if previous_message_condition:
result.append('#endif\n')
Modified: trunk/Source/WebKit/Scripts/webkit/messages_unittest.py (271236 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/messages_unittest.py 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/Scripts/webkit/messages_unittest.py 2021-01-07 17:04:21 UTC (rev 271237)
@@ -30,345 +30,37 @@
import sys
import unittest
-if sys.version_info > (3, 0):
- from io import StringIO
-else:
- from StringIO import StringIO
-
module_directory = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.abspath(os.path.join(module_directory, os.path.pardir)))
-from webkit import messages
-from webkit import parser
+from webkit import messages, model, parser # noqa: E402
tests_directory = os.path.join(module_directory, 'tests')
reset_results = False
-with open(os.path.join(tests_directory, 'TestWithoutAttributes.messages.in')) as in_file:
- _messages_file_contents = in_file.read()
+_test_receiver_names = ['TestWithSuperclass', 'TestWithLegacyReceiver', 'TestWithoutAttributes', 'TestWithIfMessage']
-with open(os.path.join(tests_directory, 'TestWithLegacyReceiver.messages.in')) as in_file:
- _legacy_messages_file_contents = in_file.read()
-with open(os.path.join(tests_directory, 'TestWithSuperclass.messages.in')) as in_file:
- _superclass_messages_file_contents = in_file.read()
+def receiver_header_file_name(receiver_name):
+ return '%sMessages.h' % receiver_name
-_expected_receiver_header_file_name = 'TestWithoutAttributesMessages.h'
-_expected_legacy_receiver_header_file_name = 'TestWithLegacyReceiverMessages.h'
-_expected_superclass_receiver_header_file_name = 'TestWithSuperclassMessages.h'
-_expected_receiver_implementation_file_name = 'TestWithoutAttributesMessageReceiver.cpp'
-_expected_legacy_receiver_implementation_file_name = 'TestWithLegacyReceiverMessageReceiver.cpp'
-_expected_superclass_receiver_implementation_file_name = 'TestWithSuperclassMessageReceiver.cpp'
+def receiver_implementation_file_name(receiver_name):
+ return '%sMessageReceiver.cpp' % receiver_name
-_base_expected_results = {
- 'conditions': ('(ENABLE(WEBKIT2) && (NESTED_MASTER_CONDITION || MASTER_OR && MASTER_AND))'),
- 'messages': (
- {
- 'name': 'LoadURL',
- 'parameters': (
- ('String', 'url'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'LoadSomething',
- 'parameters': (
- ('String', 'url'),
- ),
- 'conditions': ('ENABLE(TOUCH_EVENTS)'),
- },
- {
- 'name': 'TouchEvent',
- 'parameters': (
- ('WebKit::WebTouchEvent', 'event'),
- ),
- 'conditions': ('(ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION || SOME_OTHER_MESSAGE_CONDITION))'),
- },
- {
- 'name': 'AddEvent',
- 'parameters': (
- ('WebKit::WebTouchEvent', 'event'),
- ),
- 'conditions': ('(ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION && SOME_OTHER_MESSAGE_CONDITION))'),
- },
- {
- 'name': 'LoadSomethingElse',
- 'parameters': (
- ('String', 'url'),
- ),
- 'conditions': ('ENABLE(TOUCH_EVENTS)'),
- },
- {
- 'name': 'DidReceivePolicyDecision',
- 'parameters': (
- ('uint64_t', 'frameID'),
- ('uint64_t', 'listenerID'),
- ('uint32_t', 'policyAction'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'Close',
- 'parameters': (),
- 'conditions': (None),
- },
- {
- 'name': 'PreferencesDidChange',
- 'parameters': (
- ('WebKit::WebPreferencesStore', 'store'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'SendDoubleAndFloat',
- 'parameters': (
- ('double', 'd'),
- ('float', 'f'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'SendInts',
- 'parameters': (
- ('Vector<uint64_t>', 'ints'),
- ('Vector<Vector<uint64_t>>', 'intVectors')
- ),
- 'conditions': (None),
- },
- {
- 'name': 'CreatePlugin',
- 'parameters': (
- ('uint64_t', 'pluginInstanceID'),
- ('WebKit::Plugin::Parameters', 'parameters')
- ),
- 'reply_parameters': (
- ('bool', 'result'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'RunJavaScriptAlert',
- 'parameters': (
- ('uint64_t', 'frameID'),
- ('String', 'message')
- ),
- 'reply_parameters': (),
- 'conditions': (None),
- },
- {
- 'name': 'GetPlugins',
- 'parameters': (
- ('bool', 'refresh'),
- ),
- 'reply_parameters': (
- ('Vector<WebCore::PluginInfo>', 'plugins'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'GetPluginProcessConnection',
- 'parameters': (
- ('String', 'pluginPath'),
- ),
- 'reply_parameters': (
- ('IPC::Connection::Handle', 'connectionHandle'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'TestMultipleAttributes',
- 'parameters': (
- ),
- 'reply_parameters': (
- ),
- 'conditions': (None),
- },
- {
- 'name': 'TestParameterAttributes',
- 'parameters': (
- ('uint64_t', 'foo', ('AttributeOne', 'AttributeTwo')),
- ('double', 'bar'),
- ('double', 'baz', ('AttributeThree',)),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'TemplateTest',
- 'parameters': (
- ('HashMap<String, std::pair<String, uint64_t>>', 'a'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'SetVideoLayerID',
- 'parameters': (
- ('WebCore::GraphicsLayer::PlatformLayerID', 'videoLayerID'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'DidCreateWebProcessConnection',
- 'parameters': (
- ('IPC::MachPort', 'connectionIdentifier'),
- ('OptionSet<WebKit::SelectionFlags>', 'flags'),
- ),
- 'conditions': ('PLATFORM(MAC)'),
- },
- {
- 'name': 'InterpretKeyEvent',
- 'parameters': (
- ('uint32_t', 'type'),
- ),
- 'reply_parameters': (
- ('Vector<WebCore::KeypressCommand>', 'commandName'),
- ),
- 'conditions': ('PLATFORM(MAC)'),
- },
- {
- 'name': 'DeprecatedOperation',
- 'parameters': (
- ('IPC::DummyType', 'dummy'),
- ),
- 'conditions': ('ENABLE(DEPRECATED_FEATURE)'),
- },
- {
- 'name': 'ExperimentalOperation',
- 'parameters': (
- ('IPC::DummyType', 'dummy'),
- ),
- 'conditions': ('ENABLE(EXPERIMENTAL_FEATURE)'),
- }
- ),
-}
-_expected_results = dict(_base_expected_results, name='TestWithoutAttributes')
+def parse_receiver(receiver_name):
+ with open(os.path.join(tests_directory, '{}.messages.in'.format(receiver_name))) as in_file:
+ return parser.parse(in_file)
+ assert(False)
-_expected_legacy_results = dict(_base_expected_results, name='TestWithLegacyReceiver')
-_expected_superclass_results = {
- 'name': 'TestWithSuperclass',
- 'superclass': 'WebPageBase',
- 'conditions': None,
- 'messages': (
- {
- 'name': 'LoadURL',
- 'parameters': (
- ('String', 'url'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'TestAsyncMessage',
- 'parameters': (
- ('WebKit::TestTwoStateEnum', 'twoStateEnum'),
- ),
- 'reply_parameters': (
- ('uint64_t', 'result'),
- ),
- 'conditions': ('ENABLE(TEST_FEATURE)'),
- },
- {
- 'name': 'TestAsyncMessageWithNoArguments',
- 'parameters': (),
- 'reply_parameters': (),
- 'conditions': ('ENABLE(TEST_FEATURE)'),
- },
- {
- 'name': 'TestAsyncMessageWithMultipleArguments',
- 'parameters': (),
- 'reply_parameters': (
- ('bool', 'flag'),
- ('uint64_t', 'value'),
- ),
- 'conditions': ('ENABLE(TEST_FEATURE)'),
- },
- {
- 'name': 'TestAsyncMessageWithConnection',
- 'parameters': (
- ('int', 'value'),
- ),
- 'reply_parameters': (
- ('bool', 'flag'),
- ),
- 'conditions': ('ENABLE(TEST_FEATURE)'),
- },
- {
- 'name': 'TestSyncMessage',
- 'parameters': (
- ('uint32_t', 'param'),
- ),
- 'reply_parameters': (
- ('uint8_t', 'reply'),
- ),
- 'conditions': (None),
- },
- {
- 'name': 'TestSynchronousMessage',
- 'parameters': (
- ('bool', 'value'),
- ),
- 'reply_parameters': (
- ('Optional<WebKit::TestClassName>', 'optionalReply'),
- ),
- 'conditions': (None),
- },
- ),
-}
-
-
-class MessagesTest(unittest.TestCase):
+class GeneratedFileContentsTest(unittest.TestCase):
def setUp(self):
- self.receiver = parser.parse(StringIO(_messages_file_contents))
- self.legacy_receiver = parser.parse(StringIO(_legacy_messages_file_contents))
- self.superclass_receiver = parser.parse(StringIO(_superclass_messages_file_contents))
+ self.test_receivers = [parse_receiver(receiver_name) for receiver_name in _test_receiver_names]
+ self.receivers = model.generate_global_model(self.test_receivers)
-
-class ParsingTest(MessagesTest):
- def check_message(self, message, expected_message):
- self.assertEquals(message.name, expected_message['name'])
- self.assertEquals(len(message.parameters), len(expected_message['parameters']))
- for index, parameter in enumerate(message.parameters):
- expected_parameter = expected_message['parameters'][index]
- self.assertEquals(parameter.type, expected_parameter[0])
- self.assertEquals(parameter.name, expected_parameter[1])
- if len(expected_parameter) > 2:
- self.assertEquals(parameter.attributes, frozenset(expected_parameter[2]))
- for attribute in expected_parameter[2]:
- self.assertTrue(parameter.has_attribute(attribute))
- else:
- self.assertEquals(parameter.attributes, frozenset())
- if message.reply_parameters is not None:
- for index, parameter in enumerate(message.reply_parameters):
- self.assertEquals(parameter.type, expected_message['reply_parameters'][index][0])
- self.assertEquals(parameter.name, expected_message['reply_parameters'][index][1])
- else:
- self.assertFalse('reply_parameters' in expected_message)
- self.assertEquals(message.condition, expected_message['conditions'])
-
- def test_receiver(self):
- """Receiver should be parsed as expected"""
- self.assertEquals(self.receiver.name, _expected_results['name'])
- self.assertEquals(self.receiver.condition, _expected_results['conditions'])
- self.assertEquals(len(self.receiver.messages), len(_expected_results['messages']))
- for index, message in enumerate(self.receiver.messages):
- self.check_message(message, _expected_results['messages'][index])
-
- self.assertEquals(self.legacy_receiver.name, _expected_legacy_results['name'])
- self.assertEquals(self.legacy_receiver.condition, _expected_legacy_results['conditions'])
- self.assertEquals(len(self.legacy_receiver.messages), len(_expected_legacy_results['messages']))
- for index, message in enumerate(self.legacy_receiver.messages):
- self.check_message(message, _expected_legacy_results['messages'][index])
-
- self.assertEquals(self.superclass_receiver.name, _expected_superclass_results['name'])
- self.assertEquals(self.superclass_receiver.superclass, _expected_superclass_results['superclass'])
- self.assertEquals(len(self.superclass_receiver.messages), len(_expected_superclass_results['messages']))
- for index, message in enumerate(self.superclass_receiver.messages):
- self.check_message(message, _expected_superclass_results['messages'][index])
-
-
-class GeneratedFileContentsTest(unittest.TestCase):
def assertGeneratedFileContentsEqual(self, actual_file_contents, expected_file_name):
try:
if reset_results:
@@ -385,49 +77,28 @@
self.assertEquals(actual_line, expected_line_list[index])
self.assertEquals(len(actual_line_list), len(expected_line_list))
- except:
+ except Exception:
sys.stderr.write('In expected file %s\n' % expected_file_name)
raise
- def assertHeaderEqual(self, input_messages_file_contents, expected_file_name):
- actual_file_contents = messages.generate_messages_header(parser.parse(StringIO(input_messages_file_contents)))
- self.assertGeneratedFileContentsEqual(actual_file_contents, expected_file_name)
+ def test_receiver(self):
+ for receiver_name, receiver in zip(_test_receiver_names, self.test_receivers):
+ header_contents = messages.generate_messages_header(receiver)
+ self.assertGeneratedFileContentsEqual(header_contents, os.path.join(tests_directory, '{}Messages.h'.format(receiver_name)))
+ implementation_contents = messages.generate_message_handler(receiver)
+ self.assertGeneratedFileContentsEqual(implementation_contents, os.path.join(tests_directory, '{}MessageReceiver.cpp'.format(receiver_name)))
- def assertImplementationEqual(self, input_messages_file_contents, expected_file_name):
- actual_file_contents = messages.generate_message_handler(parser.parse(StringIO(input_messages_file_contents)))
- self.assertGeneratedFileContentsEqual(actual_file_contents, expected_file_name)
+ def test_message_names(self):
+ header_contents = messages.generate_message_names_header(self.receivers)
+ self.assertGeneratedFileContentsEqual(header_contents, os.path.join(tests_directory, 'MessageNames.h'))
+ implementation_contents = messages.generate_message_names_implementation(self.receivers)
+ self.assertGeneratedFileContentsEqual(implementation_contents, os.path.join(tests_directory, 'MessageNames.cpp'))
+ def test_message_argument_description(self):
+ receiver_header_files = ['{}Messages.h'.format(receiver.name) for receiver in self.receivers]
+ implementation_contents = messages.generate_message_argument_description_implementation(self.receivers, receiver_header_files)
+ self.assertGeneratedFileContentsEqual(implementation_contents, os.path.join(tests_directory, 'MessageArgumentDescriptions.cpp'))
-class HeaderTest(GeneratedFileContentsTest):
- def test_receiver_headers(self):
- self.assertHeaderEqual(_messages_file_contents,
- _expected_receiver_header_file_name)
- self.assertHeaderEqual(_legacy_messages_file_contents,
- _expected_legacy_receiver_header_file_name)
- self.assertHeaderEqual(_superclass_messages_file_contents,
- _expected_superclass_receiver_header_file_name)
-
-
-class ReceiverImplementationTest(GeneratedFileContentsTest):
- def test_receiver_implementations(self):
- self.assertImplementationEqual(_messages_file_contents,
- _expected_receiver_implementation_file_name)
- self.assertImplementationEqual(_legacy_messages_file_contents,
- _expected_legacy_receiver_implementation_file_name)
- self.assertImplementationEqual(_superclass_messages_file_contents,
- _expected_superclass_receiver_implementation_file_name)
-
-
-class UnsupportedPrecompilerDirectiveTest(unittest.TestCase):
- def test_error_at_else(self):
- with self.assertRaisesRegexp(Exception, r"ERROR: '#else.*' is not supported in the \*\.in files"):
- messages.generate_message_handler(parser.parse(StringIO("asd\n#else bla\nfoo")))
-
- def test_error_at_elif(self):
- with self.assertRaisesRegexp(Exception, r"ERROR: '#elif.*' is not supported in the \*\.in files"):
- messages.generate_message_handler(parser.parse(StringIO("asd\n#elif bla\nfoo")))
-
-
def add_reset_results_to_unittest_help():
script_name = os.path.basename(__file__)
reset_results_help = '''
Modified: trunk/Source/WebKit/Scripts/webkit/model.py (271236 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/model.py 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/Scripts/webkit/model.py 2021-01-07 17:04:21 UTC (rev 271237)
@@ -24,6 +24,9 @@
from collections import Counter
+BUILTIN_ATTRIBUTE = "Builtin"
+ASYNC_ATTRIBUTE = "Async"
+
class MessageReceiver(object):
def __init__(self, name, superclass, attributes, messages, condition):
self.name = name
@@ -64,7 +67,15 @@
return attribute in self.attributes
-def check_global_model(receivers):
+ipc_receiver = MessageReceiver(name="IPC", superclass=None, attributes=[BUILTIN_ATTRIBUTE], messages=[
+ Message('WrappedAsyncMessageForTesting', [], [], attributes=[BUILTIN_ATTRIBUTE], condition=None),
+ Message('SyncMessageReply', [], [], attributes=[BUILTIN_ATTRIBUTE], condition=None),
+ Message('InitializeConnection', [], [], attributes=[BUILTIN_ATTRIBUTE], condition="PLATFORM(COCOA)"),
+ Message('LegacySessionState', [], [], attributes=[BUILTIN_ATTRIBUTE], condition=None)
+], condition=None)
+
+
+def check_global_model_inputs(receivers):
errors = []
receiver_counts = Counter([r.name for r in receivers])
receiver_duplicates = [n for n, c in receiver_counts.items() if c > 1]
@@ -72,3 +83,13 @@
errors.append('Duplicate message receiver names: %s' % (', '.join(receiver_duplicates)))
return errors
+
+
+def generate_global_model(receivers):
+ async_reply_messages = []
+ for receiver in receivers:
+ for message in receiver.messages:
+ if message.has_attribute(ASYNC_ATTRIBUTE):
+ async_reply_messages.append(Message(name='%s_%sReply' % (receiver.name, message.name), parameters=message.reply_parameters, reply_parameters=[], attributes=None, condition=message.condition))
+ async_reply_receiver = MessageReceiver(name='AsyncReply', superclass='None', attributes=[BUILTIN_ATTRIBUTE], messages=async_reply_messages, condition=None)
+ return [ipc_receiver, async_reply_receiver] + receivers
Modified: trunk/Source/WebKit/Scripts/webkit/model_unittest.py (271236 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/model_unittest.py 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/Scripts/webkit/model_unittest.py 2021-01-07 17:04:21 UTC (rev 271237)
@@ -59,7 +59,7 @@
self.assertEquals(other_receiver.name, 'WebPage')
self.assertEquals(other_receiver.messages[0].name, 'LoadURL')
self.assertEquals(other_receiver.messages[1].name, 'LoadURL2')
- errors = model.check_global_model([receiver, other_receiver])
+ errors = model.check_global_model_inputs([receiver, other_receiver])
self.assertEquals(len(errors), 1)
self.assertTrue("Duplicate" in errors[0])
Copied: trunk/Source/WebKit/Scripts/webkit/parser_unittest.py (from rev 271236, trunk/Source/WebKit/Scripts/webkit/messages_unittest.py) (0 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/parser_unittest.py (rev 0)
+++ trunk/Source/WebKit/Scripts/webkit/parser_unittest.py 2021-01-07 17:04:21 UTC (rev 271237)
@@ -0,0 +1,356 @@
+# Copyright (C) 2010-2018 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Examples of how to run:
+# python Source/WebKit/Scripts/webkit/parser_unittest.py
+# cd Source/WebKit/Scripts && python -m webkit.parser_unittest
+# cd Source/WebKit/Scripts && python -m unittest discover -p '*_unittest.py'
+
+import os
+import re
+import sys
+import unittest
+
+if sys.version_info > (3, 0):
+ from io import StringIO
+else:
+ from StringIO import StringIO
+
+module_directory = os.path.dirname(os.path.abspath(__file__))
+
+sys.path.append(os.path.abspath(os.path.join(module_directory, os.path.pardir)))
+from webkit import parser # noqa: E402
+
+tests_directory = os.path.join(module_directory, 'tests')
+
+_expected_model_base = {
+ 'conditions': ('(ENABLE(WEBKIT2) && (NESTED_MASTER_CONDITION || MASTER_OR && MASTER_AND))'),
+ 'messages': (
+ {
+ 'name': 'LoadURL',
+ 'parameters': (
+ ('String', 'url'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'LoadSomething',
+ 'parameters': (
+ ('String', 'url'),
+ ),
+ 'conditions': ('ENABLE(TOUCH_EVENTS)'),
+ },
+ {
+ 'name': 'TouchEvent',
+ 'parameters': (
+ ('WebKit::WebTouchEvent', 'event'),
+ ),
+ 'conditions': ('(ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION || SOME_OTHER_MESSAGE_CONDITION))'),
+ },
+ {
+ 'name': 'AddEvent',
+ 'parameters': (
+ ('WebKit::WebTouchEvent', 'event'),
+ ),
+ 'conditions': ('(ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION && SOME_OTHER_MESSAGE_CONDITION))'),
+ },
+ {
+ 'name': 'LoadSomethingElse',
+ 'parameters': (
+ ('String', 'url'),
+ ),
+ 'conditions': ('ENABLE(TOUCH_EVENTS)'),
+ },
+ {
+ 'name': 'DidReceivePolicyDecision',
+ 'parameters': (
+ ('uint64_t', 'frameID'),
+ ('uint64_t', 'listenerID'),
+ ('uint32_t', 'policyAction'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'Close',
+ 'parameters': (),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'PreferencesDidChange',
+ 'parameters': (
+ ('WebKit::WebPreferencesStore', 'store'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'SendDoubleAndFloat',
+ 'parameters': (
+ ('double', 'd'),
+ ('float', 'f'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'SendInts',
+ 'parameters': (
+ ('Vector<uint64_t>', 'ints'),
+ ('Vector<Vector<uint64_t>>', 'intVectors')
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'CreatePlugin',
+ 'parameters': (
+ ('uint64_t', 'pluginInstanceID'),
+ ('WebKit::Plugin::Parameters', 'parameters')
+ ),
+ 'reply_parameters': (
+ ('bool', 'result'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'RunJavaScriptAlert',
+ 'parameters': (
+ ('uint64_t', 'frameID'),
+ ('String', 'message')
+ ),
+ 'reply_parameters': (),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'GetPlugins',
+ 'parameters': (
+ ('bool', 'refresh'),
+ ),
+ 'reply_parameters': (
+ ('Vector<WebCore::PluginInfo>', 'plugins'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'GetPluginProcessConnection',
+ 'parameters': (
+ ('String', 'pluginPath'),
+ ),
+ 'reply_parameters': (
+ ('IPC::Connection::Handle', 'connectionHandle'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'TestMultipleAttributes',
+ 'parameters': (
+ ),
+ 'reply_parameters': (
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'TestParameterAttributes',
+ 'parameters': (
+ ('uint64_t', 'foo', ('AttributeOne', 'AttributeTwo')),
+ ('double', 'bar'),
+ ('double', 'baz', ('AttributeThree',)),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'TemplateTest',
+ 'parameters': (
+ ('HashMap<String, std::pair<String, uint64_t>>', 'a'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'SetVideoLayerID',
+ 'parameters': (
+ ('WebCore::GraphicsLayer::PlatformLayerID', 'videoLayerID'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'DidCreateWebProcessConnection',
+ 'parameters': (
+ ('IPC::MachPort', 'connectionIdentifier'),
+ ('OptionSet<WebKit::SelectionFlags>', 'flags'),
+ ),
+ 'conditions': ('PLATFORM(MAC)'),
+ },
+ {
+ 'name': 'InterpretKeyEvent',
+ 'parameters': (
+ ('uint32_t', 'type'),
+ ),
+ 'reply_parameters': (
+ ('Vector<WebCore::KeypressCommand>', 'commandName'),
+ ),
+ 'conditions': ('PLATFORM(MAC)'),
+ },
+ {
+ 'name': 'DeprecatedOperation',
+ 'parameters': (
+ ('IPC::DummyType', 'dummy'),
+ ),
+ 'conditions': ('ENABLE(DEPRECATED_FEATURE)'),
+ },
+ {
+ 'name': 'ExperimentalOperation',
+ 'parameters': (
+ ('IPC::DummyType', 'dummy'),
+ ),
+ 'conditions': ('ENABLE(EXPERIMENTAL_FEATURE)'),
+ }
+ ),
+}
+
+_expected_model_test_without_attributes = dict(_expected_model_base, name='TestWithoutAttributes')
+
+_expected_model_test_with_legacy_receiver = dict(_expected_model_base, name='TestWithLegacyReceiver')
+
+_expected_model_test_with_superclass = {
+ 'name': 'TestWithSuperclass',
+ 'superclass': 'WebPageBase',
+ 'conditions': None,
+ 'messages': (
+ {
+ 'name': 'LoadURL',
+ 'parameters': (
+ ('String', 'url'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'TestAsyncMessage',
+ 'parameters': (
+ ('WebKit::TestTwoStateEnum', 'twoStateEnum'),
+ ),
+ 'reply_parameters': (
+ ('uint64_t', 'result'),
+ ),
+ 'conditions': ('ENABLE(TEST_FEATURE)'),
+ },
+ {
+ 'name': 'TestAsyncMessageWithNoArguments',
+ 'parameters': (),
+ 'reply_parameters': (),
+ 'conditions': ('ENABLE(TEST_FEATURE)'),
+ },
+ {
+ 'name': 'TestAsyncMessageWithMultipleArguments',
+ 'parameters': (),
+ 'reply_parameters': (
+ ('bool', 'flag'),
+ ('uint64_t', 'value'),
+ ),
+ 'conditions': ('ENABLE(TEST_FEATURE)'),
+ },
+ {
+ 'name': 'TestAsyncMessageWithConnection',
+ 'parameters': (
+ ('int', 'value'),
+ ),
+ 'reply_parameters': (
+ ('bool', 'flag'),
+ ),
+ 'conditions': ('ENABLE(TEST_FEATURE)'),
+ },
+ {
+ 'name': 'TestSyncMessage',
+ 'parameters': (
+ ('uint32_t', 'param'),
+ ),
+ 'reply_parameters': (
+ ('uint8_t', 'reply'),
+ ),
+ 'conditions': (None),
+ },
+ {
+ 'name': 'TestSynchronousMessage',
+ 'parameters': (
+ ('bool', 'value'),
+ ),
+ 'reply_parameters': (
+ ('Optional<WebKit::TestClassName>', 'optionalReply'),
+ ),
+ 'conditions': (None),
+ },
+ ),
+}
+
+
+_parsing_test_cases = [
+ _expected_model_test_without_attributes,
+ _expected_model_test_with_legacy_receiver,
+ _expected_model_test_with_superclass
+]
+
+
+def parse_receiver(receiver_name):
+ with open(os.path.join(tests_directory, '{}.messages.in'.format(receiver_name))) as in_file:
+ return parser.parse(in_file)
+ assert(False)
+
+
+class ParsingTest(unittest.TestCase):
+ def setUp(self):
+ self.receivers = [parse_receiver(expected_model['name']) for expected_model in _parsing_test_cases]
+
+ def check_message(self, message, expected_message):
+ self.assertEquals(message.name, expected_message['name'])
+ self.assertEquals(len(message.parameters), len(expected_message['parameters']))
+ for index, parameter in enumerate(message.parameters):
+ expected_parameter = expected_message['parameters'][index]
+ self.assertEquals(parameter.type, expected_parameter[0])
+ self.assertEquals(parameter.name, expected_parameter[1])
+ if len(expected_parameter) > 2:
+ self.assertEquals(parameter.attributes, frozenset(expected_parameter[2]))
+ for attribute in expected_parameter[2]:
+ self.assertTrue(parameter.has_attribute(attribute))
+ else:
+ self.assertEquals(parameter.attributes, frozenset())
+ if message.reply_parameters is not None:
+ for index, parameter in enumerate(message.reply_parameters):
+ self.assertEquals(parameter.type, expected_message['reply_parameters'][index][0])
+ self.assertEquals(parameter.name, expected_message['reply_parameters'][index][1])
+ else:
+ self.assertFalse('reply_parameters' in expected_message)
+ self.assertEquals(message.condition, expected_message['conditions'])
+
+ def test_receiver(self):
+ """Receiver should be parsed as expected"""
+ for receiver, expected_model in zip(self.receivers, _parsing_test_cases):
+ self.assertEquals(receiver.name, expected_model['name'])
+ self.assertEquals(receiver.condition, expected_model['conditions'])
+ self.assertEquals(len(receiver.messages), len(expected_model['messages']))
+ for index, message in enumerate(receiver.messages):
+ self.check_message(message, expected_model['messages'][index])
+
+
+class UnsupportedPrecompilerDirectiveTest(unittest.TestCase):
+ def test_error_at_else(self):
+ with self.assertRaisesRegexp(Exception, r"ERROR: '#else.*' is not supported in the \*\.in files"):
+ parser.parse(StringIO("asd\n#else bla\nfoo"))
+
+ def test_error_at_elif(self):
+ with self.assertRaisesRegexp(Exception, r"ERROR: '#elif.*' is not supported in the \*\.in files"):
+ parser.parse(StringIO("asd\n#elif bla\nfoo"))
Modified: trunk/Source/WebKit/Scripts/webkit/tests/Makefile (271236 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/tests/Makefile 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/Scripts/webkit/tests/Makefile 2021-01-07 17:04:21 UTC (rev 271237)
@@ -1,2 +1,2 @@
all:
- python ../../generate-message-receiver.py . TestWithSuperclass TestWithLegacyReceiver TestWithoutAttributes
+ python ../../generate-message-receiver.py . TestWithSuperclass TestWithLegacyReceiver TestWithoutAttributes TestWithIfMessage
Modified: trunk/Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp (271236 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp 2021-01-07 17:04:21 UTC (rev 271237)
@@ -44,6 +44,7 @@
#if ENABLE(TEST_FEATURE)
#include "TestTwoStateEnum.h"
#endif
+#include "TestWithIfMessageMessages.h"
#include "TestWithLegacyReceiverMessages.h"
#include "TestWithSuperclassMessages.h"
#include "TestWithoutAttributesMessages.h"
@@ -207,6 +208,14 @@
return jsValueForDecodedArguments<Messages::TestWithoutAttributes::ExperimentalOperation::Arguments>(globalObject, decoder);
#endif
#endif
+#if PLATFORM(COCOA)
+ case MessageName::TestWithIfMessage_LoadURL:
+ return jsValueForDecodedArguments<Messages::TestWithIfMessage::LoadURL::Arguments>(globalObject, decoder);
+#endif
+#if PLATFORM(GTK)
+ case MessageName::TestWithIfMessage_LoadURL:
+ return jsValueForDecodedArguments<Messages::TestWithIfMessage::LoadURL::Arguments>(globalObject, decoder);
+#endif
default:
break;
}
@@ -495,6 +504,19 @@
};
#endif
#endif
+#if PLATFORM(COCOA)
+ case MessageName::TestWithIfMessage_LoadURL:
+ return Vector<ArgumentDescription> {
+ {"url", "String", nullptr, false},
+ };
+#endif
+#if PLATFORM(GTK)
+ case MessageName::TestWithIfMessage_LoadURL:
+ return Vector<ArgumentDescription> {
+ {"url", "String", nullptr, false},
+ {"value", "int64_t", nullptr, false},
+ };
+#endif
default:
break;
}
Modified: trunk/Source/WebKit/Scripts/webkit/tests/MessageNames.cpp (271236 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/tests/MessageNames.cpp 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/Scripts/webkit/tests/MessageNames.cpp 2021-01-07 17:04:21 UTC (rev 271237)
@@ -30,6 +30,8 @@
const char* description(MessageName name)
{
switch (name) {
+ case MessageName::TestWithIfMessage_LoadURL:
+ return "TestWithIfMessage_LoadURL";
case MessageName::TestWithLegacyReceiver_AddEvent:
return "TestWithLegacyReceiver_AddEvent";
case MessageName::TestWithLegacyReceiver_Close:
@@ -78,20 +80,12 @@
return "TestWithSuperclass_LoadURL";
case MessageName::TestWithSuperclass_TestAsyncMessage:
return "TestWithSuperclass_TestAsyncMessage";
- case MessageName::TestWithSuperclass_TestAsyncMessageReply:
- return "TestWithSuperclass_TestAsyncMessageReply";
case MessageName::TestWithSuperclass_TestAsyncMessageWithConnection:
return "TestWithSuperclass_TestAsyncMessageWithConnection";
- case MessageName::TestWithSuperclass_TestAsyncMessageWithConnectionReply:
- return "TestWithSuperclass_TestAsyncMessageWithConnectionReply";
case MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArguments:
return "TestWithSuperclass_TestAsyncMessageWithMultipleArguments";
- case MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArgumentsReply:
- return "TestWithSuperclass_TestAsyncMessageWithMultipleArgumentsReply";
case MessageName::TestWithSuperclass_TestAsyncMessageWithNoArguments:
return "TestWithSuperclass_TestAsyncMessageWithNoArguments";
- case MessageName::TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply:
- return "TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply";
case MessageName::TestWithSuperclass_TestSyncMessage:
return "TestWithSuperclass_TestSyncMessage";
case MessageName::TestWithSuperclass_TestSynchronousMessage:
@@ -140,14 +134,22 @@
return "TestWithoutAttributes_TestParameterAttributes";
case MessageName::TestWithoutAttributes_TouchEvent:
return "TestWithoutAttributes_TouchEvent";
- case MessageName::WrappedAsyncMessageForTesting:
- return "IPC::WrappedAsyncMessageForTesting";
- case MessageName::SyncMessageReply:
- return "IPC::SyncMessageReply";
case MessageName::InitializeConnection:
- return "IPC::InitializeConnection";
+ return "InitializeConnection";
case MessageName::LegacySessionState:
- return "IPC::LegacySessionState";
+ return "LegacySessionState";
+ case MessageName::SyncMessageReply:
+ return "SyncMessageReply";
+ case MessageName::WrappedAsyncMessageForTesting:
+ return "WrappedAsyncMessageForTesting";
+ case MessageName::TestWithSuperclass_TestAsyncMessageReply:
+ return "TestWithSuperclass_TestAsyncMessageReply";
+ case MessageName::TestWithSuperclass_TestAsyncMessageWithConnectionReply:
+ return "TestWithSuperclass_TestAsyncMessageWithConnectionReply";
+ case MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArgumentsReply:
+ return "TestWithSuperclass_TestAsyncMessageWithMultipleArgumentsReply";
+ case MessageName::TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply:
+ return "TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply";
}
ASSERT_NOT_REACHED();
return "<invalid message name>";
@@ -156,14 +158,8 @@
ReceiverName receiverName(MessageName messageName)
{
switch (messageName) {
- case MessageName::TestWithSuperclass_LoadURL:
- case MessageName::TestWithSuperclass_TestAsyncMessage:
- case MessageName::TestWithSuperclass_TestAsyncMessageWithConnection:
- case MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArguments:
- case MessageName::TestWithSuperclass_TestAsyncMessageWithNoArguments:
- case MessageName::TestWithSuperclass_TestSyncMessage:
- case MessageName::TestWithSuperclass_TestSynchronousMessage:
- return ReceiverName::TestWithSuperclass;
+ case MessageName::TestWithIfMessage_LoadURL:
+ return ReceiverName::TestWithIfMessage;
case MessageName::TestWithLegacyReceiver_AddEvent:
case MessageName::TestWithLegacyReceiver_Close:
case MessageName::TestWithLegacyReceiver_CreatePlugin:
@@ -187,6 +183,14 @@
case MessageName::TestWithLegacyReceiver_TestParameterAttributes:
case MessageName::TestWithLegacyReceiver_TouchEvent:
return ReceiverName::TestWithLegacyReceiver;
+ case MessageName::TestWithSuperclass_LoadURL:
+ case MessageName::TestWithSuperclass_TestAsyncMessage:
+ case MessageName::TestWithSuperclass_TestAsyncMessageWithConnection:
+ case MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArguments:
+ case MessageName::TestWithSuperclass_TestAsyncMessageWithNoArguments:
+ case MessageName::TestWithSuperclass_TestSyncMessage:
+ case MessageName::TestWithSuperclass_TestSynchronousMessage:
+ return ReceiverName::TestWithSuperclass;
case MessageName::TestWithoutAttributes_AddEvent:
case MessageName::TestWithoutAttributes_Close:
case MessageName::TestWithoutAttributes_CreatePlugin:
@@ -210,16 +214,16 @@
case MessageName::TestWithoutAttributes_TestParameterAttributes:
case MessageName::TestWithoutAttributes_TouchEvent:
return ReceiverName::TestWithoutAttributes;
+ case MessageName::InitializeConnection:
+ case MessageName::LegacySessionState:
+ case MessageName::SyncMessageReply:
+ case MessageName::WrappedAsyncMessageForTesting:
+ return ReceiverName::IPC;
case MessageName::TestWithSuperclass_TestAsyncMessageReply:
case MessageName::TestWithSuperclass_TestAsyncMessageWithConnectionReply:
case MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArgumentsReply:
case MessageName::TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply:
return ReceiverName::AsyncReply;
- case MessageName::WrappedAsyncMessageForTesting:
- case MessageName::SyncMessageReply:
- case MessageName::InitializeConnection:
- case MessageName::LegacySessionState:
- return ReceiverName::IPC;
}
ASSERT_NOT_REACHED();
return ReceiverName::Invalid;
@@ -227,108 +231,128 @@
bool isValidMessageName(MessageName messageName)
{
- if (messageName == IPC::MessageName::TestWithSuperclass_LoadURL)
+#if PLATFORM(COCOA)
+ if (messageName == IPC::MessageName::TestWithIfMessage_LoadURL)
return true;
-#if ENABLE(TEST_FEATURE)
- if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessage)
+#endif
+#if PLATFORM(GTK)
+ if (messageName == IPC::MessageName::TestWithIfMessage_LoadURL)
return true;
- if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageReply)
+#endif
+#if (ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION && SOME_OTHER_MESSAGE_CONDITION))
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_AddEvent)
return true;
#endif
-#if ENABLE(TEST_FEATURE)
- if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithNoArguments)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_Close)
return true;
- if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_CreatePlugin)
return true;
+#if ENABLE(DEPRECATED_FEATURE)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_DeprecatedOperation)
+ return true;
#endif
-#if ENABLE(TEST_FEATURE)
- if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArguments)
+#if PLATFORM(MAC)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_DidCreateWebProcessConnection)
return true;
- if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArgumentsReply)
- return true;
#endif
-#if ENABLE(TEST_FEATURE)
- if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithConnection)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_DidReceivePolicyDecision)
return true;
- if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithConnectionReply)
+#if ENABLE(EXPERIMENTAL_FEATURE)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_ExperimentalOperation)
return true;
#endif
- if (messageName == IPC::MessageName::TestWithSuperclass_TestSyncMessage)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_GetPluginProcessConnection)
return true;
- if (messageName == IPC::MessageName::TestWithSuperclass_TestSynchronousMessage)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_GetPlugins)
return true;
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_LoadURL)
+#if PLATFORM(MAC)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_InterpretKeyEvent)
return true;
+#endif
#if ENABLE(TOUCH_EVENTS)
if (messageName == IPC::MessageName::TestWithLegacyReceiver_LoadSomething)
return true;
#endif
-#if (ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION || SOME_OTHER_MESSAGE_CONDITION))
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_TouchEvent)
- return true;
-#endif
-#if (ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION && SOME_OTHER_MESSAGE_CONDITION))
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_AddEvent)
- return true;
-#endif
#if ENABLE(TOUCH_EVENTS)
if (messageName == IPC::MessageName::TestWithLegacyReceiver_LoadSomethingElse)
return true;
#endif
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_DidReceivePolicyDecision)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_LoadURL)
return true;
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_Close)
- return true;
if (messageName == IPC::MessageName::TestWithLegacyReceiver_PreferencesDidChange)
return true;
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_RunJavaScriptAlert)
+ return true;
if (messageName == IPC::MessageName::TestWithLegacyReceiver_SendDoubleAndFloat)
return true;
if (messageName == IPC::MessageName::TestWithLegacyReceiver_SendInts)
return true;
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_CreatePlugin)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_SetVideoLayerID)
return true;
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_RunJavaScriptAlert)
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_TemplateTest)
return true;
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_GetPlugins)
- return true;
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_GetPluginProcessConnection)
- return true;
if (messageName == IPC::MessageName::TestWithLegacyReceiver_TestMultipleAttributes)
return true;
if (messageName == IPC::MessageName::TestWithLegacyReceiver_TestParameterAttributes)
return true;
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_TemplateTest)
+#if (ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION || SOME_OTHER_MESSAGE_CONDITION))
+ if (messageName == IPC::MessageName::TestWithLegacyReceiver_TouchEvent)
return true;
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_SetVideoLayerID)
+#endif
+ if (messageName == IPC::MessageName::TestWithSuperclass_LoadURL)
return true;
-#if PLATFORM(MAC)
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_DidCreateWebProcessConnection)
+#if ENABLE(TEST_FEATURE)
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessage)
return true;
#endif
-#if PLATFORM(MAC)
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_InterpretKeyEvent)
+#if ENABLE(TEST_FEATURE)
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithConnection)
return true;
#endif
+#if ENABLE(TEST_FEATURE)
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArguments)
+ return true;
+#endif
+#if ENABLE(TEST_FEATURE)
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithNoArguments)
+ return true;
+#endif
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestSyncMessage)
+ return true;
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestSynchronousMessage)
+ return true;
+#if (ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION && SOME_OTHER_MESSAGE_CONDITION))
+ if (messageName == IPC::MessageName::TestWithoutAttributes_AddEvent)
+ return true;
+#endif
+ if (messageName == IPC::MessageName::TestWithoutAttributes_Close)
+ return true;
+ if (messageName == IPC::MessageName::TestWithoutAttributes_CreatePlugin)
+ return true;
#if ENABLE(DEPRECATED_FEATURE)
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_DeprecatedOperation)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_DeprecatedOperation)
return true;
#endif
-#if ENABLE(EXPERIMENTAL_FEATURE)
- if (messageName == IPC::MessageName::TestWithLegacyReceiver_ExperimentalOperation)
+#if PLATFORM(MAC)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_DidCreateWebProcessConnection)
return true;
#endif
- if (messageName == IPC::MessageName::TestWithoutAttributes_LoadURL)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_DidReceivePolicyDecision)
return true;
-#if ENABLE(TOUCH_EVENTS)
- if (messageName == IPC::MessageName::TestWithoutAttributes_LoadSomething)
+#if ENABLE(EXPERIMENTAL_FEATURE)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_ExperimentalOperation)
return true;
#endif
-#if (ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION || SOME_OTHER_MESSAGE_CONDITION))
- if (messageName == IPC::MessageName::TestWithoutAttributes_TouchEvent)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_GetPluginProcessConnection)
return true;
+ if (messageName == IPC::MessageName::TestWithoutAttributes_GetPlugins)
+ return true;
+#if PLATFORM(MAC)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_InterpretKeyEvent)
+ return true;
#endif
-#if (ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION && SOME_OTHER_MESSAGE_CONDITION))
- if (messageName == IPC::MessageName::TestWithoutAttributes_AddEvent)
+#if ENABLE(TOUCH_EVENTS)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_LoadSomething)
return true;
#endif
#if ENABLE(TOUCH_EVENTS)
@@ -335,56 +359,54 @@
if (messageName == IPC::MessageName::TestWithoutAttributes_LoadSomethingElse)
return true;
#endif
- if (messageName == IPC::MessageName::TestWithoutAttributes_DidReceivePolicyDecision)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_LoadURL)
return true;
- if (messageName == IPC::MessageName::TestWithoutAttributes_Close)
- return true;
if (messageName == IPC::MessageName::TestWithoutAttributes_PreferencesDidChange)
return true;
+ if (messageName == IPC::MessageName::TestWithoutAttributes_RunJavaScriptAlert)
+ return true;
if (messageName == IPC::MessageName::TestWithoutAttributes_SendDoubleAndFloat)
return true;
if (messageName == IPC::MessageName::TestWithoutAttributes_SendInts)
return true;
- if (messageName == IPC::MessageName::TestWithoutAttributes_CreatePlugin)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_SetVideoLayerID)
return true;
- if (messageName == IPC::MessageName::TestWithoutAttributes_RunJavaScriptAlert)
+ if (messageName == IPC::MessageName::TestWithoutAttributes_TemplateTest)
return true;
- if (messageName == IPC::MessageName::TestWithoutAttributes_GetPlugins)
- return true;
- if (messageName == IPC::MessageName::TestWithoutAttributes_GetPluginProcessConnection)
- return true;
if (messageName == IPC::MessageName::TestWithoutAttributes_TestMultipleAttributes)
return true;
if (messageName == IPC::MessageName::TestWithoutAttributes_TestParameterAttributes)
return true;
- if (messageName == IPC::MessageName::TestWithoutAttributes_TemplateTest)
+#if (ENABLE(TOUCH_EVENTS) && (NESTED_MESSAGE_CONDITION || SOME_OTHER_MESSAGE_CONDITION))
+ if (messageName == IPC::MessageName::TestWithoutAttributes_TouchEvent)
return true;
- if (messageName == IPC::MessageName::TestWithoutAttributes_SetVideoLayerID)
- return true;
-#if PLATFORM(MAC)
- if (messageName == IPC::MessageName::TestWithoutAttributes_DidCreateWebProcessConnection)
- return true;
#endif
-#if PLATFORM(MAC)
- if (messageName == IPC::MessageName::TestWithoutAttributes_InterpretKeyEvent)
+#if PLATFORM(COCOA)
+ if (messageName == IPC::MessageName::InitializeConnection)
return true;
#endif
-#if ENABLE(DEPRECATED_FEATURE)
- if (messageName == IPC::MessageName::TestWithoutAttributes_DeprecatedOperation)
+ if (messageName == IPC::MessageName::LegacySessionState)
return true;
-#endif
-#if ENABLE(EXPERIMENTAL_FEATURE)
- if (messageName == IPC::MessageName::TestWithoutAttributes_ExperimentalOperation)
+ if (messageName == IPC::MessageName::SyncMessageReply)
return true;
-#endif
if (messageName == IPC::MessageName::WrappedAsyncMessageForTesting)
return true;
- if (messageName == IPC::MessageName::SyncMessageReply)
+#if ENABLE(TEST_FEATURE)
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageReply)
return true;
- if (messageName == IPC::MessageName::InitializeConnection)
+#endif
+#if ENABLE(TEST_FEATURE)
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithConnectionReply)
return true;
- if (messageName == IPC::MessageName::LegacySessionState)
+#endif
+#if ENABLE(TEST_FEATURE)
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArgumentsReply)
return true;
+#endif
+#if ENABLE(TEST_FEATURE)
+ if (messageName == IPC::MessageName::TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply)
+ return true;
+#endif
return false;
};
Modified: trunk/Source/WebKit/Scripts/webkit/tests/MessageNames.h (271236 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/tests/MessageNames.h 2021-01-07 16:36:44 UTC (rev 271236)
+++ trunk/Source/WebKit/Scripts/webkit/tests/MessageNames.h 2021-01-07 17:04:21 UTC (rev 271237)
@@ -29,16 +29,18 @@
namespace IPC {
enum class ReceiverName : uint8_t {
- TestWithSuperclass = 1
+ TestWithIfMessage = 1
, TestWithLegacyReceiver = 2
- , TestWithoutAttributes = 3
- , IPC = 4
- , AsyncReply = 5
- , Invalid = 6
+ , TestWithSuperclass = 3
+ , TestWithoutAttributes = 4
+ , IPC = 5
+ , AsyncReply = 6
+ , Invalid = 7
};
enum class MessageName : uint16_t {
- TestWithLegacyReceiver_AddEvent
+ TestWithIfMessage_LoadURL
+ , TestWithLegacyReceiver_AddEvent
, TestWithLegacyReceiver_Close
, TestWithLegacyReceiver_CreatePlugin
, TestWithLegacyReceiver_DeprecatedOperation
@@ -62,13 +64,9 @@
, TestWithLegacyReceiver_TouchEvent
, TestWithSuperclass_LoadURL
, TestWithSuperclass_TestAsyncMessage
- , TestWithSuperclass_TestAsyncMessageReply
, TestWithSuperclass_TestAsyncMessageWithConnection
- , TestWithSuperclass_TestAsyncMessageWithConnectionReply
, TestWithSuperclass_TestAsyncMessageWithMultipleArguments
- , TestWithSuperclass_TestAsyncMessageWithMultipleArgumentsReply
, TestWithSuperclass_TestAsyncMessageWithNoArguments
- , TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply
, TestWithSuperclass_TestSyncMessage
, TestWithSuperclass_TestSynchronousMessage
, TestWithoutAttributes_AddEvent
@@ -93,11 +91,15 @@
, TestWithoutAttributes_TestMultipleAttributes
, TestWithoutAttributes_TestParameterAttributes
, TestWithoutAttributes_TouchEvent
- , WrappedAsyncMessageForTesting
- , SyncMessageReply
, InitializeConnection
, LegacySessionState
- , Last = LegacySessionState
+ , SyncMessageReply
+ , WrappedAsyncMessageForTesting
+ , TestWithSuperclass_TestAsyncMessageReply
+ , TestWithSuperclass_TestAsyncMessageWithConnectionReply
+ , TestWithSuperclass_TestAsyncMessageWithMultipleArgumentsReply
+ , TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply
+ , Last = TestWithSuperclass_TestAsyncMessageWithNoArgumentsReply
};
ReceiverName receiverName(MessageName);
Added: trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessage.messages.in (0 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessage.messages.in (rev 0)
+++ trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessage.messages.in 2021-01-07 17:04:21 UTC (rev 271237)
@@ -0,0 +1,32 @@
+# Copyright (C) 2010 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Tests scenario where #if'ed message should generate isValidMessageName() == true for
+# both cases.
+messages -> TestWithIfMessage {
+#if PLATFORM(COCOA)
+ void LoadURL(String url)
+#endif
+#if PLATFORM(GTK)
+ void LoadURL(String url, int64_t value)
+#endif
+}
Added: trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessageReceiver.cpp (0 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessageReceiver.cpp (rev 0)
+++ trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessageReceiver.cpp 2021-01-07 17:04:21 UTC (rev 271237)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2010-2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "TestWithIfMessage.h"
+
+#if PLATFORM(COCOA) || PLATFORM(GTK)
+#include "ArgumentCoders.h"
+#endif
+#include "Decoder.h"
+#include "HandleMessage.h"
+#include "TestWithIfMessageMessages.h"
+#if PLATFORM(COCOA) || PLATFORM(GTK)
+#include <wtf/text/WTFString.h>
+#endif
+
+namespace WebKit {
+
+void TestWithIfMessage::didReceiveMessage(IPC::Connection& connection, IPC::Decoder& decoder)
+{
+ auto protectedThis = makeRef(*this);
+#if PLATFORM(COCOA)
+ if (decoder.messageName() == Messages::TestWithIfMessage::LoadURL::name()) {
+ IPC::handleMessage<Messages::TestWithIfMessage::LoadURL>(decoder, this, &TestWithIfMessage::loadURL);
+ return;
+ }
+#endif
+#if PLATFORM(GTK)
+ if (decoder.messageName() == Messages::TestWithIfMessage::LoadURL::name()) {
+ IPC::handleMessage<Messages::TestWithIfMessage::LoadURL>(decoder, this, &TestWithIfMessage::loadURL);
+ return;
+ }
+#endif
+ UNUSED_PARAM(connection);
+ UNUSED_PARAM(decoder);
+ ASSERT_NOT_REACHED();
+}
+
+} // namespace WebKit
Added: trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessages.h (0 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessages.h (rev 0)
+++ trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessages.h 2021-01-07 17:04:21 UTC (rev 271237)
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2010-2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "ArgumentCoders.h"
+#include "Connection.h"
+#include "MessageNames.h"
+#include "TestWithIfMessageMessagesReplies.h"
+#include <wtf/Forward.h>
+#include <wtf/ThreadSafeRefCounted.h>
+#include <wtf/text/WTFString.h>
+
+
+namespace Messages {
+namespace TestWithIfMessage {
+
+static inline IPC::ReceiverName messageReceiverName()
+{
+ return IPC::ReceiverName::TestWithIfMessage;
+}
+
+#if PLATFORM(COCOA)
+class LoadURL {
+public:
+ using Arguments = std::tuple<const String&>;
+
+ static IPC::MessageName name() { return IPC::MessageName::TestWithIfMessage_LoadURL; }
+ static const bool isSync = false;
+
+ explicit LoadURL(const String& url)
+ : m_arguments(url)
+ {
+ }
+
+ const Arguments& arguments() const
+ {
+ return m_arguments;
+ }
+
+private:
+ Arguments m_arguments;
+};
+#endif
+
+#if PLATFORM(GTK)
+class LoadURL {
+public:
+ using Arguments = std::tuple<const String&, int64_t>;
+
+ static IPC::MessageName name() { return IPC::MessageName::TestWithIfMessage_LoadURL; }
+ static const bool isSync = false;
+
+ LoadURL(const String& url, int64_t value)
+ : m_arguments(url, value)
+ {
+ }
+
+ const Arguments& arguments() const
+ {
+ return m_arguments;
+ }
+
+private:
+ Arguments m_arguments;
+};
+#endif
+
+} // namespace TestWithIfMessage
+} // namespace Messages
Added: trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessagesReplies.h (0 => 271237)
--- trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessagesReplies.h (rev 0)
+++ trunk/Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessagesReplies.h 2021-01-07 17:04:21 UTC (rev 271237)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2010-2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "MessageNames.h"
+#include <wtf/Forward.h>
+
+
+namespace Messages {
+namespace TestWithIfMessage {
+
+
+} // namespace TestWithIfMessage
+} // namespace Messages