| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "ui/app_list/cocoa/apps_search_box_controller.h" | 5 #import "ui/app_list/cocoa/apps_search_box_controller.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_nsobject.h" | 7 #include "base/memory/scoped_nsobject.h" |
| 8 #include "base/strings/sys_string_conversions.h" | 8 #include "base/strings/sys_string_conversions.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #import "testing/gtest_mac.h" | 10 #import "testing/gtest_mac.h" |
| 11 #include "ui/app_list/app_list_menu.h" |
| 12 #import "ui/app_list/cocoa/current_user_menu_item_view.h" |
| 11 #include "ui/app_list/search_box_model.h" | 13 #include "ui/app_list/search_box_model.h" |
| 14 #include "ui/app_list/test/app_list_test_model.h" |
| 15 #include "ui/app_list/test/app_list_test_view_delegate.h" |
| 12 #import "ui/base/test/ui_cocoa_test_helper.h" | 16 #import "ui/base/test/ui_cocoa_test_helper.h" |
| 13 | 17 |
| 14 @interface TestAppsSearchBoxDelegate : NSObject<AppsSearchBoxDelegate> { | 18 @interface TestAppsSearchBoxDelegate : NSObject<AppsSearchBoxDelegate> { |
| 15 @private | 19 @private |
| 16 app_list::SearchBoxModel searchBoxModel_; | 20 app_list::SearchBoxModel searchBoxModel_; |
| 21 app_list::test::AppListTestViewDelegate appListDelegate_; |
| 17 int textChangeCount_; | 22 int textChangeCount_; |
| 18 } | 23 } |
| 19 | 24 |
| 20 @property(assign, nonatomic) int textChangeCount; | 25 @property(assign, nonatomic) int textChangeCount; |
| 21 | 26 |
| 22 @end | 27 @end |
| 23 | 28 |
| 24 @implementation TestAppsSearchBoxDelegate | 29 @implementation TestAppsSearchBoxDelegate |
| 25 | 30 |
| 26 @synthesize textChangeCount = textChangeCount_; | 31 @synthesize textChangeCount = textChangeCount_; |
| 27 | 32 |
| 28 - (app_list::SearchBoxModel*)searchBoxModel { | 33 - (app_list::SearchBoxModel*)searchBoxModel { |
| 29 return &searchBoxModel_; | 34 return &searchBoxModel_; |
| 30 } | 35 } |
| 31 | 36 |
| 37 - (app_list::AppListViewDelegate*)appListDelegate { |
| 38 return &appListDelegate_; |
| 39 } |
| 40 |
| 32 - (BOOL)control:(NSControl*)control | 41 - (BOOL)control:(NSControl*)control |
| 33 textView:(NSTextView*)textView | 42 textView:(NSTextView*)textView |
| 34 doCommandBySelector:(SEL)command { | 43 doCommandBySelector:(SEL)command { |
| 35 return NO; | 44 return NO; |
| 36 } | 45 } |
| 37 | 46 |
| 38 - (void)modelTextDidChange { | 47 - (void)modelTextDidChange { |
| 39 ++textChangeCount_; | 48 ++textChangeCount_; |
| 40 } | 49 } |
| 41 | 50 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 // Test pressing escape clears the search. | 122 // Test pressing escape clears the search. |
| 114 model->SetText(search_text); | 123 model->SetText(search_text); |
| 115 EXPECT_NSEQ(base::SysUTF16ToNSString(search_text), | 124 EXPECT_NSEQ(base::SysUTF16ToNSString(search_text), |
| 116 [[apps_search_box_controller_ searchTextField] stringValue]); | 125 [[apps_search_box_controller_ searchTextField] stringValue]); |
| 117 SimulateKeyAction(@selector(complete:)); | 126 SimulateKeyAction(@selector(complete:)); |
| 118 EXPECT_NSEQ([NSString string], | 127 EXPECT_NSEQ([NSString string], |
| 119 [[apps_search_box_controller_ searchTextField] stringValue]); | 128 [[apps_search_box_controller_ searchTextField] stringValue]); |
| 120 EXPECT_EQ(2, [delegate_ textChangeCount]); | 129 EXPECT_EQ(2, [delegate_ textChangeCount]); |
| 121 } | 130 } |
| 122 | 131 |
| 132 // Test the popup menu items. |
| 133 TEST_F(AppsSearchBoxControllerTest, SearchBoxMenu) { |
| 134 NSPopUpButton* menu_control = [apps_search_box_controller_ menuControl]; |
| 135 EXPECT_TRUE([apps_search_box_controller_ appListMenu]); |
| 136 ui::MenuModel* menu_model |
| 137 = [apps_search_box_controller_ appListMenu]->menu_model(); |
| 138 // Add one to the item count to account for the blank, first item that Cocoa |
| 139 // has in its popup menus. |
| 140 EXPECT_EQ(menu_model->GetItemCount() + 1, |
| 141 [[menu_control menu] numberOfItems]); |
| 142 |
| 143 // The CURRENT_USER item should contain our custom view. |
| 144 ui::MenuModel* found_menu_model = menu_model; |
| 145 int index; |
| 146 EXPECT_TRUE(ui::MenuModel::GetModelAndIndexForCommandId( |
| 147 AppListMenu::CURRENT_USER, &menu_model, &index)); |
| 148 EXPECT_EQ(found_menu_model, menu_model); |
| 149 NSMenuItem* current_user_item = [[menu_control menu] itemAtIndex:index + 1]; |
| 150 EXPECT_TRUE([current_user_item view]); |
| 151 |
| 152 // A regular item should have just the label. |
| 153 EXPECT_TRUE(ui::MenuModel::GetModelAndIndexForCommandId( |
| 154 AppListMenu::SHOW_SETTINGS, &menu_model, &index)); |
| 155 EXPECT_EQ(found_menu_model, menu_model); |
| 156 NSMenuItem* settings_item = [[menu_control menu] itemAtIndex:index + 1]; |
| 157 EXPECT_FALSE([settings_item view]); |
| 158 EXPECT_NSEQ(base::SysUTF16ToNSString(menu_model->GetLabelAt(index)), |
| 159 [settings_item title]); |
| 160 } |
| 161 |
| 162 // Test initialization and display of the custom menu item that shows the |
| 163 // currently signed-in user. This is a non-interactive view. |
| 164 class AppsSearchBoxCustomMenuItemTest : public ui::CocoaTest { |
| 165 public: |
| 166 AppsSearchBoxCustomMenuItemTest() { |
| 167 Init(); |
| 168 } |
| 169 |
| 170 virtual void SetUp() OVERRIDE { |
| 171 scoped_ptr<AppListViewDelegate> delegate(new AppListTestViewDelegate); |
| 172 current_user_menu_item_.reset([[[CurrentUserMenuItemView alloc] |
| 173 initWithDelegate:delegate.get()] retain]); |
| 174 ui::CocoaTest::SetUp(); |
| 175 [[test_window() contentView] addSubview:current_user_menu_item_]; |
| 176 } |
| 177 |
| 178 protected: |
| 179 scoped_nsobject<NSView> current_user_menu_item_; |
| 180 |
| 181 private: |
| 182 DISALLOW_COPY_AND_ASSIGN(AppsSearchBoxCustomMenuItemTest); |
| 183 }; |
| 184 |
| 185 TEST_VIEW(AppsSearchBoxCustomMenuItemTest, current_user_menu_item_); |
| 186 |
| 123 } // namespace test | 187 } // namespace test |
| 124 } // namespace app_list | 188 } // namespace app_list |
| OLD | NEW |