1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #import "ui/base/ios/cru_context_menu_controller.h"
7 #import <UIKit/UIKit.h>
9 #include "base/mac/scoped_nsobject.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "testing/platform_test.h"
12 #import "ui/base/ios/cru_context_menu_holder.h"
16 class ContextMenuControllerTest : public PlatformTest {
18 ContextMenuControllerTest() { }
20 void SetUp() override {
21 _menuController.reset([[CRUContextMenuController alloc] init]);
23 [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]);
24 [_window makeKeyAndVisible];
28 base::scoped_nsobject<CRUContextMenuController> _menuController;
29 base::scoped_nsobject<UIWindow> _window;
32 TEST_F(ContextMenuControllerTest, OneEntry) {
33 base::scoped_nsobject<CRUContextMenuHolder> holder(
34 [[CRUContextMenuHolder alloc] init]);
36 BOOL* clickedPtr = &clicked;
38 [holder appendItemWithTitle:@"foo" action:^{ *clickedPtr = YES; }];
39 [holder setMenuTitle:@"FooTitle"];
41 [_menuController showWithHolder:holder atPoint:CGPointZero inView:_window];
43 EXPECT_TRUE([_menuController isVisible]);
46 TEST_F(ContextMenuControllerTest, ShouldDismissImmediately) {
47 base::scoped_nsobject<CRUContextMenuHolder> holder(
48 [[CRUContextMenuHolder alloc] init]);
49 [holder appendItemWithTitle:@"foo" action:^{}];
50 [holder appendItemWithTitle:@"bar" action:^{} dismissImmediately:YES];
51 [holder appendItemWithTitle:@"baz" action:^{} dismissImmediately:NO];
53 EXPECT_FALSE([holder shouldDismissImmediatelyOnClickedAtIndex:0]);
54 EXPECT_TRUE([holder shouldDismissImmediatelyOnClickedAtIndex:1]);
55 EXPECT_FALSE([holder shouldDismissImmediatelyOnClickedAtIndex:2]);