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

Unified Diff: chrome/browser/media_gallery/media_file_system_registry_unittest.cc

Issue 11442047: Media Galleries: Add more tests for media gallery names. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media_gallery/media_file_system_registry_unittest.cc
===================================================================
--- chrome/browser/media_gallery/media_file_system_registry_unittest.cc (revision 172539)
+++ chrome/browser/media_gallery/media_file_system_registry_unittest.cc (working copy)
@@ -4,9 +4,12 @@
// MediaFileSystemRegistry unit tests.
+#include <set>
+
#include "base/command_line.h"
#include "base/file_util.h"
#include "base/files/scoped_temp_dir.h"
+#include "base/json/json_reader.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
@@ -149,6 +152,18 @@
namespace {
+const char kIsRemovableKey[] = "isRemovable";
+
+void GetGalleryNamesCB(std::set<std::string>* results,
+ const std::vector<MediaFileSystemInfo>& file_systems) {
+ for (size_t i = 0; i < file_systems.size(); i++) {
kmadhusu 2012/12/12 17:45:02 nit: ++i
Lei Zhang 2012/12/12 20:15:15 The rest of the file had i++, so I was being consi
+ std::set<std::string>::const_iterator it =
+ results->find(file_systems[i].name);
+ ASSERT_EQ(it, results->end());
+ results->insert(file_systems[i].name);
+ }
+}
+
class TestMediaStorageUtil : public MediaStorageUtil {
public:
static void SetTestingMode();
@@ -194,6 +209,8 @@
const std::vector<MediaFileSystemInfo>& regular_extension_galleries,
const std::vector<MediaFileSystemInfo>& all_extension_galleries);
+ std::set<std::string> GetGalleryNames(extensions::Extension* extension);
+
extensions::Extension* all_permission_extension();
extensions::Extension* regular_permission_extension();
@@ -448,6 +465,19 @@
EXPECT_EQ(1, GetAndClearComparisonCount());
}
+std::set<std::string> ProfileState::GetGalleryNames(
+ extensions::Extension* extension) {
+ content::RenderViewHost* rvh = single_web_contents_->GetRenderViewHost();
+ std::set<std::string> results;
+ MediaFileSystemRegistry* registry =
+ g_browser_process->media_file_system_registry();
+ registry->GetMediaFileSystemsForExtension(
+ rvh, extension,
+ base::Bind(&GetGalleryNamesCB, base::Unretained(&results)));
+ MessageLoop::current()->RunUntilIdle();
+ return results;
+}
+
extensions::Extension* ProfileState::all_permission_extension() {
return all_permission_extension_.get();
}
@@ -666,6 +696,75 @@
auto_galleries);
}
+TEST_F(MediaFileSystemRegistryTest, GalleryName) {
+ CreateProfileState(1);
+ AssertAllAutoAddedGalleries();
+ const size_t kProfileId = 0U;
+
+ // Get all existing gallery names.
+ ProfileState* profile_state = GetProfileState(kProfileId);
+ std::set<std::string> gallery_names =
+ profile_state->GetGalleryNames(profile_state->all_permission_extension());
+ ASSERT_EQ(3U, gallery_names.size());
+
+ // Add a couple new galleries.
+ FilePath mtp_bogus_location(FILE_PATH_LITERAL("/mtp_bogus_location"));
+ std::string mtp_device_id = AttachDevice(MediaStorageUtil::MTP_OR_PTP,
+ "mtp_fake_id",
kmadhusu 2012/12/12 17:45:02 style nit: Fix indentation.
Lei Zhang 2012/12/12 20:15:15 Done.
+ mtp_bogus_location);
+ SetGalleryPermission(kProfileId,
+ profile_state->all_permission_extension(),
+ mtp_device_id,
+ true /*has access*/);
+
+ FilePath removable_bogus_location(
+ FILE_PATH_LITERAL("/removable_bogus_location"));
+ std::string removable_device_id =
+ AttachDevice(MediaStorageUtil::REMOVABLE_MASS_STORAGE_WITH_DCIM,
+ "removable_fake_id",
+ removable_bogus_location);
+ SetGalleryPermission(kProfileId,
+ profile_state->all_permission_extension(),
+ removable_device_id,
+ true /*has access*/);
+
+ // Get new list of all gallery names.
+ std::set<std::string> new_gallery_names =
+ profile_state->GetGalleryNames(profile_state->all_permission_extension());
+ ASSERT_EQ(5U, new_gallery_names.size());
+
+ // Check the intersection.
+ std::vector<std::string> intersection_names;
+ std::set_intersection(gallery_names.begin(), gallery_names.end(),
+ new_gallery_names.begin(), new_gallery_names.end(),
+ std::back_inserter(intersection_names));
+ EXPECT_EQ(3U, intersection_names.size());
+ for (size_t i = 0; i < intersection_names.size(); i++) {
kmadhusu 2012/12/12 17:45:02 nit: ++i
+ scoped_ptr<DictionaryValue> dict_value(static_cast<DictionaryValue*>(
+ base::JSONReader::Read(intersection_names[i])));
+ ASSERT_TRUE(dict_value);
+ bool is_removable;
+ ASSERT_TRUE(dict_value->GetBoolean(kIsRemovableKey, &is_removable));
+ EXPECT_FALSE(is_removable);
+ }
+
+ // Check the difference.
+ std::vector<std::string> difference_names;
+ std::set_symmetric_difference(
+ gallery_names.begin(), gallery_names.end(),
+ new_gallery_names.begin(), new_gallery_names.end(),
+ std::back_inserter(difference_names));
+ EXPECT_EQ(2U, difference_names.size());
+ for (size_t i = 0; i < difference_names.size(); i++) {
+ scoped_ptr<DictionaryValue> dict_value(static_cast<DictionaryValue*>(
+ base::JSONReader::Read(difference_names[i])));
+ ASSERT_TRUE(dict_value);
+ bool is_removable;
+ ASSERT_TRUE(dict_value->GetBoolean(kIsRemovableKey, &is_removable));
+ EXPECT_TRUE(is_removable);
+ }
+}
+
} // namespace
} // namespace chrome

Powered by Google App Engine
This is Rietveld 408576698