| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/devtools/chrome_devtools_manager_delegate.h" | 5 #include "chrome/browser/devtools/devtools_network_protocol_handler.h" |
| 6 | 6 |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "chrome/browser/devtools/devtools_network_conditions.h" | 8 #include "chrome/browser/devtools/devtools_network_conditions.h" |
| 9 #include "chrome/browser/devtools/devtools_network_controller.h" | 9 #include "chrome/browser/devtools/devtools_network_controller.h" |
| 10 #include "chrome/browser/devtools/devtools_protocol.h" | |
| 11 #include "chrome/browser/devtools/devtools_protocol_constants.h" | 10 #include "chrome/browser/devtools/devtools_protocol_constants.h" |
| 12 #include "chrome/browser/devtools/devtools_window.h" | |
| 13 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
| 14 #include "content/public/browser/browser_thread.h" | |
| 15 #include "content/public/browser/devtools_agent_host.h" | 12 #include "content/public/browser/devtools_agent_host.h" |
| 16 #include "content/public/browser/render_process_host.h" | |
| 17 #include "content/public/browser/render_view_host.h" | |
| 18 #include "content/public/browser/site_instance.h" | |
| 19 #include "content/public/browser/web_contents.h" | 13 #include "content/public/browser/web_contents.h" |
| 20 | 14 |
| 21 ChromeDevToolsManagerDelegate::ChromeDevToolsManagerDelegate() { | 15 DevToolsNetworkProtocolHandler::DevToolsNetworkProtocolHandler() { |
| 22 } | 16 } |
| 23 | 17 |
| 24 ChromeDevToolsManagerDelegate::~ChromeDevToolsManagerDelegate() { | 18 DevToolsNetworkProtocolHandler::~DevToolsNetworkProtocolHandler() { |
| 25 } | 19 } |
| 26 | 20 |
| 27 void ChromeDevToolsManagerDelegate::Inspect( | 21 base::DictionaryValue* DevToolsNetworkProtocolHandler::HandleCommand( |
| 28 content::BrowserContext* browser_context, | |
| 29 content::DevToolsAgentHost* agent_host) { | |
| 30 if (!agent_host->IsWorker()) { | |
| 31 // TODO(horo): Support other types of DevToolsAgentHost when necessary. | |
| 32 NOTREACHED() << "Inspect() only supports workers."; | |
| 33 } | |
| 34 #if !defined(OS_ANDROID) | |
| 35 if (Profile* profile = Profile::FromBrowserContext(browser_context)) | |
| 36 DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host); | |
| 37 #endif | |
| 38 } | |
| 39 | |
| 40 base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand( | |
| 41 content::DevToolsAgentHost* agent_host, | 22 content::DevToolsAgentHost* agent_host, |
| 42 base::DictionaryValue* command_dict) { | 23 base::DictionaryValue* command_dict) { |
| 43 scoped_ptr<DevToolsProtocol::Command> command( | 24 scoped_ptr<DevToolsProtocol::Command> command( |
| 44 DevToolsProtocol::ParseCommand(command_dict)); | 25 DevToolsProtocol::ParseCommand(command_dict)); |
| 45 if (!command) | 26 if (!command) |
| 46 return NULL; | 27 return NULL; |
| 47 | 28 |
| 48 namespace network = ::chrome::devtools::Network; | 29 namespace network = ::chrome::devtools::Network; |
| 49 const std::string method = command->method(); | 30 const std::string method = command->method(); |
| 50 scoped_ptr<DevToolsProtocol::Response> response; | 31 scoped_ptr<DevToolsProtocol::Response> response; |
| 51 | 32 |
| 52 if (method == network::emulateNetworkConditions::kName) { | 33 if (method == network::emulateNetworkConditions::kName) { |
| 53 response = EmulateNetworkConditions(agent_host, command.get()); | 34 response = EmulateNetworkConditions(agent_host, command.get()); |
| 54 } else if (method == network::canEmulateNetworkConditions::kName) { | 35 } else if (method == network::canEmulateNetworkConditions::kName) { |
| 55 response = CanEmulateNetworkConditions(agent_host, command.get()); | 36 response = CanEmulateNetworkConditions(agent_host, command.get()); |
| 56 } | 37 } |
| 57 | 38 |
| 58 if (response) | 39 if (response) |
| 59 return response->Serialize(); | 40 return response->Serialize(); |
| 60 return NULL; | 41 return NULL; |
| 61 } | 42 } |
| 62 | 43 |
| 63 Profile* ChromeDevToolsManagerDelegate::GetProfile( | 44 Profile* DevToolsNetworkProtocolHandler::GetProfile( |
| 64 content::DevToolsAgentHost* agent_host) { | 45 content::DevToolsAgentHost* agent_host) { |
| 65 content::WebContents* web_contents = agent_host->GetWebContents(); | 46 content::WebContents* web_contents = agent_host->GetWebContents(); |
| 66 if (!web_contents) | 47 if (!web_contents) |
| 67 return NULL; | 48 return NULL; |
| 68 return Profile::FromBrowserContext(web_contents->GetBrowserContext()); | 49 return Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
| 69 } | 50 } |
| 70 | 51 |
| 71 scoped_ptr<DevToolsProtocol::Response> | 52 scoped_ptr<DevToolsProtocol::Response> |
| 72 ChromeDevToolsManagerDelegate::CanEmulateNetworkConditions( | 53 DevToolsNetworkProtocolHandler::CanEmulateNetworkConditions( |
| 73 content::DevToolsAgentHost* agent_host, | 54 content::DevToolsAgentHost* agent_host, |
| 74 DevToolsProtocol::Command* command) { | 55 DevToolsProtocol::Command* command) { |
| 75 base::DictionaryValue* result = new base::DictionaryValue(); | 56 base::DictionaryValue* result = new base::DictionaryValue(); |
| 76 result->SetBoolean(chrome::devtools::kResult, true); | 57 result->SetBoolean(chrome::devtools::kResult, true); |
| 77 return command->SuccessResponse(result); | 58 return command->SuccessResponse(result); |
| 78 } | 59 } |
| 79 | 60 |
| 80 scoped_ptr<DevToolsProtocol::Response> | 61 scoped_ptr<DevToolsProtocol::Response> |
| 81 ChromeDevToolsManagerDelegate::EmulateNetworkConditions( | 62 DevToolsNetworkProtocolHandler::EmulateNetworkConditions( |
| 82 content::DevToolsAgentHost* agent_host, | 63 content::DevToolsAgentHost* agent_host, |
| 83 DevToolsProtocol::Command* command) { | 64 DevToolsProtocol::Command* command) { |
| 84 base::DictionaryValue* params = command->params(); | 65 base::DictionaryValue* params = command->params(); |
| 85 namespace names = ::chrome::devtools::Network::emulateNetworkConditions; | 66 namespace names = ::chrome::devtools::Network::emulateNetworkConditions; |
| 86 | 67 |
| 87 bool offline = false; | 68 bool offline = false; |
| 88 if (!params || !params->GetBoolean(names::kParamOffline, &offline)) | 69 if (!params || !params->GetBoolean(names::kParamOffline, &offline)) |
| 89 return command->InvalidParamResponse(names::kParamOffline); | 70 return command->InvalidParamResponse(names::kParamOffline); |
| 90 | 71 |
| 91 double latency = 0.0; | 72 double latency = 0.0; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 107 upload_throughput = 0.0; | 88 upload_throughput = 0.0; |
| 108 | 89 |
| 109 scoped_ptr<DevToolsNetworkConditions> conditions( | 90 scoped_ptr<DevToolsNetworkConditions> conditions( |
| 110 new DevToolsNetworkConditions( | 91 new DevToolsNetworkConditions( |
| 111 offline, latency, download_throughput, upload_throughput)); | 92 offline, latency, download_throughput, upload_throughput)); |
| 112 | 93 |
| 113 UpdateNetworkState(agent_host, conditions.Pass()); | 94 UpdateNetworkState(agent_host, conditions.Pass()); |
| 114 return command->SuccessResponse(NULL); | 95 return command->SuccessResponse(NULL); |
| 115 } | 96 } |
| 116 | 97 |
| 117 void ChromeDevToolsManagerDelegate::UpdateNetworkState( | 98 void DevToolsNetworkProtocolHandler::UpdateNetworkState( |
| 118 content::DevToolsAgentHost* agent_host, | 99 content::DevToolsAgentHost* agent_host, |
| 119 scoped_ptr<DevToolsNetworkConditions> conditions) { | 100 scoped_ptr<DevToolsNetworkConditions> conditions) { |
| 120 Profile* profile = GetProfile(agent_host); | 101 Profile* profile = GetProfile(agent_host); |
| 121 if (!profile) | 102 if (!profile) |
| 122 return; | 103 return; |
| 123 profile->GetDevToolsNetworkController()->SetNetworkState( | 104 profile->GetDevToolsNetworkController()->SetNetworkState( |
| 124 agent_host->GetId(), conditions.Pass()); | 105 agent_host->GetId(), conditions.Pass()); |
| 125 } | 106 } |
| 126 | 107 |
| 127 void ChromeDevToolsManagerDelegate::DevToolsAgentStateChanged( | 108 void DevToolsNetworkProtocolHandler::DevToolsAgentStateChanged( |
| 128 content::DevToolsAgentHost* agent_host, | 109 content::DevToolsAgentHost* agent_host, |
| 129 bool attached) { | 110 bool attached) { |
| 130 scoped_ptr<DevToolsNetworkConditions> conditions; | 111 scoped_ptr<DevToolsNetworkConditions> conditions; |
| 131 if (attached) | 112 if (attached) |
| 132 conditions.reset(new DevToolsNetworkConditions()); | 113 conditions.reset(new DevToolsNetworkConditions()); |
| 133 UpdateNetworkState(agent_host, conditions.Pass()); | 114 UpdateNetworkState(agent_host, conditions.Pass()); |
| 134 } | 115 } |
| OLD | NEW |