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 |