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

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

Issue 310383004: Make a controller interface for media galleries dialogs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase 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.h
diff --git a/chrome/browser/media_galleries/media_galleries_dialog_controller.h b/chrome/browser/media_galleries/media_galleries_permission_controller.h
similarity index 65%
copy from chrome/browser/media_galleries/media_galleries_dialog_controller.h
copy to chrome/browser/media_galleries/media_galleries_permission_controller.h
index 14abc3af3fd9f33d54e2fff8eb28001487783c41..534be71d9e88e4b814e1af213a519e983226a851 100644
--- a/chrome/browser/media_galleries/media_galleries_dialog_controller.h
+++ b/chrome/browser/media_galleries/media_galleries_permission_controller.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_DIALOG_CONTROLLER_H_
-#define CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_DIALOG_CONTROLLER_H_
+#ifndef CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_PERMISSION_CONTROLLER_H_
+#define CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_PERMISSION_CONTROLLER_H_
#include <map>
#include <string>
@@ -12,6 +12,7 @@
#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
#include "base/strings/string16.h"
+#include "chrome/browser/media_galleries/media_galleries_dialog_controller.h"
#include "chrome/browser/media_galleries/media_galleries_preferences.h"
#include "components/storage_monitor/removable_storage_observer.h"
#include "ui/gfx/native_widget_types.h"
@@ -42,113 +43,66 @@ class Profile;
// used, the GalleryDialogId type is used where fake ids are needed.
typedef MediaGalleryPrefId GalleryDialogId;
-// The view.
-class MediaGalleriesDialog {
- public:
- virtual ~MediaGalleriesDialog();
-
- // Tell the dialog to update its display list of galleries.
- virtual void UpdateGalleries() = 0;
-
- // Constructs a platform-specific dialog owned and controlled by |controller|.
- static MediaGalleriesDialog* Create(
- MediaGalleriesDialogController* controller);
-};
-
-// The controller is responsible for handling the logic of the dialog and
-// interfacing with the model (i.e., MediaGalleriesPreferences). It shows
-// the dialog and owns itself.
-class MediaGalleriesDialogController
- : public ui::SelectFileDialog::Listener,
+class MediaGalleriesPermissionController
+ : public MediaGalleriesDialogController,
+ public ui::SelectFileDialog::Listener,
public storage_monitor::RemovableStorageObserver,
public MediaGalleriesPreferences::GalleryChangeObserver {
public:
- struct GalleryPermission {
- GalleryPermission(GalleryDialogId gallery_id,
- const MediaGalleryPrefInfo& pref_info,
- bool allowed)
- : gallery_id(gallery_id),
- pref_info(pref_info),
- allowed(allowed) {
- }
- GalleryPermission() {}
-
- GalleryDialogId gallery_id;
- MediaGalleryPrefInfo pref_info;
- bool allowed;
- };
-
- typedef std::vector<GalleryPermission> GalleryPermissionsVector;
-
// The constructor creates a dialog controller which owns itself.
- MediaGalleriesDialogController(content::WebContents* web_contents,
- const extensions::Extension& extension,
- const base::Closure& on_finish);
-
- // The title of the dialog view.
- base::string16 GetHeader() const;
-
- // Explanatory text directly below the title.
- base::string16 GetSubtext() const;
-
- // Header for unattached devices part of the dialog.
- base::string16 GetUnattachedLocationsHeader() const;
-
- // Initial state of whether the dialog's confirmation button will be enabled.
- bool IsAcceptAllowed() const;
-
- // Get the set of permissions to attached galleries.
- virtual GalleryPermissionsVector AttachedPermissions() const;
-
- // Get the set of permissions to unattached galleries.
- virtual GalleryPermissionsVector UnattachedPermissions() const;
-
- // Called when the add-folder button in the dialog is clicked.
- virtual void OnAddFolderClicked();
-
- // A checkbox beside a gallery permission was checked. The full set
- // of gallery permissions checkbox settings is sent on every checkbox toggle.
- virtual void DidToggleGallery(GalleryDialogId gallery_id, bool enabled);
-
- // The forget command in the context menu was selected.
- virtual void DidForgetGallery(GalleryDialogId gallery_id);
-
- // The dialog is being deleted.
- virtual void DialogFinished(bool accepted);
-
- virtual content::WebContents* web_contents();
-
- ui::MenuModel* GetContextMenu(GalleryDialogId gallery_id);
+ MediaGalleriesPermissionController(content::WebContents* web_contents,
+ const extensions::Extension& extension,
+ const base::Closure& on_finish);
+
+ // MediaGalleriesDialogController implementation.
+ virtual base::string16 GetHeader() const OVERRIDE;
+ virtual base::string16 GetSubtext() const OVERRIDE;
+ virtual bool IsAcceptAllowed() const OVERRIDE;
+ virtual bool ShouldShowFolderViewer(const Entry& entry) const OVERRIDE;
+ virtual std::vector<base::string16> GetSectionHeaders() const OVERRIDE;
+ virtual Entries GetSectionEntries(size_t index) const OVERRIDE;
+ // Auxiliary button for this dialog is the 'Add Folder' button.
+ virtual base::string16 GetAuxiliaryButtonText() const OVERRIDE;
+ virtual void DidClickAuxiliaryButton() OVERRIDE;
+ virtual void DidToggleEntry(GalleryDialogId gallery_id,
+ bool selected) OVERRIDE;
+ virtual void DidClickOpenFolderViewer(GalleryDialogId gallery_id) OVERRIDE;
+ virtual void DidForgetEntry(GalleryDialogId gallery_id) OVERRIDE;
+ virtual base::string16 GetAcceptButtonText() const OVERRIDE;
+ virtual void DialogFinished(bool accepted) OVERRIDE;
+ virtual ui::MenuModel* GetContextMenu(GalleryDialogId gallery_id) OVERRIDE;
+ virtual content::WebContents* WebContents() OVERRIDE;
protected:
- friend class MediaGalleriesDialogControllerTest;
+ friend class MediaGalleriesPermissionControllerTest;
typedef base::Callback<MediaGalleriesDialog* (
MediaGalleriesDialogController*)> CreateDialogCallback;
// For use with tests.
- MediaGalleriesDialogController(
+ MediaGalleriesPermissionController(
const extensions::Extension& extension,
MediaGalleriesPreferences* preferences,
const CreateDialogCallback& create_dialog_callback,
const base::Closure& on_finish);
- virtual ~MediaGalleriesDialogController();
+ virtual ~MediaGalleriesPermissionController();
private:
// This type keeps track of media galleries already known to the prefs system.
- typedef std::map<GalleryDialogId, GalleryPermission>
- GalleryPermissionsMap;
+ typedef std::map<GalleryDialogId, Entry> GalleryPermissionsMap;
class DialogIdMap {
public:
DialogIdMap();
~DialogIdMap();
GalleryDialogId GetDialogId(MediaGalleryPrefId pref_id);
+ MediaGalleryPrefId GetPrefId(GalleryDialogId id);
private:
GalleryDialogId next_dialog_id_;
- std::map<GalleryDialogId, MediaGalleryPrefId> mapping_;
+ std::map<MediaGalleryPrefId, GalleryDialogId> back_map_;
+ std::vector<MediaGalleryPrefId> forward_mapping_;
DISALLOW_COPY_AND_ASSIGN(DialogIdMap);
};
@@ -210,11 +164,8 @@ class MediaGalleriesDialogController
// Updates the model and view when a device is attached or detached.
void UpdateGalleriesOnDeviceEvent(const std::string& device_id);
- // Return a sorted vector of either attached or unattached gallery
- // permissions.
- GalleryPermissionsVector FillPermissions(bool attached) const;
-
GalleryDialogId GetDialogId(MediaGalleryPrefId pref_id);
+ MediaGalleryPrefId GetPrefId(GalleryDialogId id);
Profile* GetProfile();
@@ -259,7 +210,7 @@ class MediaGalleriesDialogController
// Creates the dialog. Only changed for unit tests.
CreateDialogCallback create_dialog_callback_;
- DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogController);
+ DISALLOW_COPY_AND_ASSIGN(MediaGalleriesPermissionController);
};
-#endif // CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_DIALOG_CONTROLLER_H_
+#endif // CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_PERMISSION_CONTROLLER_H_

Powered by Google App Engine
This is Rietveld 408576698