summaryrefslogtreecommitdiffstats
path: root/chrome/browser/debugger
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-01 13:21:41 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-01 13:21:41 +0000
commite1ad5e6ab76d46101238b74ee8d5a31e7a56d5d8 (patch)
treee52e2fa113549fc07978b97460169c5f644093c1 /chrome/browser/debugger
parentd14a0d6fe722ce04aac8a06f83a5a15d3e45e44a (diff)
downloadchromium_src-e1ad5e6ab76d46101238b74ee8d5a31e7a56d5d8.zip
chromium_src-e1ad5e6ab76d46101238b74ee8d5a31e7a56d5d8.tar.gz
chromium_src-e1ad5e6ab76d46101238b74ee8d5a31e7a56d5d8.tar.bz2
DevTools: Add docked pane into the browser view.
Review URL: http://codereview.chromium.org/150160 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19723 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/debugger')
-rw-r--r--chrome/browser/debugger/devtools_container.cc50
-rw-r--r--chrome/browser/debugger/devtools_container.h40
-rw-r--r--chrome/browser/debugger/devtools_manager.cc20
-rw-r--r--chrome/browser/debugger/devtools_manager.h5
-rw-r--r--chrome/browser/debugger/devtools_window.cc61
-rw-r--r--chrome/browser/debugger/devtools_window.h3
6 files changed, 70 insertions, 109 deletions
diff --git a/chrome/browser/debugger/devtools_container.cc b/chrome/browser/debugger/devtools_container.cc
deleted file mode 100644
index 28e5b62..0000000
--- a/chrome/browser/debugger/devtools_container.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/debugger/devtools_client_host.h"
-#include "chrome/browser/debugger/devtools_container.h"
-#include "chrome/browser/debugger/devtools_manager.h"
-#include "chrome/browser/debugger/devtools_window.h"
-#include "chrome/browser/views/frame/browser_view.h"
-#include "chrome/browser/tab_contents/tab_contents.h"
-#include "chrome/browser/views/tab_contents/tab_contents_container.h"
-
-#include "app/gfx/canvas.h"
-#include "skia/ext/skia_utils_win.h"
-#include "views/background.h"
-
-DevToolsContainer::DevToolsContainer()
- : devtools_contents_(NULL) {
- contents_container_ = new TabContentsContainer();
- AddChildView(contents_container_);
-}
-
-DevToolsContainer::~DevToolsContainer() {
-}
-
-void DevToolsContainer::ChangeTabContents(TabContents* tab_contents) {
- devtools_contents_ = NULL;
- if (tab_contents) {
- DevToolsClientHost* client_host = DevToolsManager::GetInstance()->
- GetDevToolsClientHostFor(tab_contents->render_view_host());
- if (client_host) {
- DevToolsWindow* window = client_host->AsDevToolsWindow();
- if (window && window->is_docked())
- devtools_contents_ = window->tab_contents();
- }
- }
- contents_container_->ChangeTabContents(devtools_contents_);
- SetVisible(devtools_contents_ != NULL);
- GetParent()->Layout();
-}
-
-gfx::Size DevToolsContainer::GetPreferredSize() {
- return gfx::Size(800, 200);
-}
-
-void DevToolsContainer::Layout() {
- contents_container_->SetVisible(true);
- contents_container_->SetBounds(0, 0, width(), height());
- contents_container_->Layout();
-}
diff --git a/chrome/browser/debugger/devtools_container.h b/chrome/browser/debugger/devtools_container.h
deleted file mode 100644
index 2c55de9..0000000
--- a/chrome/browser/debugger/devtools_container.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_DEBUGGER_DEVTOOLS_CONTAINER_H_
-#define CHROME_BROWSER_DEBUGGER_DEVTOOLS_CONTAINER_H_
-
-#include "base/scoped_ptr.h"
-#include "views/view.h"
-
-class TabContents;
-class TabContentsContainer;
-
-// A views::View subclass that contains a docked dev tools window associated
-// with a TabContents.
-class DevToolsContainer : public views::View {
- public:
- explicit DevToolsContainer();
- virtual ~DevToolsContainer();
-
- // Changes the TabContents for which this container is showing dev tools. Can
- // be NULL.
- void ChangeTabContents(TabContents* tab_contents);
-
- // Overridden from views::View:
- virtual gfx::Size GetPreferredSize();
- virtual void Layout();
-
- private:
- TabContents* GetDevToolsContents(TabContents* tab_contents);
-
- TabContents* devtools_contents_;
-
- // The view that contains the dev tools for selected TabContents.
- TabContentsContainer* contents_container_;
-
- DISALLOW_COPY_AND_ASSIGN(DevToolsContainer);
-};
-
-#endif // CHROME_BROWSER_DEBUGGER_DEVTOOLS_CONTAINER_H_
diff --git a/chrome/browser/debugger/devtools_manager.cc b/chrome/browser/debugger/devtools_manager.cc
index 605553a..1f292b0 100644
--- a/chrome/browser/debugger/devtools_manager.cc
+++ b/chrome/browser/debugger/devtools_manager.cc
@@ -22,6 +22,11 @@ DevToolsManager* DevToolsManager::GetInstance() {
return g_browser_process->devtools_manager();
}
+// static
+void DevToolsManager::RegisterUserPrefs(PrefService* prefs) {
+ prefs->RegisterBooleanPref(prefs::kDevToolsOpenDocked, false);
+}
+
DevToolsManager::DevToolsManager()
: inspected_rvh_for_reopen_(NULL),
in_initial_show_(false) {
@@ -108,10 +113,11 @@ void DevToolsManager::UndockWindow(RenderViewHost* client_rvh) {
ReopenWindow(client_rvh, false);
}
-void DevToolsManager::OpenDevToolsWindow(RenderViewHost* inspected_rvh,
- bool docked) {
+void DevToolsManager::OpenDevToolsWindow(RenderViewHost* inspected_rvh) {
DevToolsClientHost* host = GetDevToolsClientHostFor(inspected_rvh);
if (!host) {
+ bool docked = inspected_rvh->process()->profile()->GetPrefs()->
+ GetBoolean(prefs::kDevToolsOpenDocked);
host = DevToolsWindow::CreateDevToolsWindow(
inspected_rvh->site_instance()->browsing_instance()->profile(),
inspected_rvh,
@@ -254,14 +260,18 @@ void DevToolsManager::ReopenWindow(RenderViewHost* client_rvh, bool docked) {
if (!client_host) {
return;
}
+ RenderViewHost* inspected_rvh = GetInspectedRenderViewHost(client_host);
+ DCHECK(inspected_rvh);
+ inspected_rvh->process()->profile()->GetPrefs()->SetBoolean(
+ prefs::kDevToolsOpenDocked, docked);
+
DevToolsWindow* window = client_host->AsDevToolsWindow();
DCHECK(window);
if (window->is_docked() == docked) {
return;
}
- RenderViewHost* inspected_rvh = GetInspectedRenderViewHost(client_host);
- DCHECK(inspected_rvh);
+
SendDetachToAgent(inspected_rvh);
UnregisterDevToolsClientHostFor(inspected_rvh);
- OpenDevToolsWindow(inspected_rvh, docked);
+ OpenDevToolsWindow(inspected_rvh);
}
diff --git a/chrome/browser/debugger/devtools_manager.h b/chrome/browser/debugger/devtools_manager.h
index b904e6f..af0d90e 100644
--- a/chrome/browser/debugger/devtools_manager.h
+++ b/chrome/browser/debugger/devtools_manager.h
@@ -15,6 +15,7 @@ class Message;
}
class GURL;
+class PrefService;
class RenderViewHost;
// This class is a singleton that manages DevToolsClientHost instances and
@@ -24,6 +25,8 @@ class DevToolsManager : public DevToolsClientHost::CloseListener,
public:
static DevToolsManager* GetInstance();
+ static void RegisterUserPrefs(PrefService* prefs);
+
DevToolsManager();
virtual ~DevToolsManager();
@@ -48,7 +51,7 @@ class DevToolsManager : public DevToolsClientHost::CloseListener,
void DockWindow(RenderViewHost* client_rvn);
void UndockWindow(RenderViewHost* client_rvn);
- void OpenDevToolsWindow(RenderViewHost* inspected_rvh, bool docked = false);
+ void OpenDevToolsWindow(RenderViewHost* inspected_rvh);
// Starts element inspection in the devtools client.
// Creates one by means of OpenDevToolsWindow if no client
diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc
index dcf7d73..ee57310a 100644
--- a/chrome/browser/debugger/devtools_window.cc
+++ b/chrome/browser/debugger/devtools_window.cc
@@ -14,9 +14,9 @@
#include "chrome/browser/tab_contents/navigation_controller.h"
#include "chrome/browser/tab_contents/navigation_entry.h"
#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/browser/tab_contents/tab_contents_delegate.h"
#include "chrome/browser/tab_contents/tab_contents_view.h"
#include "chrome/browser/tabs/tab_strip_model.h"
-#include "chrome/browser/views/frame/browser_view.h"
#include "chrome/common/bindings_policy.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
@@ -44,7 +44,8 @@ class FloatingWindow : public DevToolsWindow,
DISALLOW_COPY_AND_ASSIGN(FloatingWindow);
};
-class DockedWindow : public DevToolsWindow {
+class DockedWindow : public DevToolsWindow,
+ TabContentsDelegate {
public:
DockedWindow(Profile* profile, BrowserWindow* window);
virtual ~DockedWindow();
@@ -52,6 +53,27 @@ class DockedWindow : public DevToolsWindow {
virtual void InspectedTabClosing();
private:
+ // Overridden from TabContentsDelegate:
+ virtual void OpenURLFromTab(TabContents* source,
+ const GURL& url,
+ const GURL& referrer,
+ WindowOpenDisposition disposition,
+ PageTransition::Type transition) {}
+ virtual void NavigationStateChanged(const TabContents* source,
+ unsigned changed_flags) {}
+ virtual void AddNewContents(TabContents* source,
+ TabContents* new_contents,
+ WindowOpenDisposition disposition,
+ const gfx::Rect& initial_pos,
+ bool user_gesture) {}
+ virtual void ActivateContents(TabContents* contents) {}
+ virtual void LoadingStateChanged(TabContents* source) {}
+ virtual void CloseContents(TabContents* source) {}
+ virtual void MoveContents(TabContents* source, const gfx::Rect& pos) {}
+ virtual bool IsPopup(TabContents* source) { return false; }
+ virtual void URLStarredChanged(TabContents* source, bool starred) {}
+ virtual void UpdateTargetURL(TabContents* source, const GURL& url) {}
+ virtual void ToolbarSizeChanged(TabContents* source, bool is_animating) {}
BrowserWindow* window_;
DISALLOW_COPY_AND_ASSIGN(DockedWindow);
@@ -73,6 +95,25 @@ DevToolsWindow* DevToolsWindow::CreateDevToolsWindow(
return new FloatingWindow(profile);
}
+// static
+TabContents* DevToolsWindow::GetDevToolsContents(TabContents* inspected_tab) {
+ if (!inspected_tab) {
+ return NULL;
+ }
+ DevToolsClientHost* client_host =
+ DevToolsManager::GetInstance()->
+ GetDevToolsClientHostFor(inspected_tab->render_view_host());
+ if (!client_host) {
+ return NULL;
+ }
+
+ DevToolsWindow* window = client_host->AsDevToolsWindow();
+ if (!window || !window->is_docked()) {
+ return NULL;
+ }
+ return window->tab_contents();
+}
+
DevToolsWindow::DevToolsWindow(bool docked)
: docked_(docked) {
}
@@ -207,6 +248,7 @@ DockedWindow::DockedWindow(Profile* profile, BrowserWindow* window)
tab_contents->render_view_host()->AllowBindings(BindingsPolicy::DOM_UI);
tab_contents->controller().LoadURL(GetContentsUrl(), GURL(),
PageTransition::START_PAGE);
+ tab_contents->set_delegate(this);
browser_ = NULL;
InitTabContents(tab_contents);
}
@@ -215,18 +257,11 @@ DockedWindow::~DockedWindow() {
}
void DockedWindow::Show() {
- //TODO(pfeldman): Add SetDevToolsVisible to BrowserWindow API.
-//#ifdef OS_WIN
-// BrowserView* browser_view = static_cast<BrowserView*>(window_);
-// browser_view->UpdateDevTools();
-// tab_contents_->view()->SetInitialFocus();
-//#endif
+ window_->UpdateDevTools();
+ tab_contents_->view()->SetInitialFocus();
}
void DockedWindow::InspectedTabClosing() {
-//#ifdef OS_WIN
-// BrowserView* browser_view = static_cast<BrowserView*>(window_);
-// browser_view->UpdateDevTools();
-//#endif
-// delete this;
+ window_->UpdateDevTools();
+ delete this;
}
diff --git a/chrome/browser/debugger/devtools_window.h b/chrome/browser/debugger/devtools_window.h
index ba75ea7..8538cda 100644
--- a/chrome/browser/debugger/devtools_window.h
+++ b/chrome/browser/debugger/devtools_window.h
@@ -27,6 +27,9 @@ class DevToolsWindow : public DevToolsClientHost, public NotificationObserver {
static DevToolsWindow* CreateDevToolsWindow(Profile* profile,
RenderViewHost* inspected_rvh,
bool docked);
+
+ static TabContents* GetDevToolsContents(TabContents* inspected_tab);
+
virtual ~DevToolsWindow();
virtual void Show() = 0;
bool is_docked() { return docked_; };