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

Side by Side Diff: chrome/browser/ui/views/extensions/media_galleries_dialog_views_unittest.cc

Issue 310383004: Make a controller interface for media galleries dialogs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/views/extensions/media_galleries_dialog_views.h" 8 #include "chrome/browser/ui/views/extensions/media_galleries_dialog_views.h"
9 #include "chrome/browser/ui/views/extensions/media_gallery_checkbox_view.h" 9 #include "chrome/browser/ui/views/extensions/media_gallery_checkbox_view.h"
10 #include "components/storage_monitor/storage_info.h" 10 #include "components/storage_monitor/storage_info.h"
11 #include "extensions/common/extension.h" 11 #include "extensions/common/extension.h"
Lei Zhang 2014/06/05 07:56:25 ditto, remove
vandebo (ex-Chrome) 2014/06/05 19:25:30 Done.
12 #include "extensions/common/test_util.h" 12 #include "extensions/common/test_util.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "ui/views/controls/button/checkbox.h" 14 #include "ui/views/controls/button/checkbox.h"
15 15
16 using ::testing::_; 16 using ::testing::_;
17 using ::testing::AnyNumber;
18 using ::testing::Mock;
17 using ::testing::NiceMock; 19 using ::testing::NiceMock;
18 using ::testing::Return; 20 using ::testing::Return;
19 using ::testing::ReturnPointee; 21 using ::testing::ReturnPointee;
20 22
21 namespace { 23 namespace {
22 24
23 MediaGalleryPrefInfo MakePrefInfoForTesting(MediaGalleryPrefId id) { 25 MediaGalleryPrefInfo MakePrefInfoForTesting(MediaGalleryPrefId id) {
24 MediaGalleryPrefInfo gallery; 26 MediaGalleryPrefInfo gallery;
25 gallery.pref_id = id; 27 gallery.pref_id = id;
26 gallery.device_id = storage_monitor::StorageInfo::MakeDeviceId( 28 gallery.device_id = storage_monitor::StorageInfo::MakeDeviceId(
27 storage_monitor::StorageInfo::FIXED_MASS_STORAGE, 29 storage_monitor::StorageInfo::FIXED_MASS_STORAGE,
28 base::Int64ToString(id)); 30 base::Int64ToString(id));
29 gallery.display_name = base::ASCIIToUTF16("Display Name"); 31 gallery.display_name = base::ASCIIToUTF16("Display Name");
30 return gallery; 32 return gallery;
31 } 33 }
32 34
33 } // namespace 35 } // namespace
34 36
35 class MediaGalleriesDialogTest : public testing::Test { 37 class MediaGalleriesDialogTest : public testing::Test {
36 public: 38 public:
37 MediaGalleriesDialogTest() {} 39 MediaGalleriesDialogTest() {}
38 virtual ~MediaGalleriesDialogTest() {} 40 virtual ~MediaGalleriesDialogTest() {}
39 virtual void SetUp() OVERRIDE { 41 virtual void SetUp() OVERRIDE {
40 dummy_extension_ = extensions::test_util::CreateExtensionWithID("dummy"); 42 std::vector<base::string16> headers;
41 } 43 headers.push_back(base::string16());
42 virtual void TearDown() OVERRIDE { 44 headers.push_back(base::ASCIIToUTF16("header2"));
43 dummy_extension_ = NULL; 45 ON_CALL(controller_, GetSectionHeaders()).
46 WillByDefault(Return(headers));
47 EXPECT_CALL(controller_, GetSectionEntries(_)).
48 Times(AnyNumber());
44 } 49 }
45 50
46 const extensions::Extension& dummy_extension() const { 51 virtual void TearDown() OVERRIDE {
47 return *dummy_extension_; 52 Mock::VerifyAndClearExpectations(&controller_);
53 }
54
55 NiceMock<MediaGalleriesDialogControllerMock>* controller() {
56 return &controller_;
48 } 57 }
49 58
50 private: 59 private:
51 scoped_refptr<extensions::Extension> dummy_extension_; 60 // TODO(gbillock): Get rid of this mock; make something specialized.
61 NiceMock<MediaGalleriesDialogControllerMock> controller_;
52 62
53 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogTest); 63 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogTest);
54 }; 64 };
55 65
56 // Tests that checkboxes are initialized according to the contents of 66 // Tests that checkboxes are initialized according to the contents of
57 // permissions in the registry. 67 // permissions in the registry.
58 TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) { 68 TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) {
59 // TODO(gbillock): Get rid of this mock; make something specialized. 69 MediaGalleriesDialogController::Entries attached_permissions;
60 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension());
61
62 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
63 attached_permissions.push_back( 70 attached_permissions.push_back(
64 MediaGalleriesDialogController::GalleryPermission( 71 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true));
65 1, MakePrefInfoForTesting(10), true));
66 attached_permissions.push_back( 72 attached_permissions.push_back(
67 MediaGalleriesDialogController::GalleryPermission( 73 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(2), false));
68 2, MakePrefInfoForTesting(20), false)); 74 EXPECT_CALL(*controller(), GetSectionEntries(0)).
69 EXPECT_CALL(controller, AttachedPermissions()).
70 WillRepeatedly(Return(attached_permissions)); 75 WillRepeatedly(Return(attached_permissions));
71 76
72 MediaGalleriesDialogController::GalleryPermissionsVector 77 MediaGalleriesDialogViews dialog(controller());
73 unattached_permissions;
74 EXPECT_CALL(controller, UnattachedPermissions()).
75 WillRepeatedly(Return(unattached_permissions));
76
77 MediaGalleriesDialogViews dialog(&controller);
78 EXPECT_EQ(2U, dialog.checkbox_map_.size()); 78 EXPECT_EQ(2U, dialog.checkbox_map_.size());
79 79
80 MediaGalleryCheckboxView* checkbox_view1 = dialog.checkbox_map_[1]; 80 MediaGalleryCheckboxView* checkbox_view1 = dialog.checkbox_map_[1];
81 EXPECT_TRUE(checkbox_view1->checkbox()->checked()); 81 EXPECT_TRUE(checkbox_view1->checkbox()->checked());
82 82
83 MediaGalleryCheckboxView* checkbox_view2 = dialog.checkbox_map_[2]; 83 MediaGalleryCheckboxView* checkbox_view2 = dialog.checkbox_map_[2];
84 EXPECT_FALSE(checkbox_view2->checkbox()->checked()); 84 EXPECT_FALSE(checkbox_view2->checkbox()->checked());
85 } 85 }
86 86
87 // Tests that toggling checkboxes updates the controller. 87 // Tests that toggling checkboxes updates the controller.
88 TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) { 88 TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) {
89 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); 89 MediaGalleriesDialogController::Entries attached_permissions;
90
91 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
92 attached_permissions.push_back( 90 attached_permissions.push_back(
93 MediaGalleriesDialogController::GalleryPermission( 91 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true));
94 1, MakePrefInfoForTesting(10), true)); 92 EXPECT_CALL(*controller(), GetSectionEntries(0)).
95 EXPECT_CALL(controller, AttachedPermissions()).
96 WillRepeatedly(Return(attached_permissions)); 93 WillRepeatedly(Return(attached_permissions));
97 94
98 MediaGalleriesDialogController::GalleryPermissionsVector 95 MediaGalleriesDialogViews dialog(controller());
99 unattached_permissions;
100 EXPECT_CALL(controller, UnattachedPermissions()).
101 WillRepeatedly(Return(unattached_permissions));
102
103 MediaGalleriesDialogViews dialog(&controller);
104 EXPECT_EQ(1U, dialog.checkbox_map_.size()); 96 EXPECT_EQ(1U, dialog.checkbox_map_.size());
105 views::Checkbox* checkbox = dialog.checkbox_map_[1]->checkbox(); 97 views::Checkbox* checkbox = dialog.checkbox_map_[1]->checkbox();
106 EXPECT_TRUE(checkbox->checked()); 98 EXPECT_TRUE(checkbox->checked());
107 99
108 ui::KeyEvent dummy_event(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE, false); 100 ui::KeyEvent dummy_event(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE, false);
109 EXPECT_CALL(controller, DidToggleGallery(1, false)); 101 EXPECT_CALL(*controller(), DidToggleEntry(1, false));
110 checkbox->SetChecked(false); 102 checkbox->SetChecked(false);
111 dialog.ButtonPressed(checkbox, dummy_event); 103 dialog.ButtonPressed(checkbox, dummy_event);
112 104
113 EXPECT_CALL(controller, DidToggleGallery(1, true)); 105 EXPECT_CALL(*controller(), DidToggleEntry(1, true));
114 checkbox->SetChecked(true); 106 checkbox->SetChecked(true);
115 dialog.ButtonPressed(checkbox, dummy_event); 107 dialog.ButtonPressed(checkbox, dummy_event);
116 } 108 }
117 109
118 // Tests that UpdateGallery will add a new checkbox, but only if it refers to 110 // Tests that UpdateGallery will add a new checkbox, but only if it refers to
119 // a gallery that the dialog hasn't seen before. 111 // a gallery that the dialog hasn't seen before.
120 TEST_F(MediaGalleriesDialogTest, UpdateAdds) { 112 TEST_F(MediaGalleriesDialogTest, UpdateAdds) {
121 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); 113 MediaGalleriesDialogViews dialog(controller());
122 114
123 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; 115 MediaGalleriesDialogController::Entries attached_permissions;
124 EXPECT_CALL(controller, AttachedPermissions()). 116 EXPECT_CALL(*controller(), GetSectionEntries(0)).
125 WillRepeatedly(ReturnPointee(&attached_permissions)); 117 WillRepeatedly(ReturnPointee(&attached_permissions));
126 118
127 MediaGalleriesDialogController::GalleryPermissionsVector
128 unattached_permissions;
129 EXPECT_CALL(controller, UnattachedPermissions()).
130 WillRepeatedly(Return(unattached_permissions));
131
132 MediaGalleriesDialogViews dialog(&controller);
133
134 EXPECT_TRUE(dialog.checkbox_map_.empty()); 119 EXPECT_TRUE(dialog.checkbox_map_.empty());
135 120
136 MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(10); 121 MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(1);
137 attached_permissions.push_back( 122 attached_permissions.push_back(
138 MediaGalleriesDialogController::GalleryPermission(1, gallery1, true)); 123 MediaGalleriesDialogController::Entry(gallery1, true));
139 dialog.UpdateGalleries(); 124 dialog.UpdateGalleries();
140 EXPECT_EQ(1U, dialog.checkbox_map_.size()); 125 EXPECT_EQ(1U, dialog.checkbox_map_.size());
141 126
142 MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(20); 127 MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(2);
143 attached_permissions.push_back( 128 attached_permissions.push_back(
144 MediaGalleriesDialogController::GalleryPermission(2, gallery2, true)); 129 MediaGalleriesDialogController::Entry(gallery2, true));
145 dialog.UpdateGalleries(); 130 dialog.UpdateGalleries();
146 EXPECT_EQ(2U, dialog.checkbox_map_.size()); 131 EXPECT_EQ(2U, dialog.checkbox_map_.size());
147 132
148 attached_permissions.push_back( 133 attached_permissions.push_back(
149 MediaGalleriesDialogController::GalleryPermission(2, gallery2, false)); 134 MediaGalleriesDialogController::Entry(gallery2, false));
150 dialog.UpdateGalleries(); 135 dialog.UpdateGalleries();
151 EXPECT_EQ(2U, dialog.checkbox_map_.size()); 136 EXPECT_EQ(2U, dialog.checkbox_map_.size());
152 } 137 }
153 138
154 TEST_F(MediaGalleriesDialogTest, ForgetDeletes) { 139 TEST_F(MediaGalleriesDialogTest, ForgetDeletes) {
155 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); 140 MediaGalleriesDialogViews dialog(controller());
156 141
157 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; 142 MediaGalleriesDialogController::Entries attached_permissions;
158 EXPECT_CALL(controller, AttachedPermissions()). 143 EXPECT_CALL(*controller(), GetSectionEntries(0)).
159 WillRepeatedly(ReturnPointee(&attached_permissions)); 144 WillRepeatedly(ReturnPointee(&attached_permissions));
160 145
161 MediaGalleriesDialogController::GalleryPermissionsVector
162 unattached_permissions;
163 EXPECT_CALL(controller, UnattachedPermissions()).
164 WillRepeatedly(Return(unattached_permissions));
165
166 MediaGalleriesDialogViews dialog(&controller);
167
168 EXPECT_TRUE(dialog.checkbox_map_.empty()); 146 EXPECT_TRUE(dialog.checkbox_map_.empty());
169 147
170 MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(10); 148 MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(1);
171 attached_permissions.push_back( 149 attached_permissions.push_back(
172 MediaGalleriesDialogController::GalleryPermission(1, gallery1, true)); 150 MediaGalleriesDialogController::Entry(gallery1, true));
173 dialog.UpdateGalleries(); 151 dialog.UpdateGalleries();
174 EXPECT_EQ(1U, dialog.checkbox_map_.size()); 152 EXPECT_EQ(1U, dialog.checkbox_map_.size());
175 153
176 MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(20); 154 MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(2);
177 attached_permissions.push_back( 155 attached_permissions.push_back(
178 MediaGalleriesDialogController::GalleryPermission(2, gallery2, true)); 156 MediaGalleriesDialogController::Entry(gallery2, true));
179 dialog.UpdateGalleries(); 157 dialog.UpdateGalleries();
180 EXPECT_EQ(2U, dialog.checkbox_map_.size()); 158 EXPECT_EQ(2U, dialog.checkbox_map_.size());
181 159
182 attached_permissions.pop_back(); 160 attached_permissions.pop_back();
183 dialog.UpdateGalleries(); 161 dialog.UpdateGalleries();
184 EXPECT_EQ(1U, dialog.checkbox_map_.size()); 162 EXPECT_EQ(1U, dialog.checkbox_map_.size());
185 } 163 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698