Index: ui/app_list/cocoa/apps_search_box_controller_unittest.mm |
diff --git a/ui/app_list/cocoa/apps_search_box_controller_unittest.mm b/ui/app_list/cocoa/apps_search_box_controller_unittest.mm |
deleted file mode 100644 |
index 285bbdb6d1198d3d7b50e903f1a361797e2a7531..0000000000000000000000000000000000000000 |
--- a/ui/app_list/cocoa/apps_search_box_controller_unittest.mm |
+++ /dev/null |
@@ -1,267 +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/gfx/test/ui_cocoa_test_helper.h" |
- |
-using base::ASCIIToUTF16; |
- |
-@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 |