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

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

Issue 310383004: Make a controller interface for media galleries dialogs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments, spelling, test fixes 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_dialog_controller.cc b/chrome/browser/media_galleries/media_galleries_permission_controller.cc
similarity index 72%
copy from chrome/browser/media_galleries/media_galleries_dialog_controller.cc
copy to chrome/browser/media_galleries/media_galleries_permission_controller.cc
index 8ad59e86e47a4fc8431729789c557964e5cc576b..f57c23e95682199a153eaa578a37f2b4707bf300 100644
--- a/chrome/browser/media_galleries/media_galleries_dialog_controller.cc
+++ b/chrome/browser/media_galleries/media_galleries_permission_controller.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/media_galleries/media_galleries_dialog_controller.h"
+#include "chrome/browser/media_galleries/media_galleries_permission_controller.h"
#include "base/base_paths.h"
#include "base/path_service.h"
@@ -35,13 +35,13 @@ using storage_monitor::StorageMonitor;
namespace {
// Comparator for sorting GalleryPermissionsVector -- sorts
-// allowed galleries low, and then sorts by absolute path.
+// selected galleries low, and then sorts by absolute path.
bool GalleriesVectorComparator(
- const MediaGalleriesDialogController::GalleryPermission& a,
- const MediaGalleriesDialogController::GalleryPermission& b) {
- if (a.allowed && !b.allowed)
+ const MediaGalleriesDialogController::Entry& a,
+ const MediaGalleriesDialogController::Entry& b) {
+ if (a.selected && !b.selected)
return true;
- if (!a.allowed && b.allowed)
+ if (!a.selected && b.selected)
return false;
return a.pref_info.AbsolutePath() < b.pref_info.AbsolutePath();
@@ -49,7 +49,7 @@ bool GalleriesVectorComparator(
} // namespace
-MediaGalleriesDialogController::MediaGalleriesDialogController(
+MediaGalleriesPermissionController::MediaGalleriesPermissionController(
content::WebContents* web_contents,
const Extension& extension,
const base::Closure& on_finish)
@@ -64,17 +64,17 @@ MediaGalleriesDialogController::MediaGalleriesDialogController(
// is self-deleting, and so won't be deleted until it can be shown
// and then closed.
preferences_->EnsureInitialized(
- base::Bind(&MediaGalleriesDialogController::OnPreferencesInitialized,
+ base::Bind(&MediaGalleriesPermissionController::OnPreferencesInitialized,
base::Unretained(this)));
// Unretained is safe because |this| owns |context_menu_|.
context_menu_.reset(
new MediaGalleryContextMenu(
- base::Bind(&MediaGalleriesDialogController::DidForgetGallery,
+ base::Bind(&MediaGalleriesPermissionController::DidForgetEntry,
base::Unretained(this))));
}
-void MediaGalleriesDialogController::OnPreferencesInitialized() {
+void MediaGalleriesPermissionController::OnPreferencesInitialized() {
if (StorageMonitor::GetInstance())
StorageMonitor::GetInstance()->AddObserver(this);
@@ -87,7 +87,7 @@ void MediaGalleriesDialogController::OnPreferencesInitialized() {
dialog_.reset(create_dialog_callback_.Run(this));
}
-MediaGalleriesDialogController::MediaGalleriesDialogController(
+MediaGalleriesPermissionController::MediaGalleriesPermissionController(
const extensions::Extension& extension,
MediaGalleriesPreferences* preferences,
const CreateDialogCallback& create_dialog_callback,
@@ -100,7 +100,7 @@ MediaGalleriesDialogController::MediaGalleriesDialogController(
OnPreferencesInitialized();
}
-MediaGalleriesDialogController::~MediaGalleriesDialogController() {
+MediaGalleriesPermissionController::~MediaGalleriesPermissionController() {
if (StorageMonitor::GetInstance())
StorageMonitor::GetInstance()->RemoveObserver(this);
@@ -112,12 +112,12 @@ MediaGalleriesDialogController::~MediaGalleriesDialogController() {
select_folder_dialog_->ListenerDestroyed();
}
-base::string16 MediaGalleriesDialogController::GetHeader() const {
+base::string16 MediaGalleriesPermissionController::GetHeader() const {
return l10n_util::GetStringFUTF16(IDS_MEDIA_GALLERIES_DIALOG_HEADER,
base::UTF8ToUTF16(extension_->name()));
}
-base::string16 MediaGalleriesDialogController::GetSubtext() const {
+base::string16 MediaGalleriesPermissionController::GetSubtext() const {
extensions::MediaGalleriesPermission::CheckParam copy_to_param(
extensions::MediaGalleriesPermission::kCopyToPermission);
extensions::MediaGalleriesPermission::CheckParam delete_param(
@@ -140,29 +140,43 @@ base::string16 MediaGalleriesDialogController::GetSubtext() const {
return l10n_util::GetStringFUTF16(id, base::UTF8ToUTF16(extension_->name()));
}
-base::string16 MediaGalleriesDialogController::GetUnattachedLocationsHeader()
- const {
- return l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_UNATTACHED_LOCATIONS);
-}
-
-bool MediaGalleriesDialogController::IsAcceptAllowed() const {
+bool MediaGalleriesPermissionController::IsAcceptAllowed() const {
if (!toggled_galleries_.empty() || !forgotten_galleries_.empty())
return true;
for (GalleryPermissionsMap::const_iterator iter = new_galleries_.begin();
iter != new_galleries_.end();
++iter) {
- if (iter->second.allowed)
+ if (iter->second.selected)
return true;
}
return false;
}
+bool MediaGalleriesPermissionController::ShouldShowFolderViewer(
+ const Entry& entry) const {
+ return false;
+}
+
+std::vector<base::string16>
+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));
+ return result;
+}
+
// Note: sorts by display criterion: GalleriesVectorComparator.
-MediaGalleriesDialogController::GalleryPermissionsVector
-MediaGalleriesDialogController::FillPermissions(bool attached) const {
- GalleryPermissionsVector result;
+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;
+ MediaGalleriesDialogController::Entries result;
for (GalleryPermissionsMap::const_iterator iter = known_galleries_.begin();
iter != known_galleries_.end(); ++iter) {
if (!ContainsKey(forgotten_galleries_, iter->first) &&
@@ -181,17 +195,13 @@ MediaGalleriesDialogController::FillPermissions(bool attached) const {
return result;
}
-MediaGalleriesDialogController::GalleryPermissionsVector
-MediaGalleriesDialogController::AttachedPermissions() const {
- return FillPermissions(true);
-}
-
-MediaGalleriesDialogController::GalleryPermissionsVector
-MediaGalleriesDialogController::UnattachedPermissions() const {
- return FillPermissions(false);
+base::string16
+MediaGalleriesPermissionController::GetAuxiliaryButtonText() const {
+ return l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_DIALOG_ADD_GALLERY);
}
-void MediaGalleriesDialogController::OnAddFolderClicked() {
+// This is the 'Add Folder' button.
+void MediaGalleriesPermissionController::DidClickAuxiliaryButton() {
base::FilePath default_path =
extensions::file_system_api::GetLastChooseEntryDirectory(
extensions::ExtensionPrefs::Get(GetProfile()), extension_->id());
@@ -210,15 +220,15 @@ void MediaGalleriesDialogController::OnAddFolderClicked() {
NULL);
}
-void MediaGalleriesDialogController::DidToggleGallery(
- GalleryDialogId gallery_id, bool enabled) {
+void MediaGalleriesPermissionController::DidToggleEntry(
+ GalleryDialogId gallery_id, bool selected) {
// Check known galleries.
GalleryPermissionsMap::iterator iter = known_galleries_.find(gallery_id);
if (iter != known_galleries_.end()) {
- if (iter->second.allowed == enabled)
+ if (iter->second.selected == selected)
return;
- iter->second.allowed = enabled;
+ iter->second.selected = selected;
if (ContainsKey(toggled_galleries_, gallery_id))
toggled_galleries_.erase(gallery_id);
else
@@ -228,14 +238,19 @@ void MediaGalleriesDialogController::DidToggleGallery(
iter = new_galleries_.find(gallery_id);
if (iter != new_galleries_.end())
- iter->second.allowed = enabled;
+ iter->second.selected = selected;
// Don't sort -- the dialog is open, and we don't want to adjust any
// positions for future updates to the dialog contents until they are
// redrawn.
}
-void MediaGalleriesDialogController::DidForgetGallery(
+void MediaGalleriesPermissionController::DidClickOpenFolderViewer(
+ GalleryDialogId gallery_id) {
+ NOTREACHED();
+}
+
+void MediaGalleriesPermissionController::DidForgetEntry(
GalleryDialogId gallery_id) {
media_galleries::UsageCount(media_galleries::DIALOG_FORGET_GALLERY);
if (!new_galleries_.erase(gallery_id)) {
@@ -245,7 +260,11 @@ void MediaGalleriesDialogController::DidForgetGallery(
dialog_->UpdateGalleries();
}
-void MediaGalleriesDialogController::DialogFinished(bool accepted) {
+base::string16 MediaGalleriesPermissionController::GetAcceptButtonText() const {
+ return l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_DIALOG_CONFIRM);
+}
+
+void MediaGalleriesPermissionController::DialogFinished(bool accepted) {
// The dialog has finished, so there is no need to watch for more updates
// from |preferences_|.
// |preferences_| may be NULL in tests.
@@ -260,13 +279,14 @@ void MediaGalleriesDialogController::DialogFinished(bool accepted) {
delete this;
}
-content::WebContents* MediaGalleriesDialogController::web_contents() {
+content::WebContents* MediaGalleriesPermissionController::WebContents() {
return web_contents_;
}
-void MediaGalleriesDialogController::FileSelected(const base::FilePath& path,
- int /*index*/,
- void* /*params*/) {
+void MediaGalleriesPermissionController::FileSelected(
+ const base::FilePath& path,
+ int /*index*/,
+ void* /*params*/) {
extensions::file_system_api::SetLastChooseEntryDirectory(
extensions::ExtensionPrefs::Get(GetProfile()),
extension_->id(),
@@ -283,7 +303,7 @@ void MediaGalleriesDialogController::FileSelected(const base::FilePath& path,
GalleryDialogId gallery_id = GetDialogId(gallery.pref_id);
GalleryPermissionsMap::iterator iter = known_galleries_.find(gallery_id);
DCHECK(iter != known_galleries_.end());
- iter->second.allowed = true;
+ iter->second.selected = true;
forgotten_galleries_.erase(gallery_id);
dialog_->UpdateGalleries();
return;
@@ -294,30 +314,30 @@ void MediaGalleriesDialogController::FileSelected(const base::FilePath& path,
iter != new_galleries_.end(); ++iter) {
if (iter->second.pref_info.path == gallery.path &&
iter->second.pref_info.device_id == gallery.device_id) {
- iter->second.allowed = true;
+ iter->second.selected = true;
dialog_->UpdateGalleries();
return;
}
}
// Lastly, if not found, add a new gallery to |new_galleries_|.
- // Note that it will have prefId = kInvalidMediaGalleryPrefId.
- GalleryDialogId gallery_id = GetDialogId(gallery.pref_id);
- new_galleries_[gallery_id] = GalleryPermission(gallery_id, gallery, true);
+ DCHECK_EQ(kInvalidMediaGalleryPrefId, gallery.pref_id);
+ gallery.pref_id = GetDialogId(kInvalidMediaGalleryPrefId);
+ new_galleries_[gallery.pref_id] = Entry(gallery, true);
dialog_->UpdateGalleries();
}
-void MediaGalleriesDialogController::OnRemovableStorageAttached(
+void MediaGalleriesPermissionController::OnRemovableStorageAttached(
const StorageInfo& info) {
UpdateGalleriesOnDeviceEvent(info.device_id());
}
-void MediaGalleriesDialogController::OnRemovableStorageDetached(
+void MediaGalleriesPermissionController::OnRemovableStorageDetached(
const StorageInfo& info) {
UpdateGalleriesOnDeviceEvent(info.device_id());
}
-void MediaGalleriesDialogController::OnPermissionAdded(
+void MediaGalleriesPermissionController::OnPermissionAdded(
MediaGalleriesPreferences* /* prefs */,
const std::string& extension_id,
MediaGalleryPrefId /* pref_id */) {
@@ -326,7 +346,7 @@ void MediaGalleriesDialogController::OnPermissionAdded(
UpdateGalleriesOnPreferencesEvent();
}
-void MediaGalleriesDialogController::OnPermissionRemoved(
+void MediaGalleriesPermissionController::OnPermissionRemoved(
MediaGalleriesPreferences* /* prefs */,
const std::string& extension_id,
MediaGalleryPrefId /* pref_id */) {
@@ -335,19 +355,19 @@ void MediaGalleriesDialogController::OnPermissionRemoved(
UpdateGalleriesOnPreferencesEvent();
}
-void MediaGalleriesDialogController::OnGalleryAdded(
+void MediaGalleriesPermissionController::OnGalleryAdded(
MediaGalleriesPreferences* /* prefs */,
MediaGalleryPrefId /* pref_id */) {
UpdateGalleriesOnPreferencesEvent();
}
-void MediaGalleriesDialogController::OnGalleryRemoved(
+void MediaGalleriesPermissionController::OnGalleryRemoved(
MediaGalleriesPreferences* /* prefs */,
MediaGalleryPrefId /* pref_id */) {
UpdateGalleriesOnPreferencesEvent();
}
-void MediaGalleriesDialogController::OnGalleryInfoUpdated(
+void MediaGalleriesPermissionController::OnGalleryInfoUpdated(
MediaGalleriesPreferences* prefs,
MediaGalleryPrefId pref_id) {
DCHECK(preferences_);
@@ -361,7 +381,7 @@ void MediaGalleriesDialogController::OnGalleryInfoUpdated(
UpdateGalleriesOnDeviceEvent(gallery_info.device_id);
}
-void MediaGalleriesDialogController::InitializePermissions() {
+void MediaGalleriesPermissionController::InitializePermissions() {
known_galleries_.clear();
DCHECK(preferences_);
const MediaGalleriesPrefInfoMap& galleries = preferences_->known_galleries();
@@ -373,8 +393,8 @@ void MediaGalleriesDialogController::InitializePermissions() {
continue;
GalleryDialogId gallery_id = GetDialogId(gallery.pref_id);
- known_galleries_[gallery_id] =
- GalleryPermission(gallery_id, gallery, false);
+ known_galleries_[gallery_id] = Entry(gallery, false);
+ known_galleries_[gallery_id].pref_info.pref_id = gallery_id;
}
MediaGalleryPrefIdSet permitted =
@@ -386,23 +406,23 @@ void MediaGalleriesDialogController::InitializePermissions() {
if (ContainsKey(toggled_galleries_, gallery_id))
continue;
DCHECK(ContainsKey(known_galleries_, gallery_id));
- known_galleries_[gallery_id].allowed = true;
+ known_galleries_[gallery_id].selected = true;
}
}
-void MediaGalleriesDialogController::SavePermissions() {
+void MediaGalleriesPermissionController::SavePermissions() {
DCHECK(preferences_);
media_galleries::UsageCount(media_galleries::SAVE_DIALOG);
for (GalleryPermissionsMap::const_iterator iter = known_galleries_.begin();
iter != known_galleries_.end(); ++iter) {
- MediaGalleryPrefId pref_id = iter->second.pref_info.pref_id;
+ MediaGalleryPrefId pref_id = GetPrefId(iter->first);
if (ContainsKey(forgotten_galleries_, iter->first)) {
preferences_->ForgetGalleryById(pref_id);
} else {
bool changed = preferences_->SetGalleryPermissionForExtension(
- *extension_, pref_id, iter->second.allowed);
+ *extension_, pref_id, iter->second.selected);
if (changed) {
- if (iter->second.allowed) {
+ if (iter->second.selected) {
media_galleries::UsageCount(
media_galleries::DIALOG_PERMISSION_ADDED);
} else {
@@ -417,7 +437,7 @@ void MediaGalleriesDialogController::SavePermissions() {
iter != new_galleries_.end(); ++iter) {
media_galleries::UsageCount(media_galleries::DIALOG_GALLERY_ADDED);
// If the user added a gallery then unchecked it, forget about it.
- if (!iter->second.allowed)
+ if (!iter->second.selected)
continue;
const MediaGalleryPrefInfo& gallery = iter->second.pref_info;
@@ -429,7 +449,7 @@ void MediaGalleriesDialogController::SavePermissions() {
}
}
-void MediaGalleriesDialogController::UpdateGalleriesOnPreferencesEvent() {
+void MediaGalleriesPermissionController::UpdateGalleriesOnPreferencesEvent() {
// Merge in the permissions from |preferences_|. Afterwards,
// |known_galleries_| may contain galleries that no longer belong there,
// but the code below will put |known_galleries_| back in a consistent state.
@@ -441,7 +461,7 @@ void MediaGalleriesDialogController::UpdateGalleriesOnPreferencesEvent() {
for (GalleryPermissionsMap::iterator it = known_galleries_.begin();
it != known_galleries_.end();
++it) {
- GalleryPermission& gallery = it->second;
+ Entry& gallery = it->second;
for (GalleryPermissionsMap::iterator new_it = new_galleries_.begin();
new_it != new_galleries_.end();
++new_it) {
@@ -449,7 +469,7 @@ void MediaGalleriesDialogController::UpdateGalleriesOnPreferencesEvent() {
new_it->second.pref_info.device_id == gallery.pref_info.device_id) {
// Found duplicate entry. Get the existing permission from it and then
// remove it.
- gallery.allowed = new_it->second.allowed;
+ gallery.selected = new_it->second.selected;
new_galleries_to_remove.insert(new_it->first);
break;
}
@@ -465,47 +485,63 @@ void MediaGalleriesDialogController::UpdateGalleriesOnPreferencesEvent() {
dialog_->UpdateGalleries();
}
-void MediaGalleriesDialogController::UpdateGalleriesOnDeviceEvent(
+void MediaGalleriesPermissionController::UpdateGalleriesOnDeviceEvent(
const std::string& device_id) {
dialog_->UpdateGalleries();
}
-ui::MenuModel* MediaGalleriesDialogController::GetContextMenu(
+ui::MenuModel* MediaGalleriesPermissionController::GetContextMenu(
GalleryDialogId gallery_id) {
context_menu_->set_pref_id(gallery_id);
return context_menu_.get();
}
-GalleryDialogId MediaGalleriesDialogController::GetDialogId(
+GalleryDialogId MediaGalleriesPermissionController::GetDialogId(
MediaGalleryPrefId pref_id) {
return id_map_.GetDialogId(pref_id);
}
-Profile* MediaGalleriesDialogController::GetProfile() {
+MediaGalleryPrefId MediaGalleriesPermissionController::GetPrefId(
+ GalleryDialogId id) {
+ return id_map_.GetPrefId(id);
+}
+
+Profile* MediaGalleriesPermissionController::GetProfile() {
return Profile::FromBrowserContext(web_contents_->GetBrowserContext());
}
-MediaGalleriesDialogController::DialogIdMap::DialogIdMap()
+MediaGalleriesPermissionController::DialogIdMap::DialogIdMap()
: next_dialog_id_(1) {
+ // Dialog id of 0 is invalid, so fill the slot.
+ forward_mapping_.push_back(kInvalidMediaGalleryPrefId);
}
-MediaGalleriesDialogController::DialogIdMap::~DialogIdMap() {
+MediaGalleriesPermissionController::DialogIdMap::~DialogIdMap() {
}
GalleryDialogId
-MediaGalleriesDialogController::DialogIdMap::GetDialogId(
+MediaGalleriesPermissionController::DialogIdMap::GetDialogId(
MediaGalleryPrefId pref_id) {
std::map<GalleryDialogId, MediaGalleryPrefId>::const_iterator it =
- mapping_.find(pref_id);
- if (it != mapping_.end())
+ back_map_.find(pref_id);
+ if (it != back_map_.end())
return it->second;
GalleryDialogId result = next_dialog_id_++;
+ DCHECK_EQ(result, forward_mapping_.size());
+ forward_mapping_.push_back(pref_id);
if (pref_id != kInvalidMediaGalleryPrefId)
- mapping_[pref_id] = result;
+ back_map_[pref_id] = result;
return result;
}
+MediaGalleryPrefId
+MediaGalleriesPermissionController::DialogIdMap::GetPrefId(
+ GalleryDialogId id) {
+ DCHECK_LT(id, next_dialog_id_);
+ return forward_mapping_[id];
+}
+
// MediaGalleries dialog -------------------------------------------------------
MediaGalleriesDialog::~MediaGalleriesDialog() {}

Powered by Google App Engine
This is Rietveld 408576698