| 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 |