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

Unified Diff: chrome/browser/ui/cocoa/autofill/autofill_main_container.mm

Issue 1931043002: Remove requestAutocomplete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 7 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/autofill/autofill_main_container.mm
diff --git a/chrome/browser/ui/cocoa/autofill/autofill_main_container.mm b/chrome/browser/ui/cocoa/autofill/autofill_main_container.mm
deleted file mode 100644
index e4e9727a529a7295bfad617e9738fd62ab1c5654..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/cocoa/autofill/autofill_main_container.mm
+++ /dev/null
@@ -1,289 +0,0 @@
-// 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_main_container.h"
-
-#include <algorithm>
-#include <cmath>
-
-#include "base/mac/foundation_util.h"
-#include "base/strings/sys_string_conversions.h"
-#include "chrome/browser/ui/autofill/autofill_dialog_view_delegate.h"
-#include "chrome/browser/ui/chrome_style.h"
-#import "chrome/browser/ui/cocoa/autofill/autofill_details_container.h"
-#include "chrome/browser/ui/cocoa/autofill/autofill_dialog_constants.h"
-#import "chrome/browser/ui/cocoa/autofill/autofill_notification_container.h"
-#import "chrome/browser/ui/cocoa/autofill/autofill_tooltip_controller.h"
-#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h"
-#import "chrome/browser/ui/cocoa/key_equivalent_constants.h"
-#include "grit/components_scaled_resources.h"
-#include "skia/ext/skia_utils_mac.h"
-#import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTweaker.h"
-#import "ui/base/cocoa/controls/blue_label_button.h"
-#import "ui/base/cocoa/controls/hyperlink_text_view.h"
-#include "ui/base/cocoa/window_size_constants.h"
-#include "ui/gfx/range/range.h"
-
-namespace {
-
-// Padding between buttons and the last suggestion or details view. The mock
-// has a total of 30px - but 10px are already provided by details/suggestions.
-const CGFloat kButtonVerticalPadding = 20.0;
-
-} // namespace
-
-@interface AutofillMainContainer (Private)
-- (void)buildWindowButtons;
-- (void)layoutButtons;
-- (void)updateButtons;
-@end
-
-
-@implementation AutofillMainContainer
-
-@synthesize target = target_;
-
-- (id)initWithDelegate:(autofill::AutofillDialogViewDelegate*)delegate {
- if (self = [super init]) {
- delegate_ = delegate;
- }
- return self;
-}
-
-- (void)loadView {
- [self buildWindowButtons];
-
- base::scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:NSZeroRect]);
- [view setAutoresizesSubviews:YES];
- [view setSubviews:@[buttonContainer_]];
- [self setView:view];
-
- // Set up "Save in Chrome" checkbox.
- saveInChromeCheckbox_.reset([[NSButton alloc] initWithFrame:NSZeroRect]);
- [saveInChromeCheckbox_ setButtonType:NSSwitchButton];
- [saveInChromeCheckbox_ setTitle:
- base::SysUTF16ToNSString(delegate_->SaveLocallyText())];
- [saveInChromeCheckbox_ sizeToFit];
- [[self view] addSubview:saveInChromeCheckbox_];
-
- saveInChromeTooltip_.reset(
- [[AutofillTooltipController alloc]
- initWithArrowLocation:info_bubble::kTopCenter]);
- [saveInChromeTooltip_ setImage:
- ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed(
- IDR_AUTOFILL_TOOLTIP_ICON).ToNSImage()];
- [saveInChromeTooltip_ setMessage:
- base::SysUTF16ToNSString(delegate_->SaveLocallyTooltip())];
- [[self view] addSubview:[saveInChromeTooltip_ view]];
- [self updateSaveInChrome];
-
- detailsContainer_.reset(
- [[AutofillDetailsContainer alloc] initWithDelegate:delegate_]);
- NSSize frameSize = [[detailsContainer_ view] frame].size;
- [[detailsContainer_ view] setFrameOrigin:
- NSMakePoint(0, NSHeight([buttonContainer_ frame]))];
- frameSize.height += NSHeight([buttonContainer_ frame]);
- [[self view] setFrameSize:frameSize];
- [[self view] addSubview:[detailsContainer_ view]];
-
- notificationContainer_.reset(
- [[AutofillNotificationContainer alloc] initWithDelegate:delegate_]);
- [[self view] addSubview:[notificationContainer_ view]];
-}
-
-- (NSSize)decorationSizeForWidth:(CGFloat)width {
- NSSize buttonSize = [buttonContainer_ frame].size;
- NSSize buttonStripSize =
- NSMakeSize(buttonSize.width + chrome_style::kHorizontalPadding,
- buttonSize.height + kButtonVerticalPadding +
- chrome_style::kClientBottomPadding);
-
- NSSize size = NSMakeSize(std::max(buttonStripSize.width, width),
- buttonStripSize.height);
- NSSize notificationSize =
- [notificationContainer_ preferredSizeForWidth:width];
- size.height += notificationSize.height;
-
- return size;
-}
-
-- (NSSize)preferredSize {
- NSSize detailsSize = [detailsContainer_ preferredSize];
- NSSize decorationSize = [self decorationSizeForWidth:detailsSize.width];
-
- NSSize size = NSMakeSize(std::max(decorationSize.width, detailsSize.width),
- decorationSize.height + detailsSize.height);
- size.height += autofill::kDetailVerticalPadding;
-
- return size;
-}
-
-- (void)performLayout {
- NSRect bounds = [[self view] bounds];
-
- CGFloat currentY = 0.0;
- NSRect buttonFrame = [buttonContainer_ frame];
- buttonFrame.origin.y = currentY + chrome_style::kClientBottomPadding;
- [buttonContainer_ setFrameOrigin:buttonFrame.origin];
- currentY = NSMaxY(buttonFrame) + kButtonVerticalPadding;
-
- NSRect checkboxFrame = [saveInChromeCheckbox_ frame];
- [saveInChromeCheckbox_ setFrameOrigin:
- NSMakePoint(chrome_style::kHorizontalPadding,
- NSMidY(buttonFrame) - NSHeight(checkboxFrame) / 2.0)];
-
- NSRect tooltipFrame = [[saveInChromeTooltip_ view] frame];
- [[saveInChromeTooltip_ view] setFrameOrigin:
- NSMakePoint(NSMaxX([saveInChromeCheckbox_ frame]) + autofill::kButtonGap,
- NSMidY(buttonFrame) - (NSHeight(tooltipFrame) / 2.0))];
-
- NSRect notificationFrame = NSZeroRect;
- notificationFrame.size = [notificationContainer_ preferredSizeForWidth:
- NSWidth(bounds)];
-
- // Buttons/checkbox/legal take up lower part of view, notifications the
- // upper part. Adjust the detailsContainer to take up the remainder.
- CGFloat remainingHeight =
- NSHeight(bounds) - currentY - NSHeight(notificationFrame);
- NSRect containerFrame =
- NSMakeRect(0, currentY, NSWidth(bounds), remainingHeight);
- [[detailsContainer_ view] setFrame:containerFrame];
- [detailsContainer_ performLayout];
-
- notificationFrame.origin = NSMakePoint(0, NSMaxY(containerFrame));
- [[notificationContainer_ view] setFrame:notificationFrame];
- [notificationContainer_ performLayout];
-}
-
-- (void)buildWindowButtons {
- if (buttonContainer_.get())
- return;
-
- buttonContainer_.reset([[GTMWidthBasedTweaker alloc] initWithFrame:
- ui::kWindowSizeDeterminedLater]);
- [buttonContainer_
- setAutoresizingMask:(NSViewMinXMargin | NSViewMaxYMargin)];
-
- base::scoped_nsobject<NSButton> button(
- [[ConstrainedWindowButton alloc] initWithFrame:NSZeroRect]);
- [button setKeyEquivalent:kKeyEquivalentEscape];
- [button setTarget:target_];
- [button setAction:@selector(cancel:)];
- [button sizeToFit];
- [buttonContainer_ addSubview:button];
-
- CGFloat nextX = NSMaxX([button frame]) + autofill::kButtonGap;
- button.reset([[BlueLabelButton alloc] initWithFrame:NSZeroRect]);
- [button setFrameOrigin:NSMakePoint(nextX, 0)];
- [button setKeyEquivalent:kKeyEquivalentReturn];
- [button setTarget:target_];
- [button setAction:@selector(accept:)];
- [buttonContainer_ addSubview:button];
- [self updateButtons];
-
- NSRect frame = NSMakeRect(
- -NSMaxX([button frame]) - chrome_style::kHorizontalPadding, 0,
- NSMaxX([button frame]), NSHeight([button frame]));
- [buttonContainer_ setFrame:frame];
-}
-
-- (void)layoutButtons {
- base::scoped_nsobject<GTMUILocalizerAndLayoutTweaker> layoutTweaker(
- [[GTMUILocalizerAndLayoutTweaker alloc] init]);
- [layoutTweaker tweakUI:buttonContainer_];
-
- // Now ensure both buttons have the same height. The second button is
- // known to be the larger one.
- CGFloat buttonHeight =
- NSHeight([[[buttonContainer_ subviews] objectAtIndex:1] frame]);
-
- // Force first button to be the same height.
- NSView* button = [[buttonContainer_ subviews] objectAtIndex:0];
- NSSize buttonSize = [button frame].size;
- buttonSize.height = buttonHeight;
- [button setFrameSize:buttonSize];
-}
-
-- (void)updateButtons {
- NSButton* button = base::mac::ObjCCastStrict<NSButton>(
- [[buttonContainer_ subviews] objectAtIndex:0]);
- [button setTitle:base::SysUTF16ToNSString(delegate_->CancelButtonText())];
- button = base::mac::ObjCCastStrict<NSButton>(
- [[buttonContainer_ subviews] objectAtIndex:1]);
- [button setTitle:base::SysUTF16ToNSString(delegate_->ConfirmButtonText())];
- [self layoutButtons];
-}
-
-- (AutofillSectionContainer*)sectionForId:(autofill::DialogSection)section {
- return [detailsContainer_ sectionForId:section];
-}
-
-- (void)modelChanged {
- [self updateSaveInChrome];
- [self updateButtons];
- [detailsContainer_ modelChanged];
-}
-
-- (BOOL)saveDetailsLocally {
- return [saveInChromeCheckbox_ state] == NSOnState;
-}
-
-- (void)updateNotificationArea {
- [notificationContainer_ setNotifications:delegate_->CurrentNotifications()];
- id delegate = [[[self view] window] windowController];
- if ([delegate respondsToSelector:@selector(requestRelayout)])
- [delegate performSelector:@selector(requestRelayout)];
-}
-
-- (BOOL)validate {
- return [detailsContainer_ validate];
-}
-
-- (void)updateSaveInChrome {
- [saveInChromeCheckbox_ setHidden:!delegate_->ShouldOfferToSaveInChrome()];
- [[saveInChromeTooltip_ view] setHidden:[saveInChromeCheckbox_ isHidden]];
- [saveInChromeCheckbox_ setState:
- (delegate_->ShouldSaveInChrome() ? NSOnState : NSOffState)];
-}
-
-- (void)makeFirstInvalidInputFirstResponder {
- NSView* field = [detailsContainer_ firstInvalidField];
- if (!field)
- return;
-
- [detailsContainer_ scrollToView:field];
- [[[self view] window] makeFirstResponder:field];
-}
-
-- (void)scrollInitialEditorIntoViewAndMakeFirstResponder {
- // Try to focus on the first invalid field. If there isn't one, focus on the
- // first editable field instead.
- NSView* field = [detailsContainer_ firstInvalidField];
- if (!field)
- field = [detailsContainer_ firstVisibleField];
- if (!field)
- return;
-
- [detailsContainer_ scrollToView:field];
- [[[self view] window] makeFirstResponder:field];
-}
-
-- (void)updateErrorBubble {
- [detailsContainer_ updateErrorBubble];
-}
-
-@end
-
-
-@implementation AutofillMainContainer (Testing)
-
-- (NSButton*)saveInChromeCheckboxForTesting {
- return saveInChromeCheckbox_.get();
-}
-
-- (NSButton*)saveInChromeTooltipForTesting {
- return base::mac::ObjCCast<NSButton>([saveInChromeTooltip_ view]);
-}
-
-@end

Powered by Google App Engine
This is Rietveld 408576698