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

Unified Diff: chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_never_save_view_controller.mm

Issue 450643003: Add ManagePasswordsBubbleNeverSaveViewController and unit tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: anon ns, rebase Created 6 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/passwords/manage_passwords_bubble_never_save_view_controller.mm
diff --git a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_never_save_view_controller.mm b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_never_save_view_controller.mm
new file mode 100644
index 0000000000000000000000000000000000000000..97575a94be87b51de4cb3e81594043b49e45f690
--- /dev/null
+++ b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_never_save_view_controller.mm
@@ -0,0 +1,132 @@
+// Copyright 2014 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/passwords/manage_passwords_bubble_never_save_view_controller.h"
+
+#include "base/strings/sys_string_conversions.h"
+#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
+#include "grit/generated_resources.h"
+#import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTweaker.h"
+#include "ui/base/l10n/l10n_util.h"
+
+@interface ManagePasswordsBubbleNeverSaveViewController ()
+- (void)onConfirmClicked;
+- (void)onUndoClicked;
+@end
+
+@implementation ManagePasswordsBubbleNeverSaveViewController
+
+- (id)initWithModel:(ManagePasswordsBubbleModel*)model
+ delegate:(id<ManagePasswordsBubbleNeverSaveViewDelegate>)delegate {
+ if ((self = [super initWithNibName:nil bundle:nil])) {
+ model_ = model;
+ delegate_ = delegate;
+ }
+ return self;
+}
+
+- (void)onConfirmClicked {
Scott Hess - ex-Googler 2014/08/22 21:45:35 -(void)actionName:(id)sender;
dconnelly 2014/08/25 11:44:20 Done.
+ model_->OnNeverForThisSiteClicked();
+ [delegate_ viewShouldDismiss];
+}
+
+- (void)onUndoClicked {
Scott Hess - ex-Googler 2014/08/22 21:45:35 here too.
dconnelly 2014/08/25 11:44:20 Done.
+ [delegate_ neverSavePasswordCancelled];
+}
+
+- (void)loadView {
+ self.view = [[[NSView alloc] initWithFrame:NSZeroRect] autorelease];
+
+ // -----------------------------------
+ // | Title |
+ // | |
+ // | Confirmation! |
+ // | |
+ // | [Undo] [Confirm] |
+ // -----------------------------------
+
+ // Create the elements and add them to the view.
+
+ // Title.
+ NSTextField* titleLabel = [self
+ addTitleLabel:l10n_util::GetNSString(
+ IDS_MANAGE_PASSWORDS_BLACKLIST_CONFIRMATION_TITLE)];
+
+ // Blacklist confirmation.
+ NSTextField* confirmationLabel = [self
+ addLabel:l10n_util::GetNSString(
+ IDS_MANAGE_PASSWORDS_BLACKLIST_CONFIRMATION_TEXT)];
+
+ // Undo button.
+ undoButton_.reset([[self addButton:l10n_util::GetNSString(IDS_CANCEL)
+ target:self
+ action:@selector(onUndoClicked)] retain]);
+
+ // Confirm button.
+ confirmButton_.reset(
+ [[self addButton:l10n_util::GetNSString(
+ IDS_MANAGE_PASSWORDS_BLACKLIST_CONFIRMATION_BUTTON)
+ target:self
+ action:@selector(onConfirmClicked)] retain]);
+
+ // Compute the bubble width using the title and confirmation labels.
+ // The explanation label can wrap to multiple lines.
+ const CGFloat minContentWidth =
+ password_manager::mac::ui::kDesiredBubbleWidth -
+ 2 * password_manager::mac::ui::kFramePadding;
Scott Hess - ex-Googler 2014/08/22 21:45:35 using namespace password_manager::mac::ui;
dconnelly 2014/08/25 11:44:20 Done.
+ const CGFloat contentWidth =
+ std::max(NSWidth(titleLabel.frame), minContentWidth);
+ NSSize confirmationSize = confirmationLabel.frame.size;
+ confirmationSize.width = contentWidth;
+ [confirmationLabel setFrameSize:confirmationSize];
+ [GTMUILocalizerAndLayoutTweaker
+ sizeToFitFixedWidthTextField:confirmationLabel];
+ const CGFloat width = password_manager::mac::ui::kFramePadding +
+ contentWidth + password_manager::mac::ui::kFramePadding;
+
+ // Layout the elements, starting at the bottom and moving up.
+
+ // Buttons go on the bottom row and are right-aligned.
+ // Start with [Confirm].
+ CGFloat curX = width - password_manager::mac::ui::kFramePadding -
+ NSWidth([confirmButton_ frame]);
+ CGFloat curY = password_manager::mac::ui::kFramePadding;
+ [confirmButton_ setFrameOrigin:NSMakePoint(curX, curY)];
+
+ // [Undo] goes to the left of [Confirm].
+ curX = NSMinX([confirmButton_ frame]) -
+ password_manager::mac::ui::kRelatedControlHorizontalPadding -
+ NSWidth([undoButton_ frame]);
+ [undoButton_ setFrameOrigin:NSMakePoint(curX, curY)];
+
+ // Confirmation label goes on the next row and is shifted right.
+ curX = password_manager::mac::ui::kFramePadding;
+ curY = NSMaxY([undoButton_ frame]) +
+ password_manager::mac::ui::kUnrelatedControlVerticalPadding;
+ [confirmationLabel setFrameOrigin:NSMakePoint(curX, curY)];
+
+ // Title goes at the top after some padding.
+ curY = NSMaxY(confirmationLabel.frame) +
+ password_manager::mac::ui::kUnrelatedControlVerticalPadding;
+ [titleLabel setFrameOrigin:NSMakePoint(curX, curY)];
+
+ // Update the bubble size.
+ const CGFloat height =
+ NSMaxY([titleLabel frame]) + password_manager::mac::ui::kFramePadding;
+ [self.view setFrame:NSMakeRect(0, 0, width, height)];
+}
+
+@end
+
+@implementation ManagePasswordsBubbleNeverSaveViewController (Testing)
+
+- (NSButton*)undoButton {
+ return undoButton_.get();
+}
+
+- (NSButton*)confirmButton {
+ return confirmButton_.get();
+}
+
+@end

Powered by Google App Engine
This is Rietveld 408576698