diff options
Diffstat (limited to 'chromium/ui/app_list/cocoa/apps_search_box_controller_unittest.mm')
-rw-r--r-- | chromium/ui/app_list/cocoa/apps_search_box_controller_unittest.mm | 265 |
1 files changed, 0 insertions, 265 deletions
diff --git a/chromium/ui/app_list/cocoa/apps_search_box_controller_unittest.mm b/chromium/ui/app_list/cocoa/apps_search_box_controller_unittest.mm deleted file mode 100644 index bbe7ce626a5..00000000000 --- a/chromium/ui/app_list/cocoa/apps_search_box_controller_unittest.mm +++ /dev/null @@ -1,265 +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 "ui/app_list/cocoa/apps_search_box_controller.h" - -#include "base/mac/scoped_nsobject.h" -#include "base/strings/sys_string_conversions.h" -#include "base/strings/utf_string_conversions.h" -#import "testing/gtest_mac.h" -#include "ui/app_list/app_list_menu.h" -#include "ui/app_list/app_list_model_observer.h" -#include "ui/app_list/search_box_model.h" -#include "ui/app_list/test/app_list_test_model.h" -#include "ui/app_list/test/app_list_test_view_delegate.h" -#import "ui/base/cocoa/menu_controller.h" -#import "ui/base/test/ui_cocoa_test_helper.h" - -@interface TestAppsSearchBoxDelegate : NSObject<AppsSearchBoxDelegate> { - @private - app_list::SearchBoxModel searchBoxModel_; - app_list::test::AppListTestViewDelegate appListDelegate_; - app_list::test::AppListTestModel appListModel_; - int textChangeCount_; -} - -@property(assign, nonatomic) int textChangeCount; - -@end - -@implementation TestAppsSearchBoxDelegate - -@synthesize textChangeCount = textChangeCount_; - -- (id)init { - if ((self = [super init])) { - app_list::AppListViewDelegate::Users users(2); - users[0].name = ASCIIToUTF16("user1"); - users[1].name = ASCIIToUTF16("user2"); - users[1].email = ASCIIToUTF16("user2@chromium.org"); - users[1].active = true; - appListDelegate_.SetUsers(users); - } - return self; -} - -- (app_list::SearchBoxModel*)searchBoxModel { - return &searchBoxModel_; -} - -- (app_list::AppListViewDelegate*)appListDelegate { - return &appListDelegate_; -} - -- (app_list::test::AppListTestViewDelegate*)appListTestViewDelegate { - return &appListDelegate_; -} - - -- (BOOL)control:(NSControl*)control - textView:(NSTextView*)textView - doCommandBySelector:(SEL)command { - return NO; -} - -- (void)modelTextDidChange { - ++textChangeCount_; -} - -- (CGFloat)bubbleCornerRadius { - return 3; -} - -- (app_list::AppListModel*)appListModel { - return &appListModel_; -} - -@end - -namespace app_list { -namespace test { - -class AppsSearchBoxControllerTest : public ui::CocoaTest { - public: - AppsSearchBoxControllerTest() { - Init(); - } - - virtual void SetUp() OVERRIDE { - apps_search_box_controller_.reset( - [[AppsSearchBoxController alloc] initWithFrame: - NSMakeRect(0, 0, 400, 100)]); - delegate_.reset([[TestAppsSearchBoxDelegate alloc] init]); - [apps_search_box_controller_ setDelegate:delegate_]; - - ui::CocoaTest::SetUp(); - [[test_window() contentView] addSubview:[apps_search_box_controller_ view]]; - } - - virtual void TearDown() OVERRIDE { - [apps_search_box_controller_ setDelegate:nil]; - ui::CocoaTest::TearDown(); - } - - void SimulateKeyAction(SEL c) { - NSControl* control = [apps_search_box_controller_ searchTextField]; - [apps_search_box_controller_ control:control - textView:nil - doCommandBySelector:c]; - } - - protected: - base::scoped_nsobject<TestAppsSearchBoxDelegate> delegate_; - base::scoped_nsobject<AppsSearchBoxController> apps_search_box_controller_; - - private: - DISALLOW_COPY_AND_ASSIGN(AppsSearchBoxControllerTest); -}; - -TEST_VIEW(AppsSearchBoxControllerTest, [apps_search_box_controller_ view]); - -// Test the search box initialization, and search input and clearing. -TEST_F(AppsSearchBoxControllerTest, SearchBoxModel) { - app_list::SearchBoxModel* model = [delegate_ searchBoxModel]; - // Usually localized "Search". - const base::string16 hit_text(ASCIIToUTF16("hint")); - model->SetHintText(hit_text); - EXPECT_NSEQ(base::SysUTF16ToNSString(hit_text), - [[[apps_search_box_controller_ searchTextField] cell] placeholderString]); - - const base::string16 search_text(ASCIIToUTF16("test")); - model->SetText(search_text); - EXPECT_NSEQ(base::SysUTF16ToNSString(search_text), - [[apps_search_box_controller_ searchTextField] stringValue]); - // Updates coming via the model should notify the delegate. - EXPECT_EQ(1, [delegate_ textChangeCount]); - - // Updates from the view should update the model and notify the delegate. - [apps_search_box_controller_ clearSearch]; - EXPECT_EQ(base::string16(), model->text()); - EXPECT_NSEQ([NSString string], - [[apps_search_box_controller_ searchTextField] stringValue]); - EXPECT_EQ(2, [delegate_ textChangeCount]); - - // Test pressing escape clears the search. First add some text. - model->SetText(search_text); - EXPECT_EQ(3, [delegate_ textChangeCount]); - - EXPECT_NSEQ(base::SysUTF16ToNSString(search_text), - [[apps_search_box_controller_ searchTextField] stringValue]); - SimulateKeyAction(@selector(complete:)); - EXPECT_NSEQ([NSString string], - [[apps_search_box_controller_ searchTextField] stringValue]); - EXPECT_EQ(4, [delegate_ textChangeCount]); -} - -// Test the popup menu items when there is only one user.. -TEST_F(AppsSearchBoxControllerTest, SearchBoxMenuSingleUser) { - // Set a single user. We need to set the delegate again because the - // AppListModel observer isn't hooked up in these tests. - [delegate_ appListTestViewDelegate]->SetUsers( - app_list::AppListViewDelegate::Users(1)); - [apps_search_box_controller_ setDelegate:delegate_]; - - NSPopUpButton* menu_control = [apps_search_box_controller_ menuControl]; - EXPECT_TRUE([apps_search_box_controller_ appListMenu]); - ui::MenuModel* menu_model - = [apps_search_box_controller_ appListMenu]->menu_model(); - // Add one to the item count to account for the blank, first item that Cocoa - // has in its popup menus. - EXPECT_EQ(menu_model->GetItemCount() + 1, - [[menu_control menu] numberOfItems]); - - // All command ids should be less than |SELECT_PROFILE| as no user menu items - // are being shown. - for (int i = 0; i < menu_model->GetItemCount(); ++i) - EXPECT_LT(menu_model->GetCommandIdAt(i), AppListMenu::SELECT_PROFILE); - - // The number of items should match the index that starts profile items. - EXPECT_EQ(AppListMenu::SELECT_PROFILE, menu_model->GetItemCount()); -} - -// Test the popup menu items for the multi-profile case. -TEST_F(AppsSearchBoxControllerTest, SearchBoxMenu) { - const app_list::AppListViewDelegate::Users& users = - [delegate_ appListDelegate]->GetUsers(); - NSPopUpButton* menu_control = [apps_search_box_controller_ menuControl]; - EXPECT_TRUE([apps_search_box_controller_ appListMenu]); - ui::MenuModel* menu_model - = [apps_search_box_controller_ appListMenu]->menu_model(); - // Add one to the item count to account for the blank, first item that Cocoa - // has in its popup menus. - EXPECT_EQ(menu_model->GetItemCount() + 1, - [[menu_control menu] numberOfItems]); - - ui::MenuModel* found_menu_model = menu_model; - int index; - MenuController* controller = [[menu_control menu] delegate]; - - // The first user item is an unchecked label. - EXPECT_TRUE(ui::MenuModel::GetModelAndIndexForCommandId( - AppListMenu::SELECT_PROFILE, &menu_model, &index)); - EXPECT_EQ(found_menu_model, menu_model); - NSMenuItem* unchecked_user_item = [[menu_control menu] itemAtIndex:index + 1]; - [controller validateUserInterfaceItem:unchecked_user_item]; - // The profile name should be shown if there is no email available. - EXPECT_NSEQ(base::SysUTF16ToNSString(users[0].name), - [unchecked_user_item title]); - EXPECT_EQ(NSOffState, [unchecked_user_item state]); - - // The second user item is a checked label because it is the active profile. - EXPECT_TRUE(ui::MenuModel::GetModelAndIndexForCommandId( - AppListMenu::SELECT_PROFILE + 1, &menu_model, &index)); - EXPECT_EQ(found_menu_model, menu_model); - NSMenuItem* checked_user_item = [[menu_control menu] itemAtIndex:index + 1]; - [controller validateUserInterfaceItem:checked_user_item]; - // The email is shown when available. - EXPECT_NSEQ(base::SysUTF16ToNSString(users[1].email), - [checked_user_item title]); - EXPECT_EQ(NSOnState, [checked_user_item state]); - - // A regular item should have just the label. - EXPECT_TRUE(ui::MenuModel::GetModelAndIndexForCommandId( - AppListMenu::SHOW_SETTINGS, &menu_model, &index)); - EXPECT_EQ(found_menu_model, menu_model); - NSMenuItem* settings_item = [[menu_control menu] itemAtIndex:index + 1]; - EXPECT_FALSE([settings_item view]); - EXPECT_NSEQ(base::SysUTF16ToNSString(menu_model->GetLabelAt(index)), - [settings_item title]); -} - -// Test adding another user, and changing an existing one. -TEST_F(AppsSearchBoxControllerTest, SearchBoxMenuChangingUsers) { - app_list::AppListViewDelegate::Users users = - [delegate_ appListDelegate]->GetUsers(); - EXPECT_EQ(2u, users.size()); - ui::MenuModel* menu_model - = [apps_search_box_controller_ appListMenu]->menu_model(); - // Adding one to account for the empty item at index 0 in Cocoa popup menus. - int non_user_items = menu_model->GetItemCount() - users.size() + 1; - - NSPopUpButton* menu_control = [apps_search_box_controller_ menuControl]; - EXPECT_EQ(2, [[menu_control menu] numberOfItems] - non_user_items); - EXPECT_NSEQ(base::SysUTF16ToNSString(users[0].name), - [[[menu_control menu] itemAtIndex:1] title]); - - users[0].name = ASCIIToUTF16("renamed user"); - app_list::AppListViewDelegate::User new_user; - new_user.name = ASCIIToUTF16("user3"); - users.push_back(new_user); - [delegate_ appListTestViewDelegate]->SetUsers(users); - // Note: menu does not automatically get rebuilt. Force a rebuild (which - // would normally occur when the UI is closed / re-opend). - [apps_search_box_controller_ rebuildMenu]; - - // Should now be an extra item, and it should have correct titles. - EXPECT_EQ(3, [[menu_control menu] numberOfItems] - non_user_items); - EXPECT_NSEQ(base::SysUTF16ToNSString(users[0].name), - [[[menu_control menu] itemAtIndex:1] title]); - EXPECT_NSEQ(base::SysUTF16ToNSString(new_user.name), - [[[menu_control menu] itemAtIndex:3] title]); -} - -} // namespace test -} // namespace app_list |