Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3433)

Unified Diff: chrome/browser/ui/views/toolbar/browser_actions_container.cc

Issue 1078543002: [Extensions] Make extension message bubble factory platform-abstract (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re-Upload Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/toolbar/browser_actions_container.cc
diff --git a/chrome/browser/ui/views/toolbar/browser_actions_container.cc b/chrome/browser/ui/views/toolbar/browser_actions_container.cc
index b86b08413c2a0ffa01566426b1bb203f4f2f0ad4..84deb1a94e32c5120ed7b1057f74f92aa74010ba 100644
--- a/chrome/browser/ui/views/toolbar/browser_actions_container.cc
+++ b/chrome/browser/ui/views/toolbar/browser_actions_container.cc
@@ -6,6 +6,7 @@
#include "base/compiler_specific.h"
#include "base/stl_util.h"
+#include "chrome/browser/extensions/extension_message_bubble_controller.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
@@ -14,6 +15,7 @@
#include "chrome/browser/ui/toolbar/toolbar_actions_bar.h"
#include "chrome/browser/ui/view_ids.h"
#include "chrome/browser/ui/views/extensions/browser_action_drag_data.h"
+#include "chrome/browser/ui/views/extensions/extension_message_bubble_view.h"
#include "chrome/browser/ui/views/extensions/extension_toolbar_icon_surfacing_bubble_views.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/toolbar/browser_actions_container_observer.h"
@@ -339,6 +341,30 @@ void BrowserActionsContainer::OnOverflowedActionWantsToRunChanged(
overflowed_action_wants_to_run);
}
+void BrowserActionsContainer::ShowExtensionMessageBubble(
+ scoped_ptr<extensions::ExtensionMessageBubbleController> controller) {
+ if (animating()) {
+ // If the container is animating, we can't effectively anchor the bubble,
+ // so wait until animation stops.
+ pending_extension_bubble_controller_ = controller.Pass();
+ return;
+ }
+
+ views::View* reference_view = VisibleBrowserActions() > 0 ?
+ static_cast<views::View*>(toolbar_action_views_[0]) :
+ BrowserView::GetBrowserViewForBrowser(browser_)->toolbar()->app_menu();
+
+ extensions::ExtensionMessageBubbleController* weak_controller =
+ controller.get();
+ extensions::ExtensionMessageBubbleView* bubble =
+ new extensions::ExtensionMessageBubbleView(
+ reference_view,
+ views::BubbleBorder::TOP_RIGHT,
+ controller.Pass());
+ views::BubbleDelegateView::CreateBubble(bubble);
+ weak_controller->Show(bubble);
+}
+
void BrowserActionsContainer::AddObserver(
BrowserActionsContainerObserver* observer) {
observers_.AddObserver(observer);
@@ -668,6 +694,9 @@ void BrowserActionsContainer::AnimationEnded(const gfx::Animation* animation) {
FOR_EACH_OBSERVER(BrowserActionsContainerObserver,
observers_,
OnBrowserActionsContainerAnimationEnded());
+
+ if (pending_extension_bubble_controller_)
+ ShowExtensionMessageBubble(pending_extension_bubble_controller_.Pass());
}
content::WebContents* BrowserActionsContainer::GetCurrentWebContents() {
« no previous file with comments | « chrome/browser/ui/views/toolbar/browser_actions_container.h ('k') | chrome/browser/ui/views/toolbar/toolbar_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698