OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // GalleryWatchStateTracker implementation. | 5 // GalleryWatchStateTracker implementation. |
6 | 6 |
7 #include "chrome/browser/extensions/api/media_galleries_private/gallery_watch_st
ate_tracker.h" | 7 #include "chrome/browser/extensions/api/media_galleries_private/gallery_watch_st
ate_tracker.h" |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 #include "content/public/browser/notification_service.h" | 29 #include "content/public/browser/notification_service.h" |
30 | 30 |
31 namespace extensions { | 31 namespace extensions { |
32 | 32 |
33 namespace { | 33 namespace { |
34 | 34 |
35 // State store key to track the registered gallery watchers for the extensions. | 35 // State store key to track the registered gallery watchers for the extensions. |
36 const char kRegisteredGalleryWatchers[] = "media_gallery_watchers"; | 36 const char kRegisteredGalleryWatchers[] = "media_gallery_watchers"; |
37 | 37 |
38 // Converts the storage |list| value to WatchedGalleryIds. | 38 // Converts the storage |list| value to WatchedGalleryIds. |
39 chrome::MediaGalleryPrefIdSet WatchedGalleryIdsFromValue( | 39 MediaGalleryPrefIdSet WatchedGalleryIdsFromValue( |
40 const base::ListValue* list) { | 40 const base::ListValue* list) { |
41 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 41 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
42 chrome::MediaGalleryPrefIdSet gallery_ids; | 42 MediaGalleryPrefIdSet gallery_ids; |
43 std::string gallery_id_str; | 43 std::string gallery_id_str; |
44 for (size_t i = 0; i < list->GetSize(); ++i) { | 44 for (size_t i = 0; i < list->GetSize(); ++i) { |
45 if (!list->GetString(i, &gallery_id_str) || gallery_id_str.empty()) | 45 if (!list->GetString(i, &gallery_id_str) || gallery_id_str.empty()) |
46 continue; | 46 continue; |
47 chrome::MediaGalleryPrefId gallery_id; | 47 MediaGalleryPrefId gallery_id; |
48 if (base::StringToUint64(gallery_id_str, &gallery_id)) | 48 if (base::StringToUint64(gallery_id_str, &gallery_id)) |
49 gallery_ids.insert(gallery_id); | 49 gallery_ids.insert(gallery_id); |
50 } | 50 } |
51 return gallery_ids; | 51 return gallery_ids; |
52 } | 52 } |
53 | 53 |
54 // Converts WatchedGalleryIds to a storage list value. | 54 // Converts WatchedGalleryIds to a storage list value. |
55 scoped_ptr<base::ListValue> WatchedGalleryIdsToValue( | 55 scoped_ptr<base::ListValue> WatchedGalleryIdsToValue( |
56 const chrome::MediaGalleryPrefIdSet gallery_ids) { | 56 const MediaGalleryPrefIdSet gallery_ids) { |
57 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 57 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
58 scoped_ptr<base::ListValue> list(new base::ListValue()); | 58 scoped_ptr<base::ListValue> list(new base::ListValue()); |
59 for (chrome::MediaGalleryPrefIdSet::const_iterator id_iter = | 59 for (MediaGalleryPrefIdSet::const_iterator id_iter = gallery_ids.begin(); |
60 gallery_ids.begin(); | |
61 id_iter != gallery_ids.end(); ++id_iter) | 60 id_iter != gallery_ids.end(); ++id_iter) |
62 list->AppendString(base::Uint64ToString(*id_iter)); | 61 list->AppendString(base::Uint64ToString(*id_iter)); |
63 return list.Pass(); | 62 return list.Pass(); |
64 } | 63 } |
65 | 64 |
66 // Looks up an extension by ID. Does not include disabled extensions. | 65 // Looks up an extension by ID. Does not include disabled extensions. |
67 const Extension* GetExtensionById(Profile* profile, | 66 const Extension* GetExtensionById(Profile* profile, |
68 const std::string& extension_id) { | 67 const std::string& extension_id) { |
69 ExtensionService* service = profile->GetExtensionService(); | 68 ExtensionService* service = profile->GetExtensionService(); |
70 if (!service) | 69 if (!service) |
71 return NULL; | 70 return NULL; |
72 return service->GetExtensionById(extension_id, false); | 71 return service->GetExtensionById(extension_id, false); |
73 } | 72 } |
74 | 73 |
75 } // namespace | 74 } // namespace |
76 | 75 |
77 GalleryWatchStateTracker::GalleryWatchStateTracker(Profile* profile) | 76 GalleryWatchStateTracker::GalleryWatchStateTracker(Profile* profile) |
78 : profile_(profile) { | 77 : profile_(profile) { |
79 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 78 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
80 DCHECK(profile_); | 79 DCHECK(profile_); |
81 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, | 80 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |
82 content::Source<Profile>(profile_)); | 81 content::Source<Profile>(profile_)); |
83 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, | 82 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, |
84 content::Source<Profile>(profile_)); | 83 content::Source<Profile>(profile_)); |
85 chrome::MediaGalleriesPreferences* preferences = | 84 MediaGalleriesPreferences* preferences = |
86 g_browser_process->media_file_system_registry()->GetPreferences( | 85 g_browser_process->media_file_system_registry()->GetPreferences( |
87 profile); | 86 profile); |
88 preferences->AddGalleryChangeObserver(this); | 87 preferences->AddGalleryChangeObserver(this); |
89 } | 88 } |
90 | 89 |
91 GalleryWatchStateTracker::~GalleryWatchStateTracker() { | 90 GalleryWatchStateTracker::~GalleryWatchStateTracker() { |
92 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 91 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
93 chrome::MediaGalleriesPreferences* preferences = | 92 MediaGalleriesPreferences* preferences = |
94 g_browser_process->media_file_system_registry()->GetPreferences( | 93 g_browser_process->media_file_system_registry()->GetPreferences( |
95 profile_); | 94 profile_); |
96 preferences->RemoveGalleryChangeObserver(this); | 95 preferences->RemoveGalleryChangeObserver(this); |
97 } | 96 } |
98 | 97 |
99 // static | 98 // static |
100 GalleryWatchStateTracker* GalleryWatchStateTracker::GetForProfile( | 99 GalleryWatchStateTracker* GalleryWatchStateTracker::GetForProfile( |
101 Profile* profile) { | 100 Profile* profile) { |
102 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 101 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
103 #if defined(OS_WIN) | 102 #if defined(OS_WIN) |
104 // Gallery watch operation is supported only on windows. | 103 // Gallery watch operation is supported only on windows. |
105 // Please refer to crbug.com/144491 for more details. | 104 // Please refer to crbug.com/144491 for more details. |
106 DCHECK(profile); | 105 DCHECK(profile); |
107 MediaGalleriesPrivateAPI* private_api = | 106 MediaGalleriesPrivateAPI* private_api = |
108 MediaGalleriesPrivateAPI::Get(profile); | 107 MediaGalleriesPrivateAPI::Get(profile); |
109 if (!private_api) | 108 if (!private_api) |
110 return NULL; // In unit tests, we don't have a MediaGalleriesPrivateAPI. | 109 return NULL; // In unit tests, we don't have a MediaGalleriesPrivateAPI. |
111 return private_api->GetGalleryWatchStateTracker(); | 110 return private_api->GetGalleryWatchStateTracker(); |
112 #endif | 111 #endif |
113 return NULL; | 112 return NULL; |
114 } | 113 } |
115 | 114 |
116 void GalleryWatchStateTracker::OnGalleryChanged( | 115 void GalleryWatchStateTracker::OnGalleryChanged( |
117 chrome::MediaGalleriesPreferences* preferences, | 116 MediaGalleriesPreferences* preferences, |
118 const std::string& extension_id, | 117 const std::string& extension_id, |
119 chrome::MediaGalleryPrefId gallery_id, | 118 MediaGalleryPrefId gallery_id, |
120 bool has_permission) { | 119 bool has_permission) { |
121 if (extension_id.empty()) | 120 if (extension_id.empty()) |
122 return; | 121 return; |
123 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 122 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
124 // Granted gallery permission. | 123 // Granted gallery permission. |
125 if (has_permission && HasGalleryWatchInfo(extension_id, gallery_id, false)) { | 124 if (has_permission && HasGalleryWatchInfo(extension_id, gallery_id, false)) { |
126 SetupGalleryWatch(extension_id, gallery_id, preferences); | 125 SetupGalleryWatch(extension_id, gallery_id, preferences); |
127 return; | 126 return; |
128 } | 127 } |
129 | 128 |
130 // Revoked gallery permission. | 129 // Revoked gallery permission. |
131 if (!has_permission && HasGalleryWatchInfo(extension_id, gallery_id, true)) | 130 if (!has_permission && HasGalleryWatchInfo(extension_id, gallery_id, true)) |
132 RemoveGalleryWatch(extension_id, gallery_id, preferences); | 131 RemoveGalleryWatch(extension_id, gallery_id, preferences); |
133 } | 132 } |
134 | 133 |
135 chrome::MediaGalleryPrefIdSet | 134 MediaGalleryPrefIdSet |
136 GalleryWatchStateTracker::GetAllWatchedGalleryIDsForExtension( | 135 GalleryWatchStateTracker::GetAllWatchedGalleryIDsForExtension( |
137 const std::string& extension_id) const { | 136 const std::string& extension_id) const { |
138 chrome::MediaGalleryPrefIdSet gallery_ids; | 137 MediaGalleryPrefIdSet gallery_ids; |
139 WatchedExtensionsMap::const_iterator extension_id_iter = | 138 WatchedExtensionsMap::const_iterator extension_id_iter = |
140 watched_extensions_map_.find(extension_id); | 139 watched_extensions_map_.find(extension_id); |
141 if (extension_id_iter != watched_extensions_map_.end()) { | 140 if (extension_id_iter != watched_extensions_map_.end()) { |
142 for (WatchedGalleriesMap::const_iterator gallery_id_iter = | 141 for (WatchedGalleriesMap::const_iterator gallery_id_iter = |
143 extension_id_iter->second.begin(); | 142 extension_id_iter->second.begin(); |
144 gallery_id_iter != extension_id_iter->second.end(); | 143 gallery_id_iter != extension_id_iter->second.end(); |
145 ++gallery_id_iter) { | 144 ++gallery_id_iter) { |
146 gallery_ids.insert(gallery_id_iter->first); | 145 gallery_ids.insert(gallery_id_iter->first); |
147 } | 146 } |
148 } | 147 } |
149 return gallery_ids; | 148 return gallery_ids; |
150 } | 149 } |
151 | 150 |
152 void GalleryWatchStateTracker::RemoveAllGalleryWatchersForExtension( | 151 void GalleryWatchStateTracker::RemoveAllGalleryWatchersForExtension( |
153 const std::string& extension_id, | 152 const std::string& extension_id, |
154 chrome::MediaGalleriesPreferences* preferences) { | 153 MediaGalleriesPreferences* preferences) { |
155 WatchedExtensionsMap::iterator extension_id_iter = | 154 WatchedExtensionsMap::iterator extension_id_iter = |
156 watched_extensions_map_.find(extension_id); | 155 watched_extensions_map_.find(extension_id); |
157 if (extension_id_iter == watched_extensions_map_.end()) | 156 if (extension_id_iter == watched_extensions_map_.end()) |
158 return; | 157 return; |
159 const WatchedGalleriesMap& galleries = extension_id_iter->second; | 158 const WatchedGalleriesMap& galleries = extension_id_iter->second; |
160 for (WatchedGalleriesMap::const_iterator gallery_id_iter = galleries.begin(); | 159 for (WatchedGalleriesMap::const_iterator gallery_id_iter = galleries.begin(); |
161 gallery_id_iter != galleries.end(); ++gallery_id_iter) | 160 gallery_id_iter != galleries.end(); ++gallery_id_iter) |
162 RemoveGalleryWatch(extension_id, gallery_id_iter->second, preferences); | 161 RemoveGalleryWatch(extension_id, gallery_id_iter->second, preferences); |
163 watched_extensions_map_.erase(extension_id_iter); | 162 watched_extensions_map_.erase(extension_id_iter); |
164 WriteToStorage(extension_id); | 163 WriteToStorage(extension_id); |
165 } | 164 } |
166 | 165 |
167 void GalleryWatchStateTracker::OnGalleryWatchAdded( | 166 void GalleryWatchStateTracker::OnGalleryWatchAdded( |
168 const std::string& extension_id, | 167 const std::string& extension_id, |
169 chrome::MediaGalleryPrefId gallery_id) { | 168 MediaGalleryPrefId gallery_id) { |
170 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 169 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
171 bool update_storage = | 170 bool update_storage = |
172 AddWatchedGalleryIdInfoForExtension(extension_id, gallery_id); | 171 AddWatchedGalleryIdInfoForExtension(extension_id, gallery_id); |
173 if (update_storage) | 172 if (update_storage) |
174 WriteToStorage(extension_id); | 173 WriteToStorage(extension_id); |
175 } | 174 } |
176 | 175 |
177 void GalleryWatchStateTracker::OnGalleryWatchRemoved( | 176 void GalleryWatchStateTracker::OnGalleryWatchRemoved( |
178 const std::string& extension_id, | 177 const std::string& extension_id, |
179 chrome::MediaGalleryPrefId gallery_id) { | 178 MediaGalleryPrefId gallery_id) { |
180 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 179 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
181 if (!ContainsKey(watched_extensions_map_, extension_id)) | 180 if (!ContainsKey(watched_extensions_map_, extension_id)) |
182 return; | 181 return; |
183 watched_extensions_map_[extension_id].erase(gallery_id); | 182 watched_extensions_map_[extension_id].erase(gallery_id); |
184 if (watched_extensions_map_[extension_id].empty()) | 183 if (watched_extensions_map_[extension_id].empty()) |
185 watched_extensions_map_.erase(extension_id); | 184 watched_extensions_map_.erase(extension_id); |
186 WriteToStorage(extension_id); | 185 WriteToStorage(extension_id); |
187 } | 186 } |
188 | 187 |
189 void GalleryWatchStateTracker::Observe( | 188 void GalleryWatchStateTracker::Observe( |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 default: | 227 default: |
229 NOTREACHED(); | 228 NOTREACHED(); |
230 } | 229 } |
231 } | 230 } |
232 | 231 |
233 void GalleryWatchStateTracker::WriteToStorage(const std::string& extension_id) { | 232 void GalleryWatchStateTracker::WriteToStorage(const std::string& extension_id) { |
234 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 233 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
235 StateStore* storage = ExtensionSystem::Get(profile_)->state_store(); | 234 StateStore* storage = ExtensionSystem::Get(profile_)->state_store(); |
236 if (!storage) | 235 if (!storage) |
237 return; | 236 return; |
238 chrome::MediaGalleryPrefIdSet gallery_ids = | 237 MediaGalleryPrefIdSet gallery_ids = |
239 GetAllWatchedGalleryIDsForExtension(extension_id); | 238 GetAllWatchedGalleryIDsForExtension(extension_id); |
240 storage->SetExtensionValue( | 239 storage->SetExtensionValue( |
241 extension_id, | 240 extension_id, |
242 kRegisteredGalleryWatchers, | 241 kRegisteredGalleryWatchers, |
243 WatchedGalleryIdsToValue(gallery_ids).PassAs<base::Value>()); | 242 WatchedGalleryIdsToValue(gallery_ids).PassAs<base::Value>()); |
244 } | 243 } |
245 | 244 |
246 void GalleryWatchStateTracker::ReadFromStorage( | 245 void GalleryWatchStateTracker::ReadFromStorage( |
247 const std::string& extension_id, | 246 const std::string& extension_id, |
248 scoped_ptr<base::Value> value) { | 247 scoped_ptr<base::Value> value) { |
249 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 248 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
250 chrome::MediaGalleriesPreferences* preferences = | 249 MediaGalleriesPreferences* preferences = |
251 g_browser_process->media_file_system_registry()->GetPreferences(profile_); | 250 g_browser_process->media_file_system_registry()->GetPreferences(profile_); |
252 base::ListValue* list = NULL; | 251 base::ListValue* list = NULL; |
253 if (!value.get() || !value->GetAsList(&list)) | 252 if (!value.get() || !value->GetAsList(&list)) |
254 return; | 253 return; |
255 chrome::MediaGalleryPrefIdSet gallery_ids = WatchedGalleryIdsFromValue(list); | 254 MediaGalleryPrefIdSet gallery_ids = WatchedGalleryIdsFromValue(list); |
256 if (gallery_ids.empty()) | 255 if (gallery_ids.empty()) |
257 return; | 256 return; |
258 | 257 |
259 for (chrome::MediaGalleryPrefIdSet::const_iterator id_iter = | 258 for (MediaGalleryPrefIdSet::const_iterator id_iter = gallery_ids.begin(); |
260 gallery_ids.begin(); | |
261 id_iter != gallery_ids.end(); ++id_iter) { | 259 id_iter != gallery_ids.end(); ++id_iter) { |
262 watched_extensions_map_[extension_id][*id_iter] = false; | 260 watched_extensions_map_[extension_id][*id_iter] = false; |
263 SetupGalleryWatch(extension_id, *id_iter, preferences); | 261 SetupGalleryWatch(extension_id, *id_iter, preferences); |
264 } | 262 } |
265 } | 263 } |
266 | 264 |
267 void GalleryWatchStateTracker::SetupGalleryWatch( | 265 void GalleryWatchStateTracker::SetupGalleryWatch( |
268 const std::string& extension_id, | 266 const std::string& extension_id, |
269 chrome::MediaGalleryPrefId gallery_id, | 267 MediaGalleryPrefId gallery_id, |
270 chrome::MediaGalleriesPreferences* preferences) { | 268 MediaGalleriesPreferences* preferences) { |
271 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 269 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
272 const Extension* extension = GetExtensionById(profile_, extension_id); | 270 const Extension* extension = GetExtensionById(profile_, extension_id); |
273 DCHECK(extension); | 271 DCHECK(extension); |
274 base::FilePath gallery_file_path(preferences->LookUpGalleryPathForExtension( | 272 base::FilePath gallery_file_path(preferences->LookUpGalleryPathForExtension( |
275 gallery_id, extension, false)); | 273 gallery_id, extension, false)); |
276 if (gallery_file_path.empty()) | 274 if (gallery_file_path.empty()) |
277 return; | 275 return; |
278 MediaGalleriesPrivateEventRouter* router = | 276 MediaGalleriesPrivateEventRouter* router = |
279 MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter(); | 277 MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter(); |
280 DCHECK(router); | 278 DCHECK(router); |
281 content::BrowserThread::PostTaskAndReplyWithResult( | 279 content::BrowserThread::PostTaskAndReplyWithResult( |
282 content::BrowserThread::FILE, | 280 content::BrowserThread::FILE, |
283 FROM_HERE, | 281 FROM_HERE, |
284 base::Bind(&GalleryWatchManager::SetupGalleryWatch, | 282 base::Bind(&GalleryWatchManager::SetupGalleryWatch, |
285 profile_, | 283 profile_, |
286 gallery_id, | 284 gallery_id, |
287 gallery_file_path, | 285 gallery_file_path, |
288 extension_id, | 286 extension_id, |
289 router->AsWeakPtr()), | 287 router->AsWeakPtr()), |
290 base::Bind(&GalleryWatchStateTracker::HandleSetupGalleryWatchResponse, | 288 base::Bind(&GalleryWatchStateTracker::HandleSetupGalleryWatchResponse, |
291 AsWeakPtr(), | 289 AsWeakPtr(), |
292 extension_id, | 290 extension_id, |
293 gallery_id)); | 291 gallery_id)); |
294 } | 292 } |
295 | 293 |
296 void GalleryWatchStateTracker::RemoveGalleryWatch( | 294 void GalleryWatchStateTracker::RemoveGalleryWatch( |
297 const std::string& extension_id, | 295 const std::string& extension_id, |
298 chrome::MediaGalleryPrefId gallery_id, | 296 MediaGalleryPrefId gallery_id, |
299 chrome::MediaGalleriesPreferences* preferences) { | 297 MediaGalleriesPreferences* preferences) { |
300 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 298 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
301 const Extension* extension = GetExtensionById(profile_, extension_id); | 299 const Extension* extension = GetExtensionById(profile_, extension_id); |
302 DCHECK(extension); | 300 DCHECK(extension); |
303 base::FilePath gallery_file_path(preferences->LookUpGalleryPathForExtension( | 301 base::FilePath gallery_file_path(preferences->LookUpGalleryPathForExtension( |
304 gallery_id, extension, true)); | 302 gallery_id, extension, true)); |
305 if (gallery_file_path.empty()) | 303 if (gallery_file_path.empty()) |
306 return; | 304 return; |
307 content::BrowserThread::PostTask( | 305 content::BrowserThread::PostTask( |
308 content::BrowserThread::FILE, FROM_HERE, | 306 content::BrowserThread::FILE, FROM_HERE, |
309 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, | 307 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, |
310 profile_, | 308 profile_, |
311 gallery_file_path, | 309 gallery_file_path, |
312 extension_id)); | 310 extension_id)); |
313 watched_extensions_map_[extension_id][gallery_id] = false; | 311 watched_extensions_map_[extension_id][gallery_id] = false; |
314 } | 312 } |
315 | 313 |
316 bool GalleryWatchStateTracker::HasGalleryWatchInfo( | 314 bool GalleryWatchStateTracker::HasGalleryWatchInfo( |
317 const std::string& extension_id, | 315 const std::string& extension_id, |
318 chrome::MediaGalleryPrefId gallery_id, | 316 MediaGalleryPrefId gallery_id, |
319 bool has_active_watcher) { | 317 bool has_active_watcher) { |
320 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 318 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
321 return (ContainsKey(watched_extensions_map_, extension_id) && | 319 return (ContainsKey(watched_extensions_map_, extension_id) && |
322 ContainsKey(watched_extensions_map_[extension_id], gallery_id) && | 320 ContainsKey(watched_extensions_map_[extension_id], gallery_id) && |
323 watched_extensions_map_[extension_id][gallery_id] == | 321 watched_extensions_map_[extension_id][gallery_id] == |
324 has_active_watcher); | 322 has_active_watcher); |
325 } | 323 } |
326 | 324 |
327 void GalleryWatchStateTracker::HandleSetupGalleryWatchResponse( | 325 void GalleryWatchStateTracker::HandleSetupGalleryWatchResponse( |
328 const std::string& extension_id, | 326 const std::string& extension_id, |
329 chrome::MediaGalleryPrefId gallery_id, | 327 MediaGalleryPrefId gallery_id, |
330 bool success) { | 328 bool success) { |
331 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 329 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
332 if (!success) | 330 if (!success) |
333 return; // Failed to setup the gallery watch for the given extension. | 331 return; // Failed to setup the gallery watch for the given extension. |
334 AddWatchedGalleryIdInfoForExtension(extension_id, gallery_id); | 332 AddWatchedGalleryIdInfoForExtension(extension_id, gallery_id); |
335 } | 333 } |
336 | 334 |
337 bool GalleryWatchStateTracker::AddWatchedGalleryIdInfoForExtension( | 335 bool GalleryWatchStateTracker::AddWatchedGalleryIdInfoForExtension( |
338 const std::string& extension_id, | 336 const std::string& extension_id, |
339 chrome::MediaGalleryPrefId gallery_id) { | 337 MediaGalleryPrefId gallery_id) { |
340 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 338 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
341 if (HasGalleryWatchInfo(extension_id, gallery_id, true)) | 339 if (HasGalleryWatchInfo(extension_id, gallery_id, true)) |
342 return false; | 340 return false; |
343 watched_extensions_map_[extension_id][gallery_id] = true; | 341 watched_extensions_map_[extension_id][gallery_id] = true; |
344 return true; | 342 return true; |
345 } | 343 } |
346 | 344 |
347 } // namespace extensions | 345 } // namespace extensions |
OLD | NEW |