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

Unified Diff: chrome/browser/ui/views/extensions/extension_message_bubble_view.cc

Issue 288923004: Add an extension override bubble and warning box for proxy extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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/extensions/extension_message_bubble_view.cc
diff --git a/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc b/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc
index 43532dbea569f12a943801f7830138ff319d2734..b93b4c12f2f6043a12d6101abddb6dd8f0b16a75 100644
--- a/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/extensions/extension_action_manager.h"
#include "chrome/browser/extensions/extension_message_bubble_controller.h"
#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/proxy_overridden_bubble_controller.h"
#include "chrome/browser/extensions/settings_api_bubble_controller.h"
#include "chrome/browser/extensions/settings_api_helpers.h"
#include "chrome/browser/extensions/suspicious_extension_bubble_controller.h"
@@ -272,6 +273,7 @@ ExtensionMessageBubbleFactory::ExtensionMessageBubbleFactory(
toolbar_view_(toolbar_view),
shown_suspicious_extensions_bubble_(false),
shown_startup_override_extensions_bubble_(false),
+ shown_proxy_override_extensions_bubble_(false),
shown_dev_mode_extensions_bubble_(false),
is_observing_(false),
stage_(STAGE_START),
@@ -304,6 +306,10 @@ void ExtensionMessageBubbleFactory::MaybeShow(views::View* anchor_view) {
MaybeShowStartupOverrideExtensionsBubble(anchor_view))
return;
+ if (!shown_proxy_override_extensions_bubble_ &&
+ MaybeShowProxyOverrideExtensionsBubble(anchor_view))
+ return;
+
if (!shown_dev_mode_extensions_bubble_)
MaybeShowDevModeExtensionsBubble(anchor_view);
#endif // OS_WIN
@@ -351,14 +357,32 @@ bool ExtensionMessageBubbleFactory::MaybeShowStartupOverrideExtensionsBubble(
return false;
shown_startup_override_extensions_bubble_ = true;
- SettingsApiBubbleController* weak_controller = settings_api_bubble.get();
- ExtensionMessageBubbleView* bubble_delegate = new ExtensionMessageBubbleView(
- anchor_view,
- views::BubbleBorder::TOP_RIGHT,
- settings_api_bubble.PassAs<ExtensionMessageBubbleController>());
- views::BubbleDelegateView::CreateBubble(bubble_delegate);
- weak_controller->Show(bubble_delegate);
+ PrepareToHighlightExtensions(
+ settings_api_bubble.PassAs<ExtensionMessageBubbleController>(),
+ anchor_view);
+ return true;
+}
+
+bool ExtensionMessageBubbleFactory::MaybeShowProxyOverrideExtensionsBubble(
+ views::View* anchor_view) {
+#if !defined(OS_WIN)
+ return false;
Devlin 2014/05/20 17:26:31 Hopefully no compilers complain that lines 371-386
Finnur 2014/05/21 16:30:32 Meh... less code to compile on other platforms...
+#endif
+
+ DCHECK(!shown_proxy_override_extensions_bubble_);
+
+ const Extension* extension = OverridesProxy(profile_);
+ if (!extension)
+ return false;
+ scoped_ptr<ProxyOverriddenBubbleController> proxy_bubble(
+ new ProxyOverriddenBubbleController(profile_));
+ if (!proxy_bubble->ShouldShow(extension->id()))
+ return false;
+
+ shown_proxy_override_extensions_bubble_ = true;
+ PrepareToHighlightExtensions(
+ proxy_bubble.PassAs<ExtensionMessageBubbleController>(), anchor_view);
return true;
}
@@ -375,23 +399,9 @@ bool ExtensionMessageBubbleFactory::MaybeShowDevModeExtensionsBubble(
return false;
shown_dev_mode_extensions_bubble_ = true;
-
- // We should be in the start stage (i.e., should not have a pending attempt to
- // show a bubble).
- DCHECK_EQ(stage_, STAGE_START);
-
- // Prepare to display and highlight the developer mode extensions before
- // showing the bubble. Since this is an asynchronous process, set member
- // variables for later use.
- controller_ = dev_mode_extensions.Pass();
- anchor_view_ = anchor_view;
- container_ = toolbar_view_->browser_actions();
-
- if (container_->animating())
- MaybeObserve();
- else
- HighlightDevModeExtensions();
-
+ PrepareToHighlightExtensions(
+ dev_mode_extensions.PassAs<ExtensionMessageBubbleController>(),
+ anchor_view);
return true;
}
@@ -420,9 +430,9 @@ bool ExtensionMessageBubbleFactory::IsInitialProfileCheck(Profile* profile) {
void ExtensionMessageBubbleFactory::OnBrowserActionsContainerAnimationEnded() {
MaybeStopObserving();
if (stage_ == STAGE_START) {
- HighlightDevModeExtensions();
+ HighlightExtensions();
} else if (stage_ == STAGE_HIGHLIGHTED) {
- ShowDevModeBubble();
+ ShowHighlightingBubble();
} else { // We shouldn't be observing if we've completed the process.
NOTREACHED();
Finish();
@@ -435,7 +445,26 @@ void ExtensionMessageBubbleFactory::OnBrowserActionsContainerDestroyed() {
Finish();
}
-void ExtensionMessageBubbleFactory::HighlightDevModeExtensions() {
+void ExtensionMessageBubbleFactory::PrepareToHighlightExtensions(
+ scoped_ptr<ExtensionMessageBubbleController> controller,
+ views::View* anchor_view) {
+ // We should be in the start stage (i.e., should not have a pending attempt to
+ // show a bubble).
+ DCHECK_EQ(stage_, STAGE_START);
+
+ // Prepare to display and highlight the extensions before showing the bubble.
+ // Since this is an asynchronous process, set member variables for later use.
+ controller_ = controller.Pass();
+ anchor_view_ = anchor_view;
+ container_ = toolbar_view_->browser_actions();
+
+ if (container_->animating())
+ MaybeObserve();
+ else
+ HighlightExtensions();
+}
+
+void ExtensionMessageBubbleFactory::HighlightExtensions() {
DCHECK_EQ(STAGE_START, stage_);
stage_ = STAGE_HIGHLIGHTED;
@@ -445,10 +474,10 @@ void ExtensionMessageBubbleFactory::HighlightDevModeExtensions() {
if (container_->animating())
MaybeObserve();
else
- ShowDevModeBubble();
+ ShowHighlightingBubble();
}
-void ExtensionMessageBubbleFactory::ShowDevModeBubble() {
+void ExtensionMessageBubbleFactory::ShowHighlightingBubble() {
DCHECK_EQ(stage_, STAGE_HIGHLIGHTED);
stage_ = STAGE_COMPLETE;
@@ -458,11 +487,13 @@ void ExtensionMessageBubbleFactory::ShowDevModeBubble() {
if (reference_view && reference_view->visible())
anchor_view_ = reference_view;
- DevModeBubbleController* weak_controller = controller_.get();
- ExtensionMessageBubbleView* bubble_delegate = new ExtensionMessageBubbleView(
- anchor_view_,
- views::BubbleBorder::TOP_RIGHT,
- scoped_ptr<ExtensionMessageBubbleController>(controller_.release()));
+ ExtensionMessageBubbleController* weak_controller = controller_.get();
+ ExtensionMessageBubbleView* bubble_delegate =
+ new ExtensionMessageBubbleView(
+ anchor_view_,
+ views::BubbleBorder::TOP_RIGHT,
+ scoped_ptr<ExtensionMessageBubbleController>(
+ controller_.release()));
views::BubbleDelegateView::CreateBubble(bubble_delegate);
weak_controller->Show(bubble_delegate);

Powered by Google App Engine
This is Rietveld 408576698