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

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

Powered by Google App Engine
This is Rietveld 408576698