Chromium Code Reviews| 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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 99 } | 99 } |
| 100 | 100 |
| 101 } // namespace | 101 } // namespace |
| 102 | 102 |
| 103 | 103 |
| 104 /////////////////////////////////////////////////////////////////////////////// | 104 /////////////////////////////////////////////////////////////////////////////// |
| 105 // MediaGalleriesPrivateAPI // | 105 // MediaGalleriesPrivateAPI // |
| 106 /////////////////////////////////////////////////////////////////////////////// | 106 /////////////////////////////////////////////////////////////////////////////// |
| 107 | 107 |
| 108 MediaGalleriesPrivateAPI::MediaGalleriesPrivateAPI(Profile* profile) | 108 MediaGalleriesPrivateAPI::MediaGalleriesPrivateAPI(Profile* profile) |
| 109 : profile_(profile) { | 109 : profile_(profile), |
| 110 weak_ptr_factory_(this) { | |
| 110 DCHECK(profile_); | 111 DCHECK(profile_); |
| 111 (new MediaGalleriesHandlerParser)->Register(); | 112 (new MediaGalleriesHandlerParser)->Register(); |
| 112 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( | 113 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 113 this, event_names::kOnAttachEventName); | 114 this, event_names::kOnAttachEventName); |
| 114 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( | 115 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 115 this, event_names::kOnDetachEventName); | 116 this, event_names::kOnDetachEventName); |
| 116 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( | 117 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 117 this, event_names::kOnGalleryChangedEventName); | 118 this, event_names::kOnGalleryChangedEventName); |
| 118 } | 119 } |
| 119 | 120 |
| 120 MediaGalleriesPrivateAPI::~MediaGalleriesPrivateAPI() { | 121 MediaGalleriesPrivateAPI::~MediaGalleriesPrivateAPI() { |
| 121 } | 122 } |
| 122 | 123 |
| 123 void MediaGalleriesPrivateAPI::Shutdown() { | 124 void MediaGalleriesPrivateAPI::Shutdown() { |
| 124 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); | 125 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); |
| 126 weak_ptr_factory_.InvalidateWeakPtrs(); | |
| 125 content::BrowserThread::PostTask( | 127 content::BrowserThread::PostTask( |
| 126 content::BrowserThread::FILE, FROM_HERE, | 128 content::BrowserThread::FILE, FROM_HERE, |
| 127 base::Bind(&HandleProfileShutdownOnFileThread, profile_)); | 129 base::Bind(&HandleProfileShutdownOnFileThread, profile_)); |
| 128 } | 130 } |
| 129 | 131 |
| 130 static base::LazyInstance<ProfileKeyedAPIFactory<MediaGalleriesPrivateAPI> > | 132 static base::LazyInstance<ProfileKeyedAPIFactory<MediaGalleriesPrivateAPI> > |
| 131 g_factory = LAZY_INSTANCE_INITIALIZER; | 133 g_factory = LAZY_INSTANCE_INITIALIZER; |
| 132 | 134 |
| 133 // static | 135 // static |
| 134 ProfileKeyedAPIFactory<MediaGalleriesPrivateAPI>* | 136 ProfileKeyedAPIFactory<MediaGalleriesPrivateAPI>* |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 258 if (!Extension::IdIsValid(iter.key())) { | 260 if (!Extension::IdIsValid(iter.key())) { |
| 259 NOTREACHED(); | 261 NOTREACHED(); |
| 260 continue; | 262 continue; |
| 261 } | 263 } |
| 262 UnsetMediaGalleryPermission(prefs, iter.key(), gallery_id); | 264 UnsetMediaGalleryPermission(prefs, iter.key(), gallery_id); |
| 263 } | 265 } |
| 264 } | 266 } |
| 265 | 267 |
| 266 void MediaGalleriesPrivateAPI::OnListenerAdded( | 268 void MediaGalleriesPrivateAPI::OnListenerAdded( |
| 267 const EventListenerInfo& details) { | 269 const EventListenerInfo& details) { |
| 268 // Try to initialize the event router for the listener. If | 270 // Start the StorageMonitor if it is not already initialized. After that, |
| 269 // MediaGalleriesPrivateAPI::GetEventRouter() was called before adding | 271 // try to initialize the event router for the listener. |
| 270 // the listener, router would be initialized. | 272 // This method is called synchronously with the message handler for the |
| 271 MaybeInitializeEventRouterAndTracker(); | 273 // JS invocation. |
| 274 | |
| 275 chrome::StorageMonitor::GetInstance()->Initialize(base::Bind( | |
| 276 &MediaGalleriesPrivateAPI::MaybeInitializeEventRouterAndTracker, | |
| 277 weak_ptr_factory_.GetWeakPtr())); | |
| 272 } | 278 } |
| 273 | 279 |
| 274 MediaGalleriesPrivateEventRouter* MediaGalleriesPrivateAPI::GetEventRouter() { | 280 MediaGalleriesPrivateEventRouter* MediaGalleriesPrivateAPI::GetEventRouter() { |
| 275 MaybeInitializeEventRouterAndTracker(); | 281 MaybeInitializeEventRouterAndTracker(); |
| 276 return media_galleries_private_event_router_.get(); | 282 return media_galleries_private_event_router_.get(); |
| 277 } | 283 } |
| 278 | 284 |
| 279 GalleryWatchStateTracker* | 285 GalleryWatchStateTracker* |
| 280 MediaGalleriesPrivateAPI::GetGalleryWatchStateTracker() { | 286 MediaGalleriesPrivateAPI::GetGalleryWatchStateTracker() { |
| 281 MaybeInitializeEventRouterAndTracker(); | 287 MaybeInitializeEventRouterAndTracker(); |
| 282 return tracker_.get(); | 288 return tracker_.get(); |
| 283 } | 289 } |
| 284 | 290 |
| 285 void MediaGalleriesPrivateAPI::MaybeInitializeEventRouterAndTracker() { | 291 void MediaGalleriesPrivateAPI::MaybeInitializeEventRouterAndTracker() { |
| 286 if (media_galleries_private_event_router_.get()) | 292 if (media_galleries_private_event_router_.get()) |
| 287 return; | 293 return; |
| 288 media_galleries_private_event_router_.reset( | 294 media_galleries_private_event_router_.reset( |
| 289 new MediaGalleriesPrivateEventRouter(profile_)); | 295 new MediaGalleriesPrivateEventRouter(profile_)); |
| 296 DCHECK(chrome::StorageMonitor::GetInstance()->IsInitialized()); | |
| 290 tracker_.reset( | 297 tracker_.reset( |
| 291 new GalleryWatchStateTracker(profile_)); | 298 new GalleryWatchStateTracker(profile_)); |
| 292 } | 299 } |
| 293 | 300 |
| 294 /////////////////////////////////////////////////////////////////////////////// | 301 /////////////////////////////////////////////////////////////////////////////// |
| 295 // MediaGalleriesPrivateAddGalleryWatchFunction // | 302 // MediaGalleriesPrivateAddGalleryWatchFunction // |
| 296 /////////////////////////////////////////////////////////////////////////////// | 303 /////////////////////////////////////////////////////////////////////////////// |
| 297 MediaGalleriesPrivateAddGalleryWatchFunction:: | 304 MediaGalleriesPrivateAddGalleryWatchFunction:: |
| 298 ~MediaGalleriesPrivateAddGalleryWatchFunction() { | 305 ~MediaGalleriesPrivateAddGalleryWatchFunction() { |
| 299 } | 306 } |
| 300 | 307 |
| 301 bool MediaGalleriesPrivateAddGalleryWatchFunction::RunImpl() { | 308 bool MediaGalleriesPrivateAddGalleryWatchFunction::RunImpl() { |
| 302 DCHECK(profile_); | 309 DCHECK(profile_); |
| 303 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 310 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 304 if (!render_view_host() || !render_view_host()->GetProcess()) | 311 if (!render_view_host() || !render_view_host()->GetProcess()) |
| 305 return false; | 312 return false; |
| 306 | 313 |
| 307 scoped_ptr<AddGalleryWatch::Params> params( | 314 scoped_ptr<AddGalleryWatch::Params> params( |
| 308 AddGalleryWatch::Params::Create(*args_)); | 315 AddGalleryWatch::Params::Create(*args_)); |
| 309 EXTENSION_FUNCTION_VALIDATE(params.get()); | 316 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 310 | 317 |
| 318 chrome::StorageMonitor::GetInstance()->Initialize(base::Bind( | |
| 319 &MediaGalleriesPrivateAddGalleryWatchFunction::OnStorageMonitorInit, | |
| 320 this, | |
| 321 params->gallery_id)); | |
| 322 | |
| 323 return true; | |
| 324 } | |
| 325 | |
| 326 void MediaGalleriesPrivateAddGalleryWatchFunction::OnStorageMonitorInit( | |
| 327 const std::string& pref_id) { | |
| 311 base::FilePath gallery_file_path; | 328 base::FilePath gallery_file_path; |
| 312 chrome::MediaGalleryPrefId gallery_pref_id = 0; | 329 chrome::MediaGalleryPrefId gallery_pref_id = 0; |
| 313 if (!GetGalleryFilePathAndId(params->gallery_id, profile_, GetExtension(), | 330 if (!GetGalleryFilePathAndId(pref_id, profile_, GetExtension(), |
| 314 &gallery_file_path, &gallery_pref_id)) { | 331 &gallery_file_path, &gallery_pref_id)) { |
| 315 error_ = kInvalidGalleryIDError; | 332 error_ = kInvalidGalleryIDError; |
| 316 return false; | 333 HandleResponse(gallery_pref_id, false); |
| 334 return; | |
| 317 } | 335 } |
| 318 | 336 |
| 319 #if defined(OS_WIN) | 337 #if defined(OS_WIN) |
| 338 DCHECK(chrome::StorageMonitor::GetInstance()->IsInitialized()); | |
|
vandebo (ex-Chrome)
2013/05/31 18:05:03
GetGalleryFilePathAndId uses preferences, so move
Greg Billock
2013/06/01 01:48:46
Done.
| |
| 320 MediaGalleriesPrivateEventRouter* router = | 339 MediaGalleriesPrivateEventRouter* router = |
| 321 MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter(); | 340 MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter(); |
| 322 DCHECK(router); | 341 DCHECK(router); |
| 323 content::BrowserThread::PostTaskAndReplyWithResult( | 342 content::BrowserThread::PostTaskAndReplyWithResult( |
| 324 content::BrowserThread::FILE, | 343 content::BrowserThread::FILE, |
| 325 FROM_HERE, | 344 FROM_HERE, |
| 326 base::Bind(&GalleryWatchManager::SetupGalleryWatch, | 345 base::Bind(&GalleryWatchManager::SetupGalleryWatch, |
| 327 profile_, | 346 profile_, |
| 328 gallery_pref_id, | 347 gallery_pref_id, |
| 329 gallery_file_path, | 348 gallery_file_path, |
| 330 extension_id(), | 349 extension_id(), |
| 331 router->AsWeakPtr()), | 350 router->AsWeakPtr()), |
| 332 base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse, | 351 base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse, |
| 333 this, | 352 this, |
| 334 gallery_pref_id)); | 353 gallery_pref_id)); |
| 335 #else | 354 #else |
| 336 // Recursive gallery watch operation is not currently supported on | 355 // Recursive gallery watch operation is not currently supported on |
| 337 // non-windows platforms. Please refer to crbug.com/144491 for more details. | 356 // non-windows platforms. Please refer to crbug.com/144491 for more details. |
| 338 HandleResponse(gallery_pref_id, false); | 357 HandleResponse(gallery_pref_id, false); |
| 339 #endif | 358 #endif |
| 340 return true; | |
| 341 } | 359 } |
| 342 | 360 |
| 343 void MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse( | 361 void MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse( |
| 344 chrome::MediaGalleryPrefId gallery_id, | 362 chrome::MediaGalleryPrefId gallery_id, |
| 345 bool success) { | 363 bool success) { |
| 346 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 364 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 347 extensions::api::media_galleries_private::AddGalleryWatchResult result; | 365 extensions::api::media_galleries_private::AddGalleryWatchResult result; |
| 348 result.gallery_id = base::Uint64ToString(gallery_id); | 366 result.gallery_id = base::Uint64ToString(gallery_id); |
| 349 result.success = success; | 367 result.success = success; |
| 350 SetResult(result.ToValue().release()); | 368 SetResult(result.ToValue().release()); |
| 351 if (success) { | 369 if (success) { |
| 370 DCHECK(chrome::StorageMonitor::GetInstance()->IsInitialized()); | |
| 352 GalleryWatchStateTracker* state_tracker = | 371 GalleryWatchStateTracker* state_tracker = |
| 353 MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); | 372 MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); |
| 354 state_tracker->OnGalleryWatchAdded(extension_id(), gallery_id); | 373 state_tracker->OnGalleryWatchAdded(extension_id(), gallery_id); |
| 355 } | 374 } |
| 356 SendResponse(true); | 375 SendResponse(true); |
| 357 } | 376 } |
| 358 | 377 |
| 359 | 378 |
| 360 /////////////////////////////////////////////////////////////////////////////// | 379 /////////////////////////////////////////////////////////////////////////////// |
| 361 // MediaGalleriesPrivateRemoveGalleryWatchFunction // | 380 // MediaGalleriesPrivateRemoveGalleryWatchFunction // |
| 362 /////////////////////////////////////////////////////////////////////////////// | 381 /////////////////////////////////////////////////////////////////////////////// |
| 363 | 382 |
| 364 MediaGalleriesPrivateRemoveGalleryWatchFunction:: | 383 MediaGalleriesPrivateRemoveGalleryWatchFunction:: |
| 365 ~MediaGalleriesPrivateRemoveGalleryWatchFunction() { | 384 ~MediaGalleriesPrivateRemoveGalleryWatchFunction() { |
| 366 } | 385 } |
| 367 | 386 |
| 368 bool MediaGalleriesPrivateRemoveGalleryWatchFunction::RunImpl() { | 387 bool MediaGalleriesPrivateRemoveGalleryWatchFunction::RunImpl() { |
| 369 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 388 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 370 #if defined(OS_WIN) | |
| 371 if (!render_view_host() || !render_view_host()->GetProcess()) | 389 if (!render_view_host() || !render_view_host()->GetProcess()) |
| 372 return false; | 390 return false; |
| 373 | 391 |
| 374 // Remove gallery watch operation is currently supported on windows platforms. | 392 // Remove gallery watch operation is currently supported on windows platforms. |
| 375 // Please refer to crbug.com/144491 for more details. | 393 // Please refer to crbug.com/144491 for more details. |
| 376 scoped_ptr<RemoveGalleryWatch::Params> params( | 394 scoped_ptr<RemoveGalleryWatch::Params> params( |
| 377 RemoveGalleryWatch::Params::Create(*args_)); | 395 RemoveGalleryWatch::Params::Create(*args_)); |
| 378 EXTENSION_FUNCTION_VALIDATE(params.get()); | 396 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 379 | 397 |
| 398 chrome::StorageMonitor::GetInstance()->Initialize(base::Bind( | |
| 399 &MediaGalleriesPrivateRemoveGalleryWatchFunction::OnStorageMonitorInit, | |
| 400 this, | |
| 401 params->gallery_id)); | |
| 402 return true; | |
| 403 } | |
| 404 | |
| 405 void MediaGalleriesPrivateRemoveGalleryWatchFunction::OnStorageMonitorInit( | |
| 406 const std::string& pref_id) { | |
| 407 #if defined(OS_WIN) | |
| 380 base::FilePath gallery_file_path; | 408 base::FilePath gallery_file_path; |
| 381 chrome::MediaGalleryPrefId gallery_pref_id = 0; | 409 chrome::MediaGalleryPrefId gallery_pref_id = 0; |
| 382 if (!GetGalleryFilePathAndId(params->gallery_id, profile_, GetExtension(), | 410 if (!GetGalleryFilePathAndId(pref_id, profile_, GetExtension(), |
| 383 &gallery_file_path, &gallery_pref_id)) { | 411 &gallery_file_path, &gallery_pref_id)) { |
| 384 error_ = kInvalidGalleryIDError; | 412 error_ = kInvalidGalleryIDError; |
| 385 return false; | 413 SendResponse(false); |
| 414 return; | |
| 386 } | 415 } |
| 387 | 416 |
| 388 content::BrowserThread::PostTask( | 417 content::BrowserThread::PostTask( |
| 389 content::BrowserThread::FILE, FROM_HERE, | 418 content::BrowserThread::FILE, FROM_HERE, |
| 390 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, | 419 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, |
| 391 profile_, | 420 profile_, |
| 392 gallery_file_path, | 421 gallery_file_path, |
| 393 extension_id())); | 422 extension_id())); |
| 394 | 423 |
| 424 DCHECK(chrome::StorageMonitor::GetInstance()->IsInitialized()); | |
|
vandebo (ex-Chrome)
2013/05/31 18:05:03
and here
Greg Billock
2013/06/01 01:48:46
Done.
| |
| 395 GalleryWatchStateTracker* state_tracker = | 425 GalleryWatchStateTracker* state_tracker = |
| 396 MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); | 426 MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); |
| 397 state_tracker->OnGalleryWatchRemoved(extension_id(), gallery_pref_id); | 427 state_tracker->OnGalleryWatchRemoved(extension_id(), gallery_pref_id); |
| 398 #endif | 428 #endif |
| 399 return true; | 429 SendResponse(true); |
| 400 } | 430 } |
| 401 | 431 |
| 402 /////////////////////////////////////////////////////////////////////////////// | 432 /////////////////////////////////////////////////////////////////////////////// |
| 403 // MediaGalleriesPrivateGetAllGalleryWatchFunction // | 433 // MediaGalleriesPrivateGetAllGalleryWatchFunction // |
| 404 /////////////////////////////////////////////////////////////////////////////// | 434 /////////////////////////////////////////////////////////////////////////////// |
| 405 | 435 |
| 406 MediaGalleriesPrivateGetAllGalleryWatchFunction:: | 436 MediaGalleriesPrivateGetAllGalleryWatchFunction:: |
| 407 ~MediaGalleriesPrivateGetAllGalleryWatchFunction() { | 437 ~MediaGalleriesPrivateGetAllGalleryWatchFunction() { |
| 408 } | 438 } |
| 409 | 439 |
| 410 bool MediaGalleriesPrivateGetAllGalleryWatchFunction::RunImpl() { | 440 bool MediaGalleriesPrivateGetAllGalleryWatchFunction::RunImpl() { |
| 411 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 441 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 412 if (!render_view_host() || !render_view_host()->GetProcess()) | 442 if (!render_view_host() || !render_view_host()->GetProcess()) |
| 413 return false; | 443 return false; |
| 414 | 444 |
| 445 chrome::StorageMonitor::GetInstance()->Initialize(base::Bind( | |
| 446 &MediaGalleriesPrivateGetAllGalleryWatchFunction::OnStorageMonitorInit, | |
| 447 this)); | |
| 448 return true; | |
| 449 } | |
| 450 | |
| 451 void MediaGalleriesPrivateGetAllGalleryWatchFunction::OnStorageMonitorInit() { | |
| 415 std::vector<std::string> result; | 452 std::vector<std::string> result; |
| 416 #if defined(OS_WIN) | 453 #if defined(OS_WIN) |
| 454 DCHECK(chrome::StorageMonitor::GetInstance()->IsInitialized()); | |
| 417 GalleryWatchStateTracker* state_tracker = | 455 GalleryWatchStateTracker* state_tracker = |
| 418 MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); | 456 MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); |
| 419 chrome::MediaGalleryPrefIdSet gallery_ids = | 457 chrome::MediaGalleryPrefIdSet gallery_ids = |
| 420 state_tracker->GetAllWatchedGalleryIDsForExtension(extension_id()); | 458 state_tracker->GetAllWatchedGalleryIDsForExtension(extension_id()); |
| 421 for (chrome::MediaGalleryPrefIdSet::const_iterator iter = | 459 for (chrome::MediaGalleryPrefIdSet::const_iterator iter = |
| 422 gallery_ids.begin(); | 460 gallery_ids.begin(); |
| 423 iter != gallery_ids.end(); ++iter) { | 461 iter != gallery_ids.end(); ++iter) { |
| 424 result.push_back(base::Uint64ToString(*iter)); | 462 result.push_back(base::Uint64ToString(*iter)); |
| 425 } | 463 } |
| 426 #endif | 464 #endif |
| 427 results_ = GetAllGalleryWatch::Results::Create(result); | 465 results_ = GetAllGalleryWatch::Results::Create(result); |
| 428 return true; | 466 SendResponse(true); |
| 429 } | 467 } |
| 430 | 468 |
| 431 /////////////////////////////////////////////////////////////////////////////// | 469 /////////////////////////////////////////////////////////////////////////////// |
| 432 // MediaGalleriesPrivateRemoveAllGalleryWatchFunction // | 470 // MediaGalleriesPrivateRemoveAllGalleryWatchFunction // |
| 433 /////////////////////////////////////////////////////////////////////////////// | 471 /////////////////////////////////////////////////////////////////////////////// |
| 434 | 472 |
| 435 MediaGalleriesPrivateRemoveAllGalleryWatchFunction:: | 473 MediaGalleriesPrivateRemoveAllGalleryWatchFunction:: |
| 436 ~MediaGalleriesPrivateRemoveAllGalleryWatchFunction() { | 474 ~MediaGalleriesPrivateRemoveAllGalleryWatchFunction() { |
| 437 } | 475 } |
| 438 | 476 |
| 439 bool MediaGalleriesPrivateRemoveAllGalleryWatchFunction::RunImpl() { | 477 bool MediaGalleriesPrivateRemoveAllGalleryWatchFunction::RunImpl() { |
| 440 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 478 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 441 #if defined(OS_WIN) | |
| 442 if (!render_view_host() || !render_view_host()->GetProcess()) | 479 if (!render_view_host() || !render_view_host()->GetProcess()) |
| 443 return false; | 480 return false; |
| 444 | 481 |
| 482 chrome::StorageMonitor::GetInstance()->Initialize(base::Bind( | |
| 483 &MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnStorageMonitorInit, | |
| 484 this)); | |
| 485 return true; | |
| 486 } | |
| 487 | |
| 488 void | |
| 489 MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnStorageMonitorInit() { | |
| 490 #if defined(OS_WIN) | |
| 491 DCHECK(chrome::StorageMonitor::GetInstance()->IsInitialized()); | |
| 445 chrome::MediaFileSystemRegistry* registry = | 492 chrome::MediaFileSystemRegistry* registry = |
| 446 g_browser_process->media_file_system_registry(); | 493 g_browser_process->media_file_system_registry(); |
| 447 chrome::MediaGalleriesPreferences* preferences = | 494 chrome::MediaGalleriesPreferences* preferences = |
| 448 registry->GetPreferences(profile_); | 495 registry->GetPreferences(profile_); |
| 449 GalleryWatchStateTracker* state_tracker = | 496 GalleryWatchStateTracker* state_tracker = |
| 450 MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); | 497 MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); |
| 451 state_tracker->RemoveAllGalleryWatchersForExtension( | 498 state_tracker->RemoveAllGalleryWatchersForExtension( |
| 452 extension_id(), preferences); | 499 extension_id(), preferences); |
| 453 #endif | 500 #endif |
| 454 return true; | 501 SendResponse(true); |
| 455 } | 502 } |
| 456 | 503 |
| 457 /////////////////////////////////////////////////////////////////////////////// | 504 /////////////////////////////////////////////////////////////////////////////// |
| 458 // MediaGalleriesPrivateEjectDeviceFunction // | 505 // MediaGalleriesPrivateEjectDeviceFunction // |
| 459 /////////////////////////////////////////////////////////////////////////////// | 506 /////////////////////////////////////////////////////////////////////////////// |
| 460 | 507 |
| 461 MediaGalleriesPrivateEjectDeviceFunction:: | 508 MediaGalleriesPrivateEjectDeviceFunction:: |
| 462 ~MediaGalleriesPrivateEjectDeviceFunction() { | 509 ~MediaGalleriesPrivateEjectDeviceFunction() { |
| 463 } | 510 } |
| 464 | 511 |
| 465 bool MediaGalleriesPrivateEjectDeviceFunction::RunImpl() { | 512 bool MediaGalleriesPrivateEjectDeviceFunction::RunImpl() { |
| 466 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 513 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 467 | 514 |
| 468 scoped_ptr<EjectDevice::Params> params(EjectDevice::Params::Create(*args_)); | 515 scoped_ptr<EjectDevice::Params> params(EjectDevice::Params::Create(*args_)); |
| 469 EXTENSION_FUNCTION_VALIDATE(params.get()); | 516 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 470 | 517 |
| 518 chrome::StorageMonitor::GetInstance()->Initialize(base::Bind( | |
| 519 &MediaGalleriesPrivateEjectDeviceFunction::OnStorageMonitorInit, | |
| 520 this, | |
| 521 params->device_id)); | |
| 522 return true; | |
| 523 } | |
| 524 | |
| 525 void MediaGalleriesPrivateEjectDeviceFunction::OnStorageMonitorInit( | |
| 526 const std::string& transient_device_id) { | |
| 527 DCHECK(chrome::StorageMonitor::GetInstance()->IsInitialized()); | |
| 471 chrome::StorageMonitor* monitor = chrome::StorageMonitor::GetInstance(); | 528 chrome::StorageMonitor* monitor = chrome::StorageMonitor::GetInstance(); |
| 472 std::string device_id_str = | 529 std::string device_id_str = |
| 473 monitor->GetDeviceIdForTransientId(params->device_id); | 530 monitor->GetDeviceIdForTransientId(transient_device_id); |
| 474 if (device_id_str == "") { | 531 if (device_id_str == "") { |
| 475 HandleResponse(chrome::StorageMonitor::EJECT_NO_SUCH_DEVICE); | 532 HandleResponse(chrome::StorageMonitor::EJECT_NO_SUCH_DEVICE); |
| 476 return true; | 533 return; |
| 477 } | 534 } |
| 478 | 535 |
| 479 monitor->EjectDevice( | 536 monitor->EjectDevice( |
| 480 device_id_str, | 537 device_id_str, |
| 481 base::Bind(&MediaGalleriesPrivateEjectDeviceFunction::HandleResponse, | 538 base::Bind(&MediaGalleriesPrivateEjectDeviceFunction::HandleResponse, |
| 482 this)); | 539 this)); |
| 483 | |
| 484 return true; | |
| 485 } | 540 } |
| 486 | 541 |
| 487 void MediaGalleriesPrivateEjectDeviceFunction::HandleResponse( | 542 void MediaGalleriesPrivateEjectDeviceFunction::HandleResponse( |
| 488 chrome::StorageMonitor::EjectStatus status) { | 543 chrome::StorageMonitor::EjectStatus status) { |
| 489 using extensions::api::media_galleries_private:: | 544 using extensions::api::media_galleries_private:: |
| 490 EJECT_DEVICE_RESULT_CODE_FAILURE; | 545 EJECT_DEVICE_RESULT_CODE_FAILURE; |
| 491 using extensions::api::media_galleries_private:: | 546 using extensions::api::media_galleries_private:: |
| 492 EJECT_DEVICE_RESULT_CODE_IN_USE; | 547 EJECT_DEVICE_RESULT_CODE_IN_USE; |
| 493 using extensions::api::media_galleries_private:: | 548 using extensions::api::media_galleries_private:: |
| 494 EJECT_DEVICE_RESULT_CODE_NO_SUCH_DEVICE; | 549 EJECT_DEVICE_RESULT_CODE_NO_SUCH_DEVICE; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 553 } | 608 } |
| 554 } | 609 } |
| 555 | 610 |
| 556 SetResult(result_list); | 611 SetResult(result_list); |
| 557 SendResponse(true); | 612 SendResponse(true); |
| 558 | 613 |
| 559 return true; | 614 return true; |
| 560 } | 615 } |
| 561 | 616 |
| 562 } // namespace extensions | 617 } // namespace extensions |
| OLD | NEW |