diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-08 19:41:49 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-08 19:41:49 +0000 |
commit | 0800c6694b82aebb27f8021acc759e04dfe2542f (patch) | |
tree | e97d3ffa471f6f9de84d118d9b1b7160276601a1 /chrome/browser | |
parent | b6c874589ef2f9212314ef9d2a5f1cfc19046fe7 (diff) | |
download | chromium_src-0800c6694b82aebb27f8021acc759e04dfe2542f.zip chromium_src-0800c6694b82aebb27f8021acc759e04dfe2542f.tar.gz chromium_src-0800c6694b82aebb27f8021acc759e04dfe2542f.tar.bz2 |
Enable ctrl-shift-L for app/popup windows and fix a crash. Patch by Yusuke Sato (see http://codereview.chromium.org/115050 ), r=me.
BUG=8071,11559
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15671 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/browser.cc | 26 | ||||
-rw-r--r-- | chrome/browser/debugger/debugger_host.h | 4 | ||||
-rw-r--r-- | chrome/browser/debugger/debugger_host_impl.cpp | 5 | ||||
-rw-r--r-- | chrome/browser/debugger/debugger_host_impl.h | 3 | ||||
-rw-r--r-- | chrome/browser/debugger/debugger_io.h | 3 | ||||
-rw-r--r-- | chrome/browser/debugger/debugger_window.cc | 22 | ||||
-rw-r--r-- | chrome/browser/debugger/debugger_window.h | 4 |
7 files changed, 47 insertions, 20 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index 58ab731..e0b4aad 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -16,6 +16,7 @@ #include "chrome/browser/browser_shutdown.h" #include "chrome/browser/browser_window.h" #include "chrome/browser/character_encoding.h" +#include "chrome/browser/debugger/debugger_host.h" #include "chrome/browser/debugger/devtools_manager.h" #include "chrome/browser/download/download_manager.h" #include "chrome/browser/find_bar.h" @@ -1045,8 +1046,12 @@ void Browser::OpenDebuggerWindow() { // Only one debugger instance can exist at a time right now. // TODO(erikkay): need an alert, dialog, something // or better yet, fix the one instance limitation - if (!DebuggerWindow::DoesDebuggerExist()) - debugger_window_ = new DebuggerWindow(); + DebuggerHost* host = DebuggerWindow::GetAnyExistingDebugger(); + if (host) { + host->ShowWindow(); + return; + } + debugger_window_ = new DebuggerWindow(); debugger_window_->Show(GetSelectedTabContents()); #endif } @@ -2111,6 +2116,14 @@ void Browser::InitCommandState() { // Show various bits of UI command_updater_.UpdateCommandEnabled(IDC_OPEN_FILE, true); command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, false); +#if defined(OS_WIN) + // Command line debugger conflicts with the new oop one. + bool oop_devtools = CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableOutOfProcessDevTools); + command_updater_.UpdateCommandEnabled(IDC_DEBUGGER, + // The debugger doesn't work in single process mode. + !oop_devtools && !RenderProcessHost::run_renderer_in_process()); +#endif command_updater_.UpdateCommandEnabled(IDC_TASK_MANAGER, true); command_updater_.UpdateCommandEnabled(IDC_SELECT_PROFILE, true); command_updater_.UpdateCommandEnabled(IDC_SHOW_HISTORY, true); @@ -2142,15 +2155,6 @@ void Browser::InitCommandState() { normal_window && !profile_->IsOffTheRecord()); // Show various bits of UI -#if defined(OS_WIN) - // Command line debugger conflicts with the new oop one. - bool oop_devtools = CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableOutOfProcessDevTools); - command_updater_.UpdateCommandEnabled(IDC_DEBUGGER, - // The debugger doesn't work in single process mode. - !oop_devtools && normal_window && - !RenderProcessHost::run_renderer_in_process()); -#endif command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA, normal_window); } diff --git a/chrome/browser/debugger/debugger_host.h b/chrome/browser/debugger/debugger_host.h index 1240f03..72e7276 100644 --- a/chrome/browser/debugger/debugger_host.h +++ b/chrome/browser/debugger/debugger_host.h @@ -34,6 +34,10 @@ class DebuggerHost : public base::RefCountedThreadSafe<DebuggerHost> { // Handles messages from debugger UI. virtual void OnDebuggerHostMsg(const ListValue* args) {} + + // Shows the debugger UI and returns true if it has any. + virtual bool ShowWindow() { return false; } + private: DISALLOW_COPY_AND_ASSIGN(DebuggerHost); diff --git a/chrome/browser/debugger/debugger_host_impl.cpp b/chrome/browser/debugger/debugger_host_impl.cpp index c9bfa21..09b4e24 100644 --- a/chrome/browser/debugger/debugger_host_impl.cpp +++ b/chrome/browser/debugger/debugger_host_impl.cpp @@ -183,3 +183,8 @@ TabContents* DebuggerHostImpl::GetTabContentsBeingDebugged() const { return NULL; } } + +bool DebuggerHostImpl::ShowWindow() { + return io_->ShowWindow(); +} + diff --git a/chrome/browser/debugger/debugger_host_impl.h b/chrome/browser/debugger/debugger_host_impl.h index f8c97f3..66204e3 100644 --- a/chrome/browser/debugger/debugger_host_impl.h +++ b/chrome/browser/debugger/debugger_host_impl.h @@ -34,8 +34,9 @@ class DebuggerHostImpl : public DebuggerHost { // Handles messages from debugger UI. virtual void OnDebuggerHostMsg(const ListValue* args); - private: + virtual bool ShowWindow(); + private: TabContents* GetTabContentsBeingDebugged() const; scoped_refptr<DebuggerInputOutput> io_; diff --git a/chrome/browser/debugger/debugger_io.h b/chrome/browser/debugger/debugger_io.h index 68b04e6..eeefd45 100644 --- a/chrome/browser/debugger/debugger_io.h +++ b/chrome/browser/debugger/debugger_io.h @@ -45,6 +45,9 @@ public: virtual void CallFunctionInPage(const std::wstring& name, ListValue* argv) {} + // Shows the debugger UI and returns true if it has any. + virtual bool ShowWindow() { return false; } + protected: DebuggerHost* debugger_; diff --git a/chrome/browser/debugger/debugger_window.cc b/chrome/browser/debugger/debugger_window.cc index 4d77dc4..7b3738b 100644 --- a/chrome/browser/debugger/debugger_window.cc +++ b/chrome/browser/debugger/debugger_window.cc @@ -24,20 +24,17 @@ DebuggerWindow::DebuggerWindow() : window_(NULL), DebuggerWindow::~DebuggerWindow() { } -bool DebuggerWindow::DoesDebuggerExist() { +DebuggerHost* DebuggerWindow::GetAnyExistingDebugger() { DebuggerWrapper* wrapper = g_browser_process->debugger_wrapper(); if (!wrapper) - return false; - return wrapper->GetDebugger() != NULL; + return NULL; + return wrapper->GetDebugger(); } void DebuggerWindow::Show(TabContents* tab) { #ifndef CHROME_DEBUGGER_DISABLED - if (window_) { - window_->Show(); - view_->OnShow(); + if (ShowWindow()) return; - } view_ = new DebuggerView(this); window_ = views::Window::CreateChromeWindow(NULL, gfx::Rect(), this); window_->Show(); @@ -137,6 +134,17 @@ void DebuggerWindow::CallFunctionInPage(const std::wstring& name, } } +bool DebuggerWindow::ShowWindow() { +#ifndef CHROME_DEBUGGER_DISABLED + if (window_) { + window_->Show(); + view_->OnShow(); + return true; + } +#endif + return false; +} + /////////////////////////////////////////////////////////////////// // views::WindowDelegate methods diff --git a/chrome/browser/debugger/debugger_window.h b/chrome/browser/debugger/debugger_window.h index 258396f..b22fe16 100644 --- a/chrome/browser/debugger/debugger_window.h +++ b/chrome/browser/debugger/debugger_window.h @@ -9,6 +9,7 @@ #include "views/window/window.h" #include "views/window/window_delegate.h" +class DebuggerHost; class DebuggerView; class ListValue; class TabContents; @@ -20,7 +21,7 @@ class DebuggerWindow : public DebuggerInputOutput, virtual ~DebuggerWindow(); // returns true if a debugger has already been instantiated - static bool DoesDebuggerExist(); + static DebuggerHost* GetAnyExistingDebugger(); // Show the window void Show(TabContents* tab); @@ -35,6 +36,7 @@ class DebuggerWindow : public DebuggerInputOutput, virtual void Start(DebuggerHost* debugger); virtual void SetDebuggerReady(bool ready); virtual void SetDebuggerBreak(bool brk); + virtual bool ShowWindow(); // Note that this method will take ownership of argv. virtual void CallFunctionInPage(const std::wstring& name, |