From 5d7d605f9c30ccfda0ad534afd014e96b9a44021 Mon Sep 17 00:00:00 2001 From: dconnelly Date: Thu, 25 Jun 2015 04:11:07 -0700 Subject: [PATCH] Revert of Add ManagePasswordsBubbleManageCredentialsViewController and unit tests. (patchset #4 id:60001 of https://codereview.chromium.org/1093023003/) Reason for revert: Broke compile: http://build.chromium.org/p/chromium.mac/builders/Mac%20Builder%20%28dbg%29/builds/87701/ Original issue's description: > Add ManagePasswordsBubbleManageCredentialsViewController and unit tests. > > Screenshots available here: https://code.google.com/p/chromium/issues/detail?id=448011#c14 > > BUG=448011 > > Committed: https://crrev.com/9fbb944a3e752649f17a3d18fa4c3f99e16074ef > Cr-Commit-Position: refs/heads/master@{#336115} TBR=groby@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=448011 Review URL: https://codereview.chromium.org/1205333003 Cr-Commit-Position: refs/heads/master@{#336117} --- ...words_bubble_account_chooser_view_controller.mm | 4 - .../manage_passwords_bubble_controller.mm | 15 +- ...rds_bubble_manage_credentials_view_controller.h | 52 ----- ...ds_bubble_manage_credentials_view_controller.mm | 251 --------------------- ..._manage_credentials_view_controller_unittest.mm | 140 ------------ chrome/chrome_browser_ui.gypi | 2 - chrome/chrome_tests_unit.gypi | 1 - 7 files changed, 3 insertions(+), 462 deletions(-) delete mode 100644 chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.h delete mode 100644 chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.mm delete mode 100644 chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller_unittest.mm diff --git a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_account_chooser_view_controller.mm b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_account_chooser_view_controller.mm index ec2af36c71eb..1e4dec58f196 100644 --- a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_account_chooser_view_controller.mm +++ b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_account_chooser_view_controller.mm @@ -173,8 +173,6 @@ // The credentials TableView expands to fill available space. [column setMaxWidth:width]; - [credentialsView - setFrameSize:NSMakeSize(width, NSHeight([credentialsView_ frame]))]; [credentialsView_ setFrameOrigin:NSMakePoint(password_manager::mac::ui::kFramePadding, NSMaxY([cancelButton_ frame]) + @@ -230,7 +228,6 @@ style:password_manager_mac::CredentialItemStyle:: ACCOUNT_CHOOSER delegate:delegate]); - [item setAutoresizingMask:NSViewWidthSizable]; [items addObject:item]; } for (auto form : model->federated_credentials()) { @@ -241,7 +238,6 @@ style:password_manager_mac::CredentialItemStyle:: ACCOUNT_CHOOSER delegate:delegate]); - [item setAutoresizingMask:NSViewWidthSizable]; [items addObject:item]; } return items.autorelease(); diff --git a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_controller.mm b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_controller.mm index 33f25a3a70cd..997de9ef55cb 100644 --- a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_controller.mm +++ b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_controller.mm @@ -13,7 +13,6 @@ #import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_auto_signin_view_controller.h" #import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_blacklist_view_controller.h" #import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_confirmation_view_controller.h" -#import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.h" #import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_view_controller.h" #import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_save_view_controller.h" #include "ui/base/cocoa/window_size_constants.h" @@ -77,17 +76,9 @@ initWithModel:model_ delegate:self]); } else if (model_->state() == password_manager::ui::MANAGE_STATE) { - if (model_->IsNewUIActive()) { - currentController_.reset( - [[ManagePasswordsBubbleManageCredentialsViewController alloc] - initWithModel:model_ - delegate:self]); - } else { - currentController_.reset( - [[ManagePasswordsBubbleManageViewController alloc] - initWithModel:model_ - delegate:self]); - } + currentController_.reset([[ManagePasswordsBubbleManageViewController alloc] + initWithModel:model_ + delegate:self]); } else if (model_->state() == password_manager::ui::BLACKLIST_STATE) { currentController_.reset( [[ManagePasswordsBubbleBlacklistViewController alloc] diff --git a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.h b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.h deleted file mode 100644 index 0d78f3c79bc8..000000000000 --- a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.h +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2015 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. - -#ifndef CHROME_BROWSER_UI_COCOA_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_MANAGE_CREDENTIALS_VIEW_CONTROLLER_H_ -#define CHROME_BROWSER_UI_COCOA_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_MANAGE_CREDENTIALS_VIEW_CONTROLLER_H_ - -#import - -#include "base/mac/scoped_nsobject.h" -#import "chrome/browser/ui/cocoa/passwords/credential_item_view.h" -#import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_content_view_controller.h" - -@class AccountAvatarFetcherManager; -@class ManageCredentialItemViewController; -class ManagePasswordsBubbleModel; - -// A custom cell that displays a credential item in an NSTableView. -@interface ManageCredentialItemCell : NSCell -- (id)initWithItem:(ManageCredentialItemViewController*)item; -@property(nonatomic, readonly) ManageCredentialItemViewController* item; -@end - -// Manages a view that shows a list of credentials that can be used for -// authentication to a site. -@interface ManagePasswordsBubbleManageCredentialsViewController - : ManagePasswordsBubbleContentViewController { - @private - ManagePasswordsBubbleModel* model_; // Weak. - base::scoped_nsobject manageButton_; - base::scoped_nsobject doneButton_; - base::scoped_nsobject credentialsView_; - base::scoped_nsobject credentialItems_; - base::scoped_nsobject avatarManager_; -} - -// Initializes a new credentials manager bubble and populates it with the -// credentials stored in |model|. -- (id)initWithModel:(ManagePasswordsBubbleModel*)model - delegate:(id)delegate; - -@end - -@interface ManagePasswordsBubbleManageCredentialsViewController (Testing) -@property(nonatomic, readonly) NSButton* manageButton; -@property(nonatomic, readonly) NSButton* doneButton; -@property(nonatomic, readonly) NSTableView* credentialsView; -@end - -#endif // CHROME_BROWSER_UI_COCOA_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_MANAGE_CREDENTIALS_VIEW_CONTROLLER_H_ diff --git a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.mm b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.mm deleted file mode 100644 index 87abcb3ee8a1..000000000000 --- a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.mm +++ /dev/null @@ -1,251 +0,0 @@ -// Copyright 2015 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. - -#include "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.h" - -#include - -#include "base/strings/sys_string_conversions.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/chrome_style.h" -#import "chrome/browser/ui/cocoa/passwords/account_avatar_fetcher_manager.h" -#import "chrome/browser/ui/cocoa/passwords/manage_credential_item_view_controller.h" -#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" -#include "chrome/grit/generated_resources.h" -#include "components/password_manager/core/common/credential_manager_types.h" -#include "skia/ext/skia_utils_mac.h" -#import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTweaker.h" -#import "ui/base/cocoa/controls/hyperlink_button_cell.h" -#include "ui/base/l10n/l10n_util.h" - -@implementation ManageCredentialItemCell { - base::scoped_nsobject item_; -} -- (id)initWithItem:(ManageCredentialItemViewController*)item { - if ((self = [super init])) - item_.reset([item retain]); - return self; -} -- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView*)controlView { - [controlView addSubview:[item_ view]]; - [[item_ view] setFrame:cellFrame]; -} -- (id)copyWithZone:(NSZone*)zone { - return [[ManageCredentialItemCell alloc] initWithItem:item_]; -} -- (ManageCredentialItemViewController*)item { - return item_.get(); -} -@end - -@interface ManagePasswordsBubbleManageCredentialsViewController() -- (id)initWithModel:(ManagePasswordsBubbleModel*)model - avatarManager:(AccountAvatarFetcherManager*)avatarManager - delegate:(id)delegate; -- (void)onDoneClicked:(id)sender; -- (void)onManageClicked:(id)sender; -+ (NSArray*)credentialItemsForModel:(ManagePasswordsBubbleModel*)model - delegate:(id)delegate; -@property(nonatomic, readonly) NSButton* doneButton; -@property(nonatomic, readonly) NSButton* manageButton; -@property(nonatomic, readonly) NSTableView* credentialsView; -@end - -@implementation ManagePasswordsBubbleManageCredentialsViewController - -- (id)initWithModel:(ManagePasswordsBubbleModel*)model - avatarManager:(AccountAvatarFetcherManager*)avatarManager - delegate:(id)delegate { - DCHECK(model); - if (([super initWithDelegate:delegate])) { - model_ = model; - avatarManager_.reset([avatarManager retain]); - } - return self; -} - -- (id)initWithModel:(ManagePasswordsBubbleModel*)model - delegate:(id)delegate { - base::scoped_nsobject avatarManager( - [[AccountAvatarFetcherManager alloc] - initWithRequestContext:model->GetProfile()->GetRequestContext()]); - return - [self initWithModel:model avatarManager:avatarManager delegate:delegate]; -} - -- (void)dealloc { - [credentialsView_ setDelegate:nil]; - [credentialsView_ setDataSource:nil]; - [super dealloc]; -} - -- (NSButton*)doneButton { - return doneButton_.get(); -} - -- (NSButton*)manageButton { - return manageButton_.get(); -} - -- (NSTableView*)credentialsView { - return credentialsView_.get(); -} - -- (void)loadView { - base::scoped_nsobject view([[NSView alloc] initWithFrame:NSZeroRect]); - - // ------------------------------------ - // | | - // | Manage credentials | - // | | - // | ---- | - // | | | manage credential view x | - // | ---- | - // | | | manage credential view x | - // | ---- | - // | | - // | [ Manage ] [ Done ] | - // ------------------------------------ - - // Create the views. - // Title. - NSTextField* title = - [self addTitleLabel:base::SysUTF16ToNSString(model_->title()) - toView:view]; - [title setAlignment:base::i18n::IsRTL() ? NSRightTextAlignment - : NSLeftTextAlignment]; - - // Credentials list. - credentialItems_.reset( - [[[self class] credentialItemsForModel:model_ delegate:self] retain]); - base::scoped_nsobject credentialsView( - [[NSTableView alloc] initWithFrame:NSZeroRect]); - [credentialsView - setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone]; - NSTableColumn* column = - [[[NSTableColumn alloc] initWithIdentifier:@""] autorelease]; - [credentialsView addTableColumn:column]; - [credentialsView setDelegate:self]; - [credentialsView setDataSource:self]; - [credentialsView setFocusRingType:NSFocusRingTypeNone]; - credentialsView_ = credentialsView; - [view addSubview:credentialsView_]; - - // "Manage" link. - manageButton_.reset([[NSButton alloc] initWithFrame:NSZeroRect]); - base::scoped_nsobject cell([[HyperlinkButtonCell alloc] - initTextCell:base::SysUTF16ToNSString(model_->manage_link())]); - [cell setControlSize:NSSmallControlSize]; - [cell setShouldUnderline:NO]; - [cell setUnderlineOnHover:NO]; - [cell setTextColor:gfx::SkColorToCalibratedNSColor( - chrome_style::GetLinkColor())]; - [manageButton_ setCell:cell.get()]; - [manageButton_ sizeToFit]; - [manageButton_ setTarget:self]; - [manageButton_ setAction:@selector(onManageClicked:)]; - [view addSubview:manageButton_]; - - // "Done" button. - doneButton_.reset([[self addButton:l10n_util::GetNSString(IDS_DONE) - toView:view - target:self - action:@selector(onDoneClicked:)] retain]); - - // Lay out the views. - const CGFloat width = - std::max(password_manager::mac::ui::kDesiredBubbleWidth - - 2 * password_manager::mac::ui::kFramePadding, - NSWidth([credentialsView_ frame])); - [doneButton_ - setFrameOrigin:NSMakePoint( - base::i18n::IsRTL() - ? password_manager::mac::ui::kFramePadding - : password_manager::mac::ui::kFramePadding + - width - NSWidth([doneButton_ frame]), - password_manager::mac::ui::kFramePadding)]; - [manageButton_ - setFrameOrigin:NSMakePoint( - base::i18n::IsRTL() - ? password_manager::mac::ui::kFramePadding + - width - NSWidth([manageButton_ frame]) - : password_manager::mac::ui::kFramePadding, - password_manager::mac::ui::kFramePadding + - (NSHeight([doneButton_ frame]) - - NSHeight([manageButton_ frame])) / - 2.0f)]; - - [column setMaxWidth:width]; - [credentialsView_ - setFrameOrigin:NSMakePoint(password_manager::mac::ui::kFramePadding, - NSMaxY([doneButton_ frame]) + - password_manager::mac::ui:: - kUnrelatedControlVerticalPadding)]; - - [title setFrameOrigin:NSMakePoint(password_manager::mac::ui::kFramePadding, - NSMaxY([credentialsView_ frame]) + - password_manager::mac::ui:: - kUnrelatedControlVerticalPadding)]; - [title setFrameSize:NSMakeSize(width, NSHeight([title frame]))]; - [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:title]; - - // Compute the frame to hold all the views. - const CGFloat frameWidth = - width + 2 * password_manager::mac::ui::kFramePadding; - const CGFloat frameHeight = - NSMaxY([title frame]) + password_manager::mac::ui::kFramePadding; - [view setFrame:NSMakeRect(0, 0, frameWidth, frameHeight)]; - - [self setView:view]; -} - -- (void)onDoneClicked:(id)sender { - model_->OnDoneClicked(); - [delegate_ viewShouldDismiss]; -} - -- (void)onManageClicked:(id)sender { - model_->OnManageLinkClicked(); - [delegate_ viewShouldDismiss]; -} - -- (void)fetchAvatar:(const GURL&)avatarURL forView:(CredentialItemView*)view { - [avatarManager_ fetchAvatar:avatarURL forView:view]; -} - -+ (NSArray*)credentialItemsForModel:(ManagePasswordsBubbleModel*)model - delegate:(id)delegate { - base::scoped_nsobject items([[NSMutableArray alloc] init]); - for (auto form : model->local_credentials()) { - base::scoped_nsobject item( - [[ManageCredentialItemViewController alloc] - initWithPasswordForm:*form - model:model - delegate:delegate]); - [[item view] setAutoresizingMask:NSViewWidthSizable]; - [items addObject:item]; - } - return items.autorelease(); -} - -#pragma mark NSTableViewDataSource - -- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView { - return [credentialItems_ count]; -} - -#pragma mark NSTableViewDelegate - -- (CGFloat)tableView:(NSTableView*)tableView heightOfRow:(NSInteger)row { - return NSHeight([[[credentialItems_ objectAtIndex:row] view] frame]); -} - -- (NSCell*)tableView:(NSTableView*)tableView - dataCellForTableColumn:(NSTableColumn*)tableColumn - row:(NSInteger)row { - return [[[ManageCredentialItemCell alloc] - initWithItem:[credentialItems_ objectAtIndex:row]] autorelease]; -} - -@end diff --git a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller_unittest.mm b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller_unittest.mm deleted file mode 100644 index e15e4c358ae3..000000000000 --- a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller_unittest.mm +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2015 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_manage_credentials_view_controller.h" - -#include "base/mac/foundation_util.h" -#include "base/strings/utf_string_conversions.h" -#import "chrome/browser/ui/cocoa/passwords/manage_credential_item_view_controller.h" -#include "chrome/browser/ui/cocoa/passwords/manage_passwords_controller_test.h" -#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" -#include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "testing/gtest_mac.h" - -@interface ManageCredentialItemViewController (Testing) -@property(nonatomic, readonly) const autofill::PasswordForm& passwordForm; -@end - -@implementation ManageCredentialItemViewController (Testing) -- (const autofill::PasswordForm&)passwordForm { - return passwordForm_; -} -@end - -@interface ManagePasswordsBubbleManageCredentialsViewTestDelegate - : NSObject { - BOOL dismissed_; -} -@property(readonly) BOOL dismissed; -@end - -@implementation ManagePasswordsBubbleManageCredentialsViewTestDelegate - -@synthesize dismissed = dismissed_; - -- (void)viewShouldDismiss { - dismissed_ = YES; -} - -@end - -namespace { - -class ManagePasswordsBubbleManageCredentialsViewControllerTest - : public ManagePasswordsControllerTest { - public: - ManagePasswordsBubbleManageCredentialsViewControllerTest() - : controller_(nil), delegate_(nil) {} - - void SetUp() override { - ManagePasswordsControllerTest::SetUp(); - delegate_.reset( - [[ManagePasswordsBubbleManageCredentialsViewTestDelegate alloc] init]); - } - - ManagePasswordsBubbleManageCredentialsViewTestDelegate* delegate() { - return delegate_.get(); - } - - ManagePasswordsBubbleManageCredentialsViewController* controller() { - if (!controller_) { - controller_.reset( - [[ManagePasswordsBubbleManageCredentialsViewController alloc] - initWithModel:model() - delegate:delegate()]); - [controller_ loadView]; - } - return controller_.get(); - } - - private: - base::scoped_nsobject - controller_; - base::scoped_nsobject - delegate_; - DISALLOW_COPY_AND_ASSIGN( - ManagePasswordsBubbleManageCredentialsViewControllerTest); -}; - -TEST_F(ManagePasswordsBubbleManageCredentialsViewControllerTest, - ShouldDismissWhenDoneClicked) { - [controller().doneButton performClick:nil]; - EXPECT_TRUE([delegate() dismissed]); -} - -TEST_F(ManagePasswordsBubbleManageCredentialsViewControllerTest, - ShouldOpenPasswordsWhenManageClicked) { - [controller().manageButton performClick:nil]; - EXPECT_TRUE([delegate() dismissed]); - EXPECT_TRUE(ui_controller()->navigated_to_settings_page()); -} - -TEST_F(ManagePasswordsBubbleManageCredentialsViewControllerTest, - ShouldShowNoPasswordsWhenNoPasswordsExistForSite) { - EXPECT_TRUE(model()->local_credentials().empty()); - EXPECT_EQ(0, controller().credentialsView.numberOfRows); -} - -TEST_F(ManagePasswordsBubbleManageCredentialsViewControllerTest, - ShouldShowAllPasswordItemsWhenPasswordsExistForSite) { - // Add a few password entries. - autofill::PasswordFormMap map; - autofill::PasswordForm form1; - form1.username_value = base::ASCIIToUTF16("username1"); - form1.password_value = base::ASCIIToUTF16("password1"); - map[base::ASCIIToUTF16("username1")] = &form1; - - autofill::PasswordForm form2; - form2.username_value = base::ASCIIToUTF16("username2"); - form2.password_value = base::ASCIIToUTF16("password2"); - map[base::ASCIIToUTF16("username2")] = &form2; - - // Add the entries to the model. - ui_controller()->OnPasswordAutofilled(map); - model()->set_state(password_manager::ui::MANAGE_STATE); - EXPECT_EQ(2U, model()->local_credentials().size()); - - // Check the view state. - NSTableView* tableView = controller().credentialsView; - EXPECT_EQ(2U, tableView.numberOfRows); - - // Check the entry items. - ManageCredentialItemViewController* item1 = - base::mac::ObjCCastStrict( - base::mac::ObjCCastStrict( - [tableView.delegate tableView:tableView - dataCellForTableColumn:nil - row:0]).item); - EXPECT_EQ(form1, item1.passwordForm); - ManageCredentialItemViewController* item2 = - base::mac::ObjCCastStrict( - base::mac::ObjCCastStrict( - [tableView.delegate tableView:tableView - dataCellForTableColumn:nil - row:1]).item); - EXPECT_EQ(form2, item2.passwordForm); -} - -} // namespace diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi index 032e38a985f9..f82c0c486677 100644 --- a/chrome/chrome_browser_ui.gypi +++ b/chrome/chrome_browser_ui.gypi @@ -1172,8 +1172,6 @@ 'browser/ui/cocoa/passwords/manage_passwords_bubble_content_view_controller.mm', 'browser/ui/cocoa/passwords/manage_passwords_bubble_controller.h', 'browser/ui/cocoa/passwords/manage_passwords_bubble_controller.mm', - 'browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.h', - 'browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller.mm', 'browser/ui/cocoa/passwords/manage_passwords_bubble_manage_view_controller.h', 'browser/ui/cocoa/passwords/manage_passwords_bubble_manage_view_controller.mm', 'browser/ui/cocoa/passwords/manage_passwords_bubble_never_save_view_controller.h', diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi index d4175f427c35..93fb340f7899 100644 --- a/chrome/chrome_tests_unit.gypi +++ b/chrome/chrome_tests_unit.gypi @@ -456,7 +456,6 @@ 'browser/ui/cocoa/passwords/manage_passwords_bubble_cocoa_unittest.mm', 'browser/ui/cocoa/passwords/manage_passwords_bubble_confirmation_view_controller_unittest.mm', 'browser/ui/cocoa/passwords/manage_passwords_bubble_controller_unittest.mm', - 'browser/ui/cocoa/passwords/manage_passwords_bubble_manage_credentials_view_controller_unittest.mm', 'browser/ui/cocoa/passwords/manage_passwords_bubble_manage_view_controller_unittest.mm', 'browser/ui/cocoa/passwords/manage_passwords_bubble_never_save_view_controller_unittest.mm', 'browser/ui/cocoa/passwords/manage_passwords_bubble_pending_view_controller_unittest.mm', -- 2.11.4.GIT