Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1082)

Side by Side Diff: third_party/WebKit/Source/core/inspector/InspectorSession.cpp

Issue 2522583002: Roll third_party/inspector_protocol to 4ad35c45aca9834b67ec2cb152c816ea1b7ceb48 (Closed)
Patch Set: updated README.chromium Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "core/inspector/InspectorSession.h" 5 #include "core/inspector/InspectorSession.h"
6 6
7 #include "bindings/core/v8/ScriptController.h" 7 #include "bindings/core/v8/ScriptController.h"
8 #include "core/frame/LocalFrame.h" 8 #include "core/frame/LocalFrame.h"
9 #include "core/frame/UseCounter.h" 9 #include "core/frame/UseCounter.h"
10 #include "core/inspector/InspectorBaseAgent.h" 10 #include "core/inspector/InspectorBaseAgent.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 m_inspectorBackendDispatcher->dispatch( 84 m_inspectorBackendDispatcher->dispatch(
85 protocol::StringUtil::parseJSON(message)); 85 protocol::StringUtil::parseJSON(message));
86 } 86 }
87 } 87 }
88 88
89 void InspectorSession::didCommitLoadForLocalFrame(LocalFrame* frame) { 89 void InspectorSession::didCommitLoadForLocalFrame(LocalFrame* frame) {
90 for (size_t i = 0; i < m_agents.size(); i++) 90 for (size_t i = 0; i < m_agents.size(); i++)
91 m_agents[i]->didCommitLoadForLocalFrame(frame); 91 m_agents[i]->didCommitLoadForLocalFrame(frame);
92 } 92 }
93 93
94 void InspectorSession::sendProtocolResponse(
95 int callId,
96 std::unique_ptr<protocol::Serializable> message) {
97 sendProtocolResponse(callId, message->serialize());
98 }
99
100 void InspectorSession::sendResponse(
101 int callId,
102 std::unique_ptr<v8_inspector::StringBuffer> message) {
103 // We can potentially avoid copies if WebString would convert to utf8 right
104 // from StringView, but it uses StringImpl itself, so we don't create any
105 // extra copies here.
106 sendProtocolResponse(callId, toCoreString(message->string()));
107 }
108
94 void InspectorSession::sendProtocolResponse(int callId, const String& message) { 109 void InspectorSession::sendProtocolResponse(int callId, const String& message) {
95 if (m_disposed) 110 if (m_disposed)
96 return; 111 return;
97 flushProtocolNotifications(); 112 flushProtocolNotifications();
98 m_state->setString(kV8StateKey, toCoreString(m_v8Session->stateJSON())); 113 m_state->setString(kV8StateKey, toCoreString(m_v8Session->stateJSON()));
99 String stateToSend = m_state->toJSONString(); 114 String stateToSend = m_state->serialize();
100 if (stateToSend == m_lastSentState) 115 if (stateToSend == m_lastSentState)
101 stateToSend = String(); 116 stateToSend = String();
102 else 117 else
103 m_lastSentState = stateToSend; 118 m_lastSentState = stateToSend;
104 m_client->sendProtocolMessage(m_sessionId, callId, message, stateToSend); 119 m_client->sendProtocolMessage(m_sessionId, callId, message, stateToSend);
105 } 120 }
106 121
107 void InspectorSession::sendProtocolResponse( 122 class InspectorSession::Notification {
108 int callId, 123 public:
109 const v8_inspector::StringView& message) { 124 static std::unique_ptr<Notification> createForBlink(
110 // We can potentially avoid copies if WebString would convert to utf8 right 125 std::unique_ptr<protocol::Serializable> notification) {
111 // from StringView, but it uses StringImpl itself, so we don't create any 126 return std::unique_ptr<Notification>(
112 // extra copies here. 127 new Notification(std::move(notification)));
113 sendProtocolResponse(callId, toCoreString(message)); 128 }
129
130 static std::unique_ptr<Notification> createForV8(
131 std::unique_ptr<v8_inspector::StringBuffer> notification) {
132 return std::unique_ptr<Notification>(
133 new Notification(std::move(notification)));
134 }
135
136 String serialize() {
137 if (m_blinkNotification) {
138 m_serialized = m_blinkNotification->serialize();
139 m_blinkNotification.reset();
140 } else if (m_v8Notification) {
141 m_serialized = toCoreString(m_v8Notification->string());
142 m_v8Notification.reset();
143 }
144 return m_serialized;
145 }
146
147 private:
148 explicit Notification(std::unique_ptr<protocol::Serializable> notification)
149 : m_blinkNotification(std::move(notification)) {}
150
151 explicit Notification(
152 std::unique_ptr<v8_inspector::StringBuffer> notification)
153 : m_v8Notification(std::move(notification)) {}
154
155 std::unique_ptr<protocol::Serializable> m_blinkNotification;
156 std::unique_ptr<v8_inspector::StringBuffer> m_v8Notification;
157 String m_serialized;
158 };
159
160 void InspectorSession::sendProtocolNotification(
161 std::unique_ptr<protocol::Serializable> notification) {
162 if (m_disposed)
163 return;
164 m_notificationQueue.append(
165 Notification::createForBlink(std::move(notification)));
114 } 166 }
115 167
116 void InspectorSession::sendProtocolNotification(const String& message) { 168 void InspectorSession::sendNotification(
169 std::unique_ptr<v8_inspector::StringBuffer> notification) {
117 if (m_disposed) 170 if (m_disposed)
118 return; 171 return;
119 m_notificationQueue.append(message); 172 m_notificationQueue.append(
120 } 173 Notification::createForV8(std::move(notification)));
121
122 void InspectorSession::sendProtocolNotification(
123 const v8_inspector::StringView& message) {
124 sendProtocolNotification(toCoreString(message));
125 } 174 }
126 175
127 void InspectorSession::flushProtocolNotifications() { 176 void InspectorSession::flushProtocolNotifications() {
128 if (m_disposed) 177 if (m_disposed)
129 return; 178 return;
130 for (size_t i = 0; i < m_agents.size(); i++) 179 for (size_t i = 0; i < m_agents.size(); i++)
131 m_agents[i]->flushPendingProtocolNotifications(); 180 m_agents[i]->flushPendingProtocolNotifications();
132 for (size_t i = 0; i < m_notificationQueue.size(); ++i) 181 for (size_t i = 0; i < m_notificationQueue.size(); ++i) {
133 m_client->sendProtocolMessage(m_sessionId, 0, m_notificationQueue[i], 182 m_client->sendProtocolMessage(
134 String()); 183 m_sessionId, 0, m_notificationQueue[i]->serialize(), String());
184 }
135 m_notificationQueue.clear(); 185 m_notificationQueue.clear();
136 } 186 }
137 187
138 DEFINE_TRACE(InspectorSession) { 188 DEFINE_TRACE(InspectorSession) {
139 visitor->trace(m_instrumentingAgents); 189 visitor->trace(m_instrumentingAgents);
140 visitor->trace(m_agents); 190 visitor->trace(m_agents);
141 } 191 }
142 192
143 } // namespace blink 193 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/inspector/InspectorSession.h ('k') | third_party/WebKit/Source/core/inspector/LayoutEditor.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698