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..beec4fe3caddd2e0a0795ff511a725cebdd06076 100644 |
--- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
+++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
@@ -5,7 +5,10 @@ |
#include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" |
#include "build/build_config.h" |
+#include "chrome/browser/banners/app_banner_manager_desktop.h" |
#include "chrome/browser/devtools/devtools_network_protocol_handler.h" |
+#include "chrome/browser/devtools/devtools_protocol_constants.h" |
+#include "content/public/browser/render_frame_host.h" |
#if !defined(OS_ANDROID) |
#include "chrome/browser/devtools/devtools_window.h" |
@@ -35,10 +38,51 @@ void ChromeDevToolsManagerDelegate::Inspect( |
#endif // !defined(OS_ANDROID) |
} |
+scoped_ptr<base::DictionaryValue> CanOpenAppBanner( |
pfeldman
2016/01/14 04:43:05
I am not sure we need this. Should we make it avai
horo
2016/01/15 10:00:22
I think we should.
But AppBannerDataFetcherDesktop
|
+ content::DevToolsAgentHost* agent_host, |
+ int command_id, |
+ base::DictionaryValue* params) { |
+ scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue()); |
+ result->SetBoolean(chrome::devtools::kResult, true); |
+ return DevToolsProtocol::CreateSuccessResponse(command_id, std::move(result)); |
+} |
+ |
+scoped_ptr<base::DictionaryValue> OpenAppBanner( |
+ content::DevToolsAgentHost* agent_host, |
+ int command_id, |
+ base::DictionaryValue* params) { |
+ content::WebContents* web_contents = agent_host->GetWebContents(); |
+ content::RenderFrameHost* frame = web_contents->GetMainFrame(); |
+ banners::AppBannerManagerDesktop* manaager = |
pfeldman
2016/01/14 04:43:05
manager
horo
2016/01/15 10:00:22
Done.
|
+ banners::AppBannerManagerDesktop::FromWebContents(web_contents); |
+ if (manaager) { |
+ manaager->TriggerAppBannerFetch(frame, frame->GetLastCommittedURL(), true); |
+ } |
+ scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue()); |
+ result->SetBoolean(chrome::devtools::kResult, true); |
+ return DevToolsProtocol::CreateSuccessResponse(command_id, std::move(result)); |
+} |
+ |
base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand( |
content::DevToolsAgentHost* agent_host, |
base::DictionaryValue* command_dict) { |
- return network_protocol_handler_->HandleCommand(agent_host, command_dict); |
+ base::DictionaryValue* ret = |
+ network_protocol_handler_->HandleCommand(agent_host, command_dict); |
+ if (ret) |
+ return ret; |
+ { |
pfeldman
2016/01/14 04:43:05
why new scope?
horo
2016/01/15 10:00:22
Removed.
Sorry this was still a WIP patch.
|
+ int id = 0; |
pfeldman
2016/01/14 04:43:05
This already has happened in the network handler.
horo
2016/01/15 10:00:22
Done.
|
+ std::string method; |
+ base::DictionaryValue* params = nullptr; |
+ if (!DevToolsProtocol::ParseCommand(command_dict, &id, &method, ¶ms)) |
+ return nullptr; |
+ namespace page = ::chrome::devtools::Page; |
+ if (method == page::canOpenAppBanner::kName) |
+ return CanOpenAppBanner(agent_host, id, params).release(); |
+ if (method == page::openAppBanner::kName) |
+ return OpenAppBanner(agent_host, id, params).release(); |
+ } |
+ return nullptr; |
} |
void ChromeDevToolsManagerDelegate::DevToolsAgentStateChanged( |