Chromium Code Reviews| Index: chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
| diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
| index 7cfc9c37824bf5460b8a3d6a418bcd10f23c85a9..100709dfca6afaae120e17169c7c02944b9ef934 100644 |
| --- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
| +++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
| @@ -6,13 +6,41 @@ |
| #include "build/build_config.h" |
| #include "chrome/browser/devtools/devtools_network_protocol_handler.h" |
| +#include "chrome/browser/devtools/devtools_protocol_constants.h" |
| +#include "chrome/browser/ui/tab_contents/core_tab_helper.h" |
| +#include "chrome/browser/ui/tab_contents/core_tab_helper_delegate.h" |
| +#include "chrome/common/chrome_switches.h" |
| +#include "content/public/browser/devtools_agent_host.h" |
| +#include "content/public/browser/render_frame_host.h" |
| #if !defined(OS_ANDROID) |
| #include "chrome/browser/devtools/devtools_window.h" |
| #include "chrome/browser/profiles/profile.h" |
| -#include "content/public/browser/devtools_agent_host.h" |
| #endif // !defined(OS_ANDROID) |
| +namespace { |
| + |
| +scoped_ptr<base::DictionaryValue> RequestAppBanner( |
| + content::DevToolsAgentHost* agent_host, |
| + int command_id, |
| + base::DictionaryValue* params) { |
| + content::WebContents* web_contents = agent_host->GetWebContents(); |
| + const bool ret = CoreTabHelper::FromWebContents(web_contents) |
| + ->delegate() |
| + ->RequestAppBanner(web_contents); |
| + if (!ret) { |
| + web_contents->GetMainFrame()->AddMessageToConsole( |
| + content::CONSOLE_MESSAGE_LEVEL_DEBUG, |
| + "App banners are currently disabled. Please check chrome://flags/#" + |
| + std::string(switches::kEnableAddToShelf)); |
| + } |
| + scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue()); |
| + result->SetBoolean(chrome::devtools::kResult, ret); |
| + return DevToolsProtocol::CreateSuccessResponse(command_id, std::move(result)); |
| +} |
| + |
| +} // namespace |
| + |
| ChromeDevToolsManagerDelegate::ChromeDevToolsManagerDelegate() |
| : network_protocol_handler_(new DevToolsNetworkProtocolHandler()) { |
| } |
| @@ -38,7 +66,18 @@ void ChromeDevToolsManagerDelegate::Inspect( |
| base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand( |
| content::DevToolsAgentHost* agent_host, |
| base::DictionaryValue* command_dict) { |
| - return network_protocol_handler_->HandleCommand(agent_host, command_dict); |
| + int id = 0; |
|
gone
2016/01/19 18:35:00
nit: Can you break this up with newlines? It's ha
horo
2016/01/20 02:26:34
Done.
|
| + std::string method; |
| + base::DictionaryValue* params = nullptr; |
| + if (!DevToolsProtocol::ParseCommand(command_dict, &id, &method, ¶ms)) |
| + return nullptr; |
| + base::DictionaryValue* ret = |
| + network_protocol_handler_->HandleCommand(agent_host, id, method, params); |
| + if (ret) |
| + return ret; |
| + if (method == ::chrome::devtools::Page::requestAppBanner::kName) |
| + return RequestAppBanner(agent_host, id, params).release(); |
| + return nullptr; |
| } |
| void ChromeDevToolsManagerDelegate::DevToolsAgentStateChanged( |