OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
6 | 6 |
| 7 #include "base/mac/foundation_util.h" |
7 #include "base/mac/mac_util.h" | 8 #include "base/mac/mac_util.h" |
8 #include "base/mac/scoped_nsobject.h" | 9 #include "base/mac/scoped_nsobject.h" |
| 10 #include "base/strings/sys_string_conversions.h" |
| 11 #include "base/test/scoped_feature_list.h" |
9 #include "chrome/app/chrome_command_ids.h" | 12 #include "chrome/app/chrome_command_ids.h" |
| 13 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
10 #import "chrome/browser/ui/cocoa/browser_window_touch_bar.h" | 14 #import "chrome/browser/ui/cocoa/browser_window_touch_bar.h" |
11 #include "chrome/browser/ui/cocoa/test/cocoa_profile_test.h" | 15 #include "chrome/browser/ui/cocoa/test/cocoa_profile_test.h" |
| 16 #include "chrome/common/chrome_features.h" |
12 #include "chrome/common/pref_names.h" | 17 #include "chrome/common/pref_names.h" |
13 #include "components/prefs/pref_service.h" | 18 #include "components/prefs/pref_service.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 20 #import "third_party/ocmock/OCMock/OCMock.h" |
15 | 21 |
16 class BrowserWindowTouchBarUnitTest : public CocoaProfileTest { | 22 class BrowserWindowTouchBarUnitTest : public CocoaProfileTest { |
17 public: | 23 public: |
18 void SetUp() override { | 24 void SetUp() override { |
19 CocoaProfileTest::SetUp(); | 25 CocoaProfileTest::SetUp(); |
20 ASSERT_TRUE(browser()); | 26 ASSERT_TRUE(browser()); |
21 browserWindowTouchBar_.reset([[BrowserWindowTouchBar alloc] | 27 |
22 initWithBrowser:browser() | 28 feature_list.InitAndEnableFeature(features::kBrowserTouchBar); |
23 browserWindowController:nil]); | 29 |
| 30 BOOL yes = YES; |
| 31 bwc_ = [OCMockObject mockForClass:[BrowserWindowController class]]; |
| 32 [[[bwc_ stub] andReturnValue:OCMOCK_VALUE(yes)] |
| 33 isKindOfClass:[BrowserWindowController class]]; |
| 34 [[bwc_ stub] invalidateTouchBar]; |
| 35 |
| 36 touch_bar_.reset([[BrowserWindowTouchBar alloc] initWithBrowser:browser() |
| 37 browserWindowController:bwc_]); |
24 } | 38 } |
25 | 39 |
| 40 id bwc() const { return bwc_; } |
| 41 |
26 void TearDown() override { CocoaProfileTest::TearDown(); } | 42 void TearDown() override { CocoaProfileTest::TearDown(); } |
27 | 43 |
28 base::scoped_nsobject<BrowserWindowTouchBar> browserWindowTouchBar_; | 44 // A mock BrowserWindowController object. |
| 45 id bwc_; |
| 46 |
| 47 // Used to enable the the browser window touch bar. |
| 48 base::test::ScopedFeatureList feature_list; |
| 49 |
| 50 base::scoped_nsobject<BrowserWindowTouchBar> touch_bar_; |
29 }; | 51 }; |
30 | 52 |
| 53 // Tests to check if the touch bar contains the correct items. |
31 TEST_F(BrowserWindowTouchBarUnitTest, TouchBarItems) { | 54 TEST_F(BrowserWindowTouchBarUnitTest, TouchBarItems) { |
32 if (!base::mac::IsAtLeastOS10_12()) | 55 if (!base::mac::IsAtLeastOS10_12()) |
33 return; | 56 return; |
34 | 57 |
| 58 BOOL yes = YES; |
| 59 [[[bwc() expect] andReturnValue:OCMOCK_VALUE(yes)] |
| 60 isFullscreenForTabContentOrExtension]; |
| 61 |
35 PrefService* prefs = profile()->GetPrefs(); | 62 PrefService* prefs = profile()->GetPrefs(); |
36 DCHECK(prefs); | 63 DCHECK(prefs); |
37 prefs->SetBoolean(prefs::kShowHomeButton, true); | 64 prefs->SetBoolean(prefs::kShowHomeButton, true); |
38 | 65 |
39 NSArray* touchBarItemIds = | 66 // The touch bar should be empty since the toolbar is hidden when the browser |
40 [[browserWindowTouchBar_ makeTouchBar] itemIdentifiers]; | 67 // is in tab fullscreen. |
41 EXPECT_TRUE([touchBarItemIds containsObject:@"BackForwardTouchId"]); | 68 NSTouchBar* touch_bar = [touch_bar_ makeTouchBar]; |
42 EXPECT_TRUE([touchBarItemIds containsObject:@"ReloadOrStopTouchId"]); | 69 NSArray* touch_bar_items = [touch_bar itemIdentifiers]; |
43 EXPECT_TRUE([touchBarItemIds containsObject:@"HomeTouchId"]); | 70 EXPECT_TRUE([touch_bar_items |
44 EXPECT_TRUE([touchBarItemIds containsObject:@"SearchTouchId"]); | 71 containsObject:[BrowserWindowTouchBar |
45 EXPECT_TRUE([touchBarItemIds containsObject:@"NewTabTouchId"]); | 72 touchBarIdForItemId:@"FULLSCREEN-ORIGIN-LABEL"]]); |
46 EXPECT_TRUE([touchBarItemIds containsObject:@"StarTouchId"]); | 73 EXPECT_TRUE([[touch_bar escapeKeyReplacementItemIdentifier] |
| 74 isEqualToString:[BrowserWindowTouchBar |
| 75 touchBarIdForItemId:@"EXIT-FULLSCREEN"]]); |
| 76 |
| 77 BOOL no = NO; |
| 78 [[[bwc() stub] andReturnValue:OCMOCK_VALUE(no)] |
| 79 isFullscreenForTabContentOrExtension]; |
| 80 |
| 81 touch_bar_items = [[touch_bar_ makeTouchBar] itemIdentifiers]; |
| 82 EXPECT_TRUE([touch_bar_items |
| 83 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"BACK-FWD"]]); |
| 84 EXPECT_TRUE( |
| 85 [touch_bar_items containsObject:[BrowserWindowTouchBar |
| 86 touchBarIdForItemId:@"RELOAD-STOP"]]); |
| 87 EXPECT_TRUE([touch_bar_items |
| 88 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"HOME"]]); |
| 89 EXPECT_TRUE([touch_bar_items |
| 90 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"SEARCH"]]); |
| 91 EXPECT_TRUE([touch_bar_items |
| 92 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"BOOKMARK"]]); |
| 93 EXPECT_TRUE([touch_bar_items |
| 94 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"NEW-TAB"]]); |
47 | 95 |
48 prefs->SetBoolean(prefs::kShowHomeButton, false); | 96 prefs->SetBoolean(prefs::kShowHomeButton, false); |
49 touchBarItemIds = [[browserWindowTouchBar_ makeTouchBar] itemIdentifiers]; | 97 touch_bar_items = [[touch_bar_ makeTouchBar] itemIdentifiers]; |
50 EXPECT_TRUE([touchBarItemIds containsObject:@"BackForwardTouchId"]); | 98 EXPECT_TRUE([touch_bar_items |
51 EXPECT_TRUE([touchBarItemIds containsObject:@"ReloadOrStopTouchId"]); | 99 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"BACK-FWD"]]); |
52 EXPECT_FALSE([touchBarItemIds containsObject:@"HomeTouchId"]); | 100 EXPECT_TRUE( |
53 EXPECT_TRUE([touchBarItemIds containsObject:@"SearchTouchId"]); | 101 [touch_bar_items containsObject:[BrowserWindowTouchBar |
54 EXPECT_TRUE([touchBarItemIds containsObject:@"NewTabTouchId"]); | 102 touchBarIdForItemId:@"RELOAD-STOP"]]); |
55 EXPECT_TRUE([touchBarItemIds containsObject:@"StarTouchId"]); | 103 EXPECT_TRUE([touch_bar_items |
| 104 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"SEARCH"]]); |
| 105 EXPECT_TRUE([touch_bar_items |
| 106 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"BOOKMARK"]]); |
| 107 EXPECT_TRUE([touch_bar_items |
| 108 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"NEW-TAB"]]); |
56 } | 109 } |
57 | 110 |
| 111 // Tests the reload or stop touch bar item. |
58 TEST_F(BrowserWindowTouchBarUnitTest, ReloadOrStopTouchBarItem) { | 112 TEST_F(BrowserWindowTouchBarUnitTest, ReloadOrStopTouchBarItem) { |
59 if (!base::mac::IsAtLeastOS10_12()) | 113 if (!base::mac::IsAtLeastOS10_12()) |
60 return; | 114 return; |
61 | 115 |
62 NSTouchBar* touchBar = [browserWindowTouchBar_ makeTouchBar]; | 116 BOOL no = NO; |
63 [browserWindowTouchBar_ setIsPageLoading:NO]; | 117 [[[bwc() stub] andReturnValue:OCMOCK_VALUE(no)] |
| 118 isFullscreenForTabContentOrExtension]; |
| 119 |
| 120 NSTouchBar* touch_bar = [touch_bar_ makeTouchBar]; |
| 121 [touch_bar_ setIsPageLoading:NO]; |
| 122 |
64 NSTouchBarItem* item = | 123 NSTouchBarItem* item = |
65 [browserWindowTouchBar_ touchBar:touchBar | 124 [touch_bar_ touchBar:touch_bar |
66 makeItemForIdentifier:@"ReloadOrStopTouchId"]; | 125 makeItemForIdentifier:[BrowserWindowTouchBar |
67 | 126 touchBarIdForItemId:@"RELOAD-STOP"]]; |
68 EXPECT_EQ(IDC_RELOAD, [[item view] tag]); | 127 EXPECT_EQ(IDC_RELOAD, [[item view] tag]); |
69 | 128 |
70 [browserWindowTouchBar_ setIsPageLoading:YES]; | 129 [touch_bar_ setIsPageLoading:YES]; |
71 item = [browserWindowTouchBar_ touchBar:touchBar | 130 item = [touch_bar_ touchBar:touch_bar |
72 makeItemForIdentifier:@"ReloadOrStopTouchId"]; | 131 makeItemForIdentifier:[BrowserWindowTouchBar |
73 | 132 touchBarIdForItemId:@"RELOAD-STOP"]]; |
74 EXPECT_EQ(IDC_STOP, [[item view] tag]); | 133 EXPECT_EQ(IDC_STOP, [[item view] tag]); |
75 } | 134 } |
OLD | NEW |