OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_PERMISSION_CONTROLLER_H_ | 5 #ifndef CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_PERMISSION_CONTROLLER_H_ |
6 #define CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_PERMISSION_CONTROLLER_H_ | 6 #define CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_PERMISSION_CONTROLLER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 const extensions::Extension& extension, | 84 const extensions::Extension& extension, |
85 MediaGalleriesPreferences* preferences, | 85 MediaGalleriesPreferences* preferences, |
86 const CreateDialogCallback& create_dialog_callback, | 86 const CreateDialogCallback& create_dialog_callback, |
87 const base::Closure& on_finish); | 87 const base::Closure& on_finish); |
88 | 88 |
89 virtual ~MediaGalleriesPermissionController(); | 89 virtual ~MediaGalleriesPermissionController(); |
90 | 90 |
91 private: | 91 private: |
92 // This type keeps track of media galleries already known to the prefs system. | 92 // This type keeps track of media galleries already known to the prefs system. |
93 typedef std::map<GalleryDialogId, Entry> GalleryPermissionsMap; | 93 typedef std::map<GalleryDialogId, Entry> GalleryPermissionsMap; |
| 94 typedef std::map<GalleryDialogId, bool /*permitted*/> ToggledGalleryMap; |
94 | 95 |
95 class DialogIdMap { | 96 class DialogIdMap { |
96 public: | 97 public: |
97 DialogIdMap(); | 98 DialogIdMap(); |
98 ~DialogIdMap(); | 99 ~DialogIdMap(); |
99 GalleryDialogId GetDialogId(MediaGalleryPrefId pref_id); | 100 GalleryDialogId GetDialogId(MediaGalleryPrefId pref_id); |
100 MediaGalleryPrefId GetPrefId(GalleryDialogId id); | 101 MediaGalleryPrefId GetPrefId(GalleryDialogId id) const; |
101 | 102 |
102 private: | 103 private: |
103 GalleryDialogId next_dialog_id_; | 104 GalleryDialogId next_dialog_id_; |
104 std::map<MediaGalleryPrefId, GalleryDialogId> back_map_; | 105 std::map<MediaGalleryPrefId, GalleryDialogId> back_map_; |
105 std::vector<MediaGalleryPrefId> forward_mapping_; | 106 std::vector<MediaGalleryPrefId> forward_mapping_; |
106 DISALLOW_COPY_AND_ASSIGN(DialogIdMap); | 107 DISALLOW_COPY_AND_ASSIGN(DialogIdMap); |
107 }; | 108 }; |
108 | 109 |
109 | 110 |
110 // Bottom half of constructor -- called when |preferences_| is initialized. | 111 // Bottom half of constructor -- called when |preferences_| is initialized. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 | 159 |
159 // Updates the model and view when |preferences_| changes. Some of the | 160 // Updates the model and view when |preferences_| changes. Some of the |
160 // possible changes includes a gallery getting blacklisted, or a new | 161 // possible changes includes a gallery getting blacklisted, or a new |
161 // auto detected gallery becoming available. | 162 // auto detected gallery becoming available. |
162 void UpdateGalleriesOnPreferencesEvent(); | 163 void UpdateGalleriesOnPreferencesEvent(); |
163 | 164 |
164 // Updates the model and view when a device is attached or detached. | 165 // Updates the model and view when a device is attached or detached. |
165 void UpdateGalleriesOnDeviceEvent(const std::string& device_id); | 166 void UpdateGalleriesOnDeviceEvent(const std::string& device_id); |
166 | 167 |
167 GalleryDialogId GetDialogId(MediaGalleryPrefId pref_id); | 168 GalleryDialogId GetDialogId(MediaGalleryPrefId pref_id); |
168 MediaGalleryPrefId GetPrefId(GalleryDialogId id); | 169 MediaGalleryPrefId GetPrefId(GalleryDialogId id) const; |
169 | 170 |
170 Profile* GetProfile(); | 171 Profile* GetProfile(); |
171 | 172 |
172 // The web contents from which the request originated. | 173 // The web contents from which the request originated. |
173 content::WebContents* web_contents_; | 174 content::WebContents* web_contents_; |
174 | 175 |
175 // This is just a reference, but it's assumed that it won't become invalid | 176 // This is just a reference, but it's assumed that it won't become invalid |
176 // while the dialog is showing. | 177 // while the dialog is showing. |
177 const extensions::Extension* extension_; | 178 const extensions::Extension* extension_; |
178 | 179 |
179 // Mapping between pref ids and dialog ids. | 180 // Mapping between pref ids and dialog ids. |
180 DialogIdMap id_map_; | 181 DialogIdMap id_map_; |
181 | 182 |
182 // This map excludes those galleries which have been blacklisted; it only | 183 // This map excludes those galleries which have been blacklisted; it only |
183 // counts active known galleries. | 184 // counts active known galleries. |
184 GalleryPermissionsMap known_galleries_; | 185 GalleryPermissionsMap known_galleries_; |
185 | 186 |
186 // Galleries in |known_galleries_| that the user have toggled. | 187 // Galleries in |known_galleries_| that the user have toggled. |
187 std::set<GalleryDialogId> toggled_galleries_; | 188 ToggledGalleryMap toggled_galleries_; |
| 189 |
| 190 // The current set of permitted galleries (according to prefs). |
| 191 MediaGalleryPrefIdSet pref_permitted_galleries_; |
188 | 192 |
189 // Map of new galleries the user added, but have not saved. This list should | 193 // Map of new galleries the user added, but have not saved. This list should |
190 // never overlap with |known_galleries_|. | 194 // never overlap with |known_galleries_|. |
191 GalleryPermissionsMap new_galleries_; | 195 GalleryPermissionsMap new_galleries_; |
192 | 196 |
193 // Galleries in |known_galleries_| that the user has forgotten. | 197 // Galleries in |known_galleries_| that the user has forgotten. |
194 std::set<GalleryDialogId> forgotten_galleries_; | 198 std::set<GalleryDialogId> forgotten_galleries_; |
195 | 199 |
196 // Callback to run when the dialog closes. | 200 // Callback to run when the dialog closes. |
197 base::Closure on_finish_; | 201 base::Closure on_finish_; |
198 | 202 |
199 // The model that tracks galleries and extensions' permissions. | 203 // The model that tracks galleries and extensions' permissions. |
200 // This is the authoritative source for gallery information. | 204 // This is the authoritative source for gallery information. |
201 MediaGalleriesPreferences* preferences_; | 205 MediaGalleriesPreferences* preferences_; |
202 | 206 |
203 // The view that's showing. | 207 // The view that's showing. |
204 scoped_ptr<MediaGalleriesDialog> dialog_; | 208 scoped_ptr<MediaGalleriesDialog> dialog_; |
205 | 209 |
206 scoped_refptr<ui::SelectFileDialog> select_folder_dialog_; | 210 scoped_refptr<ui::SelectFileDialog> select_folder_dialog_; |
207 | 211 |
208 scoped_ptr<MediaGalleryContextMenu> context_menu_; | 212 scoped_ptr<MediaGalleryContextMenu> context_menu_; |
209 | 213 |
210 // Creates the dialog. Only changed for unit tests. | 214 // Creates the dialog. Only changed for unit tests. |
211 CreateDialogCallback create_dialog_callback_; | 215 CreateDialogCallback create_dialog_callback_; |
212 | 216 |
213 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesPermissionController); | 217 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesPermissionController); |
214 }; | 218 }; |
215 | 219 |
216 #endif // CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_PERMISSION_CONTROLLER_
H_ | 220 #endif // CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_PERMISSION_CONTROLLER_
H_ |
OLD | NEW |