summaryrefslogtreecommitdiffstats
path: root/chrome
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
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')
-rwxr-xr-xchrome/browser/browser_prefs.cc2
-rw-r--r--chrome/browser/browser_window.h4
-rw-r--r--chrome/browser/cocoa/browser_window_cocoa.h1
-rw-r--r--chrome/browser/cocoa/browser_window_cocoa.mm4
-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
-rw-r--r--chrome/browser/gtk/browser_window_gtk.cc4
-rw-r--r--chrome/browser/gtk/browser_window_gtk.h1
-rw-r--r--chrome/browser/views/frame/browser_view.cc4
-rw-r--r--chrome/browser/views/frame/browser_view.h1
-rw-r--r--chrome/chrome.gyp2
-rw-r--r--chrome/common/pref_names.cc6
-rw-r--r--chrome/common/pref_names.h3
17 files changed, 100 insertions, 111 deletions
diff --git a/chrome/browser/browser_prefs.cc b/chrome/browser/browser_prefs.cc
index f8c5f7f..6d5c1f1 100755
--- a/chrome/browser/browser_prefs.cc
+++ b/chrome/browser/browser_prefs.cc
@@ -9,6 +9,7 @@
#include "chrome/browser/blocked_popup_container.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_shutdown.h"
+#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/dom_ui/new_tab_ui.h"
#include "chrome/browser/download/download_manager.h"
#include "chrome/browser/external_protocol_handler.h"
@@ -64,6 +65,7 @@ void RegisterAllPrefs(PrefService* user_prefs, PrefService* local_state) {
TemplateURLPrepopulateData::RegisterUserPrefs(user_prefs);
NewTabUI::RegisterUserPrefs(user_prefs);
BlockedPopupContainer::RegisterUserPrefs(user_prefs);
+ DevToolsManager::RegisterUserPrefs(user_prefs);
}
} // namespace browser
diff --git a/chrome/browser/browser_window.h b/chrome/browser/browser_window.h
index 2c558aa..4ff81bb 100644
--- a/chrome/browser/browser_window.h
+++ b/chrome/browser/browser_window.h
@@ -77,6 +77,10 @@ class BrowserWindow {
// frames may need to refresh their title bar.
virtual void UpdateTitleBar() = 0;
+ // Inform the frame that the dev tools window for the selected tab has
+ // changed.
+ virtual void UpdateDevTools() = 0;
+
// Update any loading animations running in the window. |should_animate| is
// true if there are tabs loading and the animations should continue, false
// if there are no active loads and the animations should end.
diff --git a/chrome/browser/cocoa/browser_window_cocoa.h b/chrome/browser/cocoa/browser_window_cocoa.h
index 9a332ff..bc995c9 100644
--- a/chrome/browser/cocoa/browser_window_cocoa.h
+++ b/chrome/browser/cocoa/browser_window_cocoa.h
@@ -39,6 +39,7 @@ class BrowserWindowCocoa : public BrowserWindow,
virtual StatusBubble* GetStatusBubble();
virtual void SelectedTabToolbarSizeChanged(bool is_animating);
virtual void UpdateTitleBar();
+ virtual void UpdateDevTools();
virtual void UpdateLoadingAnimations(bool should_animate);
virtual void SetStarredState(bool is_starred);
virtual gfx::Rect GetNormalBounds() const;
diff --git a/chrome/browser/cocoa/browser_window_cocoa.mm b/chrome/browser/cocoa/browser_window_cocoa.mm
index fdb40de..709b29b 100644
--- a/chrome/browser/cocoa/browser_window_cocoa.mm
+++ b/chrome/browser/cocoa/browser_window_cocoa.mm
@@ -100,6 +100,10 @@ void BrowserWindowCocoa::UpdateTitleBar() {
[window_ setMiniwindowTitle:newTitle];
}
+void BrowserWindowCocoa::UpdateDevTools() {
+ NOTIMPLEMENTED();
+}
+
void BrowserWindowCocoa::UpdateLoadingAnimations(bool should_animate) {
[controller_ updateLoadingAnimations:should_animate ? YES : NO];
}
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_; };
diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc
index e388382..2060ca4 100644
--- a/chrome/browser/gtk/browser_window_gtk.cc
+++ b/chrome/browser/gtk/browser_window_gtk.cc
@@ -538,6 +538,10 @@ void BrowserWindowGtk::UpdateTitleBar() {
}
}
+void BrowserWindowGtk::UpdateDevTools() {
+ NOTIMPLEMENTED();
+}
+
void BrowserWindowGtk::UpdateLoadingAnimations(bool should_animate) {
if (should_animate) {
if (!loading_animation_timer_.IsRunning()) {
diff --git a/chrome/browser/gtk/browser_window_gtk.h b/chrome/browser/gtk/browser_window_gtk.h
index 458858a..64d4449 100644
--- a/chrome/browser/gtk/browser_window_gtk.h
+++ b/chrome/browser/gtk/browser_window_gtk.h
@@ -59,6 +59,7 @@ class BrowserWindowGtk : public BrowserWindow,
virtual StatusBubble* GetStatusBubble();
virtual void SelectedTabToolbarSizeChanged(bool is_animating);
virtual void UpdateTitleBar();
+ virtual void UpdateDevTools();
virtual void UpdateLoadingAnimations(bool should_animate);
virtual void SetStarredState(bool is_starred);
virtual gfx::Rect GetNormalBounds() const;
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index 5284c6c..ed4617f 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -641,6 +641,10 @@ void BrowserView::UpdateTitleBar() {
frame_->GetWindow()->UpdateWindowIcon();
}
+void BrowserView::UpdateDevTools() {
+ NOTIMPLEMENTED();
+}
+
void BrowserView::UpdateLoadingAnimations(bool should_animate) {
if (should_animate) {
if (!loading_animation_timer_.IsRunning()) {
diff --git a/chrome/browser/views/frame/browser_view.h b/chrome/browser/views/frame/browser_view.h
index 4ca85c4..1eaf7c4 100644
--- a/chrome/browser/views/frame/browser_view.h
+++ b/chrome/browser/views/frame/browser_view.h
@@ -198,6 +198,7 @@ class BrowserView : public BrowserWindow,
virtual StatusBubble* GetStatusBubble();
virtual void SelectedTabToolbarSizeChanged(bool is_animating);
virtual void UpdateTitleBar();
+ virtual void UpdateDevTools();
virtual void UpdateLoadingAnimations(bool should_animate);
virtual void SetStarredState(bool is_starred);
virtual gfx::Rect GetNormalBounds() const;
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index 8bb0aa3..4d1a225 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -2114,8 +2114,6 @@
'browser/debugger/devtools_remote_message.h',
'browser/debugger/devtools_remote_service.cc',
'browser/debugger/devtools_remote_service.h',
- 'browser/debugger/devtools_container.cc',
- 'browser/debugger/devtools_container.h',
'browser/debugger/devtools_window.cc',
'browser/debugger/devtools_window.h',
'browser/debugger/inspectable_tab_proxy.cc',
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index 665dd40..159e643 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -543,4 +543,10 @@ const wchar_t kNTPTipsServer[] = L"ntp.web_resource_server";
// 8 - Show recommendations
const wchar_t kNTPShownSections[] = L"ntp.shown_sections";
+// A boolean specifying whether dev tools window should be opened docked.
+const wchar_t kDevToolsOpenDocked[] = L"devtools.open_docked";
+
+// Integer location of the split bar in the browser view.
+const wchar_t kDevToolsSplitLocation[] = L"devtools.split_location";
+
} // namespace prefs
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 20a1383..5f561c4 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -197,6 +197,9 @@ extern const wchar_t kNTPTipsCache[];
extern const wchar_t kNTPTipsCacheUpdate[];
extern const wchar_t kNTPTipsServer[];
extern const wchar_t kNTPShownSections[];
+
+extern const wchar_t kDevToolsOpenDocked[];
+extern const wchar_t kDevToolsSplitLocation[];
}
#endif // CHROME_COMMON_PREF_NAMES_H_