Changeset 161474 in webkit
- Timestamp:
- Jan 7, 2014 5:03:48 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 2 added
- 7 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r161473 r161474 1 2014-01-07 Simon Fraser <simon.fraser@apple.com> 2 3 Make it possible for MessageReceivers to pass messages to their superclass, and use it for RemoteLayerTreeDrawingAreaProxy 4 https://bugs.webkit.org/show_bug.cgi?id=126558 5 6 Reviewed by Anders Carlsson. 7 8 In a message.in file it's now possible to say: 9 10 messages -> Subclass : Superclass { ... } and the generated code will 11 call Superclass::didReceiveMessage(). 12 13 Use this to have RemoteLayerTreeDrawingAreaProxy pass messages up to 14 DrawingAreaProxy. 15 16 * Scripts/webkit2/messages.py: 17 (generate_message_handler): 18 * Scripts/webkit2/model.py: 19 (MessageReceiver.__init__): 20 * Scripts/webkit2/parser.py: 21 (parse): 22 * UIProcess/DrawingAreaProxy.h: 23 * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in: 24 1 25 2014-01-07 Simon Fraser <simon.fraser@apple.com> 2 26 -
trunk/Source/WebKit2/Scripts/webkit2/messages.py
r161148 r161474 596 596 result.append('{\n') 597 597 result += [async_message_statement(receiver, message) for message in async_messages] 598 if not receiver.has_attribute(LEGACY_RECEIVER_ATTRIBUTE): 599 result.append(' UNUSED_PARAM(connection);\n') 600 result.append(' ASSERT_NOT_REACHED();\n') 598 if (receiver.superclass): 599 result.append(' %s::didReceiveMessage(connection, decoder);\n' % (receiver.superclass)) 600 else: 601 if not receiver.has_attribute(LEGACY_RECEIVER_ATTRIBUTE): 602 result.append(' UNUSED_PARAM(connection);\n') 603 result.append(' ASSERT_NOT_REACHED();\n') 601 604 result.append('}\n') 602 605 -
trunk/Source/WebKit2/Scripts/webkit2/messages_unittest.py
r161473 r161474 32 32 script_directory = os.path.dirname(os.path.realpath(__file__)) 33 33 34 with open(os.path.join(script_directory, 'test-messages.in')) as file: 35 _messages_file_contents = file.read() 36 34 37 with open(os.path.join(script_directory, 'test-legacy-messages.in')) as file: 35 38 _legacy_messages_file_contents = file.read() 36 39 37 with open(os.path.join(script_directory, 'test-messages.in')) as file: 38 _messages_file_contents = file.read() 40 with open(os.path.join(script_directory, 'test-superclass-messages.in')) as file: 41 _superclass_messages_file_contents = file.read() 42 43 44 with open(os.path.join(script_directory, 'Messages-expected.h')) as file: 45 _expected_receiver_header = file.read() 39 46 40 47 with open(os.path.join(script_directory, 'LegacyMessages-expected.h')) as file: 41 48 _expected_legacy_receiver_header = file.read() 42 49 43 with open(os.path.join(script_directory, 'Messages-expected.h')) as file: 44 _expected_receiver_header = file.read() 50 with open(os.path.join(script_directory, 'MessagesSuperclass-expected.h')) as file: 51 _expected_superclass_receiver_header = file.read() 52 45 53 46 54 with open(os.path.join(script_directory, 'MessageReceiver-expected.cpp')) as file: … … 49 57 with open(os.path.join(script_directory, 'LegacyMessageReceiver-expected.cpp')) as file: 50 58 _expected_legacy_receiver_implementation = file.read() 59 60 with open(os.path.join(script_directory, 'MessageReceiverSuperclass-expected.cpp')) as file: 61 _expected_superclass_receiver_implementation = file.read() 51 62 52 63 _expected_results = { … … 224 235 } 225 236 237 _expected_superclass_results = { 238 'name': 'WebPage', 239 'superclass' : 'WebPageBase', 240 'conditions': None, 241 'messages': ( 242 { 243 'name': 'LoadURL', 244 'parameters': ( 245 ('String', 'url'), 246 ), 247 'conditions': (None), 248 }, 249 ), 250 } 251 226 252 227 253 class MessagesTest(unittest.TestCase): … … 229 255 self.receiver = parser.parse(StringIO(_messages_file_contents)) 230 256 self.legacy_receiver = parser.parse(StringIO(_legacy_messages_file_contents)) 257 self.superclass_receiver = parser.parse(StringIO(_superclass_messages_file_contents)) 231 258 232 259 … … 267 294 self.check_message(message, _expected_results['messages'][index]) 268 295 296 self.assertEquals(self.superclass_receiver.name, _expected_superclass_results['name']) 297 self.assertEquals(self.superclass_receiver.superclass, _expected_superclass_results['superclass']) 298 self.assertEquals(len(self.superclass_receiver.messages), len(_expected_superclass_results['messages'])) 299 for index, message in enumerate(self.superclass_receiver.messages): 300 self.check_message(message, _expected_superclass_results['messages'][index]) 301 269 302 270 303 … … 282 315 class HeaderTest(GeneratedFileContentsTest): 283 316 def test_header(self): 317 file_contents = messages.generate_messages_header(StringIO(_messages_file_contents)) 318 self.assertGeneratedFileContentsEqual(file_contents, _expected_receiver_header) 319 284 320 legacy_file_contents = messages.generate_messages_header(StringIO(_legacy_messages_file_contents)) 285 321 self.assertGeneratedFileContentsEqual(legacy_file_contents, _expected_legacy_receiver_header) 286 322 287 file_contents = messages.generate_messages_header(StringIO(_messages_file_contents))288 self.assertGeneratedFileContentsEqual( file_contents, _expected_receiver_header)323 superclass_file_contents = messages.generate_messages_header(StringIO(_superclass_messages_file_contents)) 324 self.assertGeneratedFileContentsEqual(superclass_file_contents, _expected_superclass_receiver_header) 289 325 290 326 291 327 class ReceiverImplementationTest(GeneratedFileContentsTest): 292 328 def test_receiver_implementation(self): 329 file_contents = messages.generate_message_handler(StringIO(_messages_file_contents)) 330 self.assertGeneratedFileContentsEqual(file_contents, _expected_receiver_implementation) 331 293 332 legacy_file_contents = messages.generate_message_handler(StringIO(_legacy_messages_file_contents)) 294 333 self.assertGeneratedFileContentsEqual(legacy_file_contents, _expected_legacy_receiver_implementation) 295 334 296 file_contents = messages.generate_message_handler(StringIO(_messages_file_contents))297 self.assertGeneratedFileContentsEqual( file_contents, _expected_receiver_implementation)335 superclass_file_contents = messages.generate_message_handler(StringIO(_superclass_messages_file_contents)) 336 self.assertGeneratedFileContentsEqual(superclass_file_contents, _expected_superclass_receiver_implementation) 298 337 299 338 -
trunk/Source/WebKit2/Scripts/webkit2/model.py
r141183 r161474 25 25 26 26 class MessageReceiver(object): 27 def __init__(self, name, attributes, messages, condition):27 def __init__(self, name, superclass, attributes, messages, condition): 28 28 self.name = name 29 self.superclass = superclass 29 30 self.attributes = frozenset(attributes or []) 30 31 self.messages = messages -
trunk/Source/WebKit2/Scripts/webkit2/parser.py
r160161 r161474 49 49 conditions = [] 50 50 master_condition = None 51 superclass = [] 51 52 for line in file: 52 match = re.search(r'messages -> (?P<destination>[A-Za-z_0-9]+) \s*(?: (?P<attributes>.*?)\s+)?{', line)53 match = re.search(r'messages -> (?P<destination>[A-Za-z_0-9]+) \s*(?::\s*(?P<superclass>.*?) \s*)?(?:(?P<attributes>.*?)\s+)?{', line) 53 54 if match: 54 55 receiver_attributes = parse_attributes_string(match.group('attributes')) 55 56 if match.group('superclass'): 57 superclass = match.group('superclass') 56 58 if conditions: 57 59 master_condition = conditions … … 90 92 91 93 messages.append(model.Message(name, parameters, reply_parameters, attributes, combine_condition(conditions))) 92 return model.MessageReceiver(destination, receiver_attributes, messages, combine_condition(master_condition))94 return model.MessageReceiver(destination, superclass, receiver_attributes, messages, combine_condition(master_condition)) 93 95 94 96 -
trunk/Source/WebKit2/Scripts/webkit2/test-superclass-messages.in
r161473 r161474 1 # Copyright (C) 201 4Apple Inc. All rights reserved.1 # Copyright (C) 2010 Apple Inc. All rights reserved. 2 2 # 3 3 # Redistribution and use in source and binary forms, with or without … … 21 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 22 23 messages -> RemoteLayerTreeDrawingAreaProxy{24 void CommitLayerTree(WebKit::RemoteLayerTreeTransaction layerTreeTransaction, WebKit::RemoteScrollingCoordinatorTransaction scrollingTreeTransaction)23 messages -> WebPage : WebPageBase { 24 LoadURL(String url) 25 25 } -
trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h
r161452 r161474 83 83 WebCore::IntSize m_scrollOffset; 84 84 85 // IPC::MessageReceiver 86 virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) OVERRIDE; 87 85 88 private: 86 89 virtual void sizeDidChange() = 0; 87 88 // IPC::MessageReceiver89 virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) OVERRIDE;90 90 91 91 // Message handlers. -
trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in
r161387 r161474 21 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 22 23 messages -> RemoteLayerTreeDrawingAreaProxy {23 messages -> RemoteLayerTreeDrawingAreaProxy : DrawingAreaProxy { 24 24 void CommitLayerTree(WebKit::RemoteLayerTreeTransaction layerTreeTransaction, WebKit::RemoteScrollingCoordinatorTransaction scrollingTreeTransaction) 25 25 }
Note: See TracChangeset
for help on using the changeset viewer.