| 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 namespace extensions { | 29 namespace extensions { |
| 30 | 30 |
| 31 namespace { | 31 namespace { |
| 32 | 32 |
| 33 // State store key to track the registered gallery watchers for the extensions. | 33 // State store key to track the registered gallery watchers for the extensions. |
| 34 const char kRegisteredGalleryWatchers[] = "media_gallery_watchers"; | 34 const char kRegisteredGalleryWatchers[] = "media_gallery_watchers"; |
| 35 | 35 |
| 36 // Converts the storage |list| value to WatchedGalleryIds. | 36 // Converts the storage |list| value to WatchedGalleryIds. |
| 37 MediaGalleryPrefIdSet WatchedGalleryIdsFromValue( | 37 MediaGalleryPrefIdSet WatchedGalleryIdsFromValue( |
| 38 const base::ListValue* list) { | 38 const base::ListValue* list) { |
| 39 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 39 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 40 MediaGalleryPrefIdSet gallery_ids; | 40 MediaGalleryPrefIdSet gallery_ids; |
| 41 std::string gallery_id_str; | 41 std::string gallery_id_str; |
| 42 for (size_t i = 0; i < list->GetSize(); ++i) { | 42 for (size_t i = 0; i < list->GetSize(); ++i) { |
| 43 if (!list->GetString(i, &gallery_id_str) || gallery_id_str.empty()) | 43 if (!list->GetString(i, &gallery_id_str) || gallery_id_str.empty()) |
| 44 continue; | 44 continue; |
| 45 MediaGalleryPrefId gallery_id; | 45 MediaGalleryPrefId gallery_id; |
| 46 if (base::StringToUint64(gallery_id_str, &gallery_id)) | 46 if (base::StringToUint64(gallery_id_str, &gallery_id)) |
| 47 gallery_ids.insert(gallery_id); | 47 gallery_ids.insert(gallery_id); |
| 48 } | 48 } |
| 49 return gallery_ids; | 49 return gallery_ids; |
| 50 } | 50 } |
| 51 | 51 |
| 52 // Converts WatchedGalleryIds to a storage list value. | 52 // Converts WatchedGalleryIds to a storage list value. |
| 53 scoped_ptr<base::ListValue> WatchedGalleryIdsToValue( | 53 scoped_ptr<base::ListValue> WatchedGalleryIdsToValue( |
| 54 const MediaGalleryPrefIdSet gallery_ids) { | 54 const MediaGalleryPrefIdSet gallery_ids) { |
| 55 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 55 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 56 scoped_ptr<base::ListValue> list(new base::ListValue()); | 56 scoped_ptr<base::ListValue> list(new base::ListValue()); |
| 57 for (MediaGalleryPrefIdSet::const_iterator id_iter = gallery_ids.begin(); | 57 for (MediaGalleryPrefIdSet::const_iterator id_iter = gallery_ids.begin(); |
| 58 id_iter != gallery_ids.end(); ++id_iter) | 58 id_iter != gallery_ids.end(); ++id_iter) |
| 59 list->AppendString(base::Uint64ToString(*id_iter)); | 59 list->AppendString(base::Uint64ToString(*id_iter)); |
| 60 return list.Pass(); | 60 return list.Pass(); |
| 61 } | 61 } |
| 62 | 62 |
| 63 // Looks up an extension by ID. Does not include disabled extensions. | 63 // Looks up an extension by ID. Does not include disabled extensions. |
| 64 const Extension* GetExtensionById(Profile* profile, | 64 const Extension* GetExtensionById(Profile* profile, |
| 65 const std::string& extension_id) { | 65 const std::string& extension_id) { |
| 66 ExtensionService* service = profile->GetExtensionService(); | 66 ExtensionService* service = profile->GetExtensionService(); |
| 67 if (!service) | 67 if (!service) |
| 68 return NULL; | 68 return NULL; |
| 69 return service->GetExtensionById(extension_id, false); | 69 return service->GetExtensionById(extension_id, false); |
| 70 } | 70 } |
| 71 | 71 |
| 72 } // namespace | 72 } // namespace |
| 73 | 73 |
| 74 GalleryWatchStateTracker::GalleryWatchStateTracker(Profile* profile) | 74 GalleryWatchStateTracker::GalleryWatchStateTracker(Profile* profile) |
| 75 : profile_(profile), | 75 : profile_(profile), |
| 76 scoped_extension_registry_observer_(this) { | 76 scoped_extension_registry_observer_(this) { |
| 77 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 77 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 78 DCHECK(profile_); | 78 DCHECK(profile_); |
| 79 scoped_extension_registry_observer_.Add(ExtensionRegistry::Get(profile_)); | 79 scoped_extension_registry_observer_.Add(ExtensionRegistry::Get(profile_)); |
| 80 MediaGalleriesPreferences* preferences = | 80 MediaGalleriesPreferences* preferences = |
| 81 g_browser_process->media_file_system_registry()->GetPreferences(profile); | 81 g_browser_process->media_file_system_registry()->GetPreferences(profile); |
| 82 preferences->AddGalleryChangeObserver(this); | 82 preferences->AddGalleryChangeObserver(this); |
| 83 } | 83 } |
| 84 | 84 |
| 85 GalleryWatchStateTracker::~GalleryWatchStateTracker() { | 85 GalleryWatchStateTracker::~GalleryWatchStateTracker() { |
| 86 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 86 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 87 MediaGalleriesPreferences* preferences = | 87 MediaGalleriesPreferences* preferences = |
| 88 g_browser_process->media_file_system_registry()->GetPreferences(profile_); | 88 g_browser_process->media_file_system_registry()->GetPreferences(profile_); |
| 89 preferences->RemoveGalleryChangeObserver(this); | 89 preferences->RemoveGalleryChangeObserver(this); |
| 90 } | 90 } |
| 91 | 91 |
| 92 // static | 92 // static |
| 93 GalleryWatchStateTracker* GalleryWatchStateTracker::GetForProfile( | 93 GalleryWatchStateTracker* GalleryWatchStateTracker::GetForProfile( |
| 94 Profile* profile) { | 94 Profile* profile) { |
| 95 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 95 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 96 #if defined(OS_WIN) | 96 #if defined(OS_WIN) |
| 97 // Gallery watch operation is supported only on windows. | 97 // Gallery watch operation is supported only on windows. |
| 98 // Please refer to crbug.com/144491 for more details. | 98 // Please refer to crbug.com/144491 for more details. |
| 99 DCHECK(profile); | 99 DCHECK(profile); |
| 100 MediaGalleriesPrivateAPI* private_api = | 100 MediaGalleriesPrivateAPI* private_api = |
| 101 MediaGalleriesPrivateAPI::Get(profile); | 101 MediaGalleriesPrivateAPI::Get(profile); |
| 102 // In unit tests, we don't have a MediaGalleriesPrivateAPI. | 102 // In unit tests, we don't have a MediaGalleriesPrivateAPI. |
| 103 if (private_api) | 103 if (private_api) |
| 104 return private_api->GetGalleryWatchStateTracker(); | 104 return private_api->GetGalleryWatchStateTracker(); |
| 105 #endif | 105 #endif |
| 106 return NULL; | 106 return NULL; |
| 107 } | 107 } |
| 108 | 108 |
| 109 void GalleryWatchStateTracker::OnPermissionAdded( | 109 void GalleryWatchStateTracker::OnPermissionAdded( |
| 110 MediaGalleriesPreferences* preferences, | 110 MediaGalleriesPreferences* preferences, |
| 111 const std::string& extension_id, | 111 const std::string& extension_id, |
| 112 MediaGalleryPrefId gallery_id) { | 112 MediaGalleryPrefId gallery_id) { |
| 113 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 113 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 114 // Granted gallery permission. | 114 // Granted gallery permission. |
| 115 if (HasGalleryWatchInfo(extension_id, gallery_id, false)) | 115 if (HasGalleryWatchInfo(extension_id, gallery_id, false)) |
| 116 SetupGalleryWatch(extension_id, gallery_id, preferences); | 116 SetupGalleryWatch(extension_id, gallery_id, preferences); |
| 117 } | 117 } |
| 118 | 118 |
| 119 void GalleryWatchStateTracker::OnPermissionRemoved( | 119 void GalleryWatchStateTracker::OnPermissionRemoved( |
| 120 MediaGalleriesPreferences* preferences, | 120 MediaGalleriesPreferences* preferences, |
| 121 const std::string& extension_id, | 121 const std::string& extension_id, |
| 122 MediaGalleryPrefId gallery_id) { | 122 MediaGalleryPrefId gallery_id) { |
| 123 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 123 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 124 // Revoked gallery permission. | 124 // Revoked gallery permission. |
| 125 if (HasGalleryWatchInfo(extension_id, gallery_id, true)) | 125 if (HasGalleryWatchInfo(extension_id, gallery_id, true)) |
| 126 RemoveGalleryWatch(extension_id, gallery_id, preferences); | 126 RemoveGalleryWatch(extension_id, gallery_id, preferences); |
| 127 } | 127 } |
| 128 | 128 |
| 129 void GalleryWatchStateTracker::OnGalleryRemoved(MediaGalleriesPreferences* pref, | 129 void GalleryWatchStateTracker::OnGalleryRemoved(MediaGalleriesPreferences* pref, |
| 130 MediaGalleryPrefId gallery_id) { | 130 MediaGalleryPrefId gallery_id) { |
| 131 for (WatchedExtensionsMap::const_iterator it = | 131 for (WatchedExtensionsMap::const_iterator it = |
| 132 watched_extensions_map_.begin(); | 132 watched_extensions_map_.begin(); |
| 133 it != watched_extensions_map_.end(); | 133 it != watched_extensions_map_.end(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 for (WatchedGalleriesMap::const_iterator gallery_id_iter = galleries.begin(); | 165 for (WatchedGalleriesMap::const_iterator gallery_id_iter = galleries.begin(); |
| 166 gallery_id_iter != galleries.end(); ++gallery_id_iter) | 166 gallery_id_iter != galleries.end(); ++gallery_id_iter) |
| 167 RemoveGalleryWatch(extension_id, gallery_id_iter->second, preferences); | 167 RemoveGalleryWatch(extension_id, gallery_id_iter->second, preferences); |
| 168 watched_extensions_map_.erase(extension_id_iter); | 168 watched_extensions_map_.erase(extension_id_iter); |
| 169 WriteToStorage(extension_id); | 169 WriteToStorage(extension_id); |
| 170 } | 170 } |
| 171 | 171 |
| 172 void GalleryWatchStateTracker::OnGalleryWatchAdded( | 172 void GalleryWatchStateTracker::OnGalleryWatchAdded( |
| 173 const std::string& extension_id, | 173 const std::string& extension_id, |
| 174 MediaGalleryPrefId gallery_id) { | 174 MediaGalleryPrefId gallery_id) { |
| 175 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 175 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 176 bool update_storage = | 176 bool update_storage = |
| 177 AddWatchedGalleryIdInfoForExtension(extension_id, gallery_id); | 177 AddWatchedGalleryIdInfoForExtension(extension_id, gallery_id); |
| 178 if (update_storage) | 178 if (update_storage) |
| 179 WriteToStorage(extension_id); | 179 WriteToStorage(extension_id); |
| 180 } | 180 } |
| 181 | 181 |
| 182 void GalleryWatchStateTracker::OnGalleryWatchRemoved( | 182 void GalleryWatchStateTracker::OnGalleryWatchRemoved( |
| 183 const std::string& extension_id, | 183 const std::string& extension_id, |
| 184 MediaGalleryPrefId gallery_id) { | 184 MediaGalleryPrefId gallery_id) { |
| 185 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 185 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 186 if (!ContainsKey(watched_extensions_map_, extension_id)) | 186 if (!ContainsKey(watched_extensions_map_, extension_id)) |
| 187 return; | 187 return; |
| 188 watched_extensions_map_[extension_id].erase(gallery_id); | 188 watched_extensions_map_[extension_id].erase(gallery_id); |
| 189 if (watched_extensions_map_[extension_id].empty()) | 189 if (watched_extensions_map_[extension_id].empty()) |
| 190 watched_extensions_map_.erase(extension_id); | 190 watched_extensions_map_.erase(extension_id); |
| 191 WriteToStorage(extension_id); | 191 WriteToStorage(extension_id); |
| 192 } | 192 } |
| 193 | 193 |
| 194 void GalleryWatchStateTracker::OnExtensionLoaded(const Extension* extension) { | 194 void GalleryWatchStateTracker::OnExtensionLoaded(const Extension* extension) { |
| 195 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 195 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 196 StateStore* storage = ExtensionSystem::Get(profile_)->state_store(); | 196 StateStore* storage = ExtensionSystem::Get(profile_)->state_store(); |
| 197 if (!storage) | 197 if (!storage) |
| 198 return; | 198 return; |
| 199 storage->GetExtensionValue( | 199 storage->GetExtensionValue( |
| 200 extension->id(), | 200 extension->id(), |
| 201 kRegisteredGalleryWatchers, | 201 kRegisteredGalleryWatchers, |
| 202 base::Bind(&GalleryWatchStateTracker::ReadFromStorage, | 202 base::Bind(&GalleryWatchStateTracker::ReadFromStorage, |
| 203 AsWeakPtr(), | 203 AsWeakPtr(), |
| 204 extension->id())); | 204 extension->id())); |
| 205 } | 205 } |
| 206 | 206 |
| 207 void GalleryWatchStateTracker::OnExtensionUnloaded( | 207 void GalleryWatchStateTracker::OnExtensionUnloaded( |
| 208 const Extension* extension) { | 208 const Extension* extension) { |
| 209 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 209 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 210 if (!ContainsKey(watched_extensions_map_, extension->id())) | 210 if (!ContainsKey(watched_extensions_map_, extension->id())) |
| 211 return; | 211 return; |
| 212 content::BrowserThread::PostTask( | 212 content::BrowserThread::PostTask( |
| 213 content::BrowserThread::FILE, FROM_HERE, | 213 content::BrowserThread::FILE, FROM_HERE, |
| 214 base::Bind(&GalleryWatchManager::OnExtensionUnloaded, | 214 base::Bind(&GalleryWatchManager::OnExtensionUnloaded, |
| 215 profile_, | 215 profile_, |
| 216 extension->id())); | 216 extension->id())); |
| 217 for (WatchedGalleriesMap::iterator iter = | 217 for (WatchedGalleriesMap::iterator iter = |
| 218 watched_extensions_map_[extension->id()].begin(); | 218 watched_extensions_map_[extension->id()].begin(); |
| 219 iter != watched_extensions_map_[extension->id()].end(); ++iter) { | 219 iter != watched_extensions_map_[extension->id()].end(); ++iter) { |
| 220 iter->second = false; | 220 iter->second = false; |
| 221 } | 221 } |
| 222 } | 222 } |
| 223 | 223 |
| 224 void GalleryWatchStateTracker::WriteToStorage(const std::string& extension_id) { | 224 void GalleryWatchStateTracker::WriteToStorage(const std::string& extension_id) { |
| 225 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 225 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 226 StateStore* storage = ExtensionSystem::Get(profile_)->state_store(); | 226 StateStore* storage = ExtensionSystem::Get(profile_)->state_store(); |
| 227 if (!storage) | 227 if (!storage) |
| 228 return; | 228 return; |
| 229 MediaGalleryPrefIdSet gallery_ids = | 229 MediaGalleryPrefIdSet gallery_ids = |
| 230 GetAllWatchedGalleryIDsForExtension(extension_id); | 230 GetAllWatchedGalleryIDsForExtension(extension_id); |
| 231 storage->SetExtensionValue( | 231 storage->SetExtensionValue( |
| 232 extension_id, | 232 extension_id, |
| 233 kRegisteredGalleryWatchers, | 233 kRegisteredGalleryWatchers, |
| 234 WatchedGalleryIdsToValue(gallery_ids).PassAs<base::Value>()); | 234 WatchedGalleryIdsToValue(gallery_ids).PassAs<base::Value>()); |
| 235 } | 235 } |
| 236 | 236 |
| 237 void GalleryWatchStateTracker::ReadFromStorage( | 237 void GalleryWatchStateTracker::ReadFromStorage( |
| 238 const std::string& extension_id, | 238 const std::string& extension_id, |
| 239 scoped_ptr<base::Value> value) { | 239 scoped_ptr<base::Value> value) { |
| 240 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 240 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 241 MediaGalleriesPreferences* preferences = | 241 MediaGalleriesPreferences* preferences = |
| 242 g_browser_process->media_file_system_registry()->GetPreferences(profile_); | 242 g_browser_process->media_file_system_registry()->GetPreferences(profile_); |
| 243 base::ListValue* list = NULL; | 243 base::ListValue* list = NULL; |
| 244 if (!value.get() || !value->GetAsList(&list)) | 244 if (!value.get() || !value->GetAsList(&list)) |
| 245 return; | 245 return; |
| 246 MediaGalleryPrefIdSet gallery_ids = WatchedGalleryIdsFromValue(list); | 246 MediaGalleryPrefIdSet gallery_ids = WatchedGalleryIdsFromValue(list); |
| 247 if (gallery_ids.empty()) | 247 if (gallery_ids.empty()) |
| 248 return; | 248 return; |
| 249 | 249 |
| 250 for (MediaGalleryPrefIdSet::const_iterator id_iter = gallery_ids.begin(); | 250 for (MediaGalleryPrefIdSet::const_iterator id_iter = gallery_ids.begin(); |
| 251 id_iter != gallery_ids.end(); ++id_iter) { | 251 id_iter != gallery_ids.end(); ++id_iter) { |
| 252 watched_extensions_map_[extension_id][*id_iter] = false; | 252 watched_extensions_map_[extension_id][*id_iter] = false; |
| 253 SetupGalleryWatch(extension_id, *id_iter, preferences); | 253 SetupGalleryWatch(extension_id, *id_iter, preferences); |
| 254 } | 254 } |
| 255 } | 255 } |
| 256 | 256 |
| 257 void GalleryWatchStateTracker::SetupGalleryWatch( | 257 void GalleryWatchStateTracker::SetupGalleryWatch( |
| 258 const std::string& extension_id, | 258 const std::string& extension_id, |
| 259 MediaGalleryPrefId gallery_id, | 259 MediaGalleryPrefId gallery_id, |
| 260 MediaGalleriesPreferences* preferences) { | 260 MediaGalleriesPreferences* preferences) { |
| 261 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 261 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 262 const Extension* extension = GetExtensionById(profile_, extension_id); | 262 const Extension* extension = GetExtensionById(profile_, extension_id); |
| 263 DCHECK(extension); | 263 DCHECK(extension); |
| 264 base::FilePath gallery_file_path(preferences->LookUpGalleryPathForExtension( | 264 base::FilePath gallery_file_path(preferences->LookUpGalleryPathForExtension( |
| 265 gallery_id, extension, false)); | 265 gallery_id, extension, false)); |
| 266 if (gallery_file_path.empty()) | 266 if (gallery_file_path.empty()) |
| 267 return; | 267 return; |
| 268 MediaGalleriesPrivateEventRouter* router = | 268 MediaGalleriesPrivateEventRouter* router = |
| 269 MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter(); | 269 MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter(); |
| 270 DCHECK(router); | 270 DCHECK(router); |
| 271 content::BrowserThread::PostTaskAndReplyWithResult( | 271 content::BrowserThread::PostTaskAndReplyWithResult( |
| 272 content::BrowserThread::FILE, | 272 content::BrowserThread::FILE, |
| 273 FROM_HERE, | 273 FROM_HERE, |
| 274 base::Bind(&GalleryWatchManager::SetupGalleryWatch, | 274 base::Bind(&GalleryWatchManager::SetupGalleryWatch, |
| 275 profile_, | 275 profile_, |
| 276 gallery_id, | 276 gallery_id, |
| 277 gallery_file_path, | 277 gallery_file_path, |
| 278 extension_id, | 278 extension_id, |
| 279 router->AsWeakPtr()), | 279 router->AsWeakPtr()), |
| 280 base::Bind(&GalleryWatchStateTracker::HandleSetupGalleryWatchResponse, | 280 base::Bind(&GalleryWatchStateTracker::HandleSetupGalleryWatchResponse, |
| 281 AsWeakPtr(), | 281 AsWeakPtr(), |
| 282 extension_id, | 282 extension_id, |
| 283 gallery_id)); | 283 gallery_id)); |
| 284 } | 284 } |
| 285 | 285 |
| 286 void GalleryWatchStateTracker::RemoveGalleryWatch( | 286 void GalleryWatchStateTracker::RemoveGalleryWatch( |
| 287 const std::string& extension_id, | 287 const std::string& extension_id, |
| 288 MediaGalleryPrefId gallery_id, | 288 MediaGalleryPrefId gallery_id, |
| 289 MediaGalleriesPreferences* preferences) { | 289 MediaGalleriesPreferences* preferences) { |
| 290 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 290 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 291 const Extension* extension = GetExtensionById(profile_, extension_id); | 291 const Extension* extension = GetExtensionById(profile_, extension_id); |
| 292 DCHECK(extension); | 292 DCHECK(extension); |
| 293 base::FilePath gallery_file_path(preferences->LookUpGalleryPathForExtension( | 293 base::FilePath gallery_file_path(preferences->LookUpGalleryPathForExtension( |
| 294 gallery_id, extension, true)); | 294 gallery_id, extension, true)); |
| 295 if (gallery_file_path.empty()) | 295 if (gallery_file_path.empty()) |
| 296 return; | 296 return; |
| 297 content::BrowserThread::PostTask( | 297 content::BrowserThread::PostTask( |
| 298 content::BrowserThread::FILE, FROM_HERE, | 298 content::BrowserThread::FILE, FROM_HERE, |
| 299 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, | 299 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, |
| 300 profile_, | 300 profile_, |
| 301 gallery_file_path, | 301 gallery_file_path, |
| 302 extension_id)); | 302 extension_id)); |
| 303 watched_extensions_map_[extension_id][gallery_id] = false; | 303 watched_extensions_map_[extension_id][gallery_id] = false; |
| 304 } | 304 } |
| 305 | 305 |
| 306 bool GalleryWatchStateTracker::HasGalleryWatchInfo( | 306 bool GalleryWatchStateTracker::HasGalleryWatchInfo( |
| 307 const std::string& extension_id, | 307 const std::string& extension_id, |
| 308 MediaGalleryPrefId gallery_id, | 308 MediaGalleryPrefId gallery_id, |
| 309 bool has_active_watcher) { | 309 bool has_active_watcher) { |
| 310 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 310 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 311 return (ContainsKey(watched_extensions_map_, extension_id) && | 311 return (ContainsKey(watched_extensions_map_, extension_id) && |
| 312 ContainsKey(watched_extensions_map_[extension_id], gallery_id) && | 312 ContainsKey(watched_extensions_map_[extension_id], gallery_id) && |
| 313 watched_extensions_map_[extension_id][gallery_id] == | 313 watched_extensions_map_[extension_id][gallery_id] == |
| 314 has_active_watcher); | 314 has_active_watcher); |
| 315 } | 315 } |
| 316 | 316 |
| 317 void GalleryWatchStateTracker::HandleSetupGalleryWatchResponse( | 317 void GalleryWatchStateTracker::HandleSetupGalleryWatchResponse( |
| 318 const std::string& extension_id, | 318 const std::string& extension_id, |
| 319 MediaGalleryPrefId gallery_id, | 319 MediaGalleryPrefId gallery_id, |
| 320 bool success) { | 320 bool success) { |
| 321 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 321 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 322 if (!success) | 322 if (!success) |
| 323 return; // Failed to setup the gallery watch for the given extension. | 323 return; // Failed to setup the gallery watch for the given extension. |
| 324 AddWatchedGalleryIdInfoForExtension(extension_id, gallery_id); | 324 AddWatchedGalleryIdInfoForExtension(extension_id, gallery_id); |
| 325 } | 325 } |
| 326 | 326 |
| 327 bool GalleryWatchStateTracker::AddWatchedGalleryIdInfoForExtension( | 327 bool GalleryWatchStateTracker::AddWatchedGalleryIdInfoForExtension( |
| 328 const std::string& extension_id, | 328 const std::string& extension_id, |
| 329 MediaGalleryPrefId gallery_id) { | 329 MediaGalleryPrefId gallery_id) { |
| 330 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 330 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 331 if (HasGalleryWatchInfo(extension_id, gallery_id, true)) | 331 if (HasGalleryWatchInfo(extension_id, gallery_id, true)) |
| 332 return false; | 332 return false; |
| 333 watched_extensions_map_[extension_id][gallery_id] = true; | 333 watched_extensions_map_[extension_id][gallery_id] = true; |
| 334 return true; | 334 return true; |
| 335 } | 335 } |
| 336 | 336 |
| 337 } // namespace extensions | 337 } // namespace extensions |
| OLD | NEW |