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

Side by Side Diff: content/renderer/devtools/devtools_agent.cc

Issue 1437283003: [DevTools] filter any messages from previous session in DevToolsAgentHostImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/renderer/devtools/devtools_agent.h" 5 #include "content/renderer/devtools/devtools_agent.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 if (message.type() == FrameMsg_Navigate::ID) 94 if (message.type() == FrameMsg_Navigate::ID)
95 ContinueProgram(); // Don't want to swallow the message. 95 ContinueProgram(); // Don't want to swallow the message.
96 96
97 return handled; 97 return handled;
98 } 98 }
99 99
100 void DevToolsAgent::WidgetWillClose() { 100 void DevToolsAgent::WidgetWillClose() {
101 ContinueProgram(); 101 ContinueProgram();
102 } 102 }
103 103
104 void DevToolsAgent::sendProtocolMessage( 104 void DevToolsAgent::sendProtocolMessage(int session_id,
105 int call_id, 105 int call_id,
106 const blink::WebString& message, 106 const blink::WebString& message,
107 const blink::WebString& state_cookie) { 107 const blink::WebString& state_cookie) {
108 SendChunkedProtocolMessage( 108 SendChunkedProtocolMessage(this, routing_id(), session_id, call_id,
109 this, routing_id(), call_id, message.utf8(), state_cookie.utf8()); 109 message.utf8(), state_cookie.utf8());
110 } 110 }
111 111
112 blink::WebDevToolsAgentClient::WebKitClientMessageLoop* 112 blink::WebDevToolsAgentClient::WebKitClientMessageLoop*
113 DevToolsAgent::createClientMessageLoop() { 113 DevToolsAgent::createClientMessageLoop() {
114 return new WebKitClientMessageLoopImpl(); 114 return new WebKitClientMessageLoopImpl();
115 } 115 }
116 116
117 void DevToolsAgent::willEnterDebugLoop() { 117 void DevToolsAgent::willEnterDebugLoop() {
118 paused_ = true; 118 paused_ = true;
119 if (RenderWidget* widget = frame_->GetRenderWidget()) 119 if (RenderWidget* widget = frame_->GetRenderWidget())
(...skipping 24 matching lines...) Expand all
144 // static 144 // static
145 DevToolsAgent* DevToolsAgent::FromRoutingId(int routing_id) { 145 DevToolsAgent* DevToolsAgent::FromRoutingId(int routing_id) {
146 IdToAgentMap::iterator it = g_agent_for_routing_id.Get().find(routing_id); 146 IdToAgentMap::iterator it = g_agent_for_routing_id.Get().find(routing_id);
147 if (it != g_agent_for_routing_id.Get().end()) { 147 if (it != g_agent_for_routing_id.Get().end()) {
148 return it->second; 148 return it->second;
149 } 149 }
150 return NULL; 150 return NULL;
151 } 151 }
152 152
153 // static 153 // static
154 void DevToolsAgent::SendChunkedProtocolMessage( 154 void DevToolsAgent::SendChunkedProtocolMessage(IPC::Sender* sender,
155 IPC::Sender* sender, 155 int routing_id,
156 int routing_id, 156 int session_id,
157 int call_id, 157 int call_id,
158 const std::string& message, 158 const std::string& message,
159 const std::string& post_state) { 159 const std::string& post_state) {
160 DevToolsMessageChunk chunk; 160 DevToolsMessageChunk chunk;
161 chunk.message_size = message.size(); 161 chunk.message_size = message.size();
162 chunk.is_first = true; 162 chunk.is_first = true;
163 163
164 if (message.length() < kMaxMessageChunkSize) { 164 if (message.length() < kMaxMessageChunkSize) {
165 chunk.data = message; 165 chunk.data = message;
166 chunk.session_id = session_id;
166 chunk.call_id = call_id; 167 chunk.call_id = call_id;
167 chunk.post_state = post_state; 168 chunk.post_state = post_state;
168 chunk.is_last = true; 169 chunk.is_last = true;
169 sender->Send(new DevToolsClientMsg_DispatchOnInspectorFrontend( 170 sender->Send(new DevToolsClientMsg_DispatchOnInspectorFrontend(
170 routing_id, chunk)); 171 routing_id, chunk));
171 return; 172 return;
172 } 173 }
173 174
174 for (size_t pos = 0; pos < message.length(); pos += kMaxMessageChunkSize) { 175 for (size_t pos = 0; pos < message.length(); pos += kMaxMessageChunkSize) {
175 chunk.is_last = pos + kMaxMessageChunkSize >= message.length(); 176 chunk.is_last = pos + kMaxMessageChunkSize >= message.length();
177 chunk.session_id = chunk.is_last ? session_id : 0;
176 chunk.call_id = chunk.is_last ? call_id : 0; 178 chunk.call_id = chunk.is_last ? call_id : 0;
177 chunk.post_state = chunk.is_last ? post_state : std::string(); 179 chunk.post_state = chunk.is_last ? post_state : std::string();
178 chunk.data = message.substr(pos, kMaxMessageChunkSize); 180 chunk.data = message.substr(pos, kMaxMessageChunkSize);
179 sender->Send(new DevToolsClientMsg_DispatchOnInspectorFrontend( 181 sender->Send(new DevToolsClientMsg_DispatchOnInspectorFrontend(
180 routing_id, chunk)); 182 routing_id, chunk));
181 chunk.is_first = false; 183 chunk.is_first = false;
182 chunk.message_size = 0; 184 chunk.message_size = 0;
183 } 185 }
184 } 186 }
185 187
186 void DevToolsAgent::OnAttach(const std::string& host_id) { 188 void DevToolsAgent::OnAttach(const std::string& host_id, int session_id) {
187 WebDevToolsAgent* web_agent = GetWebAgent(); 189 WebDevToolsAgent* web_agent = GetWebAgent();
188 if (web_agent) { 190 if (web_agent) {
189 web_agent->attach(WebString::fromUTF8(host_id)); 191 web_agent->attach(WebString::fromUTF8(host_id), session_id);
190 is_attached_ = true; 192 is_attached_ = true;
191 } 193 }
192 } 194 }
193 195
194 void DevToolsAgent::OnReattach(const std::string& host_id, 196 void DevToolsAgent::OnReattach(const std::string& host_id,
197 int session_id,
195 const std::string& agent_state) { 198 const std::string& agent_state) {
196 WebDevToolsAgent* web_agent = GetWebAgent(); 199 WebDevToolsAgent* web_agent = GetWebAgent();
197 if (web_agent) { 200 if (web_agent) {
198 web_agent->reattach(WebString::fromUTF8(host_id), 201 web_agent->reattach(WebString::fromUTF8(host_id), session_id,
199 WebString::fromUTF8(agent_state)); 202 WebString::fromUTF8(agent_state));
200 is_attached_ = true; 203 is_attached_ = true;
201 } 204 }
202 } 205 }
203 206
204 void DevToolsAgent::OnDetach() { 207 void DevToolsAgent::OnDetach() {
205 WebDevToolsAgent* web_agent = GetWebAgent(); 208 WebDevToolsAgent* web_agent = GetWebAgent();
206 if (web_agent) { 209 if (web_agent) {
207 web_agent->detach(); 210 web_agent->detach();
208 is_attached_ = false; 211 is_attached_ = false;
209 } 212 }
210 } 213 }
211 214
212 void DevToolsAgent::OnDispatchOnInspectorBackend(const std::string& message) { 215 void DevToolsAgent::OnDispatchOnInspectorBackend(int session_id,
216 const std::string& message) {
213 TRACE_EVENT0("devtools", "DevToolsAgent::OnDispatchOnInspectorBackend"); 217 TRACE_EVENT0("devtools", "DevToolsAgent::OnDispatchOnInspectorBackend");
214 WebDevToolsAgent* web_agent = GetWebAgent(); 218 WebDevToolsAgent* web_agent = GetWebAgent();
215 if (web_agent) 219 if (web_agent)
216 web_agent->dispatchOnInspectorBackend(WebString::fromUTF8(message)); 220 web_agent->dispatchOnInspectorBackend(session_id,
221 WebString::fromUTF8(message));
217 } 222 }
218 223
219 void DevToolsAgent::OnInspectElement(int x, int y) { 224 void DevToolsAgent::OnInspectElement(int x, int y) {
220 WebDevToolsAgent* web_agent = GetWebAgent(); 225 WebDevToolsAgent* web_agent = GetWebAgent();
221 if (web_agent) { 226 if (web_agent) {
222 DCHECK(is_attached_); 227 DCHECK(is_attached_);
223 web_agent->inspectElementAt(WebPoint(x, y)); 228 web_agent->inspectElementAt(WebPoint(x, y));
224 } 229 }
225 } 230 }
226 231
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 WebDevToolsAgent* DevToolsAgent::GetWebAgent() { 273 WebDevToolsAgent* DevToolsAgent::GetWebAgent() {
269 WebLocalFrame* web_frame = frame_->GetWebFrame(); 274 WebLocalFrame* web_frame = frame_->GetWebFrame();
270 return web_frame ? web_frame->devToolsAgent() : nullptr; 275 return web_frame ? web_frame->devToolsAgent() : nullptr;
271 } 276 }
272 277
273 bool DevToolsAgent::IsAttached() { 278 bool DevToolsAgent::IsAttached() {
274 return is_attached_; 279 return is_attached_;
275 } 280 }
276 281
277 } // namespace content 282 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/devtools/devtools_agent.h ('k') | content/renderer/devtools/devtools_agent_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698