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

Side by Side Diff: chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa_unittest.mm

Issue 310383004: Make a controller interface for media galleries dialogs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "base/strings/string_number_conversions.h" 5 #include "base/strings/string_number_conversions.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "chrome/browser/media_galleries/media_galleries_dialog_controller_mock. h" 7 #include "chrome/browser/media_galleries/media_galleries_dialog_controller_mock. h"
8 #include "chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h" 8 #include "chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h"
9 #include "components/storage_monitor/storage_info.h" 9 #include "components/storage_monitor/storage_info.h"
10 #include "extensions/common/extension.h" 10 #include "extensions/common/extension.h"
11 #include "extensions/common/test_util.h" 11 #include "extensions/common/test_util.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 using ::testing::_; 14 using ::testing::_;
15 using ::testing::AnyNumber;
16 using ::testing::Mock;
15 using ::testing::NiceMock; 17 using ::testing::NiceMock;
16 using ::testing::Return; 18 using ::testing::Return;
17 using ::testing::ReturnPointee; 19 using ::testing::ReturnPointee;
18 using ::testing::ReturnRef; 20 using ::testing::ReturnRef;
19 21
20 @interface MediaGalleryListEntry (testing) 22 @interface MediaGalleryListEntry (testing)
21 - (NSInteger)state; 23 - (NSInteger)state;
22 - (void)performClick:(id)sender; 24 - (void)performClick:(id)sender;
23 @end 25 @end
24 26
(...skipping 17 matching lines...) Expand all
42 storage_monitor::StorageInfo::FIXED_MASS_STORAGE, 44 storage_monitor::StorageInfo::FIXED_MASS_STORAGE,
43 base::Int64ToString(pref_id)); 45 base::Int64ToString(pref_id));
44 gallery.display_name = base::ASCIIToUTF16("name"); 46 gallery.display_name = base::ASCIIToUTF16("name");
45 return gallery; 47 return gallery;
46 } 48 }
47 49
48 class MediaGalleriesDialogTest : public testing::Test { 50 class MediaGalleriesDialogTest : public testing::Test {
49 public: 51 public:
50 MediaGalleriesDialogTest() {} 52 MediaGalleriesDialogTest() {}
51 virtual ~MediaGalleriesDialogTest() {} 53 virtual ~MediaGalleriesDialogTest() {}
54
52 virtual void SetUp() OVERRIDE { 55 virtual void SetUp() OVERRIDE {
53 dummy_extension_ = extensions::test_util::CreateExtensionWithID("dummy"); 56 std::vector<base::string16> headers;
54 } 57 headers.push_back(base::string16());
55 virtual void TearDown() OVERRIDE { 58 headers.push_back(base::ASCIIToUTF16("header2"));
56 dummy_extension_ = NULL; 59 ON_CALL(controller_, GetSectionHeaders()).
60 WillByDefault(Return(headers));
61 EXPECT_CALL(controller_, GetSectionEntries(_)).
62 Times(AnyNumber());
57 } 63 }
58 64
59 const extensions::Extension& dummy_extension() const { 65 virtual void TearDown() OVERRIDE {
60 return *dummy_extension_; 66 Mock::VerifyAndClearExpectations(&controller_);
67 dialog_.reset();
68 }
69
70 NiceMock<MediaGalleriesDialogControllerMock>* controller() {
71 return &controller_;
72 }
73
74 MediaGalleriesDialogCocoa* GetOrCreateDialog() {
75 if (!dialog_.get()) {
76 dialog_.reset(static_cast<MediaGalleriesDialogCocoa*>(
77 MediaGalleriesDialog::Create(&controller_)));
78 }
79 return dialog_.get();
61 } 80 }
62 81
63 private: 82 private:
64 scoped_refptr<extensions::Extension> dummy_extension_; 83 NiceMock<MediaGalleriesDialogControllerMock> controller_;
84
85 scoped_ptr<MediaGalleriesDialogCocoa> dialog_;
65 86
66 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogTest); 87 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogTest);
67 }; 88 };
68 89
69 // Tests that checkboxes are initialized according to the contents of 90 // Tests that checkboxes are initialized according to the contents of
70 // permissions(). 91 // permissions().
71 TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) { 92 TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) {
72 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); 93 MediaGalleriesDialogController::Entries attached_permissions;
73
74 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
75 attached_permissions.push_back( 94 attached_permissions.push_back(
76 MediaGalleriesDialogController::GalleryPermission( 95 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true));
77 1, MakePrefInfoForTesting(10), true));
78 attached_permissions.push_back( 96 attached_permissions.push_back(
79 MediaGalleriesDialogController::GalleryPermission( 97 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(2), false));
80 2, MakePrefInfoForTesting(20), false)); 98 EXPECT_CALL(*controller(), GetSectionEntries(0)).
81 EXPECT_CALL(controller, AttachedPermissions()).
82 WillRepeatedly(Return(attached_permissions)); 99 WillRepeatedly(Return(attached_permissions));
83 100
84 MediaGalleriesDialogController::GalleryPermissionsVector
85 unattached_permissions;
86 EXPECT_CALL(controller, UnattachedPermissions()).
87 WillRepeatedly(Return(unattached_permissions));
88
89 // Initializing checkboxes should not cause them to be toggled. 101 // Initializing checkboxes should not cause them to be toggled.
90 EXPECT_CALL(controller, DidToggleGallery(_, _)). 102 EXPECT_CALL(*controller(), DidToggleEntry(_, _)).
91 Times(0); 103 Times(0);
92 104
93 scoped_ptr<MediaGalleriesDialogCocoa> dialog( 105 EXPECT_EQ(2U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]);
94 static_cast<MediaGalleriesDialogCocoa*>(
95 MediaGalleriesDialog::Create(&controller)));
96 EXPECT_EQ(2U, [[dialog->checkbox_container_ subviews] count]);
97 106
98 NSButton* checkbox1 = 107 NSButton* checkbox1 =
99 [[dialog->checkbox_container_ subviews] objectAtIndex:0]; 108 [[GetOrCreateDialog()->checkbox_container_ subviews] objectAtIndex:0];
100 EXPECT_EQ([checkbox1 state], NSOnState); 109 EXPECT_EQ([checkbox1 state], NSOnState);
101 110
102 NSButton* checkbox2 = 111 NSButton* checkbox2 =
103 [[dialog->checkbox_container_ subviews] objectAtIndex:1]; 112 [[GetOrCreateDialog()->checkbox_container_ subviews] objectAtIndex:1];
104 EXPECT_EQ([checkbox2 state], NSOffState); 113 EXPECT_EQ([checkbox2 state], NSOffState);
105 } 114 }
106 115
107 // Tests that toggling checkboxes updates the controller. 116 // Tests that toggling checkboxes updates the controller.
108 TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) { 117 TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) {
109 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); 118 MediaGalleriesDialogController::Entries attached_permissions;
110
111 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
112 attached_permissions.push_back( 119 attached_permissions.push_back(
113 MediaGalleriesDialogController::GalleryPermission( 120 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true));
114 1, MakePrefInfoForTesting(10), true)); 121 EXPECT_CALL(*controller(), GetSectionEntries(0)).
115 EXPECT_CALL(controller, AttachedPermissions()).
116 WillRepeatedly(Return(attached_permissions)); 122 WillRepeatedly(Return(attached_permissions));
117 123
118 MediaGalleriesDialogController::GalleryPermissionsVector 124 EXPECT_EQ(1U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]);
119 unattached_permissions;
120 EXPECT_CALL(controller, UnattachedPermissions()).
121 WillRepeatedly(Return(unattached_permissions));
122 125
123 scoped_ptr<MediaGalleriesDialogCocoa> dialog( 126 NSButton* checkbox =
124 static_cast<MediaGalleriesDialogCocoa*>( 127 [[GetOrCreateDialog()->checkbox_container_ subviews] objectAtIndex:0];
125 MediaGalleriesDialog::Create(&controller)));
126 EXPECT_EQ(1U, [[dialog->checkbox_container_ subviews] count]);
127
128 NSButton* checkbox = [[dialog->checkbox_container_ subviews] objectAtIndex:0];
129 EXPECT_EQ([checkbox state], NSOnState); 128 EXPECT_EQ([checkbox state], NSOnState);
130 129
131 EXPECT_CALL(controller, DidToggleGallery(1, false)); 130 EXPECT_CALL(*controller(), DidToggleEntry(1, false));
132 [checkbox performClick:nil]; 131 [checkbox performClick:nil];
133 EXPECT_EQ([checkbox state], NSOffState); 132 EXPECT_EQ([checkbox state], NSOffState);
134 133
135 EXPECT_CALL(controller, DidToggleGallery(1, true)); 134 EXPECT_CALL(*controller(), DidToggleEntry(1, true));
136 [checkbox performClick:nil]; 135 [checkbox performClick:nil];
137 EXPECT_EQ([checkbox state], NSOnState); 136 EXPECT_EQ([checkbox state], NSOnState);
138 } 137 }
139 138
140 // Tests that UpdateGalleries will add a new checkbox, but only if it refers to 139 // Tests that UpdateGalleries will add a new checkbox, but only if it refers to
141 // a gallery that the dialog hasn't seen before. 140 // a gallery that the dialog hasn't seen before.
142 TEST_F(MediaGalleriesDialogTest, UpdateAdds) { 141 TEST_F(MediaGalleriesDialogTest, UpdateAdds) {
143 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); 142 MediaGalleriesDialogController::Entries attached_permissions;
144 143 EXPECT_CALL(*controller(), GetSectionEntries(0)).
145 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
146 EXPECT_CALL(controller, AttachedPermissions()).
147 WillRepeatedly(ReturnPointee(&attached_permissions)); 144 WillRepeatedly(ReturnPointee(&attached_permissions));
148 145
149 MediaGalleriesDialogController::GalleryPermissionsVector 146 EXPECT_EQ(0U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]);
150 unattached_permissions; 147 CGFloat old_container_height =
151 EXPECT_CALL(controller, UnattachedPermissions()). 148 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]);
152 WillRepeatedly(Return(unattached_permissions));
153
154 scoped_ptr<MediaGalleriesDialogCocoa> dialog(
155 static_cast<MediaGalleriesDialogCocoa*>(
156 MediaGalleriesDialog::Create(&controller)));
157
158 EXPECT_EQ(0U, [[dialog->checkbox_container_ subviews] count]);
159 CGFloat old_container_height = NSHeight([dialog->checkbox_container_ frame]);
160 149
161 attached_permissions.push_back( 150 attached_permissions.push_back(
162 MediaGalleriesDialogController::GalleryPermission( 151 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true));
163 1, MakePrefInfoForTesting(10), true)); 152 GetOrCreateDialog()->UpdateGalleries();
164 dialog->UpdateGalleries(); 153 EXPECT_EQ(1U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]);
165 EXPECT_EQ(1U, [[dialog->checkbox_container_ subviews] count]);
166 154
167 // The checkbox container should be taller. 155 // The checkbox container should be taller.
168 CGFloat new_container_height = NSHeight([dialog->checkbox_container_ frame]); 156 CGFloat new_container_height =
157 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]);
169 EXPECT_GT(new_container_height, old_container_height); 158 EXPECT_GT(new_container_height, old_container_height);
170 old_container_height = new_container_height; 159 old_container_height = new_container_height;
171 160
172 attached_permissions.push_back( 161 attached_permissions.push_back(
173 MediaGalleriesDialogController::GalleryPermission( 162 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(2), true));
174 2, MakePrefInfoForTesting(20), true)); 163 GetOrCreateDialog()->UpdateGalleries();
175 dialog->UpdateGalleries(); 164 EXPECT_EQ(2U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]);
176 EXPECT_EQ(2U, [[dialog->checkbox_container_ subviews] count]);
177 165
178 // The checkbox container should be taller. 166 // The checkbox container should be taller.
179 new_container_height = NSHeight([dialog->checkbox_container_ frame]); 167 new_container_height =
168 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]);
180 EXPECT_GT(new_container_height, old_container_height); 169 EXPECT_GT(new_container_height, old_container_height);
181 old_container_height = new_container_height; 170 old_container_height = new_container_height;
182 171
183 attached_permissions[1].allowed = false; 172 attached_permissions[1].selected = false;
184 dialog->UpdateGalleries(); 173 GetOrCreateDialog()->UpdateGalleries();
185 EXPECT_EQ(2U, [[dialog->checkbox_container_ subviews] count]); 174 EXPECT_EQ(2U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]);
186 175
187 // The checkbox container height should not have changed. 176 // The checkbox container height should not have changed.
188 new_container_height = NSHeight([dialog->checkbox_container_ frame]); 177 new_container_height =
178 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]);
189 EXPECT_EQ(new_container_height, old_container_height); 179 EXPECT_EQ(new_container_height, old_container_height);
190 } 180 }
191 181
192 TEST_F(MediaGalleriesDialogTest, ForgetDeletes) { 182 TEST_F(MediaGalleriesDialogTest, ForgetDeletes) {
193 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); 183 MediaGalleriesDialogController::Entries attached_permissions;
194 184 EXPECT_CALL(*controller(), GetSectionEntries(0)).
195 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
196 EXPECT_CALL(controller, AttachedPermissions()).
197 WillRepeatedly(ReturnPointee(&attached_permissions)); 185 WillRepeatedly(ReturnPointee(&attached_permissions));
198 186
199 MediaGalleriesDialogController::GalleryPermissionsVector 187 GetOrCreateDialog();
200 unattached_permissions;
201 EXPECT_CALL(controller, UnattachedPermissions()).
202 WillRepeatedly(Return(unattached_permissions));
203
204 scoped_ptr<MediaGalleriesDialogCocoa> dialog(
205 static_cast<MediaGalleriesDialogCocoa*>(
206 MediaGalleriesDialog::Create(&controller)));
207 188
208 // Add a couple of galleries. 189 // Add a couple of galleries.
209 attached_permissions.push_back( 190 attached_permissions.push_back(
210 MediaGalleriesDialogController::GalleryPermission( 191 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true));
211 1, MakePrefInfoForTesting(10), true)); 192 GetOrCreateDialog()->UpdateGalleries();
212 dialog->UpdateGalleries();
213 attached_permissions.push_back( 193 attached_permissions.push_back(
214 MediaGalleriesDialogController::GalleryPermission( 194 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(2), true));
215 2, MakePrefInfoForTesting(20), true)); 195 GetOrCreateDialog()->UpdateGalleries();
216 dialog->UpdateGalleries(); 196 EXPECT_EQ(2U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]);
217 EXPECT_EQ(2U, [[dialog->checkbox_container_ subviews] count]); 197 CGFloat old_container_height =
218 CGFloat old_container_height = NSHeight([dialog->checkbox_container_ frame]); 198 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]);
219 199
220 // Remove a gallery. 200 // Remove a gallery.
221 attached_permissions.erase(attached_permissions.begin()); 201 attached_permissions.erase(attached_permissions.begin());
222 dialog->UpdateGalleries(); 202 GetOrCreateDialog()->UpdateGalleries();
223 EXPECT_EQ(1U, [[dialog->checkbox_container_ subviews] count]); 203 EXPECT_EQ(1U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]);
224 204
225 // The checkbox container should be shorter. 205 // The checkbox container should be shorter.
226 CGFloat new_container_height = NSHeight([dialog->checkbox_container_ frame]); 206 CGFloat new_container_height =
207 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]);
227 EXPECT_LT(new_container_height, old_container_height); 208 EXPECT_LT(new_container_height, old_container_height);
228 } 209 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698