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( |