diff options
author | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-01 13:21:41 +0000 |
---|---|---|
committer | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-01 13:21:41 +0000 |
commit | e1ad5e6ab76d46101238b74ee8d5a31e7a56d5d8 (patch) | |
tree | e52e2fa113549fc07978b97460169c5f644093c1 /chrome | |
parent | d14a0d6fe722ce04aac8a06f83a5a15d3e45e44a (diff) | |
download | chromium_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-x | chrome/browser/browser_prefs.cc | 2 | ||||
-rw-r--r-- | chrome/browser/browser_window.h | 4 | ||||
-rw-r--r-- | chrome/browser/cocoa/browser_window_cocoa.h | 1 | ||||
-rw-r--r-- | chrome/browser/cocoa/browser_window_cocoa.mm | 4 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_container.cc | 50 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_container.h | 40 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_manager.cc | 20 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_manager.h | 5 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window.cc | 61 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window.h | 3 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.cc | 4 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.h | 1 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.cc | 4 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.h | 1 | ||||
-rw-r--r-- | chrome/chrome.gyp | 2 | ||||
-rw-r--r-- | chrome/common/pref_names.cc | 6 | ||||
-rw-r--r-- | chrome/common/pref_names.h | 3 |
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_ |