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

Side by Side Diff: chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk_unittest.cc

Issue 231733005: Delete the GTK+ port of Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remerge to ToT Created 6 years, 8 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
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698