| Index: chrome/browser/devtools/devtools_window.cc
|
| diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc
|
| index 3cc06c80db4400775cd56cb1628e4ac90f3c2278..5ba147bdc6fd9e0d181130e5cb58a5b5bbcc8697 100644
|
| --- a/chrome/browser/devtools/devtools_window.cc
|
| +++ b/chrome/browser/devtools/devtools_window.cc
|
| @@ -7,6 +7,7 @@
|
| #include <algorithm>
|
|
|
| #include "base/command_line.h"
|
| +#include "base/json/json_reader.h"
|
| #include "base/json/json_writer.h"
|
| #include "base/lazy_instance.h"
|
| #include "base/strings/string_number_conversions.h"
|
| @@ -14,6 +15,7 @@
|
| #include "base/values.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| +#include "chrome/browser/devtools/list_value_parser.h"
|
| #include "chrome/browser/extensions/api/debugger/debugger_api.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/extensions/extension_system.h"
|
| @@ -582,6 +584,46 @@ DevToolsWindow::DevToolsWindow(Profile* profile,
|
| if (inspected_rvh)
|
| inspected_contents_observer_.reset(new InspectedWebContentsObserver(
|
| content::WebContents::FromRenderViewHost(inspected_rvh)));
|
| +
|
| + RegisterFrontendMessageHandler("bringToFront",
|
| + BindToListParser(base::Bind(&DevToolsWindow::ActivateWindow,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("closeWindow",
|
| + BindToListParser(base::Bind(&DevToolsWindow::CloseWindow,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("moveWindowBy",
|
| + BindToListParser(base::Bind(&DevToolsWindow::MoveWindow,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("requestSetDockSide",
|
| + BindToListParser(base::Bind(&DevToolsWindow::SetDockSide,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("openInNewTab",
|
| + BindToListParser(base::Bind(&DevToolsWindow::OpenInNewTab,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("save",
|
| + BindToListParser(base::Bind(&DevToolsWindow::SaveToFile,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("append",
|
| + BindToListParser(base::Bind(&DevToolsWindow::AppendToFile,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("requestFileSystems",
|
| + BindToListParser(base::Bind(&DevToolsWindow::RequestFileSystems,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("addFileSystem",
|
| + BindToListParser(base::Bind(&DevToolsWindow::AddFileSystem,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("removeFileSystem",
|
| + BindToListParser(base::Bind(&DevToolsWindow::RemoveFileSystem,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("indexPath",
|
| + BindToListParser(base::Bind(&DevToolsWindow::IndexPath,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("stopIndexing",
|
| + BindToListParser(base::Bind(&DevToolsWindow::StopIndexing,
|
| + base::Unretained(this))));
|
| + RegisterFrontendMessageHandler("searchInPath",
|
| + BindToListParser(base::Bind(&DevToolsWindow::SearchInPath,
|
| + base::Unretained(this))));
|
| }
|
|
|
| // static
|
| @@ -822,6 +864,45 @@ void DevToolsWindow::WebContentsFocused(content::WebContents* contents) {
|
| inspected_browser->window()->WebContentsFocused(contents);
|
| }
|
|
|
| +static const char kFrontendHostMethod[] = "method";
|
| +static const char kFrontendHostParams[] = "params";
|
| +
|
| +void DevToolsWindow::DispatchOnFrontendHost(const std::string& message) {
|
| + std::string method;
|
| + base::ListValue empty_params;
|
| + base::ListValue* params = &empty_params;
|
| +
|
| + base::DictionaryValue* dict;
|
| + scoped_ptr<base::Value> parsed_message(base::JSONReader::Read(message));
|
| + if (!parsed_message ||
|
| + !parsed_message->GetAsDictionary(&dict) ||
|
| + !dict->GetString(kFrontendHostMethod, &method) ||
|
| + (dict->HasKey(kFrontendHostParams) &&
|
| + !dict->GetList(kFrontendHostParams, ¶ms))) {
|
| + LOG(ERROR) << "Cannot parse frontend host message: " << message;
|
| + return;
|
| + }
|
| +
|
| + FrontendMessageHandlerMap::iterator it =
|
| + frontend_message_handlers_.find(method);
|
| + if (it == frontend_message_handlers_.end()) {
|
| + LOG(ERROR) << "Unsupported frontend host method: " << message;
|
| + return;
|
| + }
|
| +
|
| + if (!it->second.Run(*params)) {
|
| + LOG(ERROR) << "Invalid frontend host message parameters: " << message;
|
| + } else {
|
| + LOG(ERROR) << "DevToolsWindow dispatched: " << message;
|
| + }
|
| +}
|
| +
|
| +void DevToolsWindow::RegisterFrontendMessageHandler(
|
| + const std::string& method,
|
| + const FrontendMessageHandler& handler) {
|
| + frontend_message_handlers_[method] = handler;
|
| +}
|
| +
|
| void DevToolsWindow::ActivateWindow() {
|
| if (IsDocked() && GetInspectedBrowserWindow())
|
| web_contents_->GetView()->Focus();
|
| @@ -829,10 +910,6 @@ void DevToolsWindow::ActivateWindow() {
|
| browser_->window()->Activate();
|
| }
|
|
|
| -void DevToolsWindow::ChangeAttachedWindowHeight(unsigned height) {
|
| - NOTREACHED(); // TODO(dgozman): This is not used anymore, remove.
|
| -}
|
| -
|
| void DevToolsWindow::CloseWindow() {
|
| DCHECK(IsDocked());
|
| content::DevToolsManager::GetInstance()->ClientHostClosing(
|
|
|