Index: chrome/browser/media_galleries/media_galleries_scan_result_dialog_controller_unittest.cc |
diff --git a/chrome/browser/media_galleries/media_galleries_scan_result_dialog_controller_unittest.cc b/chrome/browser/media_galleries/media_galleries_scan_result_dialog_controller_unittest.cc |
deleted file mode 100644 |
index d4b3b576fadc5f273100494facd9b02541e9e219..0000000000000000000000000000000000000000 |
--- a/chrome/browser/media_galleries/media_galleries_scan_result_dialog_controller_unittest.cc |
+++ /dev/null |
@@ -1,461 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/bind.h" |
-#include "base/command_line.h" |
-#include "base/files/file_path.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/run_loop.h" |
-#include "base/strings/string16.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "base/time/time.h" |
-#include "chrome/browser/extensions/test_extension_system.h" |
-#include "chrome/browser/media_galleries/media_galleries_preferences.h" |
-#include "chrome/browser/media_galleries/media_galleries_scan_result_dialog_controller.h" |
-#include "chrome/browser/media_galleries/media_galleries_test_util.h" |
-#include "chrome/test/base/testing_profile.h" |
-#include "components/storage_monitor/test_storage_monitor.h" |
-#include "content/public/test/test_browser_thread_bundle.h" |
-#include "extensions/browser/extension_system.h" |
-#include "extensions/common/extension.h" |
-#include "extensions/common/permissions/media_galleries_permission.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-#if defined(OS_CHROMEOS) |
-#include "chrome/browser/chromeos/login/users/user_manager.h" |
-#include "chrome/browser/chromeos/settings/cros_settings.h" |
-#include "chrome/browser/chromeos/settings/device_settings_service.h" |
-#endif |
- |
-namespace { |
- |
-class MockMediaGalleriesScanResultDialog |
- : public MediaGalleriesScanResultDialog { |
- public: |
- typedef base::Callback<void(int update_count)> DialogDestroyedCallback; |
- |
- explicit MockMediaGalleriesScanResultDialog( |
- const DialogDestroyedCallback& callback) |
- : update_count_(0), |
- dialog_destroyed_callback_(callback) { |
- } |
- |
- virtual ~MockMediaGalleriesScanResultDialog() { |
- dialog_destroyed_callback_.Run(update_count_); |
- } |
- |
- // MediaGalleriesScanResultDialog implementation. |
- virtual void UpdateResults() OVERRIDE { |
- update_count_++; |
- } |
- |
- // Number up times UpdateResults has been called. |
- int update_count() { |
- return update_count_; |
- } |
- |
- private: |
- // MediaGalleriesScanResultDialog implementation. |
- virtual void AcceptDialogForTesting() OVERRIDE { |
- } |
- |
- int update_count_; |
- |
- DialogDestroyedCallback dialog_destroyed_callback_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MockMediaGalleriesScanResultDialog); |
-}; |
- |
-} // namespace |
- |
-class MediaGalleriesScanResultDialogControllerTest : public testing::Test { |
- public: |
- MediaGalleriesScanResultDialogControllerTest() |
- : dialog_(NULL), |
- dialog_update_count_at_destruction_(0), |
- controller_(NULL), |
- profile_(new TestingProfile()), |
- weak_factory_(this) { |
- } |
- |
- virtual ~MediaGalleriesScanResultDialogControllerTest() { |
- EXPECT_FALSE(controller_); |
- EXPECT_FALSE(dialog_); |
- } |
- |
- virtual void SetUp() OVERRIDE { |
- ASSERT_TRUE(storage_monitor::TestStorageMonitor::CreateAndInstall()); |
- |
- extensions::TestExtensionSystem* extension_system( |
- static_cast<extensions::TestExtensionSystem*>( |
- extensions::ExtensionSystem::Get(profile_.get()))); |
- extension_system->CreateExtensionService( |
- CommandLine::ForCurrentProcess(), base::FilePath(), false); |
- |
- gallery_prefs_.reset(new MediaGalleriesPreferences(profile_.get())); |
- base::RunLoop loop; |
- gallery_prefs_->EnsureInitialized(loop.QuitClosure()); |
- loop.Run(); |
- |
- std::vector<std::string> read_permissions; |
- read_permissions.push_back( |
- extensions::MediaGalleriesPermission::kReadPermission); |
- extension_ = AddMediaGalleriesApp("read", read_permissions, profile_.get()); |
- } |
- |
- virtual void TearDown() OVERRIDE { |
- storage_monitor::TestStorageMonitor::Destroy(); |
- } |
- |
- void StartDialog() { |
- ASSERT_FALSE(controller_); |
- controller_ = new MediaGalleriesScanResultDialogController( |
- *extension_.get(), |
- gallery_prefs_.get(), |
- base::Bind( |
- &MediaGalleriesScanResultDialogControllerTest::CreateMockDialog, |
- base::Unretained(this)), |
- base::Bind( |
- &MediaGalleriesScanResultDialogControllerTest::OnControllerDone, |
- base::Unretained(this))); |
- } |
- |
- MediaGalleriesScanResultDialogController* controller() { |
- return controller_; |
- } |
- |
- MockMediaGalleriesScanResultDialog* dialog() { |
- return dialog_; |
- } |
- |
- int dialog_update_count_at_destruction() { |
- EXPECT_FALSE(dialog_); |
- return dialog_update_count_at_destruction_; |
- } |
- |
- extensions::Extension* extension() { |
- return extension_.get(); |
- } |
- |
- MediaGalleriesPreferences* gallery_prefs() { |
- return gallery_prefs_.get(); |
- } |
- |
- MediaGalleryPrefId AddGallery(const std::string& path, |
- MediaGalleryPrefInfo::Type type, |
- int audio_count, int image_count, |
- int video_count) { |
- MediaGalleryPrefInfo gallery_info; |
- gallery_prefs_->LookUpGalleryByPath(MakeMediaGalleriesTestingPath(path), |
- &gallery_info); |
- return gallery_prefs_->AddGallery( |
- gallery_info.device_id, |
- gallery_info.path, |
- type, |
- gallery_info.volume_label, |
- gallery_info.vendor_name, |
- gallery_info.model_name, |
- gallery_info.total_size_in_bytes, |
- gallery_info.last_attach_time, |
- audio_count, image_count, video_count); |
- } |
- |
- MediaGalleryPrefId AddScanResult(const std::string& path, int audio_count, |
- int image_count, int video_count) { |
- return AddGallery(path, MediaGalleryPrefInfo::kScanResult, audio_count, |
- image_count, video_count); |
- } |
- |
- private: |
- MediaGalleriesScanResultDialog* CreateMockDialog( |
- MediaGalleriesScanResultDialogController* controller) { |
- EXPECT_FALSE(dialog_); |
- dialog_update_count_at_destruction_ = 0; |
- dialog_ = new MockMediaGalleriesScanResultDialog(base::Bind( |
- &MediaGalleriesScanResultDialogControllerTest::OnDialogDestroyed, |
- weak_factory_.GetWeakPtr())); |
- return dialog_; |
- } |
- |
- void OnDialogDestroyed(int update_count) { |
- EXPECT_TRUE(dialog_); |
- dialog_update_count_at_destruction_ = update_count; |
- dialog_ = NULL; |
- } |
- |
- void OnControllerDone() { |
- controller_ = NULL; |
- } |
- |
- // Needed for extension service & friends to work. |
- content::TestBrowserThreadBundle thread_bundle_; |
- |
- // The dialog is owned by the controller, but this pointer should only be |
- // valid while the dialog is live within the controller. |
- MockMediaGalleriesScanResultDialog* dialog_; |
- int dialog_update_count_at_destruction_; |
- |
- // The controller owns itself. |
- MediaGalleriesScanResultDialogController* controller_; |
- |
- scoped_refptr<extensions::Extension> extension_; |
- |
- EnsureMediaDirectoriesExists mock_gallery_locations_; |
- |
-#if defined OS_CHROMEOS |
- chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; |
- chromeos::ScopedTestCrosSettings test_cros_settings_; |
- chromeos::ScopedTestUserManager test_user_manager_; |
-#endif |
- |
- storage_monitor::TestStorageMonitor monitor_; |
- scoped_ptr<TestingProfile> profile_; |
- scoped_ptr<MediaGalleriesPreferences> gallery_prefs_; |
- |
- base::WeakPtrFactory<MediaGalleriesScanResultDialogControllerTest> |
- weak_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MediaGalleriesScanResultDialogControllerTest); |
-}; |
- |
-TEST_F(MediaGalleriesScanResultDialogControllerTest, EmptyDialog) { |
- StartDialog(); |
- EXPECT_TRUE(controller()); |
- EXPECT_TRUE(dialog()); |
- EXPECT_EQ(0U, controller()->GetGalleryList().size()); |
- |
- controller()->DialogFinished(true); |
- EXPECT_FALSE(controller()); |
- EXPECT_FALSE(dialog()); |
- EXPECT_EQ(0, dialog_update_count_at_destruction()); |
-} |
- |
-TEST_F(MediaGalleriesScanResultDialogControllerTest, AddScanResults) { |
- // Start with two scan results. |
- MediaGalleryPrefId scan_id = AddScanResult("scan_id", 1, 0, 0); |
- MediaGalleryPrefId auto_id = |
- AddGallery("auto_id", MediaGalleryPrefInfo::kAutoDetected, 2, 0, 0); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- |
- // Show the dialog, but cancel it. |
- StartDialog(); |
- EXPECT_EQ(2U, controller()->GetGalleryList().size()); |
- controller()->DialogFinished(false); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- |
- // Show the dialog, unselect both and accept it. |
- StartDialog(); |
- EXPECT_EQ(2U, controller()->GetGalleryList().size()); |
- controller()->DidToggleGalleryId(scan_id, false); |
- controller()->DidToggleGalleryId(auto_id, false); |
- controller()->DialogFinished(true); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- |
- // Show the dialog, leave one selected and accept it. |
- StartDialog(); |
- EXPECT_EQ(2U, controller()->GetGalleryList().size()); |
- controller()->DidToggleGalleryId(scan_id, false); |
- controller()->DialogFinished(true); |
- MediaGalleryPrefIdSet permitted = |
- gallery_prefs()->GalleriesForExtension(*extension()); |
- ASSERT_EQ(1U, permitted.size()); |
- EXPECT_EQ(auto_id, *permitted.begin()); |
- |
- // Show the dialog, toggle the remaining entry twice and then accept it. |
- StartDialog(); |
- EXPECT_EQ(1U, controller()->GetGalleryList().size()); |
- controller()->DidToggleGalleryId(scan_id, false); |
- controller()->DidToggleGalleryId(scan_id, true); |
- controller()->DialogFinished(true); |
- EXPECT_EQ(2U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
-} |
- |
-TEST_F(MediaGalleriesScanResultDialogControllerTest, Blacklisted) { |
- // Start with two scan results. |
- MediaGalleryPrefId scan_id = AddScanResult("scan_id", 1, 0, 0); |
- MediaGalleryPrefId auto_id = |
- AddGallery("auto_id", MediaGalleryPrefInfo::kAutoDetected, 2, 0, 0); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- |
- // Show the dialog, but cancel it. |
- StartDialog(); |
- EXPECT_EQ(2U, controller()->GetGalleryList().size()); |
- controller()->DialogFinished(false); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- |
- // Blacklist one and try again. |
- gallery_prefs()->ForgetGalleryById(scan_id); |
- StartDialog(); |
- EXPECT_EQ(1U, controller()->GetGalleryList().size()); |
- controller()->DialogFinished(false); |
- |
- // Adding it as a user gallery should change its type. |
- AddGallery("scan_id", MediaGalleryPrefInfo::kUserAdded, 1, 0, 0); |
- StartDialog(); |
- EXPECT_EQ(2U, controller()->GetGalleryList().size()); |
- |
- // Blacklisting the other while the dialog is open should remove it. |
- gallery_prefs()->ForgetGalleryById(auto_id); |
- EXPECT_EQ(1U, controller()->GetGalleryList().size()); |
- controller()->DialogFinished(false); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- EXPECT_EQ(1, dialog_update_count_at_destruction()); |
-} |
- |
-TEST_F(MediaGalleriesScanResultDialogControllerTest, PrefUpdates) { |
- MediaGalleryPrefId selected = AddScanResult("selected", 1, 0, 0); |
- MediaGalleryPrefId unselected = AddScanResult("unselected", 1, 0, 0); |
- MediaGalleryPrefId selected_add_permission = |
- AddScanResult("selected_add_permission", 1, 0, 0); |
- MediaGalleryPrefId unselected_add_permission = |
- AddScanResult("unselected_add_permission", 1, 0, 0); |
- MediaGalleryPrefId selected_removed = |
- AddScanResult("selected_removed", 1, 0, 0); |
- MediaGalleryPrefId unselected_removed = |
- AddScanResult("unselected_removed", 1, 0, 0); |
- MediaGalleryPrefId selected_update = |
- AddScanResult("selected_update", 1, 0, 0); |
- MediaGalleryPrefId unselected_update = |
- AddScanResult("unselected_update", 1, 0, 0); |
- |
- gallery_prefs()->AddGalleryByPath(MakeMediaGalleriesTestingPath("user"), |
- MediaGalleryPrefInfo::kUserAdded); |
- gallery_prefs()->AddGalleryByPath( |
- MakeMediaGalleriesTestingPath("auto_detected"), |
- MediaGalleryPrefInfo::kAutoDetected); |
- MediaGalleryPrefId blacklisted = gallery_prefs()->AddGalleryByPath( |
- MakeMediaGalleriesTestingPath("blacklisted"), |
- MediaGalleryPrefInfo::kAutoDetected); |
- gallery_prefs()->ForgetGalleryById(blacklisted); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- |
- StartDialog(); |
- EXPECT_EQ(8U, controller()->GetGalleryList().size()); |
- controller()->DidToggleGalleryId(unselected, false); |
- controller()->DidToggleGalleryId(unselected_add_permission, false); |
- controller()->DidToggleGalleryId(unselected_removed, false); |
- controller()->DidToggleGalleryId(unselected_update, false); |
- EXPECT_EQ(0, dialog()->update_count()); |
- EXPECT_EQ(8U, controller()->GetGalleryList().size()); |
- |
- // Add permission. |
- gallery_prefs()->SetGalleryPermissionForExtension(*extension(), |
- unselected_add_permission, |
- true); |
- EXPECT_EQ(1, dialog()->update_count()); |
- EXPECT_EQ(7U, controller()->GetGalleryList().size()); |
- gallery_prefs()->SetGalleryPermissionForExtension(*extension(), |
- selected_add_permission, |
- true); |
- EXPECT_EQ(2, dialog()->update_count()); |
- EXPECT_EQ(6U, controller()->GetGalleryList().size()); |
- |
- // Blacklist scan results. |
- gallery_prefs()->ForgetGalleryById(unselected_removed); |
- EXPECT_EQ(3, dialog()->update_count()); |
- EXPECT_EQ(5U, controller()->GetGalleryList().size()); |
- gallery_prefs()->ForgetGalleryById(selected_removed); |
- EXPECT_EQ(4, dialog()->update_count()); |
- EXPECT_EQ(4U, controller()->GetGalleryList().size()); |
- |
- // Update names. |
- const MediaGalleryPrefInfo& unselected_update_info = |
- gallery_prefs()->known_galleries().find(unselected_update)->second; |
- gallery_prefs()->AddGallery( |
- unselected_update_info.device_id, base::FilePath(), |
- MediaGalleryPrefInfo::kScanResult, |
- base::ASCIIToUTF16("Updated & Unselected"), |
- base::string16(), base::string16(), 0, base::Time(), 1, 0, 0); |
- EXPECT_EQ(5, dialog()->update_count()); |
- EXPECT_EQ(4U, controller()->GetGalleryList().size()); |
- const MediaGalleryPrefInfo& selected_update_info = |
- gallery_prefs()->known_galleries().find(selected_update)->second; |
- gallery_prefs()->AddGallery( |
- selected_update_info.device_id, base::FilePath(), |
- MediaGalleryPrefInfo::kScanResult, |
- base::ASCIIToUTF16("Updated & Selected"), |
- base::string16(), base::string16(), 0, base::Time(), 1, 0, 0); |
- EXPECT_EQ(6, dialog()->update_count()); |
- ASSERT_EQ(4U, controller()->GetGalleryList().size()); |
- |
- MediaGalleriesScanResultDialogController::OrderedScanResults results = |
- controller()->GetGalleryList(); |
- EXPECT_EQ(selected, results[0].pref_info.pref_id); |
- EXPECT_TRUE(results[0].selected); |
- EXPECT_EQ(selected_update, results[1].pref_info.pref_id); |
- EXPECT_TRUE(results[1].selected); |
- EXPECT_EQ(base::ASCIIToUTF16("Updated & Selected"), |
- results[1].pref_info.volume_label); |
- EXPECT_EQ(unselected, results[2].pref_info.pref_id); |
- EXPECT_FALSE(results[2].selected); |
- EXPECT_EQ(unselected_update, results[3].pref_info.pref_id); |
- EXPECT_FALSE(results[3].selected); |
- EXPECT_EQ(base::ASCIIToUTF16("Updated & Unselected"), |
- results[3].pref_info.volume_label); |
- |
- controller()->DialogFinished(true); |
- EXPECT_EQ(4U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- StartDialog(); |
- EXPECT_EQ(2U, controller()->GetGalleryList().size()); |
- controller()->DialogFinished(false); |
-} |
- |
-TEST_F(MediaGalleriesScanResultDialogControllerTest, ForgetGallery) { |
- // Start with two scan results. |
- MediaGalleryPrefId scan1 = AddScanResult("scan1", 1, 0, 0); |
- MediaGalleryPrefId scan2 = AddScanResult("scan2", 2, 0, 0); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- |
- // Remove one and then cancel. |
- StartDialog(); |
- EXPECT_EQ(2U, controller()->GetGalleryList().size()); |
- controller()->DidForgetGallery(scan1); |
- controller()->DialogFinished(false); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- |
- // Remove one and then have it blacklisted from prefs. |
- StartDialog(); |
- EXPECT_EQ(2U, controller()->GetGalleryList().size()); |
- controller()->DidForgetGallery(scan1); |
- EXPECT_EQ(1, dialog()->update_count()); |
- controller()->DidToggleGalleryId(scan2, false); // Uncheck the second. |
- gallery_prefs()->ForgetGalleryById(scan1); |
- controller()->DialogFinished(true); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- EXPECT_EQ(2, dialog_update_count_at_destruction()); |
- |
- // Remove the other. |
- StartDialog(); |
- EXPECT_EQ(1U, controller()->GetGalleryList().size()); |
- controller()->DidForgetGallery(scan2); |
- controller()->DialogFinished(true); |
- EXPECT_EQ(0U, gallery_prefs()->GalleriesForExtension(*extension()).size()); |
- |
- // Check that nothing shows up. |
- StartDialog(); |
- EXPECT_EQ(0U, controller()->GetGalleryList().size()); |
- controller()->DialogFinished(false); |
-} |
- |
-TEST_F(MediaGalleriesScanResultDialogControllerTest, SortOrder) { |
- // Intentionally out of order numerically and alphabetically. |
- MediaGalleryPrefId third = AddScanResult("third", 2, 2, 2); |
- MediaGalleryPrefId second = |
- AddGallery("second", MediaGalleryPrefInfo::kAutoDetected, 9, 0, 0); |
- MediaGalleryPrefId first = AddScanResult("first", 8, 2, 3); |
- MediaGalleryPrefId fifth = AddScanResult("abb", 3, 0, 0); |
- MediaGalleryPrefId fourth = AddScanResult("aaa", 3, 0, 0); |
- |
- StartDialog(); |
- MediaGalleriesScanResultDialogController::OrderedScanResults results = |
- controller()->GetGalleryList(); |
- ASSERT_EQ(5U, results.size()); |
- EXPECT_EQ(first, results[0].pref_info.pref_id); |
- EXPECT_EQ(second, results[1].pref_info.pref_id); |
- EXPECT_EQ(third, results[2].pref_info.pref_id); |
- EXPECT_EQ(fourth, results[3].pref_info.pref_id); |
- EXPECT_EQ(fifth, results[4].pref_info.pref_id); |
- controller()->DialogFinished(false); |
-} |