| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/inspector_protocol/DispatcherBase.h" | 5 #include "platform/inspector_protocol/DispatcherBase.h" |
| 6 | 6 |
| 7 #include "platform/inspector_protocol/FrontendChannel.h" | 7 #include "platform/inspector_protocol/FrontendChannel.h" |
| 8 #include "platform/inspector_protocol/Parser.h" | 8 #include "platform/inspector_protocol/Parser.h" |
| 9 | 9 |
| 10 namespace blink { | 10 namespace blink { |
| 11 namespace protocol { | 11 namespace protocol { |
| 12 | 12 |
| 13 // static | 13 // static |
| 14 const char DispatcherBase::kInvalidRequest[] = "Invalid request"; | 14 const char DispatcherBase::kInvalidRequest[] = "Invalid request"; |
| 15 | 15 |
| 16 DispatcherBase::WeakPtr::WeakPtr(DispatcherBase* dispatcher) : m_dispatcher(disp
atcher) { } | 16 DispatcherBase::WeakPtr::WeakPtr(DispatcherBase* dispatcher) : m_dispatcher(disp
atcher) { } |
| 17 | 17 |
| 18 DispatcherBase::WeakPtr::~WeakPtr() | 18 DispatcherBase::WeakPtr::~WeakPtr() |
| 19 { | 19 { |
| 20 if (m_dispatcher) | 20 if (m_dispatcher) |
| 21 m_dispatcher->m_weakPtrs.remove(this); | 21 m_dispatcher->m_weakPtrs.erase(this); |
| 22 } | 22 } |
| 23 | 23 |
| 24 DispatcherBase::Callback::Callback(std::unique_ptr<DispatcherBase::WeakPtr> back
endImpl, int callId) | 24 DispatcherBase::Callback::Callback(std::unique_ptr<DispatcherBase::WeakPtr> back
endImpl, int callId) |
| 25 : m_backendImpl(std::move(backendImpl)) | 25 : m_backendImpl(std::move(backendImpl)) |
| 26 , m_callId(callId) { } | 26 , m_callId(callId) { } |
| 27 | 27 |
| 28 DispatcherBase::Callback::~Callback() = default; | 28 DispatcherBase::Callback::~Callback() = default; |
| 29 | 29 |
| 30 void DispatcherBase::Callback::dispose() | 30 void DispatcherBase::Callback::dispose() |
| 31 { | 31 { |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 void DispatcherBase::reportProtocolError(int callId, CommonErrorCode code, const
String16& errorMessage, ErrorSupport* errors) | 106 void DispatcherBase::reportProtocolError(int callId, CommonErrorCode code, const
String16& errorMessage, ErrorSupport* errors) |
| 107 { | 107 { |
| 108 if (m_frontendChannel) | 108 if (m_frontendChannel) |
| 109 ::blink::protocol::reportProtocolError(m_frontendChannel, callId, code,
errorMessage, errors); | 109 ::blink::protocol::reportProtocolError(m_frontendChannel, callId, code,
errorMessage, errors); |
| 110 } | 110 } |
| 111 | 111 |
| 112 void DispatcherBase::clearFrontend() | 112 void DispatcherBase::clearFrontend() |
| 113 { | 113 { |
| 114 m_frontendChannel = nullptr; | 114 m_frontendChannel = nullptr; |
| 115 for (auto& weak : m_weakPtrs) | 115 for (auto& weak : m_weakPtrs) |
| 116 weak.first->dispose(); | 116 weak->dispose(); |
| 117 m_weakPtrs.clear(); | 117 m_weakPtrs.clear(); |
| 118 } | 118 } |
| 119 | 119 |
| 120 std::unique_ptr<DispatcherBase::WeakPtr> DispatcherBase::weakPtr() | 120 std::unique_ptr<DispatcherBase::WeakPtr> DispatcherBase::weakPtr() |
| 121 { | 121 { |
| 122 std::unique_ptr<DispatcherBase::WeakPtr> weak(new DispatcherBase::WeakPtr(th
is)); | 122 std::unique_ptr<DispatcherBase::WeakPtr> weak(new DispatcherBase::WeakPtr(th
is)); |
| 123 m_weakPtrs.add(weak.get()); | 123 m_weakPtrs.insert(weak.get()); |
| 124 return weak; | 124 return weak; |
| 125 } | 125 } |
| 126 | 126 |
| 127 UberDispatcher::UberDispatcher(FrontendChannel* frontendChannel) | 127 UberDispatcher::UberDispatcher(FrontendChannel* frontendChannel) |
| 128 : m_frontendChannel(frontendChannel) { } | 128 : m_frontendChannel(frontendChannel) { } |
| 129 | 129 |
| 130 void UberDispatcher::registerBackend(const String16& name, std::unique_ptr<proto
col::DispatcherBase> dispatcher) | 130 void UberDispatcher::registerBackend(const String16& name, std::unique_ptr<proto
col::DispatcherBase> dispatcher) |
| 131 { | 131 { |
| 132 m_dispatchers.set(name, std::move(dispatcher)); | 132 m_dispatchers[name] = std::move(dispatcher); |
| 133 } | 133 } |
| 134 | 134 |
| 135 void UberDispatcher::dispatch(const String16& message) | 135 void UberDispatcher::dispatch(const String16& message) |
| 136 { | 136 { |
| 137 std::unique_ptr<protocol::Value> parsedMessage = parseJSON(message); | 137 std::unique_ptr<protocol::Value> parsedMessage = parseJSON(message); |
| 138 if (!parsedMessage) | 138 if (!parsedMessage) |
| 139 return; | 139 return; |
| 140 std::unique_ptr<protocol::DictionaryValue> messageObject = DictionaryValue::
cast(std::move(parsedMessage)); | 140 std::unique_ptr<protocol::DictionaryValue> messageObject = DictionaryValue::
cast(std::move(parsedMessage)); |
| 141 if (!messageObject) | 141 if (!messageObject) |
| 142 return; | 142 return; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 164 reportProtocolError(m_frontendChannel, callId, DispatcherBase::MethodNot
Found, "'" + method + "' wasn't found", nullptr); | 164 reportProtocolError(m_frontendChannel, callId, DispatcherBase::MethodNot
Found, "'" + method + "' wasn't found", nullptr); |
| 165 return; | 165 return; |
| 166 } | 166 } |
| 167 it->second->dispatch(callId, method, std::move(messageObject)); | 167 it->second->dispatch(callId, method, std::move(messageObject)); |
| 168 } | 168 } |
| 169 | 169 |
| 170 UberDispatcher::~UberDispatcher() = default; | 170 UberDispatcher::~UberDispatcher() = default; |
| 171 | 171 |
| 172 } // namespace protocol | 172 } // namespace protocol |
| 173 } // namespace blink | 173 } // namespace blink |
| OLD | NEW |