summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-03 02:08:31 +0000
committerzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-03 02:08:31 +0000
commit24e70b480ea9b776cc109bc1ecde7e6bc75c11ef (patch)
tree86ec2b6fce096bf93a703f2a8b6858e27ca2313e
parent450a83680c63b8425f1fbd5cb3dc09547e831b2d (diff)
downloadchromium_src-24e70b480ea9b776cc109bc1ecde7e6bc75c11ef.zip
chromium_src-24e70b480ea9b776cc109bc1ecde7e6bc75c11ef.tar.gz
chromium_src-24e70b480ea9b776cc109bc1ecde7e6bc75c11ef.tar.bz2
Submitting http://codereview.chromium.org/6383011/ on behalf of serya@ :
Prevent DevTools of been docked to a popup window. BUG=chromium-os:11078 TEST=Try to inspect element of a popup window (such as a Google Talk chat). Dock DevTools to a regular window. Review URL: http://codereview.chromium.org/6312093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73579 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/debugger/devtools_window.cc14
-rw-r--r--chrome/browser/debugger/devtools_window.h3
2 files changed, 14 insertions, 3 deletions
diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc
index 41e6f5f..26c1025 100644
--- a/chrome/browser/debugger/devtools_window.cc
+++ b/chrome/browser/debugger/devtools_window.cc
@@ -136,7 +136,8 @@ void DevToolsWindow::Show(DevToolsToggleAction action) {
Browser* inspected_browser;
int inspected_tab_index;
// Tell inspected browser to update splitter and switch to inspected panel.
- if (FindInspectedBrowserAndTabIndex(&inspected_browser,
+ if (!IsInspectedBrowserPopup() &&
+ FindInspectedBrowserAndTabIndex(&inspected_browser,
&inspected_tab_index)) {
BrowserWindow* inspected_window = inspected_browser->window();
tab_contents_->tab_contents()->set_delegate(this);
@@ -186,7 +187,7 @@ void DevToolsWindow::Activate() {
void DevToolsWindow::SetDocked(bool docked) {
if (docked_ == docked)
return;
- if (docked && !GetInspectedBrowserWindow()) {
+ if (docked && (!GetInspectedBrowserWindow() || IsInspectedBrowserPopup())) {
// Cannot dock, avoid window flashing due to close-reopen cycle.
return;
}
@@ -265,6 +266,15 @@ BrowserWindow* DevToolsWindow::GetInspectedBrowserWindow() {
browser->window() : NULL;
}
+bool DevToolsWindow::IsInspectedBrowserPopup() {
+ Browser* browser = NULL;
+ int tab;
+ if (!FindInspectedBrowserAndTabIndex(&browser, &tab))
+ return false;
+
+ return (browser->type() & Browser::TYPE_POPUP) != 0;
+}
+
void DevToolsWindow::SetAttachedWindow() {
tab_contents_->render_view_host()->
ExecuteJavascriptInWebFrame(
diff --git a/chrome/browser/debugger/devtools_window.h b/chrome/browser/debugger/devtools_window.h
index f641c49..66966b6 100644
--- a/chrome/browser/debugger/devtools_window.h
+++ b/chrome/browser/debugger/devtools_window.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -55,6 +55,7 @@ class DevToolsWindow
void CreateDevToolsBrowser();
bool FindInspectedBrowserAndTabIndex(Browser**, int* tab);
BrowserWindow* GetInspectedBrowserWindow();
+ bool IsInspectedBrowserPopup();
void SetAttachedWindow();
// Overridden from NotificationObserver.