| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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/cocoa/extensions/media_galleries_dialog_cocoa.h" | 8 #include "chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h" |
| 9 #include "components/storage_monitor/storage_info.h" | 9 #include "components/storage_monitor/storage_info.h" |
| 10 #include "extensions/common/extension.h" | 10 #include "extensions/common/extension.h" |
| 11 #include "extensions/common/test_util.h" | 11 #include "extensions/common/test_util.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 13 |
| 14 using ::testing::_; | 14 using ::testing::_; |
| 15 using ::testing::AnyNumber; |
| 16 using ::testing::Mock; |
| 15 using ::testing::NiceMock; | 17 using ::testing::NiceMock; |
| 16 using ::testing::Return; | 18 using ::testing::Return; |
| 17 using ::testing::ReturnPointee; | 19 using ::testing::ReturnPointee; |
| 18 using ::testing::ReturnRef; | 20 using ::testing::ReturnRef; |
| 19 | 21 |
| 20 @interface MediaGalleryListEntry (testing) | 22 @interface MediaGalleryListEntry (testing) |
| 21 - (NSInteger)state; | 23 - (NSInteger)state; |
| 22 - (void)performClick:(id)sender; | 24 - (void)performClick:(id)sender; |
| 23 @end | 25 @end |
| 24 | 26 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 42 storage_monitor::StorageInfo::FIXED_MASS_STORAGE, | 44 storage_monitor::StorageInfo::FIXED_MASS_STORAGE, |
| 43 base::Int64ToString(pref_id)); | 45 base::Int64ToString(pref_id)); |
| 44 gallery.display_name = base::ASCIIToUTF16("name"); | 46 gallery.display_name = base::ASCIIToUTF16("name"); |
| 45 return gallery; | 47 return gallery; |
| 46 } | 48 } |
| 47 | 49 |
| 48 class MediaGalleriesDialogTest : public testing::Test { | 50 class MediaGalleriesDialogTest : public testing::Test { |
| 49 public: | 51 public: |
| 50 MediaGalleriesDialogTest() {} | 52 MediaGalleriesDialogTest() {} |
| 51 virtual ~MediaGalleriesDialogTest() {} | 53 virtual ~MediaGalleriesDialogTest() {} |
| 54 |
| 52 virtual void SetUp() OVERRIDE { | 55 virtual void SetUp() OVERRIDE { |
| 53 dummy_extension_ = extensions::test_util::CreateExtensionWithID("dummy"); | 56 std::vector<base::string16> headers; |
| 54 } | 57 headers.push_back(base::string16()); |
| 55 virtual void TearDown() OVERRIDE { | 58 headers.push_back(base::ASCIIToUTF16("header2")); |
| 56 dummy_extension_ = NULL; | 59 ON_CALL(controller_, GetSectionHeaders()). |
| 60 WillByDefault(Return(headers)); |
| 61 EXPECT_CALL(controller_, GetSectionEntries(_)). |
| 62 Times(AnyNumber()); |
| 57 } | 63 } |
| 58 | 64 |
| 59 const extensions::Extension& dummy_extension() const { | 65 virtual void TearDown() OVERRIDE { |
| 60 return *dummy_extension_; | 66 Mock::VerifyAndClearExpectations(&controller_); |
| 67 dialog_.reset(); |
| 68 } |
| 69 |
| 70 NiceMock<MediaGalleriesDialogControllerMock>* controller() { |
| 71 return &controller_; |
| 72 } |
| 73 |
| 74 MediaGalleriesDialogCocoa* GetOrCreateDialog() { |
| 75 if (!dialog_.get()) { |
| 76 dialog_.reset(static_cast<MediaGalleriesDialogCocoa*>( |
| 77 MediaGalleriesDialog::Create(&controller_))); |
| 78 } |
| 79 return dialog_.get(); |
| 61 } | 80 } |
| 62 | 81 |
| 63 private: | 82 private: |
| 64 scoped_refptr<extensions::Extension> dummy_extension_; | 83 NiceMock<MediaGalleriesDialogControllerMock> controller_; |
| 84 |
| 85 scoped_ptr<MediaGalleriesDialogCocoa> dialog_; |
| 65 | 86 |
| 66 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogTest); | 87 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogTest); |
| 67 }; | 88 }; |
| 68 | 89 |
| 69 // Tests that checkboxes are initialized according to the contents of | 90 // Tests that checkboxes are initialized according to the contents of |
| 70 // permissions(). | 91 // permissions(). |
| 71 TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) { | 92 TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) { |
| 72 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); | 93 MediaGalleriesDialogController::Entries attached_permissions; |
| 73 | |
| 74 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; | |
| 75 attached_permissions.push_back( | 94 attached_permissions.push_back( |
| 76 MediaGalleriesDialogController::GalleryPermission( | 95 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true)); |
| 77 1, MakePrefInfoForTesting(10), true)); | |
| 78 attached_permissions.push_back( | 96 attached_permissions.push_back( |
| 79 MediaGalleriesDialogController::GalleryPermission( | 97 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(2), false)); |
| 80 2, MakePrefInfoForTesting(20), false)); | 98 EXPECT_CALL(*controller(), GetSectionEntries(0)). |
| 81 EXPECT_CALL(controller, AttachedPermissions()). | |
| 82 WillRepeatedly(Return(attached_permissions)); | 99 WillRepeatedly(Return(attached_permissions)); |
| 83 | 100 |
| 84 MediaGalleriesDialogController::GalleryPermissionsVector | |
| 85 unattached_permissions; | |
| 86 EXPECT_CALL(controller, UnattachedPermissions()). | |
| 87 WillRepeatedly(Return(unattached_permissions)); | |
| 88 | |
| 89 // Initializing checkboxes should not cause them to be toggled. | 101 // Initializing checkboxes should not cause them to be toggled. |
| 90 EXPECT_CALL(controller, DidToggleGallery(_, _)). | 102 EXPECT_CALL(*controller(), DidToggleEntry(_, _)). |
| 91 Times(0); | 103 Times(0); |
| 92 | 104 |
| 93 scoped_ptr<MediaGalleriesDialogCocoa> dialog( | 105 EXPECT_EQ(2U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]); |
| 94 static_cast<MediaGalleriesDialogCocoa*>( | |
| 95 MediaGalleriesDialog::Create(&controller))); | |
| 96 EXPECT_EQ(2U, [[dialog->checkbox_container_ subviews] count]); | |
| 97 | 106 |
| 98 NSButton* checkbox1 = | 107 NSButton* checkbox1 = |
| 99 [[dialog->checkbox_container_ subviews] objectAtIndex:0]; | 108 [[GetOrCreateDialog()->checkbox_container_ subviews] objectAtIndex:0]; |
| 100 EXPECT_EQ([checkbox1 state], NSOnState); | 109 EXPECT_EQ([checkbox1 state], NSOnState); |
| 101 | 110 |
| 102 NSButton* checkbox2 = | 111 NSButton* checkbox2 = |
| 103 [[dialog->checkbox_container_ subviews] objectAtIndex:1]; | 112 [[GetOrCreateDialog()->checkbox_container_ subviews] objectAtIndex:1]; |
| 104 EXPECT_EQ([checkbox2 state], NSOffState); | 113 EXPECT_EQ([checkbox2 state], NSOffState); |
| 105 } | 114 } |
| 106 | 115 |
| 107 // Tests that toggling checkboxes updates the controller. | 116 // Tests that toggling checkboxes updates the controller. |
| 108 TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) { | 117 TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) { |
| 109 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); | 118 MediaGalleriesDialogController::Entries attached_permissions; |
| 110 | |
| 111 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; | |
| 112 attached_permissions.push_back( | 119 attached_permissions.push_back( |
| 113 MediaGalleriesDialogController::GalleryPermission( | 120 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true)); |
| 114 1, MakePrefInfoForTesting(10), true)); | 121 EXPECT_CALL(*controller(), GetSectionEntries(0)). |
| 115 EXPECT_CALL(controller, AttachedPermissions()). | |
| 116 WillRepeatedly(Return(attached_permissions)); | 122 WillRepeatedly(Return(attached_permissions)); |
| 117 | 123 |
| 118 MediaGalleriesDialogController::GalleryPermissionsVector | 124 EXPECT_EQ(1U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]); |
| 119 unattached_permissions; | |
| 120 EXPECT_CALL(controller, UnattachedPermissions()). | |
| 121 WillRepeatedly(Return(unattached_permissions)); | |
| 122 | 125 |
| 123 scoped_ptr<MediaGalleriesDialogCocoa> dialog( | 126 NSButton* checkbox = |
| 124 static_cast<MediaGalleriesDialogCocoa*>( | 127 [[GetOrCreateDialog()->checkbox_container_ subviews] objectAtIndex:0]; |
| 125 MediaGalleriesDialog::Create(&controller))); | |
| 126 EXPECT_EQ(1U, [[dialog->checkbox_container_ subviews] count]); | |
| 127 | |
| 128 NSButton* checkbox = [[dialog->checkbox_container_ subviews] objectAtIndex:0]; | |
| 129 EXPECT_EQ([checkbox state], NSOnState); | 128 EXPECT_EQ([checkbox state], NSOnState); |
| 130 | 129 |
| 131 EXPECT_CALL(controller, DidToggleGallery(1, false)); | 130 EXPECT_CALL(*controller(), DidToggleEntry(1, false)); |
| 132 [checkbox performClick:nil]; | 131 [checkbox performClick:nil]; |
| 133 EXPECT_EQ([checkbox state], NSOffState); | 132 EXPECT_EQ([checkbox state], NSOffState); |
| 134 | 133 |
| 135 EXPECT_CALL(controller, DidToggleGallery(1, true)); | 134 EXPECT_CALL(*controller(), DidToggleEntry(1, true)); |
| 136 [checkbox performClick:nil]; | 135 [checkbox performClick:nil]; |
| 137 EXPECT_EQ([checkbox state], NSOnState); | 136 EXPECT_EQ([checkbox state], NSOnState); |
| 138 } | 137 } |
| 139 | 138 |
| 140 // Tests that UpdateGalleries will add a new checkbox, but only if it refers to | 139 // Tests that UpdateGalleries will add a new checkbox, but only if it refers to |
| 141 // a gallery that the dialog hasn't seen before. | 140 // a gallery that the dialog hasn't seen before. |
| 142 TEST_F(MediaGalleriesDialogTest, UpdateAdds) { | 141 TEST_F(MediaGalleriesDialogTest, UpdateAdds) { |
| 143 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); | 142 MediaGalleriesDialogController::Entries attached_permissions; |
| 144 | 143 EXPECT_CALL(*controller(), GetSectionEntries(0)). |
| 145 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; | |
| 146 EXPECT_CALL(controller, AttachedPermissions()). | |
| 147 WillRepeatedly(ReturnPointee(&attached_permissions)); | 144 WillRepeatedly(ReturnPointee(&attached_permissions)); |
| 148 | 145 |
| 149 MediaGalleriesDialogController::GalleryPermissionsVector | 146 EXPECT_EQ(0U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]); |
| 150 unattached_permissions; | 147 CGFloat old_container_height = |
| 151 EXPECT_CALL(controller, UnattachedPermissions()). | 148 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]); |
| 152 WillRepeatedly(Return(unattached_permissions)); | |
| 153 | |
| 154 scoped_ptr<MediaGalleriesDialogCocoa> dialog( | |
| 155 static_cast<MediaGalleriesDialogCocoa*>( | |
| 156 MediaGalleriesDialog::Create(&controller))); | |
| 157 | |
| 158 EXPECT_EQ(0U, [[dialog->checkbox_container_ subviews] count]); | |
| 159 CGFloat old_container_height = NSHeight([dialog->checkbox_container_ frame]); | |
| 160 | 149 |
| 161 attached_permissions.push_back( | 150 attached_permissions.push_back( |
| 162 MediaGalleriesDialogController::GalleryPermission( | 151 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true)); |
| 163 1, MakePrefInfoForTesting(10), true)); | 152 GetOrCreateDialog()->UpdateGalleries(); |
| 164 dialog->UpdateGalleries(); | 153 EXPECT_EQ(1U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]); |
| 165 EXPECT_EQ(1U, [[dialog->checkbox_container_ subviews] count]); | |
| 166 | 154 |
| 167 // The checkbox container should be taller. | 155 // The checkbox container should be taller. |
| 168 CGFloat new_container_height = NSHeight([dialog->checkbox_container_ frame]); | 156 CGFloat new_container_height = |
| 157 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]); |
| 169 EXPECT_GT(new_container_height, old_container_height); | 158 EXPECT_GT(new_container_height, old_container_height); |
| 170 old_container_height = new_container_height; | 159 old_container_height = new_container_height; |
| 171 | 160 |
| 172 attached_permissions.push_back( | 161 attached_permissions.push_back( |
| 173 MediaGalleriesDialogController::GalleryPermission( | 162 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(2), true)); |
| 174 2, MakePrefInfoForTesting(20), true)); | 163 GetOrCreateDialog()->UpdateGalleries(); |
| 175 dialog->UpdateGalleries(); | 164 EXPECT_EQ(2U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]); |
| 176 EXPECT_EQ(2U, [[dialog->checkbox_container_ subviews] count]); | |
| 177 | 165 |
| 178 // The checkbox container should be taller. | 166 // The checkbox container should be taller. |
| 179 new_container_height = NSHeight([dialog->checkbox_container_ frame]); | 167 new_container_height = |
| 168 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]); |
| 180 EXPECT_GT(new_container_height, old_container_height); | 169 EXPECT_GT(new_container_height, old_container_height); |
| 181 old_container_height = new_container_height; | 170 old_container_height = new_container_height; |
| 182 | 171 |
| 183 attached_permissions[1].allowed = false; | 172 attached_permissions[1].selected = false; |
| 184 dialog->UpdateGalleries(); | 173 GetOrCreateDialog()->UpdateGalleries(); |
| 185 EXPECT_EQ(2U, [[dialog->checkbox_container_ subviews] count]); | 174 EXPECT_EQ(2U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]); |
| 186 | 175 |
| 187 // The checkbox container height should not have changed. | 176 // The checkbox container height should not have changed. |
| 188 new_container_height = NSHeight([dialog->checkbox_container_ frame]); | 177 new_container_height = |
| 178 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]); |
| 189 EXPECT_EQ(new_container_height, old_container_height); | 179 EXPECT_EQ(new_container_height, old_container_height); |
| 190 } | 180 } |
| 191 | 181 |
| 192 TEST_F(MediaGalleriesDialogTest, ForgetDeletes) { | 182 TEST_F(MediaGalleriesDialogTest, ForgetDeletes) { |
| 193 NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension()); | 183 MediaGalleriesDialogController::Entries attached_permissions; |
| 194 | 184 EXPECT_CALL(*controller(), GetSectionEntries(0)). |
| 195 MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions; | |
| 196 EXPECT_CALL(controller, AttachedPermissions()). | |
| 197 WillRepeatedly(ReturnPointee(&attached_permissions)); | 185 WillRepeatedly(ReturnPointee(&attached_permissions)); |
| 198 | 186 |
| 199 MediaGalleriesDialogController::GalleryPermissionsVector | 187 GetOrCreateDialog(); |
| 200 unattached_permissions; | |
| 201 EXPECT_CALL(controller, UnattachedPermissions()). | |
| 202 WillRepeatedly(Return(unattached_permissions)); | |
| 203 | |
| 204 scoped_ptr<MediaGalleriesDialogCocoa> dialog( | |
| 205 static_cast<MediaGalleriesDialogCocoa*>( | |
| 206 MediaGalleriesDialog::Create(&controller))); | |
| 207 | 188 |
| 208 // Add a couple of galleries. | 189 // Add a couple of galleries. |
| 209 attached_permissions.push_back( | 190 attached_permissions.push_back( |
| 210 MediaGalleriesDialogController::GalleryPermission( | 191 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true)); |
| 211 1, MakePrefInfoForTesting(10), true)); | 192 GetOrCreateDialog()->UpdateGalleries(); |
| 212 dialog->UpdateGalleries(); | |
| 213 attached_permissions.push_back( | 193 attached_permissions.push_back( |
| 214 MediaGalleriesDialogController::GalleryPermission( | 194 MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(2), true)); |
| 215 2, MakePrefInfoForTesting(20), true)); | 195 GetOrCreateDialog()->UpdateGalleries(); |
| 216 dialog->UpdateGalleries(); | 196 EXPECT_EQ(2U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]); |
| 217 EXPECT_EQ(2U, [[dialog->checkbox_container_ subviews] count]); | 197 CGFloat old_container_height = |
| 218 CGFloat old_container_height = NSHeight([dialog->checkbox_container_ frame]); | 198 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]); |
| 219 | 199 |
| 220 // Remove a gallery. | 200 // Remove a gallery. |
| 221 attached_permissions.erase(attached_permissions.begin()); | 201 attached_permissions.erase(attached_permissions.begin()); |
| 222 dialog->UpdateGalleries(); | 202 GetOrCreateDialog()->UpdateGalleries(); |
| 223 EXPECT_EQ(1U, [[dialog->checkbox_container_ subviews] count]); | 203 EXPECT_EQ(1U, [[GetOrCreateDialog()->checkbox_container_ subviews] count]); |
| 224 | 204 |
| 225 // The checkbox container should be shorter. | 205 // The checkbox container should be shorter. |
| 226 CGFloat new_container_height = NSHeight([dialog->checkbox_container_ frame]); | 206 CGFloat new_container_height = |
| 207 NSHeight([GetOrCreateDialog()->checkbox_container_ frame]); |
| 227 EXPECT_LT(new_container_height, old_container_height); | 208 EXPECT_LT(new_container_height, old_container_height); |
| 228 } | 209 } |
| OLD | NEW |