Index: chrome/browser/ui/views/extensions/extension_popup.cc |
diff --git a/chrome/browser/ui/views/extensions/extension_popup.cc b/chrome/browser/ui/views/extensions/extension_popup.cc |
index d02e84014775fe15024ff5a82ebe5d71370e5aa8..0c36f22e47de6c6308af3d85665eb20668f5c039 100644 |
--- a/chrome/browser/ui/views/extensions/extension_popup.cc |
+++ b/chrome/browser/ui/views/extensions/extension_popup.cc |
@@ -13,6 +13,9 @@ |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_window.h" |
+#include "chrome/browser/ui/views/frame/browser_view.h" |
+#include "chrome/browser/ui/views/frame/immersive_mode_controller.h" |
+#include "chrome/browser/ui/views/frame/top_container_view.h" |
#include "chrome/common/chrome_notification_types.h" |
#include "content/public/browser/devtools_agent_host.h" |
#include "content/public/browser/devtools_manager.h" |
@@ -67,6 +70,7 @@ ExtensionPopup::ExtensionPopup(Browser* browser, |
views::BubbleBorder::Arrow arrow, |
ShowAction show_action) |
: BubbleDelegateView(anchor_view, arrow), |
+ browser_(browser), |
extension_host_(host), |
devtools_callback_(base::Bind( |
&ExtensionPopup::OnDevToolsStateChanged, base::Unretained(this))) { |
@@ -193,6 +197,21 @@ ExtensionPopup* ExtensionPopup::ShowPopup(const GURL& url, |
} |
void ExtensionPopup::ShowBubble() { |
+ BrowserView* browser_view = browser_ ? |
+ BrowserView::GetBrowserViewForBrowser(browser_) : NULL; |
+ scoped_ptr<ImmersiveRevealedLock> immersive_reveal_lock; |
+ if (browser_view && |
+ browser_view->top_container()->Contains(anchor_view())) { |
+ // If we are in immersive fullscreen and we are anchored to a view in the |
+ // top-of-window views (eg omnibox, toolbar), trigger an immersive reveal. |
+ // We do not need to hold onto the lock because ImmersiveModeController will |
+ // keep the top-of-window views revealed as long as the popup is active. |
+ // TODO(pkotwicz): Move logic to ImmersiveModeController. |
+ immersive_reveal_lock.reset( |
+ browser_view->immersive_mode_controller()->GetRevealedLock( |
+ ImmersiveModeController::ANIMATE_REVEAL_NO)); |
+ SizeToContents(); |
+ } |
GetWidget()->Show(); |
// Focus on the host contents when the bubble is first shown. |