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