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" | |
21 | |
22 NSString* GetTouchBarId(NSString* const touch_bar_id) { | |
Robert Sesek
2017/04/27 19:05:51
How about exposing GetTouchBarId as +[BrowserWindo
spqchan
2017/04/28 16:36:04
Done.
| |
23 NSString* chrome_bundle_id = | |
24 base::SysUTF8ToNSString(base::mac::BaseBundleID()); | |
25 return [NSString | |
26 stringWithFormat:@"%@.browser-window-%@", chrome_bundle_id, touch_bar_id]; | |
27 } | |
15 | 28 |
16 class BrowserWindowTouchBarUnitTest : public CocoaProfileTest { | 29 class BrowserWindowTouchBarUnitTest : public CocoaProfileTest { |
17 public: | 30 public: |
18 void SetUp() override { | 31 void SetUp() override { |
19 CocoaProfileTest::SetUp(); | 32 CocoaProfileTest::SetUp(); |
20 ASSERT_TRUE(browser()); | 33 ASSERT_TRUE(browser()); |
34 | |
35 BOOL yes = YES; | |
36 bwc_ = [OCMockObject mockForClass:[BrowserWindowController class]]; | |
37 [[[bwc_ stub] andReturnValue:OCMOCK_VALUE(yes)] | |
38 isKindOfClass:[BrowserWindowController class]]; | |
39 [[bwc_ stub] invalidateTouchBar]; | |
40 | |
21 browserWindowTouchBar_.reset([[BrowserWindowTouchBar alloc] | 41 browserWindowTouchBar_.reset([[BrowserWindowTouchBar alloc] |
22 initWithBrowser:browser() | 42 initWithBrowser:browser() |
23 browserWindowController:nil]); | 43 browserWindowController:bwc_]); |
24 } | 44 } |
25 | 45 |
46 id bwc() { return bwc_; } | |
47 | |
26 void TearDown() override { CocoaProfileTest::TearDown(); } | 48 void TearDown() override { CocoaProfileTest::TearDown(); } |
27 | 49 |
50 // A mock BrowserWindowController object. | |
51 id bwc_; | |
52 | |
28 base::scoped_nsobject<BrowserWindowTouchBar> browserWindowTouchBar_; | 53 base::scoped_nsobject<BrowserWindowTouchBar> browserWindowTouchBar_; |
29 }; | 54 }; |
30 | 55 |
56 // Tests to check if the touch bar contains the correct items. | |
31 TEST_F(BrowserWindowTouchBarUnitTest, TouchBarItems) { | 57 TEST_F(BrowserWindowTouchBarUnitTest, TouchBarItems) { |
32 if (!base::mac::IsAtLeastOS10_12()) | 58 if (!base::mac::IsAtLeastOS10_12()) |
33 return; | 59 return; |
34 | 60 |
61 base::test::ScopedFeatureList feature_list; | |
Robert Sesek
2017/04/27 19:05:51
Move this into SetUp as well?
spqchan
2017/04/28 16:36:04
I've already tried. It'll only scoped up to the en
Robert Sesek
2017/04/28 17:18:04
You'd have to make the ScopedFeatureList a member
| |
62 feature_list.InitAndEnableFeature(features::kBrowserTouchBar); | |
63 | |
64 BOOL yes = YES; | |
65 [[[bwc() expect] andReturnValue:OCMOCK_VALUE(yes)] | |
66 isFullscreenForTabContentOrExtension]; | |
67 | |
35 PrefService* prefs = profile()->GetPrefs(); | 68 PrefService* prefs = profile()->GetPrefs(); |
36 DCHECK(prefs); | 69 DCHECK(prefs); |
37 prefs->SetBoolean(prefs::kShowHomeButton, true); | 70 prefs->SetBoolean(prefs::kShowHomeButton, true); |
38 | 71 |
39 NSArray* touchBarItemIds = | 72 // The touch bar should be empty since the toolbar is hidden when the browser |
40 [[browserWindowTouchBar_ makeTouchBar] itemIdentifiers]; | 73 // is in tab fullscreen. |
41 EXPECT_TRUE([touchBarItemIds containsObject:@"BackForwardTouchId"]); | 74 NSTouchBar* touchBar = [browserWindowTouchBar_ makeTouchBar]; |
Robert Sesek
2017/04/27 19:05:51
naming: under_scores in C++
spqchan
2017/04/28 16:36:04
Done.
| |
42 EXPECT_TRUE([touchBarItemIds containsObject:@"ReloadOrStopTouchId"]); | 75 NSArray* touchBarItemIds = [touchBar itemIdentifiers]; |
43 EXPECT_TRUE([touchBarItemIds containsObject:@"HomeTouchId"]); | 76 EXPECT_TRUE([touchBarItemIds |
44 EXPECT_TRUE([touchBarItemIds containsObject:@"SearchTouchId"]); | 77 containsObject:GetTouchBarId(@"FULLSCREEN-ORIGIN-LABEL")]); |
45 EXPECT_TRUE([touchBarItemIds containsObject:@"NewTabTouchId"]); | 78 EXPECT_TRUE([[touchBar escapeKeyReplacementItemIdentifier] |
46 EXPECT_TRUE([touchBarItemIds containsObject:@"StarTouchId"]); | 79 isEqualToString:GetTouchBarId(@"EXIT-FULLSCREEN")]); |
80 | |
81 BOOL no = NO; | |
82 [[[bwc() stub] andReturnValue:OCMOCK_VALUE(no)] | |
83 isFullscreenForTabContentOrExtension]; | |
84 | |
85 touchBarItemIds = [[browserWindowTouchBar_ makeTouchBar] itemIdentifiers]; | |
86 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"BACK-FWD")]); | |
87 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"RELOAD-STOP")]); | |
88 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"HOME")]); | |
89 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"SEARCH")]); | |
90 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"BOOKMARK")]); | |
91 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"NEW-TAB")]); | |
47 | 92 |
48 prefs->SetBoolean(prefs::kShowHomeButton, false); | 93 prefs->SetBoolean(prefs::kShowHomeButton, false); |
49 touchBarItemIds = [[browserWindowTouchBar_ makeTouchBar] itemIdentifiers]; | 94 touchBarItemIds = [[browserWindowTouchBar_ makeTouchBar] itemIdentifiers]; |
50 EXPECT_TRUE([touchBarItemIds containsObject:@"BackForwardTouchId"]); | 95 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"BACK-FWD")]); |
51 EXPECT_TRUE([touchBarItemIds containsObject:@"ReloadOrStopTouchId"]); | 96 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"RELOAD-STOP")]); |
52 EXPECT_FALSE([touchBarItemIds containsObject:@"HomeTouchId"]); | 97 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"SEARCH")]); |
53 EXPECT_TRUE([touchBarItemIds containsObject:@"SearchTouchId"]); | 98 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"BOOKMARK")]); |
54 EXPECT_TRUE([touchBarItemIds containsObject:@"NewTabTouchId"]); | 99 EXPECT_TRUE([touchBarItemIds containsObject:GetTouchBarId(@"NEW-TAB")]); |
55 EXPECT_TRUE([touchBarItemIds containsObject:@"StarTouchId"]); | |
56 } | 100 } |
57 | 101 |
102 // Tests the reload or stop touch bar item. | |
58 TEST_F(BrowserWindowTouchBarUnitTest, ReloadOrStopTouchBarItem) { | 103 TEST_F(BrowserWindowTouchBarUnitTest, ReloadOrStopTouchBarItem) { |
59 if (!base::mac::IsAtLeastOS10_12()) | 104 if (!base::mac::IsAtLeastOS10_12()) |
60 return; | 105 return; |
61 | 106 |
107 base::test::ScopedFeatureList feature_list; | |
108 feature_list.InitAndEnableFeature(features::kBrowserTouchBar); | |
109 | |
110 BOOL no = NO; | |
111 [[[bwc() stub] andReturnValue:OCMOCK_VALUE(no)] | |
112 isFullscreenForTabContentOrExtension]; | |
113 | |
62 NSTouchBar* touchBar = [browserWindowTouchBar_ makeTouchBar]; | 114 NSTouchBar* touchBar = [browserWindowTouchBar_ makeTouchBar]; |
63 [browserWindowTouchBar_ setIsPageLoading:NO]; | 115 [browserWindowTouchBar_ setIsPageLoading:NO]; |
116 | |
64 NSTouchBarItem* item = | 117 NSTouchBarItem* item = |
65 [browserWindowTouchBar_ touchBar:touchBar | 118 [browserWindowTouchBar_ touchBar:touchBar |
66 makeItemForIdentifier:@"ReloadOrStopTouchId"]; | 119 makeItemForIdentifier:GetTouchBarId(@"RELOAD-STOP")]; |
67 | |
68 EXPECT_EQ(IDC_RELOAD, [[item view] tag]); | 120 EXPECT_EQ(IDC_RELOAD, [[item view] tag]); |
69 | 121 |
70 [browserWindowTouchBar_ setIsPageLoading:YES]; | 122 [browserWindowTouchBar_ setIsPageLoading:YES]; |
71 item = [browserWindowTouchBar_ touchBar:touchBar | 123 item = [browserWindowTouchBar_ touchBar:touchBar |
72 makeItemForIdentifier:@"ReloadOrStopTouchId"]; | 124 makeItemForIdentifier:GetTouchBarId(@"RELOAD-STOP")]; |
73 | |
74 EXPECT_EQ(IDC_STOP, [[item view] tag]); | 125 EXPECT_EQ(IDC_STOP, [[item view] tag]); |
75 } | 126 } |
OLD | NEW |