Index: chrome/browser/ui/cocoa/infobars/infobar_controller.mm |
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_controller.mm b/chrome/browser/ui/cocoa/infobars/infobar_controller.mm |
index aaa1cdc830c19e5c5d0b080d9cd969911f4e2d0f..f5a5cfca7ccc6935806c11a2fd663d95bbf20b3e 100644 |
--- a/chrome/browser/ui/cocoa/infobars/infobar_controller.mm |
+++ b/chrome/browser/ui/cocoa/infobars/infobar_controller.mm |
@@ -11,11 +11,13 @@ |
#include "chrome/browser/tab_contents/link_infobar_delegate.h" |
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
#import "chrome/browser/ui/cocoa/animatable_view.h" |
+#import "chrome/browser/ui/cocoa/browser_window_controller.h" |
#include "chrome/browser/ui/cocoa/event_utils.h" |
#include "chrome/browser/ui/cocoa/infobars/infobar.h" |
#import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h" |
#import "chrome/browser/ui/cocoa/infobars/infobar_controller.h" |
#import "chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h" |
+#import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" |
#include "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" |
#include "ui/gfx/image/image.h" |
#include "webkit/glue/window_open_disposition.h" |
@@ -94,6 +96,10 @@ const float kAnimateCloseDuration = 0.12; |
- (void)setLabelToMessage:(NSString*)message |
withLink:(NSString*)link |
atOffset:(NSUInteger)linkOffset; |
+ |
+// Returns the point, in gradient view coordinates, at which the apex of the |
+// infobar tip should be drawn. |
+- (NSPoint)pointForTipApex; |
@end |
@implementation InfoBarController |
@@ -132,6 +138,7 @@ const float kAnimateCloseDuration = 0.12; |
[self addAdditionalControls]; |
+ infoBarView_.tipApex = [self pointForTipApex]; |
[infoBarView_ setInfobarType:delegate_->GetInfoBarType()]; |
} |
@@ -353,6 +360,20 @@ const float kAnimateCloseDuration = 0.12; |
[[label_.get() textStorage] setAttributedString:infoText]; |
} |
+- (NSPoint)pointForTipApex { |
+ BrowserWindowController* windowController = |
+ [containerController_ browserWindowController]; |
+ if (!windowController) { |
+ // This should only happen in unit tests. |
+ return NSZeroPoint; |
+ } |
+ |
+ LocationBarViewMac* locationBar = [windowController locationBarBridge]; |
+ NSPoint point = locationBar->GetPageInfoBubblePoint(); |
+ point = [infoBarView_ convertPoint:point fromView:nil]; |
+ return point; |
+} |
+ |
@end |