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

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

Issue 7778010: DevTools: split DevToolsHandler into client and agent handlers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use private inheritance for observer interfaces Created 9 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
« no previous file with comments | « chrome/browser/debugger/devtools_window.h ('k') | content/browser/debugger/devtools_client_host.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/debugger/devtools_window.cc
diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc
index 52e2d13b0b5db7e4c8206161300fac134c64a8e1..5ae3c46c0cb2de083bd5f726cf76f56c118a76ab 100644
--- a/chrome/browser/debugger/devtools_window.cc
+++ b/chrome/browser/debugger/devtools_window.cc
@@ -30,7 +30,9 @@
#include "chrome/common/render_messages.h"
#include "chrome/common/url_constants.h"
#include "content/browser/browsing_instance.h"
+#include "content/browser/content_browser_client.h"
#include "content/browser/debugger/devtools_manager.h"
+#include "content/browser/debugger/worker_devtools_manager_io.h"
#include "content/browser/in_process_webkit/session_storage_namespace.h"
#include "content/browser/load_notification_details.h"
#include "content/browser/renderer_host/render_view_host.h"
@@ -39,6 +41,7 @@
#include "content/browser/tab_contents/tab_contents.h"
#include "content/browser/tab_contents/tab_contents_view.h"
#include "content/common/bindings_policy.h"
+#include "content/common/devtools_messages.h"
#include "content/common/notification_service.h"
#include "grit/generated_resources.h"
@@ -81,7 +84,7 @@ DevToolsWindow* DevToolsWindow::FindDevToolsWindow(
// static
DevToolsWindow* DevToolsWindow::CreateDevToolsWindowForWorker(
Profile* profile) {
- return new DevToolsWindow(profile, NULL, false, true);
+ return Create(profile, NULL, false, true);
}
// static
@@ -108,25 +111,34 @@ void DevToolsWindow::InspectElement(RenderViewHost* inspected_rvh,
}
-DevToolsWindow::DevToolsWindow(Profile* profile,
+DevToolsWindow* DevToolsWindow::Create(
+ Profile* profile,
+ RenderViewHost* inspected_rvh,
+ bool docked,
+ bool shared_worker_frontend) {
+ // Create TabContents with devtools.
+ TabContentsWrapper* tab_contents =
+ Browser::TabContentsFactory(profile, NULL, MSG_ROUTING_NONE, NULL, NULL);
+ tab_contents->render_view_host()->AllowBindings(BindingsPolicy::WEB_UI);
+ tab_contents->controller().LoadURL(
+ GetDevToolsUrl(profile, docked, shared_worker_frontend),
+ GURL(),
+ PageTransition::START_PAGE);
+ return new DevToolsWindow(tab_contents, profile, inspected_rvh, docked);
+}
+
+DevToolsWindow::DevToolsWindow(TabContentsWrapper* tab_contents,
+ Profile* profile,
RenderViewHost* inspected_rvh,
- bool docked,
- bool shared_worker_frontend)
- : profile_(profile),
+ bool docked)
+ : RenderViewHostObserver(tab_contents->render_view_host()),
+ profile_(profile),
inspected_tab_(NULL),
+ tab_contents_(tab_contents),
browser_(NULL),
docked_(docked),
is_loaded_(false),
- action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE),
- shared_worker_frontend_(shared_worker_frontend) {
- // Create TabContents with devtools.
- tab_contents_ =
- Browser::TabContentsFactory(profile, NULL, MSG_ROUTING_NONE, NULL, NULL);
- tab_contents_->tab_contents()->
- render_view_host()->AllowBindings(BindingsPolicy::WEB_UI);
- tab_contents_->controller().LoadURL(
- GetDevToolsUrl(), GURL(), PageTransition::START_PAGE);
-
+ action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE) {
// Wipe out page icon so that the default application icon is used.
NavigationEntry* entry = tab_contents_->controller().GetActiveEntry();
entry->favicon().set_bitmap(SkBitmap());
@@ -155,8 +167,7 @@ DevToolsWindow::~DevToolsWindow() {
}
void DevToolsWindow::SendMessageToClient(const IPC::Message& message) {
- RenderViewHost* target_host =
- tab_contents_->tab_contents()->render_view_host();
+ RenderViewHost* target_host = tab_contents_->render_view_host();
IPC::Message* m = new IPC::Message(message);
m->set_routing_id(target_host->routing_id());
target_host->Send(m);
@@ -237,7 +248,7 @@ void DevToolsWindow::Show(DevToolsToggleAction action) {
ScheduleAction(action);
}
-void DevToolsWindow::RequestActivate() {
+void DevToolsWindow::OnActivateWindow() {
if (!docked_) {
if (!browser_->window()->IsActive()) {
browser_->window()->Activate();
@@ -283,14 +294,14 @@ void DevToolsWindow::RequestSetDocked(bool docked) {
Show(DEVTOOLS_TOGGLE_ACTION_NONE);
}
-void DevToolsWindow::RequestClose() {
+void DevToolsWindow::OnCloseWindow() {
DCHECK(docked_);
NotifyCloseListener();
InspectedTabClosing();
}
-void DevToolsWindow::RequestSaveAs(const std::string& suggested_file_name,
- const std::string& content) {
+void DevToolsWindow::OnSaveAs(const std::string& suggested_file_name,
+ const std::string& content) {
DevToolsFileUtil::SaveAs(tab_contents_->profile(),
suggested_file_name,
content);
@@ -485,8 +496,9 @@ std::string SkColorToRGBAString(SkColor color) {
base::DoubleToString(SkColorGetA(color) / 255.0).c_str());
}
-GURL DevToolsWindow::GetDevToolsUrl() {
- ThemeService* tp = ThemeServiceFactory::GetForProfile(profile_);
+GURL DevToolsWindow::GetDevToolsUrl(Profile* profile, bool docked,
+ bool shared_worker_frontend) {
+ ThemeService* tp = ThemeServiceFactory::GetForProfile(profile);
CHECK(tp);
SkColor color_toolbar =
@@ -497,10 +509,10 @@ GURL DevToolsWindow::GetDevToolsUrl() {
std::string url_string = StringPrintf(
"%sdevtools.html?docked=%s&toolbarColor=%s&textColor=%s%s",
chrome::kChromeUIDevToolsURL,
- docked_ ? "true" : "false",
+ docked ? "true" : "false",
SkColorToRGBAString(color_toolbar).c_str(),
SkColorToRGBAString(color_tab_text).c_str(),
- shared_worker_frontend_ ? "&isSharedWorker=true" : "");
+ shared_worker_frontend ? "&isSharedWorker=true" : "");
return GURL(url_string);
}
@@ -577,7 +589,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow(
Profile* profile = Profile::FromBrowserContext(
inspected_rvh->process()->browser_context());
bool docked = profile->GetPrefs()->GetBoolean(prefs::kDevToolsOpenDocked);
- window = new DevToolsWindow(profile, inspected_rvh, docked, false);
+ window = Create(profile, inspected_rvh, docked, false);
manager->RegisterDevToolsClientHostFor(inspected_rvh, window);
do_open = true;
}
@@ -602,6 +614,42 @@ DevToolsWindow* DevToolsWindow::AsDevToolsWindow(
return NULL;
}
+void DevToolsWindow::RenderViewHostDestroyed() {
+ // Don't delete |this| here, do it on NOTIFICATION_TAB_CLOSING event.
+}
+
+bool DevToolsWindow::OnMessageReceived(const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(DevToolsWindow, message)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_ForwardToAgent, OnForwardToAgent)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_ActivateWindow, OnActivateWindow)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_CloseWindow, OnCloseWindow)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_RequestDockWindow, OnRequestDockWindow)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_RequestUndockWindow,
+ OnRequestUndockWindow)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_SaveAs,
+ OnSaveAs)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void DevToolsWindow::OnForwardToAgent(const IPC::Message& message) {
+ if (DevToolsManager::GetInstance()->
+ ForwardToDevToolsAgent(this, message))
+ return;
+ WorkerDevToolsManagerIO::ForwardToWorkerDevToolsAgentOnUIThread(
+ this, message);
+}
+
+void DevToolsWindow::OnRequestDockWindow() {
+ RequestSetDocked(true);
+}
+
+void DevToolsWindow::OnRequestUndockWindow() {
+ RequestSetDocked(false);
+}
+
content::JavaScriptDialogCreator* DevToolsWindow::GetJavaScriptDialogCreator() {
if (inspected_tab_ && inspected_tab_->tab_contents()->delegate()) {
return inspected_tab_->tab_contents()->delegate()->
« no previous file with comments | « chrome/browser/debugger/devtools_window.h ('k') | content/browser/debugger/devtools_client_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698