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

Unified Diff: chrome/browser/ui/cocoa/infobars/infobar_controller.mm

Issue 7461134: [Mac] Unspoofable infobars v3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 9 years, 4 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/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

Powered by Google App Engine
This is Rietveld 408576698