Changeset 206000 in webkit
- Timestamp:
- Sep 15, 2016 3:38:17 PM (8 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r205983 r206000 1 2016-09-15 Anders Carlsson <andersca@apple.com> 2 3 Add support for enum class parameters in the message generator 4 https://bugs.webkit.org/show_bug.cgi?id=162036 5 6 Reviewed by Brady Eidson. 7 8 Also, convert the WebPage::SetLayerHostingMode to take an actual enum class. 9 10 * Scripts/webkit/messages.py: 11 (function_parameter_type): 12 Change this to take the parameter kind as well, and use the raw type for enums. 13 14 (arguments_type): 15 (message_to_struct_declaration): 16 Pass the kind to function_parameter_type. 17 18 (forward_declaration): 19 (forward_declarations_for_namespace): 20 Forward declare enums with "enum class". 21 22 (headers_for_type): 23 Add WebKit::LayerHostingMode as a special case. 24 25 (generate_message_handler): 26 Pass the kind to function_parameter_type. 27 28 * Scripts/webkit/parser.py: 29 (parse_parameters_string): 30 Parse 'enum' as well. 31 32 * Shared/LayerTreeContext.h: 33 Add enum traits. 34 35 * UIProcess/WebPageProxy.cpp: 36 (WebKit::WebPageProxy::viewDidEnterWindow): 37 (WebKit::WebPageProxy::layerHostingModeDidChange): 38 * WebProcess/WebPage/WebPage.cpp: 39 (WebKit::WebPage::reinitializeWebPage): 40 (WebKit::WebPage::setLayerHostingMode): 41 * WebProcess/WebPage/WebPage.h: 42 Change unsigned to LayerHostingMode. 43 44 * WebProcess/WebPage/WebPage.messages.in: 45 Change unsigned to LayerHostingMode. 46 1 47 2016-09-14 Beth Dakin <bdakin@apple.com> 2 48 -
trunk/Source/WebKit2/Scripts/webkit/messages.py
r204742 r206000 67 67 68 68 69 def function_parameter_type(type ):69 def function_parameter_type(type, kind): 70 70 # Don't use references for built-in types. 71 71 builtin_types = frozenset([ … … 86 86 return type 87 87 88 if kind == 'enum': 89 return type 90 88 91 return 'const %s&' % type 89 92 … … 94 97 95 98 def arguments_type(message): 96 return 'std::tuple<%s>' % ', '.join(function_parameter_type(parameter.type ) for parameter in message.parameters)99 return 'std::tuple<%s>' % ', '.join(function_parameter_type(parameter.type, parameter.kind) for parameter in message.parameters) 97 100 98 101 … … 103 106 def message_to_struct_declaration(message): 104 107 result = [] 105 function_parameters = [(function_parameter_type(x.type ), x.name) for x in message.parameters]108 function_parameters = [(function_parameter_type(x.type, x.kind), x.name) for x in message.parameters] 106 109 result.append('class %s {\n' % message.name) 107 110 result.append('public:\n') … … 114 117 if message.reply_parameters != None: 115 118 if message.has_attribute(DELAYED_ATTRIBUTE): 116 send_parameters = [(function_parameter_type(x.type ), x.name) for x in message.reply_parameters]119 send_parameters = [(function_parameter_type(x.type, x.kind), x.name) for x in message.reply_parameters] 117 120 result.append(' struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> {\n') 118 121 result.append(' DelayedReply(PassRefPtr<IPC::Connection>, std::unique_ptr<IPC::Encoder>);\n') … … 144 147 145 148 146 def struct_or_class(namespace, kind_and_type):149 def forward_declaration(namespace, kind_and_type): 147 150 kind, type = kind_and_type 148 151 … … 150 153 if kind == 'struct': 151 154 return 'struct %s' % type 155 elif kind == 'enum': 156 return 'enum class %s' % type 152 157 else: 153 158 return 'class %s' % type 154 155 159 156 160 def forward_declarations_for_namespace(namespace, kind_and_types): 157 161 result = [] 158 162 result.append('namespace %s {\n' % namespace) 159 result += [' %s;\n' % struct_or_class(namespace, x) for x in kind_and_types]163 result += [' %s;\n' % forward_declaration(namespace, x) for x in kind_and_types] 160 164 result.append('}\n') 161 165 return ''.join(result) … … 371 375 'struct WebKit::WebScriptMessageHandlerData': ['"WebUserContentControllerDataTypes.h"'], 372 376 'std::chrono::system_clock::time_point': ['<chrono>'], 377 'WebKit::LayerHostingMode': ['"LayerTreeContext.h"'], 373 378 } 374 379 … … 474 479 475 480 for message in sync_delayed_messages: 476 send_parameters = [(function_parameter_type(x.type ), x.name) for x in message.reply_parameters]481 send_parameters = [(function_parameter_type(x.type, x.kind), x.name) for x in message.reply_parameters] 477 482 478 483 if message.condition: -
trunk/Source/WebKit2/Scripts/webkit/parser.py
r177608 r206000 134 134 parameter_kind = 'struct' 135 135 split[0] = split[0][7:] 136 elif split[0].startswith('enum '): 137 parameter_kind = 'enum' 138 split[0] = split[0][5:] 136 139 137 140 parameter_type = split[0] -
trunk/Source/WebKit2/Shared/LayerTreeContext.h
r204668 r206000 24 24 */ 25 25 26 #ifndef LayerTreeContext_h 27 #define LayerTreeContext_h 26 #pragma once 28 27 29 28 #include <stdint.h> 29 #include <wtf/EnumTraits.h> 30 30 31 31 namespace IPC { … … 63 63 } 64 64 65 } 66 67 namespace WTF { 68 template<> struct EnumTraits<WebKit::LayerHostingMode> { 69 using values = EnumValues< 70 WebKit::LayerHostingMode, 71 #if HAVE(OUT_OF_PROCESS_LAYER_HOSTING) 72 WebKit::LayerHostingMode::OutOfProcess, 73 #endif 74 WebKit::LayerHostingMode::InProcess 75 >; 65 76 }; 66 67 #endif // LayerTreeContext_h 77 } -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r205938 r206000 1504 1504 if (m_layerHostingMode != layerHostingMode) { 1505 1505 m_layerHostingMode = layerHostingMode; 1506 m_process->send(Messages::WebPage::SetLayerHostingMode( static_cast<unsigned>(layerHostingMode)), m_pageID);1506 m_process->send(Messages::WebPage::SetLayerHostingMode(layerHostingMode), m_pageID); 1507 1507 } 1508 1508 } … … 1621 1621 1622 1622 m_layerHostingMode = layerHostingMode; 1623 m_process->send(Messages::WebPage::SetLayerHostingMode( static_cast<unsigned>(layerHostingMode)), m_pageID);1623 m_process->send(Messages::WebPage::SetLayerHostingMode(layerHostingMode), m_pageID); 1624 1624 } 1625 1625 -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r205983 r206000 578 578 setViewState(parameters.viewState, false, Vector<uint64_t>()); 579 579 if (m_layerHostingMode != parameters.layerHostingMode) 580 setLayerHostingMode( static_cast<unsigned>(parameters.layerHostingMode));580 setLayerHostingMode(parameters.layerHostingMode); 581 581 } 582 582 … … 2609 2609 } 2610 2610 2611 void WebPage::setLayerHostingMode( unsignedlayerHostingMode)2612 { 2613 m_layerHostingMode = static_cast<LayerHostingMode>(layerHostingMode);2611 void WebPage::setLayerHostingMode(LayerHostingMode layerHostingMode) 2612 { 2613 m_layerHostingMode = layerHostingMode; 2614 2614 2615 2615 m_drawingArea->setLayerHostingMode(m_layerHostingMode); -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h
r205983 r206000 440 440 441 441 LayerHostingMode layerHostingMode() const { return m_layerHostingMode; } 442 void setLayerHostingMode( unsigned);442 void setLayerHostingMode(LayerHostingMode); 443 443 444 444 #if PLATFORM(COCOA) -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in
r205909 r206000 24 24 SetInitialFocus(bool forward, bool isKeyboardEventValid, WebKit::WebKeyboardEvent event, uint64_t callbackID) 25 25 SetViewState(unsigned viewState, bool wantsDidUpdateViewState, Vector<uint64_t> callbackIDs) 26 SetLayerHostingMode( unsignedlayerHostingMode)26 SetLayerHostingMode(enum WebKit::LayerHostingMode layerHostingMode) 27 27 28 28 SetSessionID(WebCore::SessionID sessionID)
Note: See TracChangeset
for help on using the changeset viewer.