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

Unified Diff: chrome/browser/media_galleries/media_galleries_permission_controller.cc

Issue 321443003: Change the media galleries permission dialog to have a suggestions section. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update test Created 6 years, 6 months 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_galleries/media_galleries_permission_controller.cc
diff --git a/chrome/browser/media_galleries/media_galleries_permission_controller.cc b/chrome/browser/media_galleries/media_galleries_permission_controller.cc
index 77b1148ed0d933a1fd62fd64c1082db679d79adf..7572e66089fe4e67f4ae296a51ae59a11c40bb83 100644
--- a/chrome/browser/media_galleries/media_galleries_permission_controller.cc
+++ b/chrome/browser/media_galleries/media_galleries_permission_controller.cc
@@ -34,16 +34,22 @@ using storage_monitor::StorageMonitor;
namespace {
-// Comparator for sorting GalleryPermissionsVector -- sorts
-// selected galleries low, and then sorts by absolute path.
+// Comparator for sorting gallery entries. Sort Removable entries above
+// non-removable ones. Within those two groups, sort on media counts
+// if populated, otherwise on paths.
bool GalleriesVectorComparator(
const MediaGalleriesDialogController::Entry& a,
const MediaGalleriesDialogController::Entry& b) {
- if (a.selected && !b.selected)
- return true;
- if (!a.selected && b.selected)
- return false;
-
+ if (StorageInfo::IsRemovableDevice(a.pref_info.device_id) !=
+ StorageInfo::IsRemovableDevice(b.pref_info.device_id)) {
+ return StorageInfo::IsRemovableDevice(a.pref_info.device_id);
+ }
+ int a_media_count = a.pref_info.audio_count + a.pref_info.image_count +
+ a.pref_info.video_count;
+ int b_media_count = b.pref_info.audio_count + b.pref_info.image_count +
+ b.pref_info.video_count;
+ if (a_media_count != b_media_count)
+ return a_media_count > b_media_count;
return a.pref_info.AbsolutePath() < b.pref_info.AbsolutePath();
}
@@ -164,7 +170,7 @@ MediaGalleriesPermissionController::GetSectionHeaders() const {
std::vector<base::string16> result;
result.push_back(base::string16()); // First section has no header.
result.push_back(
- l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_UNATTACHED_LOCATIONS));
+ l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_PERMISSION_SUGGESTIONS));
return result;
}
@@ -173,20 +179,19 @@ MediaGalleriesDialogController::Entries
MediaGalleriesPermissionController::GetSectionEntries(size_t index) const {
DCHECK_GT(2U, index); // This dialog only has two sections.
- // TODO(vandebo): Change this to be permitted/non-permitted instead of
- // attached/non-attached.
- bool attached = !index;
+ bool existing = !index;
MediaGalleriesDialogController::Entries result;
for (GalleryPermissionsMap::const_iterator iter = known_galleries_.begin();
iter != known_galleries_.end(); ++iter) {
+ MediaGalleryPrefId pref_id = GetPrefId(iter->first);
if (!ContainsKey(forgotten_galleries_, iter->first) &&
- attached == iter->second.pref_info.IsGalleryAvailable()) {
+ existing == ContainsKey(pref_permitted_galleries_, pref_id)) {
result.push_back(iter->second);
}
}
- for (GalleryPermissionsMap::const_iterator iter = new_galleries_.begin();
- iter != new_galleries_.end(); ++iter) {
- if (attached == iter->second.pref_info.IsGalleryAvailable()) {
+ if (existing) {
+ for (GalleryPermissionsMap::const_iterator iter = new_galleries_.begin();
+ iter != new_galleries_.end(); ++iter) {
result.push_back(iter->second);
}
}
@@ -229,10 +234,7 @@ void MediaGalleriesPermissionController::DidToggleEntry(
return;
iter->second.selected = selected;
- if (ContainsKey(toggled_galleries_, gallery_id))
- toggled_galleries_.erase(gallery_id);
- else
- toggled_galleries_.insert(gallery_id);
+ toggled_galleries_[gallery_id] = selected;
return;
}
@@ -397,17 +399,22 @@ void MediaGalleriesPermissionController::InitializePermissions() {
known_galleries_[gallery_id].pref_info.pref_id = gallery_id;
}
- MediaGalleryPrefIdSet permitted =
- preferences_->GalleriesForExtension(*extension_);
+ pref_permitted_galleries_ = preferences_->GalleriesForExtension(*extension_);
- for (MediaGalleryPrefIdSet::iterator iter = permitted.begin();
- iter != permitted.end(); ++iter) {
+ for (MediaGalleryPrefIdSet::iterator iter = pref_permitted_galleries_.begin();
+ iter != pref_permitted_galleries_.end();
+ ++iter) {
GalleryDialogId gallery_id = GetDialogId(*iter);
- if (ContainsKey(toggled_galleries_, gallery_id))
- continue;
DCHECK(ContainsKey(known_galleries_, gallery_id));
known_galleries_[gallery_id].selected = true;
}
+
+ // Preserve state of toggled galleries.
+ for (ToggledGalleryMap::const_iterator iter = toggled_galleries_.begin();
+ iter != toggled_galleries_.end();
+ ++iter) {
+ known_galleries_[iter->first].selected = iter->second;
+ }
}
void MediaGalleriesPermissionController::SavePermissions() {
@@ -502,7 +509,7 @@ GalleryDialogId MediaGalleriesPermissionController::GetDialogId(
}
MediaGalleryPrefId MediaGalleriesPermissionController::GetPrefId(
- GalleryDialogId id) {
+ GalleryDialogId id) const {
return id_map_.GetPrefId(id);
}
@@ -537,7 +544,7 @@ MediaGalleriesPermissionController::DialogIdMap::GetDialogId(
MediaGalleryPrefId
MediaGalleriesPermissionController::DialogIdMap::GetPrefId(
- GalleryDialogId id) {
+ GalleryDialogId id) const {
DCHECK_LT(id, next_dialog_id_);
return forward_mapping_[id];
}

Powered by Google App Engine
This is Rietveld 408576698