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

Side by Side Diff: chrome/browser/ui/cocoa/browser_window_touch_bar_unittest.mm

Issue 2860163004: [Mac] Fix for Tab Fullscreen Touch Bar (Closed)
Patch Set: Fix for avi Created 3 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/cocoa/browser_window_touch_bar.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/foundation_util.h"
8 #include "base/mac/mac_util.h" 8 #include "base/mac/mac_util.h"
9 #include "base/mac/scoped_nsobject.h" 9 #include "base/mac/scoped_nsobject.h"
10 #include "base/strings/sys_string_conversions.h" 10 #include "base/strings/sys_string_conversions.h"
11 #include "base/test/scoped_feature_list.h" 11 #include "base/test/scoped_feature_list.h"
12 #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" 13 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
14 #import "chrome/browser/ui/cocoa/browser_window_touch_bar.h" 14 #import "chrome/browser/ui/cocoa/browser_window_touch_bar.h"
15 #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" 16 #include "chrome/common/chrome_features.h"
17 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
18 #include "components/prefs/pref_service.h" 18 #include "components/prefs/pref_service.h"
19 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 #import "third_party/ocmock/OCMock/OCMock.h" 20 #import "third_party/ocmock/OCMock/OCMock.h"
21 21
22 namespace {
23
24 // Touch bar identifiers.
25 NSString* const kBrowserWindowTouchBarId = @"browser-window";
26 NSString* const kTabFullscreenTouchBarId = @"tab-fullscreen";
27
28 // Touch bar items identifiers.
29 NSString* const kBackForwardTouchId = @"BACK-FWD";
30 NSString* const kReloadOrStopTouchId = @"RELOAD-STOP";
31 NSString* const kHomeTouchId = @"HOME";
32 NSString* const kSearchTouchId = @"SEARCH";
33 NSString* const kStarTouchId = @"BOOKMARK";
34 NSString* const kNewTabTouchId = @"NEW-TAB";
35 NSString* const kExitFullscreenTouchId = @"EXIT-FULLSCREEN";
36 NSString* const kFullscreenOriginLabelTouchId = @"FULLSCREEN-ORIGIN-LABEL";
37
38 } // namespace
39
22 class BrowserWindowTouchBarUnitTest : public CocoaProfileTest { 40 class BrowserWindowTouchBarUnitTest : public CocoaProfileTest {
23 public: 41 public:
24 void SetUp() override { 42 void SetUp() override {
25 CocoaProfileTest::SetUp(); 43 CocoaProfileTest::SetUp();
26 ASSERT_TRUE(browser()); 44 ASSERT_TRUE(browser());
27 45
28 feature_list.InitAndEnableFeature(features::kBrowserTouchBar); 46 feature_list.InitAndEnableFeature(features::kBrowserTouchBar);
29 47
30 BOOL yes = YES; 48 BOOL yes = YES;
31 bwc_ = [OCMockObject mockForClass:[BrowserWindowController class]]; 49 bwc_ = [OCMockObject mockForClass:[BrowserWindowController class]];
32 [[[bwc_ stub] andReturnValue:OCMOCK_VALUE(yes)] 50 [[[bwc_ stub] andReturnValue:OCMOCK_VALUE(yes)]
33 isKindOfClass:[BrowserWindowController class]]; 51 isKindOfClass:[BrowserWindowController class]];
34 [[bwc_ stub] invalidateTouchBar]; 52 [[bwc_ stub] invalidateTouchBar];
35 53
36 touch_bar_.reset([[BrowserWindowTouchBar alloc] initWithBrowser:browser() 54 touch_bar_.reset([[BrowserWindowTouchBar alloc] initWithBrowser:browser()
37 browserWindowController:bwc_]); 55 browserWindowController:bwc_]);
38 } 56 }
39 57
40 id bwc() const { return bwc_; } 58 id bwc() const { return bwc_; }
41 59
60 NSString* GetFullscreenTouchBarItemId(NSString* id) {
61 return
62 [BrowserWindowTouchBar identifierForTouchBarId:kTabFullscreenTouchBarId
63 itemId:id];
64 }
65
66 NSString* GetBrowserTouchBarItemId(NSString* id) {
67 return
68 [BrowserWindowTouchBar identifierForTouchBarId:kBrowserWindowTouchBarId
69 itemId:id];
70 }
71
42 void TearDown() override { CocoaProfileTest::TearDown(); } 72 void TearDown() override { CocoaProfileTest::TearDown(); }
43 73
44 // A mock BrowserWindowController object. 74 // A mock BrowserWindowController object.
45 id bwc_; 75 id bwc_;
46 76
47 // Used to enable the the browser window touch bar. 77 // Used to enable the the browser window touch bar.
48 base::test::ScopedFeatureList feature_list; 78 base::test::ScopedFeatureList feature_list;
49 79
50 base::scoped_nsobject<BrowserWindowTouchBar> touch_bar_; 80 base::scoped_nsobject<BrowserWindowTouchBar> touch_bar_;
51 }; 81 };
52 82
53 // Tests to check if the touch bar contains the correct items. 83 // Tests to check if the touch bar contains the correct items.
54 TEST_F(BrowserWindowTouchBarUnitTest, TouchBarItems) { 84 TEST_F(BrowserWindowTouchBarUnitTest, TouchBarItems) {
55 if (!base::mac::IsAtLeastOS10_12()) 85 if (!base::mac::IsAtLeastOS10_12())
56 return; 86 return;
57 87
58 BOOL yes = YES; 88 BOOL yes = YES;
59 [[[bwc() expect] andReturnValue:OCMOCK_VALUE(yes)] 89 [[[bwc() expect] andReturnValue:OCMOCK_VALUE(yes)]
60 isFullscreenForTabContentOrExtension]; 90 isFullscreenForTabContentOrExtension];
61 91
62 PrefService* prefs = profile()->GetPrefs(); 92 PrefService* prefs = profile()->GetPrefs();
63 DCHECK(prefs); 93 DCHECK(prefs);
64 prefs->SetBoolean(prefs::kShowHomeButton, true); 94 prefs->SetBoolean(prefs::kShowHomeButton, true);
65 95
66 // The touch bar should be empty since the toolbar is hidden when the browser 96 // The touch bar should be empty since the toolbar is hidden when the browser
67 // is in tab fullscreen. 97 // is in tab fullscreen.
68 NSTouchBar* touch_bar = [touch_bar_ makeTouchBar]; 98 NSTouchBar* touch_bar = [touch_bar_ makeTouchBar];
69 NSArray* touch_bar_items = [touch_bar itemIdentifiers]; 99 NSArray* touch_bar_items = [touch_bar itemIdentifiers];
70 EXPECT_TRUE([touch_bar_items 100 EXPECT_TRUE(
71 containsObject:[BrowserWindowTouchBar 101 [touch_bar_items containsObject:GetFullscreenTouchBarItemId(
72 touchBarIdForItemId:@"FULLSCREEN-ORIGIN-LABEL"]]); 102 kFullscreenOriginLabelTouchId)]);
73 EXPECT_TRUE([[touch_bar escapeKeyReplacementItemIdentifier] 103 EXPECT_TRUE([[touch_bar escapeKeyReplacementItemIdentifier]
74 isEqualToString:[BrowserWindowTouchBar 104 isEqualToString:GetFullscreenTouchBarItemId(kExitFullscreenTouchId)]);
75 touchBarIdForItemId:@"EXIT-FULLSCREEN"]]);
76 105
77 BOOL no = NO; 106 BOOL no = NO;
78 [[[bwc() stub] andReturnValue:OCMOCK_VALUE(no)] 107 [[[bwc() stub] andReturnValue:OCMOCK_VALUE(no)]
79 isFullscreenForTabContentOrExtension]; 108 isFullscreenForTabContentOrExtension];
80 109
81 touch_bar_items = [[touch_bar_ makeTouchBar] itemIdentifiers]; 110 touch_bar_items = [[touch_bar_ makeTouchBar] itemIdentifiers];
82 EXPECT_TRUE([touch_bar_items 111 EXPECT_TRUE([touch_bar_items
83 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"BACK-FWD"]]); 112 containsObject:GetBrowserTouchBarItemId(kBackForwardTouchId)]);
113 EXPECT_TRUE([touch_bar_items
114 containsObject:GetBrowserTouchBarItemId(kReloadOrStopTouchId)]);
84 EXPECT_TRUE( 115 EXPECT_TRUE(
85 [touch_bar_items containsObject:[BrowserWindowTouchBar 116 [touch_bar_items containsObject:GetBrowserTouchBarItemId(kHomeTouchId)]);
86 touchBarIdForItemId:@"RELOAD-STOP"]]);
87 EXPECT_TRUE([touch_bar_items 117 EXPECT_TRUE([touch_bar_items
88 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"HOME"]]); 118 containsObject:GetBrowserTouchBarItemId(kSearchTouchId)]);
119 EXPECT_TRUE(
120 [touch_bar_items containsObject:GetBrowserTouchBarItemId(kStarTouchId)]);
89 EXPECT_TRUE([touch_bar_items 121 EXPECT_TRUE([touch_bar_items
90 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"SEARCH"]]); 122 containsObject:GetBrowserTouchBarItemId(kNewTabTouchId)]);
91 EXPECT_TRUE([touch_bar_items
92 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"BOOKMARK"]]);
93 EXPECT_TRUE([touch_bar_items
94 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"NEW-TAB"]]);
95 123
96 prefs->SetBoolean(prefs::kShowHomeButton, false); 124 prefs->SetBoolean(prefs::kShowHomeButton, false);
97 touch_bar_items = [[touch_bar_ makeTouchBar] itemIdentifiers]; 125 touch_bar_items = [[touch_bar_ makeTouchBar] itemIdentifiers];
98 EXPECT_TRUE([touch_bar_items 126 EXPECT_TRUE([touch_bar_items
99 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"BACK-FWD"]]); 127 containsObject:GetBrowserTouchBarItemId(kBackForwardTouchId)]);
128 EXPECT_TRUE([touch_bar_items
129 containsObject:GetBrowserTouchBarItemId(kReloadOrStopTouchId)]);
130 EXPECT_TRUE([touch_bar_items
131 containsObject:GetBrowserTouchBarItemId(kSearchTouchId)]);
100 EXPECT_TRUE( 132 EXPECT_TRUE(
101 [touch_bar_items containsObject:[BrowserWindowTouchBar 133 [touch_bar_items containsObject:GetBrowserTouchBarItemId(kStarTouchId)]);
102 touchBarIdForItemId:@"RELOAD-STOP"]]);
103 EXPECT_TRUE([touch_bar_items 134 EXPECT_TRUE([touch_bar_items
104 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"SEARCH"]]); 135 containsObject:GetBrowserTouchBarItemId(kNewTabTouchId)]);
105 EXPECT_TRUE([touch_bar_items
106 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"BOOKMARK"]]);
107 EXPECT_TRUE([touch_bar_items
108 containsObject:[BrowserWindowTouchBar touchBarIdForItemId:@"NEW-TAB"]]);
109 } 136 }
110 137
111 // Tests the reload or stop touch bar item. 138 // Tests the reload or stop touch bar item.
112 TEST_F(BrowserWindowTouchBarUnitTest, ReloadOrStopTouchBarItem) { 139 TEST_F(BrowserWindowTouchBarUnitTest, ReloadOrStopTouchBarItem) {
113 if (!base::mac::IsAtLeastOS10_12()) 140 if (!base::mac::IsAtLeastOS10_12())
114 return; 141 return;
115 142
116 BOOL no = NO; 143 BOOL no = NO;
117 [[[bwc() stub] andReturnValue:OCMOCK_VALUE(no)] 144 [[[bwc() stub] andReturnValue:OCMOCK_VALUE(no)]
118 isFullscreenForTabContentOrExtension]; 145 isFullscreenForTabContentOrExtension];
119 146
120 NSTouchBar* touch_bar = [touch_bar_ makeTouchBar]; 147 NSTouchBar* touch_bar = [touch_bar_ makeTouchBar];
121 [touch_bar_ setIsPageLoading:NO]; 148 [touch_bar_ setIsPageLoading:NO];
122 149
123 NSTouchBarItem* item = 150 NSTouchBarItem* item =
124 [touch_bar_ touchBar:touch_bar 151 [touch_bar_ touchBar:touch_bar
125 makeItemForIdentifier:[BrowserWindowTouchBar 152 makeItemForIdentifier:GetBrowserTouchBarItemId(kReloadOrStopTouchId)];
126 touchBarIdForItemId:@"RELOAD-STOP"]];
127 EXPECT_EQ(IDC_RELOAD, [[item view] tag]); 153 EXPECT_EQ(IDC_RELOAD, [[item view] tag]);
128 154
129 [touch_bar_ setIsPageLoading:YES]; 155 [touch_bar_ setIsPageLoading:YES];
130 item = [touch_bar_ touchBar:touch_bar 156 item = [touch_bar_ touchBar:touch_bar
131 makeItemForIdentifier:[BrowserWindowTouchBar 157 makeItemForIdentifier:GetBrowserTouchBarItemId(kReloadOrStopTouchId)];
132 touchBarIdForItemId:@"RELOAD-STOP"]];
133 EXPECT_EQ(IDC_STOP, [[item view] tag]); 158 EXPECT_EQ(IDC_STOP, [[item view] tag]);
134 } 159 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/browser_window_touch_bar.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698