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

Unified Diff: ui/app_list/cocoa/apps_search_box_controller_unittest.mm

Issue 15955003: Menu for the OSX app launcher. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: split Created 7 years, 7 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: 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
index 7db398f7609a193276f74f71ba8c1380783fc816..bfea6548faaeeb39b2e6490e5f28b6e9799dd5cb 100644
--- a/ui/app_list/cocoa/apps_search_box_controller_unittest.mm
+++ b/ui/app_list/cocoa/apps_search_box_controller_unittest.mm
@@ -8,12 +8,17 @@
#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"
+#import "ui/app_list/cocoa/app_list_menu_cocoa.h"
+#include "ui/app_list/test/app_list_test_model.h"
+#include "ui/app_list/test/app_list_test_view_delegate.h"
#include "ui/app_list/search_box_model.h"
#import "ui/base/test/ui_cocoa_test_helper.h"
@interface TestAppsSearchBoxDelegate : NSObject<AppsSearchBoxDelegate> {
@private
app_list::SearchBoxModel searchBoxModel_;
+ app_list::test::AppListTestViewDelegate appListDelegate_;
int textChangeCount_;
}
@@ -29,6 +34,10 @@
return &searchBoxModel_;
}
+- (app_list::AppListViewDelegate*)appListDelegate {
+ return &appListDelegate_;
+}
+
- (BOOL)control:(NSControl*)control
textView:(NSTextView*)textView
doCommandBySelector:(SEL)command {
@@ -114,5 +123,83 @@ TEST_F(AppsSearchBoxControllerTest, SearchBoxModel) {
EXPECT_EQ(2, [delegate_ textChangeCount]);
}
+// Test the popup menu items.
+TEST_F(AppsSearchBoxControllerTest, SearchBoxMenu) {
+ NSPopUpButton* menu_control = [apps_search_box_controller_ menuControl];
+ // Force an update.
+ [apps_search_box_controller_ menuNeedsUpdate:[menu_control menu]];
+ EXPECT_TRUE([apps_search_box_controller_ appListMenu]);
+ ui::MenuModel* menu_model
+ = [apps_search_box_controller_ appListMenu]->menu_model();
+ EXPECT_EQ(menu_model->GetItemCount(), [[menu_control menu] numberOfItems]);
+
+ // The CURRENT_USER item should contain our custom view.
+ ui::MenuModel* found_menu_model = menu_model;
+ int index;
+ EXPECT_TRUE(ui::MenuModel::GetModelAndIndexForCommandId(
+ AppListMenu::CURRENT_USER, &menu_model, &index));
+ EXPECT_EQ(found_menu_model, menu_model);
+ NSMenuItem* current_user_item = [[menu_control menu] itemAtIndex:index];
+ EXPECT_TRUE([current_user_item view]);
+
+ // 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];
+ EXPECT_FALSE([settings_item view]);
+ EXPECT_NSEQ(base::SysUTF16ToNSString(menu_model->GetLabelAt(index)),
+ [settings_item title]);
+}
+
+// Test initialization and display of the NSPopUpButton that shows the drop-
+// down menu. Don't try to show the menu, since it will block the thread.
+class AppsSearchBoxMenuTest : public ui::CocoaTest {
+ public:
+ AppsSearchBoxMenuTest() {
+ Init();
+ }
+
+ virtual void SetUp() OVERRIDE {
+ custom_menu_button_.reset(
+ [[AppListMenuCocoa alloc] initWithFrame:NSMakeRect(0, 0, 29, 29)]);
+ ui::CocoaTest::SetUp();
+ [[test_window() contentView] addSubview:custom_menu_button_];
+ }
+
+ protected:
+ scoped_nsobject<AppListMenuCocoa> custom_menu_button_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(AppsSearchBoxMenuTest);
+};
+
+TEST_VIEW(AppsSearchBoxMenuTest, custom_menu_button_);
+
+// Test initialization and display of the custom menu item that shows the
+// currently signed-in user. This is a non-interactive view.
+class AppsSearchBoxCustomMenuItemTest : public ui::CocoaTest {
+ public:
+ AppsSearchBoxCustomMenuItemTest() {
+ Init();
+ }
+
+ virtual void SetUp() OVERRIDE {
+ scoped_ptr<AppListViewDelegate> delegate(new AppListTestViewDelegate);
+ current_user_menu_item_.reset(
+ [[AppListMenuCocoa makeCurrentUserView:delegate.get()] retain]);
+ ui::CocoaTest::SetUp();
+ [[test_window() contentView] addSubview:current_user_menu_item_];
+ }
+
+ protected:
+ scoped_nsobject<NSView> current_user_menu_item_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(AppsSearchBoxCustomMenuItemTest);
+};
+
+TEST_VIEW(AppsSearchBoxCustomMenuItemTest, current_user_menu_item_);
+
} // namespace test
} // namespace app_list
« ui/app_list/cocoa/app_list_menu_cocoa.mm ('K') | « ui/app_list/cocoa/apps_search_box_controller.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698