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

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

Issue 1409223005: Change the password bubble on Mac so the columns are resized dynamically. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix the crash Created 5 years, 2 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_manage_view_controller.mm
diff --git a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_view_controller.mm b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_view_controller.mm
index d13b179763588c818b2e6212f212ca7e34d57abe..7e872ef40c0a5d82a61879ea25dfbffbe5420520 100644
--- a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_view_controller.mm
+++ b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_view_controller.mm
@@ -18,49 +18,6 @@
using namespace password_manager::mac::ui;
-@implementation PasswordItemListView
-- (id)initWithModel:(ManagePasswordsBubbleModel*)model {
- if ((self = [super initWithFrame:NSZeroRect])) {
- base::scoped_nsobject<NSMutableArray> items([[NSMutableArray alloc] init]);
-
- // Create and lay out the items.
- const CGFloat curX = 0;
- CGFloat maxX = 0;
- CGFloat curY = 0;
- for (auto i = model->local_credentials().rbegin();
- i != model->local_credentials().rend();
- ++i) {
- const autofill::PasswordForm& form = **i;
- password_manager::ui::PasswordItemPosition position =
- (&(*i) == &(*model->local_credentials().begin()))
- ? password_manager::ui::FIRST_ITEM
- : password_manager::ui::SUBSEQUENT_ITEM;
- base::scoped_nsobject<ManagePasswordItemViewController> item(
- [[ManagePasswordItemViewController alloc] initWithModel:model
- passwordForm:form
- position:position]);
- [items addObject:item.get()];
- NSView* itemView = [item view];
- [self addSubview:itemView];
-
- // The items stack up on each other.
- [itemView setFrameOrigin:NSMakePoint(curX, curY)];
- maxX = NSMaxX([itemView frame]);
- curY = NSMaxY([itemView frame]);
- }
- [self setFrameSize:NSMakeSize(maxX, curY)];
- itemViews_.reset(items.release());
- }
- return self;
-}
-@end
-
-@implementation PasswordItemListView (Testing)
-- (NSArray*)itemViews {
- return itemViews_.get();
-}
-@end
-
@implementation NoPasswordsView
- (id)initWithWidth:(CGFloat)width {
if ((self = [super initWithFrame:NSZeroRect])) {
@@ -103,13 +60,11 @@ using namespace password_manager::mac::ui;
// -----------------------------------
// | Title |
- // | ----------------------------- | (1 px border)
+ // | |
// | username password x |
- // | ----------------------------- | (1 px border)
// | username password x |
- // | ----------------------------- | (1 px border)
// | username password x |
- // | ----------------------------- | (1 px border)
+ // | |
// | Manage [Done] |
// -----------------------------------
@@ -125,20 +80,24 @@ using namespace password_manager::mac::ui;
// Content. If we have a list of passwords to store for the current site, we
// display them to the user for management. Otherwise, we show a "No passwords
// for this site" message.
+ NSView* contentView = nil;
if (model_->local_credentials().empty()) {
const CGFloat noPasswordsWidth = std::max(
kDesiredBubbleWidth - 2 * kFramePadding, NSWidth([titleLabel frame]));
- contentView_.reset(
+ noPasswordsView_.reset(
[[NoPasswordsView alloc] initWithWidth:noPasswordsWidth]);
+ contentView = noPasswordsView_.get();
} else {
- contentView_.reset(
- [[PasswordItemListView alloc] initWithModel:model_]);
+ passwordsListController_.reset([[PasswordsListViewController alloc]
+ initWithModel:model_
+ forms:model_->local_credentials().get()]);
+ contentView = [passwordsListController_ view];
}
- [view addSubview:contentView_];
+ [view addSubview:contentView];
// Wrap the title if necessary to match the width of the content view.
- if (NSWidth([titleLabel frame]) > NSWidth([contentView_ frame])) {
- [titleLabel setFrameSize:NSMakeSize(NSWidth([contentView_ frame]), 0)];
+ if (NSWidth([titleLabel frame]) > NSWidth([contentView frame])) {
+ [titleLabel setFrameSize:NSMakeSize(NSWidth([contentView frame]), 0)];
[GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:titleLabel];
}
@@ -166,7 +125,7 @@ using namespace password_manager::mac::ui;
// Layout the elements, starting at the bottom and moving up.
// The Done button goes in the bottom-right corner.
- const CGFloat width = 2 * kFramePadding + NSWidth([contentView_ frame]);
+ const CGFloat width = 2 * kFramePadding + NSWidth([contentView frame]);
CGFloat curX = width - kFramePadding - NSWidth([doneButton_ frame]);
CGFloat curY = kFramePadding;
[doneButton_ setFrameOrigin:NSMakePoint(curX, curY)];
@@ -181,13 +140,13 @@ using namespace password_manager::mac::ui;
// The content goes above the button row.
curX = kFramePadding;
curY = NSMaxY([doneButton_ frame]) + kUnrelatedControlVerticalPadding;
- [contentView_ setFrameOrigin:NSMakePoint(curX, curY)];
+ [contentView setFrameOrigin:NSMakePoint(curX, curY)];
// The title goes above the content.
- curY = NSMaxY([contentView_ frame]) + kUnrelatedControlVerticalPadding;
+ curY = NSMaxY([contentView frame]) + kUnrelatedControlVerticalPadding;
[titleLabel setFrameOrigin:NSMakePoint(curX, curY)];
- curX = NSMaxX([contentView_ frame]) + kFramePadding;
+ curX = NSMaxX([contentView frame]) + kFramePadding;
curY = NSMaxY([titleLabel frame]) + kFramePadding;
DCHECK_EQ(width, curX);
[view setFrameSize:NSMakeSize(curX, curY)];
@@ -217,8 +176,12 @@ using namespace password_manager::mac::ui;
return manageButton_.get();
}
-- (NSView*)contentView {
- return contentView_.get();
+- (NoPasswordsView*)noPasswordsView {
+ return noPasswordsView_.get();
+}
+
+- (PasswordsListViewController*)passwordsListController {
+ return passwordsListController_.get();
}
@end

Powered by Google App Engine
This is Rietveld 408576698