Index: chrome/browser/ui/cocoa/autofill/autofill_notification_controller.mm |
diff --git a/chrome/browser/ui/cocoa/autofill/autofill_notification_controller.mm b/chrome/browser/ui/cocoa/autofill/autofill_notification_controller.mm |
deleted file mode 100644 |
index e7b7f9547359bfe1dba8b1cd9abd6e28ffd9ec2b..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/cocoa/autofill/autofill_notification_controller.mm |
+++ /dev/null |
@@ -1,189 +0,0 @@ |
-// Copyright 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_notification_controller.h" |
- |
-#include <algorithm> |
- |
-#include "base/logging.h" |
-#include "base/mac/foundation_util.h" |
-#include "base/mac/scoped_nsobject.h" |
-#include "base/strings/sys_string_conversions.h" |
-#include "chrome/browser/ui/autofill/autofill_dialog_types.h" |
-#include "chrome/browser/ui/autofill/autofill_dialog_view_delegate.h" |
-#include "chrome/browser/ui/chrome_style.h" |
-#include "chrome/browser/ui/cocoa/autofill/autofill_dialog_constants.h" |
-#import "chrome/browser/ui/cocoa/autofill/autofill_tooltip_controller.h" |
-#include "grit/components_scaled_resources.h" |
-#include "skia/ext/skia_utils_mac.h" |
-#import "ui/base/cocoa/controls/hyperlink_text_view.h" |
- |
-@interface AutofillNotificationView : NSView { |
- @private |
- base::scoped_nsobject<NSColor> backgroundColor_; |
- base::scoped_nsobject<NSColor> borderColor_; |
-} |
- |
-@property (nonatomic, retain) NSColor* backgroundColor; |
-@property (nonatomic, retain) NSColor* borderColor; |
- |
-@end |
- |
-@implementation AutofillNotificationView |
- |
-- (void)drawRect:(NSRect)dirtyRect { |
- [super drawRect:dirtyRect]; |
- |
- NSBezierPath* path; |
- NSRect bounds = [self bounds]; |
- path = [NSBezierPath bezierPathWithRect:bounds]; |
- |
- [backgroundColor_ setFill]; |
- [path fill]; |
- [borderColor_ setStroke]; |
- [path stroke]; |
-} |
- |
-- (NSColor*)backgroundColor { |
- return backgroundColor_; |
-} |
- |
-- (void)setBackgroundColor:(NSColor*)backgroundColor { |
- backgroundColor_.reset([backgroundColor retain]); |
-} |
- |
-- (NSColor*)borderColor { |
- return borderColor_; |
-} |
- |
-- (void)setBorderColor:(NSColor*)borderColor { |
- borderColor_.reset([borderColor retain]); |
-} |
- |
-@end |
- |
-@implementation AutofillNotificationController |
- |
-- (id)initWithNotification:(const autofill::DialogNotification*)notification |
- delegate:(autofill::AutofillDialogViewDelegate*)delegate { |
- if (self = [super init]) { |
- delegate_ = delegate; |
- notificationType_ = notification->type(); |
- |
- base::scoped_nsobject<AutofillNotificationView> view( |
- [[AutofillNotificationView alloc] initWithFrame:NSZeroRect]); |
- [view setBackgroundColor: |
- skia::SkColorToCalibratedNSColor(notification->GetBackgroundColor())]; |
- [view setBorderColor: |
- skia::SkColorToCalibratedNSColor(notification->GetBorderColor())]; |
- [self setView:view]; |
- |
- textview_.reset([[HyperlinkTextView alloc] initWithFrame:NSZeroRect]); |
- NSColor* textColor = |
- skia::SkColorToCalibratedNSColor(notification->GetTextColor()); |
- [textview_ setMessage:base::SysUTF16ToNSString(notification->display_text()) |
- withFont:[NSFont labelFontOfSize:[[textview_ font] pointSize]] |
- messageColor:textColor]; |
- if (!notification->link_range().is_empty()) { |
- linkURL_ = notification->link_url(); |
- [textview_ setDelegate:self]; |
- [textview_ addLinkRange:notification->link_range().ToNSRange() |
- withURL:base::SysUTF8ToNSString(linkURL_.spec()) |
- linkColor:[NSColor blueColor]]; |
- } |
- |
- tooltipController_.reset([[AutofillTooltipController alloc] |
- initWithArrowLocation:info_bubble::kTopRight]); |
- [tooltipController_ setImage: |
- ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed( |
- IDR_AUTOFILL_TOOLTIP_ICON).ToNSImage()]; |
- [tooltipController_ setMessage: |
- base::SysUTF16ToNSString(notification->tooltip_text())]; |
- [[tooltipController_ view] setHidden: |
- [[tooltipController_ message] length] == 0]; |
- |
- [view setSubviews:@[ textview_, [tooltipController_ view] ]]; |
- } |
- return self; |
-} |
- |
-- (AutofillNotificationView*)notificationView { |
- return base::mac::ObjCCastStrict<AutofillNotificationView>([self view]); |
-} |
- |
-- (NSTextView*)textview { |
- return textview_; |
-} |
- |
-- (NSView*)tooltipView { |
- return [tooltipController_ view]; |
-} |
- |
-- (NSSize)preferredSizeForWidth:(CGFloat)width { |
- width -= 2 * chrome_style::kHorizontalPadding; |
- if (![[tooltipController_ view] isHidden]) { |
- width -= NSWidth([[tooltipController_ view] frame]) + |
- chrome_style::kHorizontalPadding; |
- } |
- // TODO(isherman): Restore the DCHECK below once I figure out why it causes |
- // unit tests to fail. |
- //DCHECK_GT(width, 0); |
- |
- NSSize preferredSize; |
- // This method is logically const. Hence, cache the original frame so that |
- // it can be restored once the preferred size has been computed. |
- NSRect frame = [textview_ frame]; |
- |
- // Compute preferred size. |
- [textview_ setFrameSize:NSMakeSize(width, frame.size.height)]; |
- [textview_ setVerticallyResizable:YES]; |
- [textview_ sizeToFit]; |
- preferredSize = [textview_ frame].size; |
- |
- // Restore original properties, since this method is logically const. |
- [textview_ setFrame:frame]; |
- [textview_ setVerticallyResizable:NO]; |
- |
- preferredSize.height += 2 * autofill::kNotificationPadding; |
- return preferredSize; |
-} |
- |
-- (NSSize)preferredSize { |
- NOTREACHED(); |
- return NSZeroSize; |
-} |
- |
-- (void)performLayout { |
- NSRect bounds = [[self view] bounds]; |
- // Calculate the frame size, leaving room for padding around the notification, |
- // as well as for the tooltip if it is visible. |
- NSRect labelFrame = NSInsetRect(bounds, |
- chrome_style::kHorizontalPadding, |
- autofill::kNotificationPadding); |
- NSView* tooltipView = [tooltipController_ view]; |
- if (![tooltipView isHidden]) { |
- labelFrame.size.width -= |
- NSWidth([tooltipView frame]) + chrome_style::kHorizontalPadding; |
- } |
- |
- NSView* label = textview_.get(); |
- [label setFrame:labelFrame]; |
- |
- if (![tooltipView isHidden]) { |
- NSPoint tooltipOrigin = |
- NSMakePoint( |
- NSMaxX(labelFrame) + chrome_style::kHorizontalPadding, |
- NSMidY(labelFrame) - (NSHeight([tooltipView frame]) / 2.0)); |
- [tooltipView setFrameOrigin:tooltipOrigin]; |
- } |
-} |
- |
-- (BOOL)textView:(NSTextView *)textView |
- clickedOnLink:(id)link |
- atIndex:(NSUInteger)charIndex { |
- delegate_->LinkClicked(linkURL_); |
- return YES; |
-} |
- |
-@end |