Index: content/browser/devtools/renderer_overrides_handler.cc |
diff --git a/content/browser/devtools/renderer_overrides_handler.cc b/content/browser/devtools/renderer_overrides_handler.cc |
index 4951557ef17d5a78eb212e8f0ee9fdf4ab26a458..82e7cb06997d2aa908789ca235c682e27086124d 100644 |
--- a/content/browser/devtools/renderer_overrides_handler.cc |
+++ b/content/browser/devtools/renderer_overrides_handler.cc |
@@ -23,6 +23,7 @@ |
#include "content/browser/renderer_host/render_view_host_impl.h" |
#include "content/common/view_messages.h" |
#include "content/port/browser/render_widget_host_view_port.h" |
+#include "content/public/browser/browser_context.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/content_browser_client.h" |
#include "content/public/browser/devtools_agent_host.h" |
@@ -32,6 +33,7 @@ |
#include "content/public/browser/render_process_host.h" |
#include "content/public/browser/render_view_host.h" |
#include "content/public/browser/render_widget_host_view.h" |
+#include "content/public/browser/resource_context.h" |
#include "content/public/browser/storage_partition.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/browser/web_contents_delegate.h" |
@@ -103,6 +105,11 @@ RendererOverridesHandler::RendererOverridesHandler(DevToolsAgentHost* agent) |
&RendererOverridesHandler::ClearBrowserCookies, |
base::Unretained(this))); |
RegisterCommandHandler( |
+ devtools::Network::emulateNetworkConditions::kName, |
+ base::Bind( |
+ &RendererOverridesHandler::EmulateNetworkConditions, |
+ base::Unretained(this))); |
+ RegisterCommandHandler( |
devtools::Page::disable::kName, |
base::Bind( |
&RendererOverridesHandler::PageDisable, base::Unretained(this))); |
@@ -172,6 +179,7 @@ RendererOverridesHandler::~RendererOverridesHandler() {} |
void RendererOverridesHandler::OnClientDetached() { |
screencast_command_ = NULL; |
+ UpdateNetworkState(false); |
} |
void RendererOverridesHandler::OnSwapCompositorFrame( |
@@ -272,6 +280,15 @@ base::DictionaryValue* RendererOverridesHandler::CreateScreenshotResponse( |
return response; |
} |
+void RendererOverridesHandler::UpdateNetworkState(bool offline) { |
+ RenderViewHost* host = agent_->GetRenderViewHost(); |
+ if (!host) |
+ return; |
+ ResourceContext* context = host->GetSiteInstance()->GetProcess()-> |
+ GetBrowserContext()->GetResourceContext(); |
+ context->SetNetworkState(agent_->GetId(), offline); |
+} |
+ |
// DOM agent handlers -------------------------------------------------------- |
scoped_refptr<DevToolsProtocol::Response> |
@@ -314,6 +331,20 @@ RendererOverridesHandler::ClearBrowserCookies( |
return command->SuccessResponse(NULL); |
} |
+scoped_refptr<DevToolsProtocol::Response> |
+RendererOverridesHandler::EmulateNetworkConditions( |
+ scoped_refptr<DevToolsProtocol::Command> command) { |
+ base::DictionaryValue* params = command->params(); |
+ bool offline = false; |
+ const char* offline_param = |
+ devtools::Network::emulateNetworkConditions::kParamOffline; |
+ if (!params || !params->GetBoolean(offline_param, &offline)) |
+ return command->InvalidParamResponse(offline_param); |
+ |
+ UpdateNetworkState(offline); |
+ return command->SuccessResponse(NULL); |
+} |
+ |
// Page agent handlers ------------------------------------------------------- |