Index: chrome/browser/ui/cocoa/autofill/autofill_error_bubble_controller.mm |
diff --git a/chrome/browser/ui/cocoa/autofill/autofill_error_bubble_controller.mm b/chrome/browser/ui/cocoa/autofill/autofill_error_bubble_controller.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c8927a5355516bd0682afbfda85d5190f00454e5 |
--- /dev/null |
+++ b/chrome/browser/ui/cocoa/autofill/autofill_error_bubble_controller.mm |
@@ -0,0 +1,62 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#import "chrome/browser/ui/cocoa/autofill/autofill_error_bubble_controller.h" |
+ |
+#import "chrome/browser/ui/cocoa/info_bubble_view.h" |
+#import "chrome/browser/ui/cocoa/info_bubble_window.h" |
+#include "skia/ext/skia_utils_mac.h" |
+ |
+namespace { |
+ |
+// Border inset for error label. |
+const CGFloat kLabelInset = 3.0; |
+ |
+// Imported constant from Views version. TODO(groby): Share. |
+SkColor const kWarningColor = 0xffde4932; // SkColorSetRGB(0xde, 0x49, 0x32); |
+ |
+} // namespace |
+ |
+ |
+@implementation AutofillErrorBubbleController |
+ |
+- (id)initWithParentWindow:(NSWindow*)parentWindow |
+ message:(NSString*)message { |
+ base::scoped_nsobject<InfoBubbleWindow> window( |
+ [[InfoBubbleWindow alloc] initWithContentRect:NSMakeRect(0, 0, 200, 100) |
+ styleMask:NSBorderlessWindowMask |
+ backing:NSBackingStoreBuffered |
+ defer:NO]); |
+ [window setAllowedAnimations:info_bubble::kAnimateNone]; |
+ if ((self = [super initWithWindow:window |
+ parentWindow:parentWindow |
+ anchoredAt:NSZeroPoint])) { |
+ [self setShouldOpenAsKeyWindow:NO]; |
+ [[self bubble] setBackgroundColor: |
+ gfx::SkColorToCalibratedNSColor(kWarningColor)]; |
+ [[self bubble] setArrowLocation:info_bubble::kTopCenter]; |
+ [[self bubble] setAlignment:info_bubble::kAlignArrowToAnchor]; |
+ |
+ label_.reset([[NSTextField alloc] init]); |
+ [label_ setEditable:NO]; |
+ [label_ setBordered:NO]; |
+ [label_ setDrawsBackground:NO]; |
+ [label_ setTextColor:[NSColor whiteColor]]; |
+ [label_ setStringValue:message]; |
+ [label_ sizeToFit]; |
+ [label_ setFrameOrigin:NSMakePoint(kLabelInset, kLabelInset)]; |
+ |
+ [[self bubble] addSubview:label_]; |
+ |
+ NSRect windowFrame = [[self window] frame]; |
+ windowFrame.size = NSMakeSize( |
+ NSMaxX([label_ frame]), |
+ NSHeight([label_ frame]) + info_bubble::kBubbleArrowHeight); |
+ windowFrame = NSInsetRect(windowFrame, -kLabelInset, -kLabelInset); |
+ [[self window] setFrame:windowFrame display:NO]; |
+ } |
+ return self; |
+} |
+ |
+@end |