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

Unified Diff: chrome/browser/cocoa/extension_installed_bubble_controller.mm

Issue 4724005: Add a help bubble pointing to the omnibox when installing an extension with (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: xib Created 10 years, 1 month 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/cocoa/extension_installed_bubble_controller.mm
diff --git a/chrome/browser/cocoa/extension_installed_bubble_controller.mm b/chrome/browser/cocoa/extension_installed_bubble_controller.mm
index b1263fd92f5f512c6902dd27ae83ed300a7e69e0..d45ba74c4c05a8ef905d808dcfcb781ba69db97d 100644
--- a/chrome/browser/cocoa/extension_installed_bubble_controller.mm
+++ b/chrome/browser/cocoa/extension_installed_bubble_controller.mm
@@ -90,7 +90,9 @@ class ExtensionLoadedNotificationObserver : public NotificationObserver {
icon_.reset([gfx::SkBitmapToNSImage(icon) retain]);
pageActionRemoved_ = NO;
- if (extension->browser_action()) {
+ if (!extension->omnibox_keyword().empty()) {
+ type_ = extension_installed_bubble::kOmniboxKeyword;
+ } else if (extension->browser_action()) {
type_ = extension_installed_bubble::kBrowserAction;
} else if (extension->page_action() &&
!extension->page_action()->default_icon_path().empty()) {
@@ -174,6 +176,12 @@ class ExtensionLoadedNotificationObserver : public NotificationObserver {
NSPoint arrowPoint = NSZeroPoint;
switch(type_) {
+ case extension_installed_bubble::kOmniboxKeyword: {
+ LocationBarViewMac* locationBarView =
+ [window->cocoa_controller() locationBarBridge];
+ arrowPoint = locationBarView->GetPageInfoBubblePoint();
+ break;
+ }
case extension_installed_bubble::kBrowserAction: {
BrowserActionsController* controller =
[[window->cocoa_controller() toolbarController]
@@ -235,7 +243,8 @@ class ExtensionLoadedNotificationObserver : public NotificationObserver {
NSSize offsets = NSMakeSize(info_bubble::kBubbleArrowXOffset +
info_bubble::kBubbleArrowWidth / 2.0, 0);
offsets = [[window contentView] convertSize:offsets toView:nil];
- origin.x -= NSWidth([window frame]) - offsets.width;
+ if ([infoBubbleView_ arrowLocation] == info_bubble::kTopRight)
+ origin.x -= NSWidth([window frame]) - offsets.width;
origin.y -= NSHeight([window frame]);
[window setFrameOrigin:origin];
@@ -248,7 +257,12 @@ class ExtensionLoadedNotificationObserver : public NotificationObserver {
// function is exposed for unit testing.
- (NSWindow*)initializeWindow {
NSWindow* window = [self window]; // completes nib load
- [infoBubbleView_ setArrowLocation:info_bubble::kTopRight];
+
+ if (type_ == extension_installed_bubble::kOmniboxKeyword) {
+ [infoBubbleView_ setArrowLocation:info_bubble::kTopLeft];
+ } else {
+ [infoBubbleView_ setArrowLocation:info_bubble::kTopRight];
+ }
// Set appropriate icon, resizing if necessary.
if ([icon_ size].width > extension_installed_bubble::kIconSize) {
@@ -278,12 +292,26 @@ class ExtensionLoadedNotificationObserver : public NotificationObserver {
// If type is page action, include a special message about page actions.
if (type_ == extension_installed_bubble::kPageAction) {
- [pageActionInfoMsg_ setHidden:NO];
- [[pageActionInfoMsg_ cell]
+ [extraInfoMsg_ setHidden:NO];
+ [[extraInfoMsg_ cell]
setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]];
[GTMUILocalizerAndLayoutTweaker
- sizeToFitFixedWidthTextField:pageActionInfoMsg_];
- newWindowHeight += [pageActionInfoMsg_ frame].size.height +
+ sizeToFitFixedWidthTextField:extraInfoMsg_];
+ newWindowHeight += [extraInfoMsg_ frame].size.height +
+ extension_installed_bubble::kInnerVerticalMargin;
+ }
+
+ // If type is omnibox keyword, include a special message about the keyword.
+ if (type_ == extension_installed_bubble::kOmniboxKeyword) {
+ [extraInfoMsg_ setStringValue:l10n_util::GetNSStringF(
+ IDS_EXTENSION_INSTALLED_OMNIBOX_KEYWORD_INFO,
+ UTF8ToUTF16(extension_->omnibox_keyword()))];
+ [extraInfoMsg_ setHidden:NO];
+ [[extraInfoMsg_ cell]
+ setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]];
+ [GTMUILocalizerAndLayoutTweaker
+ sizeToFitFixedWidthTextField:extraInfoMsg_];
+ newWindowHeight += [extraInfoMsg_ frame].size.height +
extension_installed_bubble::kInnerVerticalMargin;
}
@@ -307,14 +335,15 @@ class ExtensionLoadedNotificationObserver : public NotificationObserver {
extensionMessageFrame1.size.height +
extension_installed_bubble::kOuterVerticalMargin);
[extensionInstalledMsg_ setFrame:extensionMessageFrame1];
- if (type_ == extension_installed_bubble::kPageAction) {
- // The page action message is only shown when appropriate.
- NSRect pageActionMessageFrame = [pageActionInfoMsg_ frame];
- pageActionMessageFrame.origin.y = extensionMessageFrame1.origin.y - (
- pageActionMessageFrame.size.height +
+ if (type_ == extension_installed_bubble::kPageAction ||
+ type_ == extension_installed_bubble::kOmniboxKeyword) {
+ // The extra message is only shown when appropriate.
+ NSRect extraMessageFrame = [extraInfoMsg_ frame];
+ extraMessageFrame.origin.y = extensionMessageFrame1.origin.y - (
+ extraMessageFrame.size.height +
extension_installed_bubble::kInnerVerticalMargin);
- [pageActionInfoMsg_ setFrame:pageActionMessageFrame];
- extensionMessageFrame2.origin.y = pageActionMessageFrame.origin.y - (
+ [extraInfoMsg_ setFrame:extraMessageFrame];
+ extensionMessageFrame2.origin.y = extraMessageFrame.origin.y - (
extensionMessageFrame2.size.height +
extension_installed_bubble::kInnerVerticalMargin);
} else {
@@ -330,8 +359,8 @@ class ExtensionLoadedNotificationObserver : public NotificationObserver {
return [extensionInstalledMsg_ frame];
}
-- (NSRect)getPageActionInfoMsgFrame {
- return [pageActionInfoMsg_ frame];
+- (NSRect)getExtraInfoMsgFrame {
+ return [extraInfoMsg_ frame];
}
- (NSRect)getExtensionInstalledInfoMsgFrame {

Powered by Google App Engine
This is Rietveld 408576698