summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-08 19:41:49 +0000
committerpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-08 19:41:49 +0000
commit0800c6694b82aebb27f8021acc759e04dfe2542f (patch)
treee97d3ffa471f6f9de84d118d9b1b7160276601a1 /chrome/browser
parentb6c874589ef2f9212314ef9d2a5f1cfc19046fe7 (diff)
downloadchromium_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.cc26
-rw-r--r--chrome/browser/debugger/debugger_host.h4
-rw-r--r--chrome/browser/debugger/debugger_host_impl.cpp5
-rw-r--r--chrome/browser/debugger/debugger_host_impl.h3
-rw-r--r--chrome/browser/debugger/debugger_io.h3
-rw-r--r--chrome/browser/debugger/debugger_window.cc22
-rw-r--r--chrome/browser/debugger/debugger_window.h4
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,