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

Side by Side Diff: content/browser/devtools/renderer_overrides_handler.cc

Issue 182993003: Add the ability for DevTools to wrap network transactions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 6 years, 7 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/browser/devtools/renderer_overrides_handler.h" 5 #include "content/browser/devtools/renderer_overrides_handler.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/barrier_closure.h" 10 #include "base/barrier_closure.h"
11 #include "base/base64.h" 11 #include "base/base64.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/bind_helpers.h" 13 #include "base/bind_helpers.h"
14 #include "base/files/file_path.h" 14 #include "base/files/file_path.h"
15 #include "base/strings/string16.h" 15 #include "base/strings/string16.h"
16 #include "base/thread_task_runner_handle.h" 16 #include "base/thread_task_runner_handle.h"
17 #include "base/values.h" 17 #include "base/values.h"
18 #include "content/browser/child_process_security_policy_impl.h" 18 #include "content/browser/child_process_security_policy_impl.h"
19 #include "content/browser/devtools/devtools_protocol_constants.h" 19 #include "content/browser/devtools/devtools_protocol_constants.h"
20 #include "content/browser/devtools/devtools_tracing_handler.h" 20 #include "content/browser/devtools/devtools_tracing_handler.h"
21 #include "content/browser/renderer_host/dip_util.h" 21 #include "content/browser/renderer_host/dip_util.h"
22 #include "content/browser/renderer_host/render_view_host_delegate.h" 22 #include "content/browser/renderer_host/render_view_host_delegate.h"
23 #include "content/browser/renderer_host/render_view_host_impl.h" 23 #include "content/browser/renderer_host/render_view_host_impl.h"
24 #include "content/browser/renderer_host/render_widget_host_view_base.h" 24 #include "content/browser/renderer_host/render_widget_host_view_base.h"
25 #include "content/common/view_messages.h" 25 #include "content/common/view_messages.h"
26 #include "content/public/browser/browser_context.h"
26 #include "content/public/browser/browser_thread.h" 27 #include "content/public/browser/browser_thread.h"
27 #include "content/public/browser/content_browser_client.h" 28 #include "content/public/browser/content_browser_client.h"
28 #include "content/public/browser/devtools_agent_host.h" 29 #include "content/public/browser/devtools_agent_host.h"
29 #include "content/public/browser/javascript_dialog_manager.h" 30 #include "content/public/browser/javascript_dialog_manager.h"
30 #include "content/public/browser/navigation_controller.h" 31 #include "content/public/browser/navigation_controller.h"
31 #include "content/public/browser/navigation_entry.h" 32 #include "content/public/browser/navigation_entry.h"
32 #include "content/public/browser/render_process_host.h" 33 #include "content/public/browser/render_process_host.h"
33 #include "content/public/browser/render_view_host.h" 34 #include "content/public/browser/render_view_host.h"
34 #include "content/public/browser/render_widget_host_view.h" 35 #include "content/public/browser/render_widget_host_view.h"
36 #include "content/public/browser/resource_context.h"
35 #include "content/public/browser/storage_partition.h" 37 #include "content/public/browser/storage_partition.h"
36 #include "content/public/browser/web_contents.h" 38 #include "content/public/browser/web_contents.h"
37 #include "content/public/browser/web_contents_delegate.h" 39 #include "content/public/browser/web_contents_delegate.h"
38 #include "content/public/common/content_client.h" 40 #include "content/public/common/content_client.h"
39 #include "content/public/common/page_transition_types.h" 41 #include "content/public/common/page_transition_types.h"
40 #include "content/public/common/referrer.h" 42 #include "content/public/common/referrer.h"
41 #include "ipc/ipc_sender.h" 43 #include "ipc/ipc_sender.h"
42 #include "net/base/net_util.h" 44 #include "net/base/net_util.h"
43 #include "third_party/WebKit/public/web/WebInputEvent.h" 45 #include "third_party/WebKit/public/web/WebInputEvent.h"
44 #include "ui/gfx/codec/jpeg_codec.h" 46 #include "ui/gfx/codec/jpeg_codec.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 devtools::Network::clearBrowserCache::kName, 98 devtools::Network::clearBrowserCache::kName,
97 base::Bind( 99 base::Bind(
98 &RendererOverridesHandler::ClearBrowserCache, 100 &RendererOverridesHandler::ClearBrowserCache,
99 base::Unretained(this))); 101 base::Unretained(this)));
100 RegisterCommandHandler( 102 RegisterCommandHandler(
101 devtools::Network::clearBrowserCookies::kName, 103 devtools::Network::clearBrowserCookies::kName,
102 base::Bind( 104 base::Bind(
103 &RendererOverridesHandler::ClearBrowserCookies, 105 &RendererOverridesHandler::ClearBrowserCookies,
104 base::Unretained(this))); 106 base::Unretained(this)));
105 RegisterCommandHandler( 107 RegisterCommandHandler(
108 devtools::Network::emulateNetworkConditions::kName,
109 base::Bind(
110 &RendererOverridesHandler::EmulateNetworkConditions,
111 base::Unretained(this)));
112 RegisterCommandHandler(
106 devtools::Page::disable::kName, 113 devtools::Page::disable::kName,
107 base::Bind( 114 base::Bind(
108 &RendererOverridesHandler::PageDisable, base::Unretained(this))); 115 &RendererOverridesHandler::PageDisable, base::Unretained(this)));
109 RegisterCommandHandler( 116 RegisterCommandHandler(
110 devtools::Page::handleJavaScriptDialog::kName, 117 devtools::Page::handleJavaScriptDialog::kName,
111 base::Bind( 118 base::Bind(
112 &RendererOverridesHandler::PageHandleJavaScriptDialog, 119 &RendererOverridesHandler::PageHandleJavaScriptDialog,
113 base::Unretained(this))); 120 base::Unretained(this)));
114 RegisterCommandHandler( 121 RegisterCommandHandler(
115 devtools::Page::navigate::kName, 122 devtools::Page::navigate::kName,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 devtools::Input::dispatchGestureEvent::kName, 172 devtools::Input::dispatchGestureEvent::kName,
166 base::Bind( 173 base::Bind(
167 &RendererOverridesHandler::InputDispatchGestureEvent, 174 &RendererOverridesHandler::InputDispatchGestureEvent,
168 base::Unretained(this))); 175 base::Unretained(this)));
169 } 176 }
170 177
171 RendererOverridesHandler::~RendererOverridesHandler() {} 178 RendererOverridesHandler::~RendererOverridesHandler() {}
172 179
173 void RendererOverridesHandler::OnClientDetached() { 180 void RendererOverridesHandler::OnClientDetached() {
174 screencast_command_ = NULL; 181 screencast_command_ = NULL;
182 UpdateNetworkState(false);
175 } 183 }
176 184
177 void RendererOverridesHandler::OnSwapCompositorFrame( 185 void RendererOverridesHandler::OnSwapCompositorFrame(
178 const cc::CompositorFrameMetadata& frame_metadata) { 186 const cc::CompositorFrameMetadata& frame_metadata) {
179 last_compositor_frame_metadata_ = frame_metadata; 187 last_compositor_frame_metadata_ = frame_metadata;
180 188
181 if (screencast_command_) 189 if (screencast_command_)
182 InnerSwapCompositorFrame(); 190 InnerSwapCompositorFrame();
183 } 191 }
184 192
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 base::StringPiece(reinterpret_cast<const char*>(&png_data[0]), 273 base::StringPiece(reinterpret_cast<const char*>(&png_data[0]),
266 png_data.size()), 274 png_data.size()),
267 &base_64_data); 275 &base_64_data);
268 276
269 base::DictionaryValue* response = new base::DictionaryValue(); 277 base::DictionaryValue* response = new base::DictionaryValue();
270 response->SetString( 278 response->SetString(
271 devtools::Page::captureScreenshot::kResponseData, base_64_data); 279 devtools::Page::captureScreenshot::kResponseData, base_64_data);
272 return response; 280 return response;
273 } 281 }
274 282
283 void RendererOverridesHandler::UpdateNetworkState(bool offline) {
284 RenderViewHost* host = agent_->GetRenderViewHost();
285 if (!host)
286 return;
287 ResourceContext* context = host->GetSiteInstance()->GetProcess()->
288 GetBrowserContext()->GetResourceContext();
289 context->SetNetworkState(agent_->GetId(), offline);
290 }
291
275 // DOM agent handlers -------------------------------------------------------- 292 // DOM agent handlers --------------------------------------------------------
276 293
277 scoped_refptr<DevToolsProtocol::Response> 294 scoped_refptr<DevToolsProtocol::Response>
278 RendererOverridesHandler::GrantPermissionsForSetFileInputFiles( 295 RendererOverridesHandler::GrantPermissionsForSetFileInputFiles(
279 scoped_refptr<DevToolsProtocol::Command> command) { 296 scoped_refptr<DevToolsProtocol::Command> command) {
280 base::DictionaryValue* params = command->params(); 297 base::DictionaryValue* params = command->params();
281 base::ListValue* file_list = NULL; 298 base::ListValue* file_list = NULL;
282 const char* param = 299 const char* param =
283 devtools::DOM::setFileInputFiles::kParamFiles; 300 devtools::DOM::setFileInputFiles::kParamFiles;
284 if (!params || !params->GetList(param, &file_list)) 301 if (!params || !params->GetList(param, &file_list))
(...skipping 22 matching lines...) Expand all
307 return command->SuccessResponse(NULL); 324 return command->SuccessResponse(NULL);
308 } 325 }
309 326
310 scoped_refptr<DevToolsProtocol::Response> 327 scoped_refptr<DevToolsProtocol::Response>
311 RendererOverridesHandler::ClearBrowserCookies( 328 RendererOverridesHandler::ClearBrowserCookies(
312 scoped_refptr<DevToolsProtocol::Command> command) { 329 scoped_refptr<DevToolsProtocol::Command> command) {
313 GetContentClient()->browser()->ClearCookies(agent_->GetRenderViewHost()); 330 GetContentClient()->browser()->ClearCookies(agent_->GetRenderViewHost());
314 return command->SuccessResponse(NULL); 331 return command->SuccessResponse(NULL);
315 } 332 }
316 333
334 scoped_refptr<DevToolsProtocol::Response>
335 RendererOverridesHandler::EmulateNetworkConditions(
336 scoped_refptr<DevToolsProtocol::Command> command) {
337 base::DictionaryValue* params = command->params();
338 bool offline = false;
339 const char* offline_param =
340 devtools::Network::emulateNetworkConditions::kParamOffline;
341 if (!params || !params->GetBoolean(offline_param, &offline))
342 return command->InvalidParamResponse(offline_param);
343
344 UpdateNetworkState(offline);
345 return command->SuccessResponse(NULL);
346 }
347
317 348
318 // Page agent handlers ------------------------------------------------------- 349 // Page agent handlers -------------------------------------------------------
319 350
320 scoped_refptr<DevToolsProtocol::Response> 351 scoped_refptr<DevToolsProtocol::Response>
321 RendererOverridesHandler::PageDisable( 352 RendererOverridesHandler::PageDisable(
322 scoped_refptr<DevToolsProtocol::Command> command) { 353 scoped_refptr<DevToolsProtocol::Command> command) {
323 screencast_command_ = NULL; 354 screencast_command_ = NULL;
324 return NULL; 355 return NULL;
325 } 356 }
326 357
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 return NULL; 1024 return NULL;
994 } 1025 }
995 event.data.pinchUpdate.scale = static_cast<float>(scale); 1026 event.data.pinchUpdate.scale = static_cast<float>(scale);
996 } 1027 }
997 1028
998 host->ForwardGestureEvent(event); 1029 host->ForwardGestureEvent(event);
999 return command->SuccessResponse(NULL); 1030 return command->SuccessResponse(NULL);
1000 } 1031 }
1001 1032
1002 } // namespace content 1033 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698