Index: chrome/browser/media_galleries/media_galleries_dialog_controller.cc |
diff --git a/chrome/browser/media_galleries/media_galleries_dialog_controller.cc b/chrome/browser/media_galleries/media_galleries_dialog_controller.cc |
index e4202eb976fd7a6f45bfd004678d2f049835b53a..5e9b259cd096d4428cab6af314f629f1d6146b50 100644 |
--- a/chrome/browser/media_galleries/media_galleries_dialog_controller.cc |
+++ b/chrome/browser/media_galleries/media_galleries_dialog_controller.cc |
@@ -22,6 +22,7 @@ |
#include "content/public/browser/web_contents_view.h" |
#include "grit/generated_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
+#include "ui/base/models/simple_menu_model.h" |
#include "ui/base/text/bytes_formatting.h" |
using extensions::APIPermission; |
@@ -44,6 +45,40 @@ bool GalleriesVectorComparator( |
} // namespace |
+class GalleryContextMenuModel : public ui::SimpleMenuModel::Delegate { |
+ public: |
+ explicit GalleryContextMenuModel(MediaGalleriesDialogController* controller) |
+ : controller_(controller), id_(kInvalidMediaGalleryPrefId) {} |
+ virtual ~GalleryContextMenuModel() {} |
+ |
+ void set_media_gallery_pref_id(MediaGalleryPrefId id) { |
+ id_ = id; |
+ } |
+ |
+ virtual bool IsCommandIdChecked(int command_id) const OVERRIDE { |
+ return false; |
+ } |
+ virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE { |
+ return true; |
+ } |
+ virtual bool IsCommandIdVisible(int command_id) const OVERRIDE { |
+ return true; |
+ } |
+ |
+ virtual bool GetAcceleratorForCommandId( |
+ int command_id, ui::Accelerator* accelerator) OVERRIDE { |
+ return false; |
+ } |
+ |
+ virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE { |
+ controller_->DidForgetGallery(id_); |
+ } |
+ |
+ private: |
+ MediaGalleriesDialogController* controller_; |
+ MediaGalleryPrefId id_; |
+}; |
+ |
MediaGalleriesDialogController::MediaGalleriesDialogController( |
content::WebContents* web_contents, |
const Extension& extension, |
@@ -60,6 +95,13 @@ MediaGalleriesDialogController::MediaGalleriesDialogController( |
preferences_->EnsureInitialized( |
base::Bind(&MediaGalleriesDialogController::OnPreferencesInitialized, |
base::Unretained(this))); |
+ |
+ gallery_menu_model_.reset(new GalleryContextMenuModel(this)); |
+ ui::SimpleMenuModel* menu_model = |
+ new ui::SimpleMenuModel(gallery_menu_model_.get()); |
+ menu_model->AddItem( |
+ 1, l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_DIALOG_DELETE)); |
+ context_menu_model_.reset(menu_model); |
} |
void MediaGalleriesDialogController::OnPreferencesInitialized() { |
@@ -218,6 +260,12 @@ void MediaGalleriesDialogController::DidToggleNewGallery( |
} |
} |
+void MediaGalleriesDialogController::DidForgetGallery( |
+ MediaGalleryPrefId pref_id) { |
+ DCHECK(preferences_); |
+ preferences_->ForgetGalleryById(pref_id); |
+} |
+ |
void MediaGalleriesDialogController::DialogFinished(bool accepted) { |
// The dialog has finished, so there is no need to watch for more updates |
// from |preferences_|. Do this here and not in the dtor since this is the |
@@ -412,6 +460,12 @@ void MediaGalleriesDialogController::UpdateGalleriesOnDeviceEvent( |
dialog_->UpdateGalleries(); |
} |
+ui::MenuModel* MediaGalleriesDialogController::GetContextMenuModel( |
+ MediaGalleryPrefId id) { |
+ gallery_menu_model_->set_media_gallery_pref_id(id); |
+ return context_menu_model_.get(); |
+} |
+ |
// MediaGalleries dialog ------------------------------------------------------- |
MediaGalleriesDialog::~MediaGalleriesDialog() {} |