| OLD | NEW |
| 1 // This file is generated | 1 // This file is generated |
| 2 | 2 |
| 3 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 3 // Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| 4 // Use of this source code is governed by a BSD-style license that can be | 4 // Use of this source code is governed by a BSD-style license that can be |
| 5 // found in the LICENSE file. | 5 // found in the LICENSE file. |
| 6 | 6 |
| 7 #include "platform/inspector_protocol/{{class_name}}.h" | 7 #include "platform/inspector_protocol/{{class_name}}.h" |
| 8 | 8 |
| 9 #include "platform/inspector_protocol/Collections.h" | 9 #include "platform/inspector_protocol/Collections.h" |
| 10 #include "platform/inspector_protocol/FrontendChannel.h" | 10 #include "platform/inspector_protocol/FrontendChannel.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 return weak.release(); | 70 return weak.release(); |
| 71 } | 71 } |
| 72 | 72 |
| 73 virtual void dispatch(int sessionId, const String16& message); | 73 virtual void dispatch(int sessionId, const String16& message); |
| 74 virtual void reportProtocolError(int sessionId, int callId, CommonErrorCode,
const String16& errorMessage, ErrorSupport* errors) const; | 74 virtual void reportProtocolError(int sessionId, int callId, CommonErrorCode,
const String16& errorMessage, ErrorSupport* errors) const; |
| 75 using Dispatcher::reportProtocolError; | 75 using Dispatcher::reportProtocolError; |
| 76 | 76 |
| 77 void sendResponse(int sessionId, int callId, const ErrorString& invocationEr
ror, ErrorSupport* errors, PassOwnPtr<protocol::DictionaryValue> result); | 77 void sendResponse(int sessionId, int callId, const ErrorString& invocationEr
ror, ErrorSupport* errors, PassOwnPtr<protocol::DictionaryValue> result); |
| 78 | 78 |
| 79 {% for domain in api.domains %} | 79 {% for domain in api.domains %} |
| 80 virtual void registerAgent({{domain.domain}}CommandHandler* agent) { ASSERT(
!m_{{domain.domain | lower}}Agent); m_{{domain.domain | lower}}Agent = agent; } | 80 virtual void registerAgent(blink::protocol::Backend::{{domain.domain}}* agen
t) { ASSERT(!m_{{domain.domain | lower}}Agent); m_{{domain.domain | lower}}Agent
= agent; } |
| 81 {% endfor %} | 81 {% endfor %} |
| 82 | 82 |
| 83 private: | 83 private: |
| 84 friend class CallbackBase; | 84 friend class DispatcherCallbackBase; |
| 85 friend class DispatcherImplWeakPtr; | 85 friend class DispatcherImplWeakPtr; |
| 86 using CallHandler = void (DispatcherImpl::*)(int sessionId, int callId, Pass
OwnPtr<DictionaryValue> messageObject, ErrorSupport* errors); | 86 using CallHandler = void (DispatcherImpl::*)(int sessionId, int callId, Pass
OwnPtr<DictionaryValue> messageObject, ErrorSupport* errors); |
| 87 using DispatchMap = protocol::HashMap<String16, CallHandler>; | 87 using DispatchMap = protocol::HashMap<String16, CallHandler>; |
| 88 | 88 |
| 89 {% for domain in api.domains %} | 89 {% for domain in api.domains %} |
| 90 {% for command in domain.commands %} | 90 {% for command in domain.commands %} |
| 91 {% if "redirect" in command %}{% continue %}{% endif %} | 91 {% if "redirect" in command %}{% continue %}{% endif %} |
| 92 {% if "handlers" in command and not ("renderer" in command["handlers"]) %}{%
continue %}{% endif %} | 92 {% if "handlers" in command and not ("renderer" in command["handlers"]) %}{%
continue %}{% endif %} |
| 93 void {{domain.domain}}_{{command.name}}(int sessionId, int callId, PassOwnPt
r<DictionaryValue> requestMessageObject, ErrorSupport*); | 93 void {{domain.domain}}_{{command.name}}(int sessionId, int callId, PassOwnPt
r<DictionaryValue> requestMessageObject, ErrorSupport*); |
| 94 {% endfor %} | 94 {% endfor %} |
| 95 {% endfor %} | 95 {% endfor %} |
| 96 | 96 |
| 97 FrontendChannel* m_frontendChannel; | 97 FrontendChannel* m_frontendChannel; |
| 98 | 98 |
| 99 {% for domain in api.domains %} | 99 {% for domain in api.domains %} |
| 100 {{domain.domain}}CommandHandler* m_{{domain.domain | lower}}Agent; | 100 Backend::{{domain.domain}}* m_{{domain.domain | lower}}Agent; |
| 101 {% endfor %} | 101 {% endfor %} |
| 102 | 102 |
| 103 void sendResponse(int sessionId, int callId, ErrorString invocationError, Pa
ssOwnPtr<protocol::DictionaryValue> result) | 103 void sendResponse(int sessionId, int callId, ErrorString invocationError, Pa
ssOwnPtr<protocol::DictionaryValue> result) |
| 104 { | 104 { |
| 105 sendResponse(sessionId, callId, invocationError, nullptr, result); | 105 sendResponse(sessionId, callId, invocationError, nullptr, result); |
| 106 } | 106 } |
| 107 | 107 |
| 108 void sendResponse(int sessionId, int callId, ErrorString invocationError) | 108 void sendResponse(int sessionId, int callId, ErrorString invocationError) |
| 109 { | 109 { |
| 110 sendResponse(sessionId, callId, invocationError, nullptr, DictionaryValu
e::create()); | 110 sendResponse(sessionId, callId, invocationError, nullptr, DictionaryValu
e::create()); |
| 111 } | 111 } |
| 112 | 112 |
| 113 static const char kInvalidRequest[]; | 113 static const char kInvalidRequest[]; |
| 114 | 114 |
| 115 DispatchMap m_dispatchMap; | 115 DispatchMap m_dispatchMap; |
| 116 protocol::Vector<int> m_commonErrors; | 116 protocol::Vector<int> m_commonErrors; |
| 117 protocol::HashSet<DispatcherImplWeakPtr*> m_weakPtrs; | 117 protocol::HashSet<DispatcherImplWeakPtr*> m_weakPtrs; |
| 118 }; | 118 }; |
| 119 | 119 |
| 120 class PLATFORM_EXPORT DispatcherCallbackBase : public protocol::Backend::Callbac
kBase { |
| 121 public: |
| 122 DispatcherCallbackBase(PassOwnPtr<DispatcherImplWeakPtr> backendImpl, int se
ssionId, int id) |
| 123 : m_backendImpl(backendImpl), m_sessionId(sessionId), m_id(id) { } |
| 124 virtual ~DispatcherCallbackBase() { } |
| 125 void dispose() { m_backendImpl = nullptr; } |
| 126 |
| 127 protected: |
| 128 void sendIfActive(PassOwnPtr<protocol::DictionaryValue> partialMessage, cons
t ErrorString& invocationError) |
| 129 { |
| 130 if (!m_backendImpl->get()) |
| 131 return; |
| 132 m_backendImpl->get()->sendResponse(m_sessionId, m_id, invocationError, n
ullptr, partialMessage); |
| 133 m_backendImpl = nullptr; |
| 134 } |
| 135 |
| 136 private: |
| 137 OwnPtr<DispatcherImplWeakPtr> m_backendImpl; |
| 138 int m_sessionId; |
| 139 int m_id; |
| 140 }; |
| 141 |
| 120 DispatcherImplWeakPtr::~DispatcherImplWeakPtr() | 142 DispatcherImplWeakPtr::~DispatcherImplWeakPtr() |
| 121 { | 143 { |
| 122 if (m_dispatcher) | 144 if (m_dispatcher) |
| 123 m_dispatcher->m_weakPtrs.remove(this); | 145 m_dispatcher->m_weakPtrs.remove(this); |
| 124 } | 146 } |
| 125 | 147 |
| 126 const char DispatcherImpl::kInvalidRequest[] = "Invalid request"; | 148 const char DispatcherImpl::kInvalidRequest[] = "Invalid request"; |
| 127 | 149 |
| 128 {% for domain in api.domains %} | 150 {% for domain in api.domains %} |
| 129 {% for command in domain.commands %} | 151 {% for command in domain.commands %} |
| 130 {% if "redirect" in command %}{% continue %}{% endif %} | 152 {% if "redirect" in command %}{% continue %}{% endif %} |
| 131 {% if "handlers" in command and not ("renderer" in command["handlers"]) %}{%
continue %}{% endif %} | 153 {% if "handlers" in command and not ("renderer" in command["handlers"]) %}{%
continue %}{% endif %} |
| 132 | 154 |
| 133 {% if "async" in command %} | 155 {% if "async" in command %} |
| 134 Dispatcher::{{domain.domain}}CommandHandler::{{command.name | to_title_case}}Cal
lback::{{command.name | to_title_case}}Callback(PassOwnPtr<DispatcherImplWeakPtr
> backendImpl, int sessionId, int id) : CallbackBase(backendImpl, sessionId, id)
{ } | |
| 135 | 156 |
| 136 void Dispatcher::{{domain.domain}}CommandHandler::{{command.name | to_title_case
}}Callback::sendSuccess( | 157 class PLATFORM_EXPORT {{domain.domain}}{{command.name | to_title_case}}Callback
: public Backend::{{domain.domain}}::{{command.name | to_title_case}}Callback, p
ublic DispatcherCallbackBase { |
| 137 {%- for parameter in command.returns -%} | 158 public: |
| 138 {%- if "optional" in parameter -%} | 159 {{domain.domain}}{{command.name | to_title_case}}Callback(PassOwnPtr<Dispatc
herImplWeakPtr> backendImpl, int sessionId, int id) |
| 160 : DispatcherCallbackBase(backendImpl, sessionId, id) { } |
| 161 |
| 162 void sendSuccess( |
| 163 {%- for parameter in command.returns -%} |
| 164 {%- if "optional" in parameter -%} |
| 139 const Maybe<{{resolve_type(parameter).raw_type}}>& {{parameter.name}} | 165 const Maybe<{{resolve_type(parameter).raw_type}}>& {{parameter.name}} |
| 140 {%- else -%} | 166 {%- else -%} |
| 141 {{resolve_type(parameter).pass_type}} {{parameter.name}} | 167 {{resolve_type(parameter).pass_type}} {{parameter.name}} |
| 142 {%- endif -%} | 168 {%- endif -%} |
| 143 {%- if not loop.last -%}, {% endif -%} | 169 {%- if not loop.last -%}, {% endif -%} |
| 144 {% endfor %}) | 170 {%- endfor -%}) override |
| 145 { | 171 { |
| 146 OwnPtr<protocol::DictionaryValue> resultObject = DictionaryValue::create(); | 172 OwnPtr<protocol::DictionaryValue> resultObject = DictionaryValue::create
(); |
| 147 {% for parameter in command.returns %} | 173 {% for parameter in command.returns %} |
| 148 {% if "optional" in parameter %} | 174 {% if "optional" in parameter %} |
| 149 if ({{parameter.name}}.isJust()) | 175 if ({{parameter.name}}.isJust()) |
| 150 resultObject->setValue("{{parameter.name}}", toValue({{parameter.name}}.
fromJust())); | 176 resultObject->setValue("{{parameter.name}}", toValue({{parameter.nam
e}}.fromJust())); |
| 151 {% else %} | 177 {% else %} |
| 152 resultObject->setValue("{{parameter.name}}", toValue({{resolve_type(paramete
r).to_raw_type % parameter.name}})); | 178 resultObject->setValue("{{parameter.name}}", toValue({{resolve_type(para
meter).to_raw_type % parameter.name}})); |
| 153 {% endif %} | 179 {% endif %} |
| 154 {% endfor %} | 180 {% endfor %} |
| 155 sendIfActive(resultObject.release(), ErrorString()); | 181 sendIfActive(resultObject.release(), ErrorString()); |
| 156 } | 182 } |
| 183 |
| 184 void sendFailure(const ErrorString& error) override |
| 185 { |
| 186 ASSERT(error.length()); |
| 187 sendIfActive(nullptr, error); |
| 188 } |
| 189 }; |
| 157 {% endif %} | 190 {% endif %} |
| 158 | 191 |
| 159 void DispatcherImpl::{{domain.domain}}_{{command.name}}(int sessionId, int callI
d, PassOwnPtr<DictionaryValue> requestMessageObject, ErrorSupport* errors) | 192 void DispatcherImpl::{{domain.domain}}_{{command.name}}(int sessionId, int callI
d, PassOwnPtr<DictionaryValue> requestMessageObject, ErrorSupport* errors) |
| 160 { | 193 { |
| 161 if (!m_{{domain.domain | lower}}Agent) | 194 if (!m_{{domain.domain | lower}}Agent) |
| 162 errors->addError("{{domain.domain}} handler is not available."); | 195 errors->addError("{{domain.domain}} handler is not available."); |
| 163 | 196 |
| 164 if (errors->hasErrors()) { | 197 if (errors->hasErrors()) { |
| 165 reportProtocolError(sessionId, callId, InvalidParams, kInvalidRequest, e
rrors); | 198 reportProtocolError(sessionId, callId, InvalidParams, kInvalidRequest, e
rrors); |
| 166 return; | 199 return; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 184 {% endif %} | 217 {% endif %} |
| 185 {% endfor %} | 218 {% endfor %} |
| 186 errors->pop(); | 219 errors->pop(); |
| 187 if (errors->hasErrors()) { | 220 if (errors->hasErrors()) { |
| 188 reportProtocolError(sessionId, callId, InvalidParams, kInvalidRequest, e
rrors); | 221 reportProtocolError(sessionId, callId, InvalidParams, kInvalidRequest, e
rrors); |
| 189 return; | 222 return; |
| 190 } | 223 } |
| 191 {% endif %} | 224 {% endif %} |
| 192 | 225 |
| 193 {% if "async" in command %} | 226 {% if "async" in command %} |
| 194 OwnPtr<{{domain.domain}}CommandHandler::{{command.name | to_title_case}}Call
back> callback = adoptPtr(new {{domain.domain}}CommandHandler::{{command.name |
to_title_case}}Callback(weakPtr(), sessionId, callId)); | 227 OwnPtr<{{domain.domain}}{{command.name | to_title_case}}Callback> callback =
adoptPtr(new {{domain.domain}}{{command.name | to_title_case}}Callback(weakPtr(
), sessionId, callId)); |
| 195 {% elif "returns" in command %} | 228 {% elif "returns" in command %} |
| 196 // Declare output parameters. | 229 // Declare output parameters. |
| 197 OwnPtr<protocol::DictionaryValue> result = DictionaryValue::create(); | 230 OwnPtr<protocol::DictionaryValue> result = DictionaryValue::create(); |
| 198 {% for property in command.returns %} | 231 {% for property in command.returns %} |
| 199 {% if "optional" in property %} | 232 {% if "optional" in property %} |
| 200 Maybe<{{resolve_type(property).raw_type}}> out_{{property.name}}; | 233 Maybe<{{resolve_type(property).raw_type}}> out_{{property.name}}; |
| 201 {% else %} | 234 {% else %} |
| 202 {{resolve_type(property).type}} out_{{property.name}}; | 235 {{resolve_type(property).type}} out_{{property.name}}; |
| 203 {% endif %} | 236 {% endif %} |
| 204 {% endfor %} | 237 {% endfor %} |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 protocol::DictionaryValue* object = DictionaryValue::cast(value.get()); | 354 protocol::DictionaryValue* object = DictionaryValue::cast(value.get()); |
| 322 if (!object) | 355 if (!object) |
| 323 return false; | 356 return false; |
| 324 | 357 |
| 325 if (!object->getString("method", result)) | 358 if (!object->getString("method", result)) |
| 326 return false; | 359 return false; |
| 327 | 360 |
| 328 return true; | 361 return true; |
| 329 } | 362 } |
| 330 | 363 |
| 331 Dispatcher::CallbackBase::CallbackBase(PassOwnPtr<DispatcherImplWeakPtr> backend
Impl, int sessionId, int id) | |
| 332 : m_backendImpl(backendImpl), m_sessionId(sessionId), m_id(id) { } | |
| 333 | |
| 334 Dispatcher::CallbackBase::~CallbackBase() { } | |
| 335 | |
| 336 void Dispatcher::CallbackBase::sendFailure(const ErrorString& error) | |
| 337 { | |
| 338 ASSERT(error.length()); | |
| 339 sendIfActive(nullptr, error); | |
| 340 } | |
| 341 | |
| 342 void Dispatcher::CallbackBase::dispose() | |
| 343 { | |
| 344 m_backendImpl = nullptr; | |
| 345 } | |
| 346 | |
| 347 void Dispatcher::CallbackBase::sendIfActive(PassOwnPtr<protocol::DictionaryValue
> partialMessage, const ErrorString& invocationError) | |
| 348 { | |
| 349 if (!m_backendImpl->get()) | |
| 350 return; | |
| 351 m_backendImpl->get()->sendResponse(m_sessionId, m_id, invocationError, nullp
tr, partialMessage); | |
| 352 m_backendImpl = nullptr; | |
| 353 } | |
| 354 | |
| 355 } // namespace protocol | 364 } // namespace protocol |
| 356 } // namespace blink | 365 } // namespace blink |
| OLD | NEW |