OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/strings/string_number_conversions.h" | |
6 #include "base/strings/utf_string_conversions.h" | |
7 #include "chrome/browser/media_galleries/media_galleries_dialog_controller_mock.
h" | |
8 #include "chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk.h" | |
9 #include "components/storage_monitor/storage_info.h" | |
10 #include "extensions/common/extension.h" | |
11 #include "extensions/common/test_util.h" | |
12 #include "testing/gtest/include/gtest/gtest.h" | |
13 | |
14 using ::testing::_; | |
15 using ::testing::NiceMock; | |
16 using ::testing::Return; | |
17 using ::testing::ReturnPointee; | |
18 using ::testing::ReturnRef; | |
19 | |
20 namespace { | |
21 | |
22 MediaGalleryPrefInfo MakePrefInfoForTesting(MediaGalleryPrefId id) { | |
23 MediaGalleryPrefInfo gallery; | |
24 gallery.pref_id = id; | |
25 gallery.device_id = storage_monitor::StorageInfo::MakeDeviceId( | |
26 storage_monitor::StorageInfo::FIXED_MASS_STORAGE, | |
27 base::Int64ToString(id)); | |
28 gallery.display_name = base::ASCIIToUTF16("Display Name"); | |
29 return gallery; | |
30 } | |
31 | |
32 } // namespace | |
33 | |
34 class MediaGalleriesDialogTest : public testing::Test { | |
35 public: | |
36 MediaGalleriesDialogTest() {} | |
37 virtual ~MediaGalleriesDialogTest() {} | |
38 virtual void SetUp() OVERRIDE { | |
39 dummy_extension_ = extensions::test_util::CreateExtensionWithID("dummy"); | |
40 } | |
41 virtual void TearDown() OVERRIDE { | |
42 dummy_extension_ = NULL; | |
43 } | |
44 | |
45 const extensions::Extension& dummy_extension() const { | |
46 return *dummy_extension_; | |
47 } | |
48 | |
49 private: | |
50 scoped_refptr<extensions::Extension> dummy_extension_; | |
51 | |
52 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogTest); | |
53 }; | |
54 | |
55 // Tests that checkboxes are initialized according to the contents of | |
56 // permissions in the registry. | |
57 TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) { | |
58 // TODO(gbillock): Get rid of this mock; make something specialized. | |
59 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); | |
60 | |
61 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; | |
62 attached_permissions.push_back( | |
63 MediaGalleriesDialogController::GalleryPermission( | |
64 MakePrefInfoForTesting(1), true)); | |
65 attached_permissions.push_back( | |
66 MediaGalleriesDialogController::GalleryPermission( | |
67 MakePrefInfoForTesting(2), false)); | |
68 EXPECT_CALL(controller, AttachedPermissions()). | |
69 WillRepeatedly(Return(attached_permissions)); | |
70 | |
71 MediaGalleriesDialogController::GalleryPermissionsVector | |
72 unattached_permissions; | |
73 EXPECT_CALL(controller, UnattachedPermissions()). | |
74 WillRepeatedly(Return(unattached_permissions)); | |
75 | |
76 MediaGalleriesDialogGtk dialog(&controller); | |
77 EXPECT_EQ(2U, dialog.checkbox_map_.size()); | |
78 | |
79 GtkWidget* checkbox1 = dialog.checkbox_map_[1]; | |
80 ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox1)); | |
81 EXPECT_TRUE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox1))); | |
82 | |
83 GtkWidget* checkbox2 = dialog.checkbox_map_[2]; | |
84 ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox2)); | |
85 EXPECT_FALSE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox2))); | |
86 } | |
87 | |
88 // Tests that toggling checkboxes updates the controller. | |
89 TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) { | |
90 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); | |
91 | |
92 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; | |
93 attached_permissions.push_back( | |
94 MediaGalleriesDialogController::GalleryPermission( | |
95 MakePrefInfoForTesting(1), true)); | |
96 EXPECT_CALL(controller, AttachedPermissions()). | |
97 WillRepeatedly(Return(attached_permissions)); | |
98 | |
99 MediaGalleriesDialogController::GalleryPermissionsVector | |
100 unattached_permissions; | |
101 EXPECT_CALL(controller, UnattachedPermissions()). | |
102 WillRepeatedly(Return(unattached_permissions)); | |
103 | |
104 MediaGalleriesDialogGtk dialog(&controller); | |
105 EXPECT_EQ(1U, dialog.checkbox_map_.size()); | |
106 GtkWidget* checkbox = | |
107 dialog.checkbox_map_[1]; | |
108 ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox)); | |
109 EXPECT_TRUE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox))); | |
110 | |
111 EXPECT_CALL(controller, DidToggleGalleryId(1, false)); | |
112 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), FALSE); | |
113 | |
114 EXPECT_CALL(controller, DidToggleGalleryId(1, true)); | |
115 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), TRUE); | |
116 } | |
117 | |
118 // Tests that UpdateGallery will add a new checkbox, but only if it refers to | |
119 // a gallery that the dialog hasn't seen before. | |
120 TEST_F(MediaGalleriesDialogTest, UpdateAdds) { | |
121 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); | |
122 | |
123 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; | |
124 EXPECT_CALL(controller, AttachedPermissions()). | |
125 WillRepeatedly(ReturnPointee(&attached_permissions)); | |
126 | |
127 MediaGalleriesDialogController::GalleryPermissionsVector | |
128 unattached_permissions; | |
129 EXPECT_CALL(controller, UnattachedPermissions()). | |
130 WillRepeatedly(Return(unattached_permissions)); | |
131 | |
132 MediaGalleriesDialogGtk dialog(&controller); | |
133 | |
134 EXPECT_TRUE(dialog.checkbox_map_.empty()); | |
135 | |
136 MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(1); | |
137 attached_permissions.push_back( | |
138 MediaGalleriesDialogController::GalleryPermission(gallery1, true)); | |
139 dialog.UpdateGalleries(); | |
140 EXPECT_EQ(1U, dialog.checkbox_map_.size()); | |
141 | |
142 MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(2); | |
143 attached_permissions.push_back( | |
144 MediaGalleriesDialogController::GalleryPermission(gallery2, true)); | |
145 dialog.UpdateGalleries(); | |
146 EXPECT_EQ(2U, dialog.checkbox_map_.size()); | |
147 | |
148 attached_permissions.push_back( | |
149 MediaGalleriesDialogController::GalleryPermission(gallery2, false)); | |
150 dialog.UpdateGalleries(); | |
151 EXPECT_EQ(2U, dialog.checkbox_map_.size()); | |
152 } | |
153 | |
154 TEST_F(MediaGalleriesDialogTest, ForgetDeletes) { | |
155 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); | |
156 | |
157 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; | |
158 EXPECT_CALL(controller, AttachedPermissions()). | |
159 WillRepeatedly(ReturnPointee(&attached_permissions)); | |
160 | |
161 MediaGalleriesDialogController::GalleryPermissionsVector | |
162 unattached_permissions; | |
163 EXPECT_CALL(controller, UnattachedPermissions()). | |
164 WillRepeatedly(Return(unattached_permissions)); | |
165 | |
166 MediaGalleriesDialogGtk dialog(&controller); | |
167 | |
168 EXPECT_TRUE(dialog.checkbox_map_.empty()); | |
169 | |
170 MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(1); | |
171 attached_permissions.push_back( | |
172 MediaGalleriesDialogController::GalleryPermission(gallery1, true)); | |
173 dialog.UpdateGalleries(); | |
174 EXPECT_EQ(1U, dialog.checkbox_map_.size()); | |
175 | |
176 MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(2); | |
177 attached_permissions.push_back( | |
178 MediaGalleriesDialogController::GalleryPermission(gallery2, true)); | |
179 dialog.UpdateGalleries(); | |
180 EXPECT_EQ(2U, dialog.checkbox_map_.size()); | |
181 | |
182 attached_permissions.pop_back(); | |
183 dialog.UpdateGalleries(); | |
184 EXPECT_EQ(1U, dialog.checkbox_map_.size()); | |
185 } | |
OLD | NEW |