| 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 #include "chrome/browser/extensions/api/media_galleries_private/media_galleries_
private_api.h" | 5 #include "chrome/browser/extensions/api/media_galleries_private/media_galleries_
private_api.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 if (!GetGalleryFilePathAndId(pref_id, | 187 if (!GetGalleryFilePathAndId(pref_id, |
| 188 GetProfile(), | 188 GetProfile(), |
| 189 GetExtension(), | 189 GetExtension(), |
| 190 &gallery_file_path, | 190 &gallery_file_path, |
| 191 &gallery_pref_id)) { | 191 &gallery_pref_id)) { |
| 192 error_ = kInvalidGalleryIDError; | 192 error_ = kInvalidGalleryIDError; |
| 193 HandleResponse(gallery_pref_id, false); | 193 HandleResponse(gallery_pref_id, false); |
| 194 return; | 194 return; |
| 195 } | 195 } |
| 196 | 196 |
| 197 #if defined(OS_WIN) || defined(OS_LINUX) |
| 197 MediaGalleriesPrivateEventRouter* router = | 198 MediaGalleriesPrivateEventRouter* router = |
| 198 MediaGalleriesPrivateAPI::Get(GetProfile())->GetEventRouter(); | 199 MediaGalleriesPrivateAPI::Get(GetProfile())->GetEventRouter(); |
| 199 DCHECK(router); | 200 DCHECK(router); |
| 200 content::BrowserThread::PostTaskAndReplyWithResult( | 201 content::BrowserThread::PostTaskAndReplyWithResult( |
| 201 content::BrowserThread::FILE, | 202 content::BrowserThread::FILE, |
| 202 FROM_HERE, | 203 FROM_HERE, |
| 203 base::Bind(&GalleryWatchManager::SetupGalleryWatch, | 204 base::Bind(&GalleryWatchManager::SetupGalleryWatch, |
| 204 GetProfile(), | 205 GetProfile(), |
| 205 gallery_pref_id, | 206 gallery_pref_id, |
| 206 gallery_file_path, | 207 gallery_file_path, |
| 207 extension_id(), | 208 extension_id(), |
| 208 router->AsWeakPtr()), | 209 router->AsWeakPtr()), |
| 209 base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse, | 210 base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse, |
| 210 this, | 211 this, |
| 211 gallery_pref_id)); | 212 gallery_pref_id)); |
| 213 #else |
| 214 // Recursive gallery watch operation is not currently supported on Mac: |
| 215 // crbug.com/144491 |
| 216 HandleResponse(gallery_pref_id, false); |
| 217 #endif |
| 212 } | 218 } |
| 213 | 219 |
| 214 void MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse( | 220 void MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse( |
| 215 MediaGalleryPrefId gallery_id, | 221 MediaGalleryPrefId gallery_id, |
| 216 bool success) { | 222 bool success) { |
| 217 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 223 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 218 media_galleries_private::AddGalleryWatchResult result; | 224 media_galleries_private::AddGalleryWatchResult result; |
| 219 result.gallery_id = base::Uint64ToString(gallery_id); | 225 result.gallery_id = base::Uint64ToString(gallery_id); |
| 220 result.success = success; | 226 result.success = success; |
| 221 SetResult(result.ToValue().release()); | 227 SetResult(result.ToValue().release()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 237 | 243 |
| 238 MediaGalleriesPrivateRemoveGalleryWatchFunction:: | 244 MediaGalleriesPrivateRemoveGalleryWatchFunction:: |
| 239 ~MediaGalleriesPrivateRemoveGalleryWatchFunction() { | 245 ~MediaGalleriesPrivateRemoveGalleryWatchFunction() { |
| 240 } | 246 } |
| 241 | 247 |
| 242 bool MediaGalleriesPrivateRemoveGalleryWatchFunction::RunAsync() { | 248 bool MediaGalleriesPrivateRemoveGalleryWatchFunction::RunAsync() { |
| 243 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 249 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 244 if (!render_view_host() || !render_view_host()->GetProcess()) | 250 if (!render_view_host() || !render_view_host()->GetProcess()) |
| 245 return false; | 251 return false; |
| 246 | 252 |
| 253 // Remove gallery watch operation is currently supported on Mac: |
| 254 // crbug.com/144491 |
| 247 scoped_ptr<RemoveGalleryWatch::Params> params( | 255 scoped_ptr<RemoveGalleryWatch::Params> params( |
| 248 RemoveGalleryWatch::Params::Create(*args_)); | 256 RemoveGalleryWatch::Params::Create(*args_)); |
| 249 EXTENSION_FUNCTION_VALIDATE(params.get()); | 257 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 250 | 258 |
| 251 MediaGalleriesPreferences* preferences = | 259 MediaGalleriesPreferences* preferences = |
| 252 g_browser_process->media_file_system_registry()->GetPreferences( | 260 g_browser_process->media_file_system_registry()->GetPreferences( |
| 253 GetProfile()); | 261 GetProfile()); |
| 254 preferences->EnsureInitialized(base::Bind( | 262 preferences->EnsureInitialized(base::Bind( |
| 255 &MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferencesInit, | 263 &MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferencesInit, |
| 256 this, | 264 this, |
| 257 params->gallery_id)); | 265 params->gallery_id)); |
| 258 return true; | 266 return true; |
| 259 } | 267 } |
| 260 | 268 |
| 261 void MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferencesInit( | 269 void MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferencesInit( |
| 262 const std::string& pref_id) { | 270 const std::string& pref_id) { |
| 271 #if defined(OS_WIN) || defined(OS_LINUX) |
| 263 base::FilePath gallery_file_path; | 272 base::FilePath gallery_file_path; |
| 264 MediaGalleryPrefId gallery_pref_id = 0; | 273 MediaGalleryPrefId gallery_pref_id = 0; |
| 265 if (!GetGalleryFilePathAndId(pref_id, | 274 if (!GetGalleryFilePathAndId(pref_id, |
| 266 GetProfile(), | 275 GetProfile(), |
| 267 GetExtension(), | 276 GetExtension(), |
| 268 &gallery_file_path, | 277 &gallery_file_path, |
| 269 &gallery_pref_id)) { | 278 &gallery_pref_id)) { |
| 270 error_ = kInvalidGalleryIDError; | 279 error_ = kInvalidGalleryIDError; |
| 271 SendResponse(false); | 280 SendResponse(false); |
| 272 return; | 281 return; |
| 273 } | 282 } |
| 274 | 283 |
| 275 content::BrowserThread::PostTask( | 284 content::BrowserThread::PostTask( |
| 276 content::BrowserThread::FILE, | 285 content::BrowserThread::FILE, |
| 277 FROM_HERE, | 286 FROM_HERE, |
| 278 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, | 287 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, |
| 279 GetProfile(), | 288 GetProfile(), |
| 280 gallery_file_path, | 289 gallery_file_path, |
| 281 extension_id())); | 290 extension_id())); |
| 282 | 291 |
| 283 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( | 292 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( |
| 284 GetProfile())->GetGalleryWatchStateTracker(); | 293 GetProfile())->GetGalleryWatchStateTracker(); |
| 285 state_tracker->OnGalleryWatchRemoved(extension_id(), gallery_pref_id); | 294 state_tracker->OnGalleryWatchRemoved(extension_id(), gallery_pref_id); |
| 295 #endif |
| 286 SendResponse(true); | 296 SendResponse(true); |
| 287 } | 297 } |
| 288 | 298 |
| 289 /////////////////////////////////////////////////////////////////////////////// | 299 /////////////////////////////////////////////////////////////////////////////// |
| 290 // MediaGalleriesPrivateGetAllGalleryWatchFunction // | 300 // MediaGalleriesPrivateGetAllGalleryWatchFunction // |
| 291 /////////////////////////////////////////////////////////////////////////////// | 301 /////////////////////////////////////////////////////////////////////////////// |
| 292 | 302 |
| 293 MediaGalleriesPrivateGetAllGalleryWatchFunction:: | 303 MediaGalleriesPrivateGetAllGalleryWatchFunction:: |
| 294 ~MediaGalleriesPrivateGetAllGalleryWatchFunction() { | 304 ~MediaGalleriesPrivateGetAllGalleryWatchFunction() { |
| 295 } | 305 } |
| 296 | 306 |
| 297 bool MediaGalleriesPrivateGetAllGalleryWatchFunction::RunAsync() { | 307 bool MediaGalleriesPrivateGetAllGalleryWatchFunction::RunAsync() { |
| 298 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 308 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 299 if (!render_view_host() || !render_view_host()->GetProcess()) | 309 if (!render_view_host() || !render_view_host()->GetProcess()) |
| 300 return false; | 310 return false; |
| 301 | 311 |
| 302 MediaGalleriesPreferences* preferences = | 312 MediaGalleriesPreferences* preferences = |
| 303 g_browser_process->media_file_system_registry()->GetPreferences( | 313 g_browser_process->media_file_system_registry()->GetPreferences( |
| 304 GetProfile()); | 314 GetProfile()); |
| 305 preferences->EnsureInitialized(base::Bind( | 315 preferences->EnsureInitialized(base::Bind( |
| 306 &MediaGalleriesPrivateGetAllGalleryWatchFunction::OnPreferencesInit, | 316 &MediaGalleriesPrivateGetAllGalleryWatchFunction::OnPreferencesInit, |
| 307 this)); | 317 this)); |
| 308 return true; | 318 return true; |
| 309 } | 319 } |
| 310 | 320 |
| 311 void MediaGalleriesPrivateGetAllGalleryWatchFunction::OnPreferencesInit() { | 321 void MediaGalleriesPrivateGetAllGalleryWatchFunction::OnPreferencesInit() { |
| 312 std::vector<std::string> result; | 322 std::vector<std::string> result; |
| 323 #if defined(OS_WIN) || defined(OS_LINUX) |
| 313 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( | 324 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( |
| 314 GetProfile())->GetGalleryWatchStateTracker(); | 325 GetProfile())->GetGalleryWatchStateTracker(); |
| 315 MediaGalleryPrefIdSet gallery_ids = | 326 MediaGalleryPrefIdSet gallery_ids = |
| 316 state_tracker->GetAllWatchedGalleryIDsForExtension(extension_id()); | 327 state_tracker->GetAllWatchedGalleryIDsForExtension(extension_id()); |
| 317 for (MediaGalleryPrefIdSet::const_iterator iter = gallery_ids.begin(); | 328 for (MediaGalleryPrefIdSet::const_iterator iter = gallery_ids.begin(); |
| 318 iter != gallery_ids.end(); ++iter) { | 329 iter != gallery_ids.end(); ++iter) { |
| 319 result.push_back(base::Uint64ToString(*iter)); | 330 result.push_back(base::Uint64ToString(*iter)); |
| 320 } | 331 } |
| 332 #endif |
| 321 results_ = GetAllGalleryWatch::Results::Create(result); | 333 results_ = GetAllGalleryWatch::Results::Create(result); |
| 322 SendResponse(true); | 334 SendResponse(true); |
| 323 } | 335 } |
| 324 | 336 |
| 325 /////////////////////////////////////////////////////////////////////////////// | 337 /////////////////////////////////////////////////////////////////////////////// |
| 326 // MediaGalleriesPrivateRemoveAllGalleryWatchFunction // | 338 // MediaGalleriesPrivateRemoveAllGalleryWatchFunction // |
| 327 /////////////////////////////////////////////////////////////////////////////// | 339 /////////////////////////////////////////////////////////////////////////////// |
| 328 | 340 |
| 329 MediaGalleriesPrivateRemoveAllGalleryWatchFunction:: | 341 MediaGalleriesPrivateRemoveAllGalleryWatchFunction:: |
| 330 ~MediaGalleriesPrivateRemoveAllGalleryWatchFunction() { | 342 ~MediaGalleriesPrivateRemoveAllGalleryWatchFunction() { |
| 331 } | 343 } |
| 332 | 344 |
| 333 bool MediaGalleriesPrivateRemoveAllGalleryWatchFunction::RunAsync() { | 345 bool MediaGalleriesPrivateRemoveAllGalleryWatchFunction::RunAsync() { |
| 334 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 346 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 335 if (!render_view_host() || !render_view_host()->GetProcess()) | 347 if (!render_view_host() || !render_view_host()->GetProcess()) |
| 336 return false; | 348 return false; |
| 337 | 349 |
| 338 MediaGalleriesPreferences* preferences = | 350 MediaGalleriesPreferences* preferences = |
| 339 g_browser_process->media_file_system_registry()->GetPreferences( | 351 g_browser_process->media_file_system_registry()->GetPreferences( |
| 340 GetProfile()); | 352 GetProfile()); |
| 341 preferences->EnsureInitialized(base::Bind( | 353 preferences->EnsureInitialized(base::Bind( |
| 342 &MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnPreferencesInit, | 354 &MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnPreferencesInit, |
| 343 this)); | 355 this)); |
| 344 return true; | 356 return true; |
| 345 } | 357 } |
| 346 | 358 |
| 347 void MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnPreferencesInit() { | 359 void MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnPreferencesInit() { |
| 360 #if defined(OS_WIN) || defined(OS_LINUX) |
| 348 MediaGalleriesPreferences* preferences = | 361 MediaGalleriesPreferences* preferences = |
| 349 g_browser_process->media_file_system_registry()->GetPreferences( | 362 g_browser_process->media_file_system_registry()->GetPreferences( |
| 350 GetProfile()); | 363 GetProfile()); |
| 351 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( | 364 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( |
| 352 GetProfile())->GetGalleryWatchStateTracker(); | 365 GetProfile())->GetGalleryWatchStateTracker(); |
| 353 state_tracker->RemoveAllGalleryWatchersForExtension( | 366 state_tracker->RemoveAllGalleryWatchersForExtension( |
| 354 extension_id(), preferences); | 367 extension_id(), preferences); |
| 368 #endif |
| 355 SendResponse(true); | 369 SendResponse(true); |
| 356 } | 370 } |
| 357 | 371 |
| 358 /////////////////////////////////////////////////////////////////////////////// | 372 /////////////////////////////////////////////////////////////////////////////// |
| 359 // MediaGalleriesPrivateGetHandlersFunction // | 373 // MediaGalleriesPrivateGetHandlersFunction // |
| 360 /////////////////////////////////////////////////////////////////////////////// | 374 /////////////////////////////////////////////////////////////////////////////// |
| 361 | 375 |
| 362 MediaGalleriesPrivateGetHandlersFunction:: | 376 MediaGalleriesPrivateGetHandlersFunction:: |
| 363 ~MediaGalleriesPrivateGetHandlersFunction() { | 377 ~MediaGalleriesPrivateGetHandlersFunction() { |
| 364 } | 378 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 } | 413 } |
| 400 } | 414 } |
| 401 | 415 |
| 402 SetResult(result_list); | 416 SetResult(result_list); |
| 403 SendResponse(true); | 417 SendResponse(true); |
| 404 | 418 |
| 405 return true; | 419 return true; |
| 406 } | 420 } |
| 407 | 421 |
| 408 } // namespace extensions | 422 } // namespace extensions |
| OLD | NEW |