| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/extensions/extension_popup.h" | 5 #include "chrome/browser/ui/views/extensions/extension_popup.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
| 10 #include "chrome/browser/devtools/devtools_window.h" | 10 #include "chrome/browser/devtools/devtools_window.h" |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 sz.set_height(std::max(kMinHeight, std::min(kMaxHeight, sz.height()))); | 151 sz.set_height(std::max(kMinHeight, std::min(kMaxHeight, sz.height()))); |
| 152 return sz; | 152 return sz; |
| 153 } | 153 } |
| 154 | 154 |
| 155 void ExtensionPopup::OnWidgetDestroying(views::Widget* widget) { | 155 void ExtensionPopup::OnWidgetDestroying(views::Widget* widget) { |
| 156 BubbleDelegateView::OnWidgetDestroying(widget); | 156 BubbleDelegateView::OnWidgetDestroying(widget); |
| 157 #if defined(USE_AURA) | 157 #if defined(USE_AURA) |
| 158 aura::Window* bubble_window = GetWidget()->GetNativeWindow(); | 158 aura::Window* bubble_window = GetWidget()->GetNativeWindow(); |
| 159 aura::client::ActivationClient* activation_client = | 159 aura::client::ActivationClient* activation_client = |
| 160 aura::client::GetActivationClient(bubble_window->GetRootWindow()); | 160 aura::client::GetActivationClient(bubble_window->GetRootWindow()); |
| 161 activation_client->RemoveObserver(this); | 161 // If the popup was being inspected with devtools and the browser window was |
| 162 // closed, then the root window and activation client are already destroyed. |
| 163 if (activation_client) |
| 164 activation_client->RemoveObserver(this); |
| 162 #endif | 165 #endif |
| 163 } | 166 } |
| 164 | 167 |
| 165 void ExtensionPopup::OnWidgetActivationChanged(views::Widget* widget, | 168 void ExtensionPopup::OnWidgetActivationChanged(views::Widget* widget, |
| 166 bool active) { | 169 bool active) { |
| 167 // Dismiss only if the window being activated is not owned by this popup's | 170 // Dismiss only if the window being activated is not owned by this popup's |
| 168 // window. In particular, don't dismiss when we lose activation to a child | 171 // window. In particular, don't dismiss when we lose activation to a child |
| 169 // dialog box. Possibly relevant: http://crbug.com/106723 and | 172 // dialog box. Possibly relevant: http://crbug.com/106723 and |
| 170 // http://crbug.com/179786 | 173 // http://crbug.com/179786 |
| 171 views::Widget* this_widget = GetWidget(); | 174 views::Widget* this_widget = GetWidget(); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 GetWidget()->Show(); | 251 GetWidget()->Show(); |
| 249 | 252 |
| 250 // Focus on the host contents when the bubble is first shown. | 253 // Focus on the host contents when the bubble is first shown. |
| 251 host()->host_contents()->Focus(); | 254 host()->host_contents()->Focus(); |
| 252 | 255 |
| 253 if (inspect_with_devtools_) { | 256 if (inspect_with_devtools_) { |
| 254 DevToolsWindow::OpenDevToolsWindow(host()->render_view_host(), | 257 DevToolsWindow::OpenDevToolsWindow(host()->render_view_host(), |
| 255 DevToolsToggleAction::ShowConsole()); | 258 DevToolsToggleAction::ShowConsole()); |
| 256 } | 259 } |
| 257 } | 260 } |
| OLD | NEW |