diff options
author | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-03 02:08:31 +0000 |
---|---|---|
committer | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-03 02:08:31 +0000 |
commit | 24e70b480ea9b776cc109bc1ecde7e6bc75c11ef (patch) | |
tree | 86ec2b6fce096bf93a703f2a8b6858e27ca2313e | |
parent | 450a83680c63b8425f1fbd5cb3dc09547e831b2d (diff) | |
download | chromium_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.cc | 14 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window.h | 3 |
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. |