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

Unified Diff: chrome/browser/ui/webui/workers_ui.cc

Issue 7248076: DevTools: add initial support for shared workers debugging (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed some debug printing Created 9 years, 5 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/ui/webui/workers_ui.cc
diff --git a/chrome/browser/ui/webui/workers_ui.cc b/chrome/browser/ui/webui/workers_ui.cc
index 0dd34a69db58b188720d890fe48e63830deae7c3..62cde037284319addcab6156cb190d9e48472099 100644
--- a/chrome/browser/ui/webui/workers_ui.cc
+++ b/chrome/browser/ui/webui/workers_ui.cc
@@ -6,14 +6,17 @@
#include "base/json/json_writer.h"
#include "base/memory/ref_counted_memory.h"
+#include "base/string_number_conversions.h"
#include "base/string_util.h"
#include "base/values.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/chrome_url_data_manager_backend.h"
#include "chrome/browser/ui/webui/chrome_web_ui_data_source.h"
#include "chrome/common/url_constants.h"
+#include "content/browser/debugger/worker_devtools_manager.h"
#include "content/browser/tab_contents/tab_contents.h"
#include "content/browser/worker_host/worker_process_host.h"
+#include "content/common/devtools_messages.h"
#include "grit/generated_resources.h"
#include "grit/workers_resources.h"
#include "ui/base/resource/resource_bundle.h"
@@ -79,7 +82,8 @@ void WorkersUIHTMLSource::SendSharedWorkersData(int request_id) {
if (!i->shared())
continue;
DictionaryValue* worker_data = new DictionaryValue();
- worker_data->SetInteger("id", i->worker_route_id());
+ worker_data->SetInteger("workerProcessHostId", worker->id());
+ worker_data->SetInteger("workerRouteId", i->worker_route_id());
worker_data->SetString("url", i->url().spec());
worker_data->SetString("name", i->name());
worker_data->SetInteger("pid", worker->pid());
@@ -97,9 +101,54 @@ void WorkersUIHTMLSource::SendSharedWorkersData(int request_id) {
SendResponse(request_id, json_bytes);
}
+class WorkersDOMHandler : public WebUIMessageHandler {
+ public:
+ WorkersDOMHandler() {}
+ virtual ~WorkersDOMHandler() {}
+
+ private:
+ // WebUIMessageHandler implementation.
+ virtual void RegisterMessages();
+
+ // Callback for "openDevTools" message.
+ void HandleOpenDevTools(const ListValue* args);
+
+ DISALLOW_COPY_AND_ASSIGN(WorkersDOMHandler);
+};
+
+void WorkersDOMHandler::RegisterMessages() {
+ web_ui_->RegisterMessageCallback("openDevTools",
+ NewCallback(this, &WorkersDOMHandler::HandleOpenDevTools));
+}
+
+static void OpenDevToolsOnIOThread(int worker_process_host_id,
+ int worker_route_id) {
+ WorkerDevToolsManager::GetInstance()->OpenDevToolsForWorker(
+ worker_process_host_id, worker_route_id);
+}
+
+void WorkersDOMHandler::HandleOpenDevTools(const ListValue* args) {
+ std::string worker_process_host_id_str;
+ std::string worker_route_id_str;
+ int worker_process_host_id;
+ int worker_route_id;
+ CHECK(args->GetSize() == 2);
+ CHECK(args->GetString(0, &worker_process_host_id_str));
+ CHECK(args->GetString(1, &worker_route_id_str));
+ CHECK(base::StringToInt(worker_process_host_id_str,
+ &worker_process_host_id));
+ CHECK(base::StringToInt(worker_route_id_str, &worker_route_id));
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, NewRunnableFunction(
+ &OpenDevToolsOnIOThread, worker_process_host_id, worker_route_id));
+}
+
} // namespace
WorkersUI::WorkersUI(TabContents* contents) : ChromeWebUI(contents) {
+ WorkersDOMHandler* handler = new WorkersDOMHandler();
+ AddMessageHandler(handler);
+ handler->Attach(this);
+
WorkersUIHTMLSource* html_source = new WorkersUIHTMLSource();
// Set up the chrome://workers/ source.

Powered by Google App Engine
This is Rietveld 408576698