Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(378)

Unified Diff: chrome/browser/devtools/devtools_window.cc

Issue 22972007: Migrate DevToolsWindow from specific to opaque frontend host messages (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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, &params))) {
+ 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(

Powered by Google App Engine
This is Rietveld 408576698