diff options
author | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-20 14:42:01 +0000 |
---|---|---|
committer | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-20 14:42:01 +0000 |
commit | 6795fc9ec17687981f7dce87dfb9139f532c2816 (patch) | |
tree | a078d1f61dc7f68d54ba1ad6b93ad7bc5ce2f780 /chrome | |
parent | 02f49d56563b5a9b49463e6818cb6c79b858e5c3 (diff) | |
download | chromium_src-6795fc9ec17687981f7dce87dfb9139f532c2816.zip chromium_src-6795fc9ec17687981f7dce87dfb9139f532c2816.tar.gz chromium_src-6795fc9ec17687981f7dce87dfb9139f532c2816.tar.bz2 |
DevTools: Get rid of views in DevTools.
Review URL: http://codereview.chromium.org/115562
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16481 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/debugger/debugger.vcproj | 14 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_manager.cc | 2 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_view.cc | 127 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_view.h | 79 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window.cc | 85 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window.h | 36 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window_gtk.cc | 13 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window_mac.cc | 13 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window_win.cc | 94 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window_win.h | 48 | ||||
-rw-r--r-- | chrome/chrome.gyp | 10 |
11 files changed, 115 insertions, 406 deletions
diff --git a/chrome/browser/debugger/debugger.vcproj b/chrome/browser/debugger/debugger.vcproj index 878f8aa..4c61e4c 100644 --- a/chrome/browser/debugger/debugger.vcproj +++ b/chrome/browser/debugger/debugger.vcproj @@ -262,11 +262,7 @@ > </File> <File - RelativePath=".\devtools_view.cc" - > - </File> - <File - RelativePath=".\devtools_view.h" + RelativePath=".\devtools_window.cc" > </File> <File @@ -274,14 +270,6 @@ > </File> <File - RelativePath=".\devtools_window_win.cc" - > - </File> - <File - RelativePath=".\devtools_window_win.h" - > - </File> - <File RelativePath=".\inspectable_tab_proxy.cc" > </File> diff --git a/chrome/browser/debugger/devtools_manager.cc b/chrome/browser/debugger/devtools_manager.cc index f3c485d..9c8e7bc 100644 --- a/chrome/browser/debugger/devtools_manager.cc +++ b/chrome/browser/debugger/devtools_manager.cc @@ -87,7 +87,7 @@ void DevToolsManager::ForwardToDevToolsClient(RenderViewHost* inspected_rvh, void DevToolsManager::OpenDevToolsWindow(RenderViewHost* inspected_rvh) { DevToolsClientHost* host = GetDevToolsClientHostFor(inspected_rvh); if (!host) { - host = DevToolsWindow::Create( + host = new DevToolsWindow( inspected_rvh->site_instance()->browsing_instance()->profile()); RegisterDevToolsClientHostFor(inspected_rvh, host); } diff --git a/chrome/browser/debugger/devtools_view.cc b/chrome/browser/debugger/devtools_view.cc deleted file mode 100644 index bc1531b..0000000 --- a/chrome/browser/debugger/devtools_view.cc +++ /dev/null @@ -1,127 +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_view.h" - -#include <string> - -#include "base/command_line.h" -#include "chrome/browser/browser_list.h" -#include "chrome/browser/debugger/devtools_client_host.h" -#include "chrome/browser/debugger/devtools_manager.h" -#include "chrome/browser/profile.h" -#include "chrome/browser/tab_contents/tab_contents.h" -#include "chrome/browser/views/tab_contents_container_view.h" -#include "chrome/common/chrome_switches.h" -#include "chrome/common/property_bag.h" -#include "chrome/common/render_messages.h" -#include "chrome/common/url_constants.h" - -DevToolsView::DevToolsView(Profile* profile) - : tab_contents_(NULL), - profile_(profile) { - web_container_ = new TabContentsContainerView(); - AddChildView(web_container_); -} - -DevToolsView::~DevToolsView() { -} - -std::string DevToolsView::GetClassName() const { - return "DevToolsView"; -} - -gfx::Size DevToolsView::GetPreferredSize() { - return gfx::Size(640, 640); -} - -void DevToolsView::Layout() { - web_container_->SetBounds(0, 0, width(), height()); -} - -void DevToolsView::ViewHierarchyChanged(bool is_add, - views::View* parent, - views::View* child) { - if (is_add && child == this) { - DCHECK(GetWidget()); - Init(); - } -} - -void DevToolsView::Init() { - // We can't create the TabContents until we've actually been put into a real - // view hierarchy somewhere. - tab_contents_ = new TabContents(profile_, NULL, MSG_ROUTING_NONE, NULL); - tab_contents_->set_delegate(this); - web_container_->SetTabContents(tab_contents_); - tab_contents_->render_view_host()->AllowDOMUIBindings(); - - // chrome://devtools/devtools.html - GURL contents(std::string(chrome::kChromeUIDevToolsURL) + "devtools.html"); - - // this will call CreateRenderView to create renderer process - tab_contents_->controller().LoadURL(contents, GURL(), - PageTransition::START_PAGE); - - // If each DevTools front end has its own renderer process allow to inspect - // DevTools windows. - if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kProcessPerTab)) { - views::Accelerator accelerator('J', true /* shift_down */, - true /* ctrl_down */, false /* alt_down */); - views::FocusManager* focus_manager = GetFocusManager(); - DCHECK(focus_manager); - focus_manager->RegisterAccelerator(accelerator, this); - } -} - -bool DevToolsView::AcceleratorPressed(const views::Accelerator& accelerator) { - // TODO(yurys): get rid of this hack and pull the accelerator from the - // resources - views::Accelerator la('J', true /* shift_down */, true /* ctrl_down */, - false /* alt_down */); - if (!tab_contents_) { - return false; - } - if (!(la == accelerator)) { - return false; - } - DevToolsManager* manager = g_browser_process->devtools_manager(); - manager->OpenDevToolsWindow(tab_contents_->render_view_host()); - return true; -} - -void DevToolsView::OnWindowClosing() { - DCHECK(tab_contents_) << "OnWindowClosing is called twice"; - if (tab_contents_) { - // Detach last (and only) tab. - web_container_->SetTabContents(NULL); - - // Destroy the tab and navigation controller. - delete tab_contents_; - tab_contents_ = NULL; - } -} - -void DevToolsView::SendMessageToClient(const IPC::Message& message) { - if (tab_contents_) { - 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); - } -} - -RenderViewHost* DevToolsView::GetRenderViewHost() const { - if (tab_contents_) { - return tab_contents_->render_view_host(); - } - return NULL; -} - -void DevToolsView::OpenURLFromTab(TabContents* source, - const GURL& url, const GURL& referrer, - WindowOpenDisposition disposition, - PageTransition::Type transition) { - NOTREACHED(); -} diff --git a/chrome/browser/debugger/devtools_view.h b/chrome/browser/debugger/devtools_view.h deleted file mode 100644 index 6658bec..0000000 --- a/chrome/browser/debugger/devtools_view.h +++ /dev/null @@ -1,79 +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_VIEW_H_ -#define CHROME_BROWSER_DEBUGGER_DEVTOOLS_VIEW_H_ - -#include <string> - -#include "base/basictypes.h" -#include "base/gfx/size.h" -#include "chrome/browser/tab_contents/tab_contents_delegate.h" -#include "views/view.h" - -namespace IPC { -class Message; -} - -class Profile; -class RenderViewHost; -class TabContentsContainerView; -class TabContents; - -class DevToolsView : public views::View, - public TabContentsDelegate { - public: - explicit DevToolsView(Profile* profile); - virtual ~DevToolsView(); - - // Destroy content views when the window is closing. - void OnWindowClosing(); - void SendMessageToClient(const IPC::Message& message); - RenderViewHost* GetRenderViewHost() const; - - private: - // Overridden from TabContentsDelegate: - 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 ToolbarSizeChanged(TabContents* source, bool is_animating) {} - virtual void URLStarredChanged(TabContents* source, bool) {} - virtual void UpdateTargetURL(TabContents* source, const GURL& url) {} - virtual bool CanBlur() const { return false; } - - // Opens a new URL inside the passed in TabContents, if source is 0 open - // in the current front-most tab. - virtual void OpenURLFromTab(TabContents* source, - const GURL& url, const GURL& referrer, - WindowOpenDisposition disposition, - PageTransition::Type transition); - - // Overridden from views::View: - virtual std::string GetClassName() const; - virtual gfx::Size GetPreferredSize(); - virtual void Layout(); - virtual void ViewHierarchyChanged(bool is_add, - views::View* parent, - views::View* child); - virtual bool AcceleratorPressed(const views::Accelerator& accelerator); - - void Init(); - - TabContents* tab_contents_; - TabContentsContainerView* web_container_; - Profile* profile_; - - DISALLOW_COPY_AND_ASSIGN(DevToolsView); -}; - -#endif // CHROME_BROWSER_DEBUGGER_DEVTOOLS_VIEW_H_ diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc new file mode 100644 index 0000000..44edd87 --- /dev/null +++ b/chrome/browser/debugger/devtools_window.cc @@ -0,0 +1,85 @@ +// 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 "app/l10n_util.h" +#include "base/command_line.h" +#include "chrome/browser/browser.h" +#include "chrome/browser/debugger/devtools_client_host.h" +#include "chrome/browser/debugger/devtools_manager.h" +#include "chrome/browser/debugger/devtools_window.h" +#include "chrome/browser/profile.h" +#include "chrome/browser/tab_contents/tab_contents.h" +#include "chrome/browser/tab_contents/tab_contents_view.h" +#include "chrome/common/chrome_switches.h" +#include "chrome/common/pref_names.h" +#include "chrome/common/pref_service.h" +#include "chrome/common/render_messages.h" +#include "chrome/common/url_constants.h" +#include "grit/generated_resources.h" + +DevToolsWindow::DevToolsWindow(Profile* profile) + : TabStripModelObserver(), + inspected_tab_closing_(false) { + static bool g_prefs_registered = false; + if (!g_prefs_registered) { + std::wstring window_pref(prefs::kBrowserWindowPlacement); + window_pref.append(L"_"); + window_pref.append(L"DevToolsApp"); + PrefService* prefs = g_browser_process->local_state(); + prefs->RegisterDictionaryPref(window_pref.c_str()); + g_prefs_registered = true; + } + + browser_.reset(Browser::CreateForApp(L"DevToolsApp", profile, false)); + GURL contents(std::string(chrome::kChromeUIDevToolsURL) + "devtools.html"); + browser_->AddTabWithURL(contents, GURL(), PageTransition::START_PAGE, true, + -1, false, NULL); + tab_contents_ = browser_->GetSelectedTabContents(); + browser_->tabstrip_model()->AddObserver(this); +} + +DevToolsWindow::~DevToolsWindow() { +} + +void DevToolsWindow::Show() { + browser_->window()->Show(); + tab_contents_->view()->SetInitialFocus(); +} + +DevToolsWindow* DevToolsWindow::AsDevToolsWindow() { + return this; +} + +RenderViewHost* DevToolsWindow::GetRenderViewHost() const { + return tab_contents_->render_view_host(); +} + +void DevToolsWindow::InspectedTabClosing() { + inspected_tab_closing_ = true; + browser_->CloseAllTabs(); +} + +void DevToolsWindow::SetInspectedTabUrl(const std::string& url) { + inspected_url_ = url; + //TODO(pfeldman): Restore this. +} + +void DevToolsWindow::SendMessageToClient(const IPC::Message& message) { + 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); +} + +void DevToolsWindow::TabClosingAt(TabContents* contents, int index) { + if (!inspected_tab_closing_ && contents == tab_contents_) { + // Notify manager that this DevToolsClientHost no longer exists. + NotifyCloseListener(); + } + if (browser_->tabstrip_model()->empty()) { + // We are removing the last tab. Delete browser along with the + // tabstrip_model and its listeners. + delete this; + } +} diff --git a/chrome/browser/debugger/devtools_window.h b/chrome/browser/debugger/devtools_window.h index 03a6ae3..e7be7c5 100644 --- a/chrome/browser/debugger/devtools_window.h +++ b/chrome/browser/debugger/devtools_window.h @@ -5,30 +5,48 @@ #ifndef CHROME_BROWSER_DEBUGGER_DEV_TOOLS_WINDOW_H_ #define CHROME_BROWSER_DEBUGGER_DEV_TOOLS_WINDOW_H_ +#include <string> + #include "base/basictypes.h" +#include "base/scoped_ptr.h" #include "chrome/browser/debugger/devtools_client_host.h" +#include "chrome/browser/tabs/tab_strip_model.h" + +namespace IPC { +class Message; +} +class Browser; class Profile; class RenderViewHost; +class TabContents; -class DevToolsWindow : public DevToolsClientHost { +class DevToolsWindow : public DevToolsClientHost, + TabStripModelObserver { public: // Factory method for creating platform specific devtools windows. - static DevToolsWindow* Create(Profile* profile); - - virtual ~DevToolsWindow() {} + DevToolsWindow(Profile* profile); + virtual ~DevToolsWindow(); // Show this window. - virtual void Show() = 0; - virtual RenderViewHost* GetRenderViewHost() const = 0; + void Show(); + + RenderViewHost* GetRenderViewHost() const; // DevToolsClientHost override. - virtual DevToolsWindow* AsDevToolsWindow() { return this; } + virtual DevToolsWindow* AsDevToolsWindow(); + virtual void InspectedTabClosing(); + virtual void SetInspectedTabUrl(const std::string& url); + virtual void SendMessageToClient(const IPC::Message& message); - protected: - DevToolsWindow() : DevToolsClientHost() {} + // TabStripModelObserver implementation + virtual void TabClosingAt(TabContents* contents, int index); private: + scoped_ptr<Browser> browser_; + TabContents* tab_contents_; + std::string inspected_url_; + bool inspected_tab_closing_; DISALLOW_COPY_AND_ASSIGN(DevToolsWindow); }; diff --git a/chrome/browser/debugger/devtools_window_gtk.cc b/chrome/browser/debugger/devtools_window_gtk.cc deleted file mode 100644 index e2b1219..0000000 --- a/chrome/browser/debugger/devtools_window_gtk.cc +++ /dev/null @@ -1,13 +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_window.h" - -#include "base/logging.h" - -// static -DevToolsWindow* DevToolsWindow::Create(Profile* profile) { - NOTIMPLEMENTED(); - return NULL; -} diff --git a/chrome/browser/debugger/devtools_window_mac.cc b/chrome/browser/debugger/devtools_window_mac.cc deleted file mode 100644 index e2b1219..0000000 --- a/chrome/browser/debugger/devtools_window_mac.cc +++ /dev/null @@ -1,13 +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_window.h" - -#include "base/logging.h" - -// static -DevToolsWindow* DevToolsWindow::Create(Profile* profile) { - NOTIMPLEMENTED(); - return NULL; -} diff --git a/chrome/browser/debugger/devtools_window_win.cc b/chrome/browser/debugger/devtools_window_win.cc deleted file mode 100644 index 559016a..0000000 --- a/chrome/browser/debugger/devtools_window_win.cc +++ /dev/null @@ -1,94 +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_window_win.h" - -#include "app/l10n_util.h" -#include "chrome/browser/debugger/devtools_manager.h" -#include "chrome/browser/debugger/devtools_view.h" -#include "chrome/browser/debugger/devtools_window.h" -#include "views/window/window.h" -#include "grit/generated_resources.h" - -// static -DevToolsWindow* DevToolsWindow::Create(Profile* profile) { - DevToolsView* view = new DevToolsView(profile); - DevToolsWindowWin* window = new DevToolsWindowWin(view); - views::Window::CreateChromeWindow(NULL, gfx::Rect(), window); - return window; -} - -DevToolsWindowWin::DevToolsWindowWin(DevToolsView* view) - : DevToolsWindow(), - tools_view_(view) { -} - -DevToolsWindowWin::~DevToolsWindowWin() { - DCHECK(!tools_view_); -} - -void DevToolsWindowWin::Show() { - if (window()) { - window()->Show(); - } else { - NOTREACHED(); - } -} - -RenderViewHost* DevToolsWindowWin::GetRenderViewHost() const { - if (tools_view_) { - return tools_view_->GetRenderViewHost(); - } - return NULL; -} - -void DevToolsWindowWin::InspectedTabClosing() { - if (window()) { - window()->Close(); - } else { - NOTREACHED(); - } -} - -void DevToolsWindowWin::SetInspectedTabUrl(const std::string& url) { - inspected_url_ = url; - if (window()) { - window()->UpdateWindowTitle(); - } -} - -void DevToolsWindowWin::SendMessageToClient(const IPC::Message& message) { - if (tools_view_) { - tools_view_->SendMessageToClient(message); - } -} - -std::wstring DevToolsWindowWin::GetWindowTitle() const { - return l10n_util::GetStringF(IDS_DEVTOOLS_TITLE, UTF8ToWide(inspected_url_)); -} - -void DevToolsWindowWin::WindowClosing() { - if (tools_view_) { - NotifyCloseListener(); - - ReleaseWindow(); - tools_view_->OnWindowClosing(); - tools_view_ = NULL; - } else { - NOTREACHED() << "WindowClosing called twice."; - } -} - -bool DevToolsWindowWin::CanResize() const { - return true; -} - -views::View* DevToolsWindowWin::GetContentsView() { - return tools_view_; -} - -void DevToolsWindowWin::DeleteDelegate() { - DCHECK(!tools_view_) << "WindowClosing should have been called."; - delete this; -} diff --git a/chrome/browser/debugger/devtools_window_win.h b/chrome/browser/debugger/devtools_window_win.h deleted file mode 100644 index a208224..0000000 --- a/chrome/browser/debugger/devtools_window_win.h +++ /dev/null @@ -1,48 +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_WINDOW_WIN_H_ -#define CHROME_BROWSER_DEBUGGER_DEVTOOLS_WINDOW_WIN_H_ - -#include "base/basictypes.h" -#include "chrome/browser/debugger/devtools_window.h" -#include "views/window/window_delegate.h" - -namespace views { -class Window; -} -class DevToolsView; -class TabContents; - -class DevToolsWindowWin : public DevToolsWindow, - public views::WindowDelegate { - public: - virtual ~DevToolsWindowWin(); - - // DevToolsWindow implementation. - virtual void Show(); - virtual RenderViewHost* GetRenderViewHost() const; - - virtual void InspectedTabClosing(); - virtual void SetInspectedTabUrl(const std::string& url); - virtual void SendMessageToClient(const IPC::Message& message); - - private: - friend class DevToolsWindow; - DevToolsWindowWin(DevToolsView* view); - - // views::WindowDelegate methods: - virtual std::wstring GetWindowTitle() const; - virtual void WindowClosing(); - virtual bool CanResize() const; - virtual views::View* GetContentsView(); - virtual void DeleteDelegate(); - - DevToolsView* tools_view_; - std::string inspected_url_; - - DISALLOW_COPY_AND_ASSIGN(DevToolsWindowWin); -}; - -#endif // CHROME_BROWSER_DEBUGGER_DEVTOOLS_WINDOW_WIN_H_ diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index 7741491..442f2b4 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -714,12 +714,8 @@ 'browser/debugger/devtools_remote_message.h', 'browser/debugger/devtools_remote_service.cc', 'browser/debugger/devtools_remote_service.h', - 'browser/debugger/devtools_view.cc', - 'browser/debugger/devtools_view.h', + 'browser/debugger/devtools_window.cc', 'browser/debugger/devtools_window.h', - 'browser/debugger/devtools_window_gtk.cc', - 'browser/debugger/devtools_window_mac.cc', - 'browser/debugger/devtools_window_win.cc', 'browser/debugger/inspectable_tab_proxy.cc', 'browser/debugger/inspectable_tab_proxy.h', 'browser/dock_info_gtk.cc', @@ -1627,10 +1623,6 @@ 'browser/browser_accessibility_manager.cc', 'browser/debugger/debugger_view.cc', 'browser/debugger/debugger_window.cc', - 'browser/debugger/devtools_view.cc', - 'browser/debugger/devtools_view.h', - 'browser/debugger/devtools_window_gtk.cc', - 'browser/debugger/devtools_window_win.cc', 'browser/extensions/extension_shelf.cc', 'browser/dock_info.cc', 'browser/dom_ui/html_dialog_contents.cc', |