Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: chrome/browser/chromeos/extensions/file_browser_event_router.cc

Issue 11232066: Remove GetExtensionEventRouter from Profile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rerebase Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/chromeos/extensions/file_browser_event_router.h" 5 #include "chrome/browser/chromeos/extensions/file_browser_event_router.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/json/json_writer.h" 8 #include "base/json/json_writer.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/prefs/public/pref_change_registrar.h" 10 #include "base/prefs/public/pref_change_registrar.h"
11 #include "base/stl_util.h" 11 #include "base/stl_util.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "chrome/browser/chromeos/cros/cros_library.h" 13 #include "chrome/browser/chromeos/cros/cros_library.h"
14 #include "chrome/browser/chromeos/drive/drive_file_system_interface.h" 14 #include "chrome/browser/chromeos/drive/drive_file_system_interface.h"
15 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" 15 #include "chrome/browser/chromeos/drive/drive_file_system_util.h"
16 #include "chrome/browser/chromeos/drive/drive_system_service.h" 16 #include "chrome/browser/chromeos/drive/drive_system_service.h"
17 #include "chrome/browser/chromeos/extensions/file_browser_notifications.h" 17 #include "chrome/browser/chromeos/extensions/file_browser_notifications.h"
18 #include "chrome/browser/chromeos/extensions/file_manager_util.h" 18 #include "chrome/browser/chromeos/extensions/file_manager_util.h"
19 #include "chrome/browser/chromeos/login/base_login_display_host.h" 19 #include "chrome/browser/chromeos/login/base_login_display_host.h"
20 #include "chrome/browser/chromeos/login/screen_locker.h" 20 #include "chrome/browser/chromeos/login/screen_locker.h"
21 #include "chrome/browser/chromeos/login/user_manager.h" 21 #include "chrome/browser/chromeos/login/user_manager.h"
22 #include "chrome/browser/extensions/event_names.h" 22 #include "chrome/browser/extensions/event_names.h"
23 #include "chrome/browser/extensions/event_router.h" 23 #include "chrome/browser/extensions/event_router.h"
24 #include "chrome/browser/extensions/extension_service.h" 24 #include "chrome/browser/extensions/extension_service.h"
25 #include "chrome/browser/extensions/extension_system.h"
25 #include "chrome/browser/google_apis/drive_service_interface.h" 26 #include "chrome/browser/google_apis/drive_service_interface.h"
26 #include "chrome/browser/prefs/pref_service.h" 27 #include "chrome/browser/prefs/pref_service.h"
27 #include "chrome/browser/profiles/profile.h" 28 #include "chrome/browser/profiles/profile.h"
28 #include "chrome/browser/profiles/profile_dependency_manager.h" 29 #include "chrome/browser/profiles/profile_dependency_manager.h"
29 #include "chrome/common/chrome_notification_types.h" 30 #include "chrome/common/chrome_notification_types.h"
30 #include "chrome/common/pref_names.h" 31 #include "chrome/common/pref_names.h"
31 #include "content/public/browser/notification_source.h" 32 #include "content/public/browser/notification_source.h"
32 #include "grit/generated_resources.h" 33 #include "grit/generated_resources.h"
33 #include "ui/base/l10n/l10n_util.h" 34 #include "ui/base/l10n/l10n_util.h"
34 #include "webkit/fileapi/file_system_types.h" 35 #include "webkit/fileapi/file_system_types.h"
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 if (cache) { 367 if (cache) {
367 cache->SetMountedStateOnUIThread( 368 cache->SetMountedStateOnUIThread(
368 source_path, false, drive::ChangeCacheStateCallback()); 369 source_path, false, drive::ChangeCacheStateCallback());
369 } 370 }
370 } 371 }
371 } 372 }
372 } 373 }
373 374
374 void FileBrowserEventRouter::OnNetworkManagerChanged( 375 void FileBrowserEventRouter::OnNetworkManagerChanged(
375 chromeos::NetworkLibrary* network_library) { 376 chromeos::NetworkLibrary* network_library) {
376 if (!profile_ || !profile_->GetExtensionEventRouter()) { 377 if (!profile_ ||
378 !extensions::ExtensionSystem::Get(profile_)->event_router()) {
377 NOTREACHED(); 379 NOTREACHED();
378 return; 380 return;
379 } 381 }
380 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( 382 extensions::ExtensionSystem::Get(profile_)->event_router()->
381 extensions::event_names::kOnFileBrowserNetworkConnectionChanged, 383 DispatchEventToRenderers(
382 scoped_ptr<ListValue>(new ListValue()), NULL, GURL()); 384 extensions::event_names::kOnFileBrowserNetworkConnectionChanged,
385 scoped_ptr<ListValue>(new ListValue()), NULL, GURL());
383 } 386 }
384 387
385 void FileBrowserEventRouter::Observe( 388 void FileBrowserEventRouter::Observe(
386 int type, 389 int type,
387 const content::NotificationSource& source, 390 const content::NotificationSource& source,
388 const content::NotificationDetails& details) { 391 const content::NotificationDetails& details) {
389 if (!profile_ || !profile_->GetExtensionEventRouter()) { 392 if (!profile_ ||
393 !extensions::ExtensionSystem::Get(profile_)->event_router()) {
390 NOTREACHED(); 394 NOTREACHED();
391 return; 395 return;
392 } 396 }
393 if (type == chrome::NOTIFICATION_PREF_CHANGED) { 397 if (type == chrome::NOTIFICATION_PREF_CHANGED) {
394 std::string* pref_name = content::Details<std::string>(details).ptr(); 398 std::string* pref_name = content::Details<std::string>(details).ptr();
395 // If the policy just got disabled we have to unmount every device currently 399 // If the policy just got disabled we have to unmount every device currently
396 // mounted. The opposite is fine - we can let the user re-plug her device to 400 // mounted. The opposite is fine - we can let the user re-plug her device to
397 // make it available. 401 // make it available.
398 if (*pref_name == prefs::kExternalStorageDisabled && 402 if (*pref_name == prefs::kExternalStorageDisabled &&
399 profile_->GetPrefs()->GetBoolean(prefs::kExternalStorageDisabled)) { 403 profile_->GetPrefs()->GetBoolean(prefs::kExternalStorageDisabled)) {
400 DiskMountManager* manager = DiskMountManager::GetInstance(); 404 DiskMountManager* manager = DiskMountManager::GetInstance();
401 DiskMountManager::MountPointMap mounts(manager->mount_points()); 405 DiskMountManager::MountPointMap mounts(manager->mount_points());
402 for (DiskMountManager::MountPointMap::const_iterator it = mounts.begin(); 406 for (DiskMountManager::MountPointMap::const_iterator it = mounts.begin();
403 it != mounts.end(); ++it) { 407 it != mounts.end(); ++it) {
404 LOG(INFO) << "Unmounting " << it->second.mount_path 408 LOG(INFO) << "Unmounting " << it->second.mount_path
405 << " because of policy."; 409 << " because of policy.";
406 manager->UnmountPath(it->second.mount_path, 410 manager->UnmountPath(it->second.mount_path,
407 chromeos::UNMOUNT_OPTIONS_NONE); 411 chromeos::UNMOUNT_OPTIONS_NONE);
408 } 412 }
409 return; 413 return;
410 } else if (*pref_name == prefs::kDisableDriveOverCellular || 414 } else if (*pref_name == prefs::kDisableDriveOverCellular ||
411 *pref_name == prefs::kDisableDriveHostedFiles || 415 *pref_name == prefs::kDisableDriveHostedFiles ||
412 *pref_name == prefs::kDisableDrive || 416 *pref_name == prefs::kDisableDrive ||
413 *pref_name == prefs::kUse24HourClock) { 417 *pref_name == prefs::kUse24HourClock) {
414 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( 418 extensions::ExtensionSystem::Get(profile_)->event_router()->
415 extensions::event_names::kOnFileBrowserPreferencesChanged, 419 DispatchEventToRenderers(
416 scoped_ptr<ListValue>(new ListValue()), NULL, GURL()); 420 extensions::event_names::kOnFileBrowserPreferencesChanged,
421 scoped_ptr<ListValue>(new ListValue()), NULL, GURL());
417 } 422 }
418 } 423 }
419 } 424 }
420 425
421 void FileBrowserEventRouter::OnProgressUpdate( 426 void FileBrowserEventRouter::OnProgressUpdate(
422 const google_apis::OperationProgressStatusList& list) { 427 const google_apis::OperationProgressStatusList& list) {
423 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 428 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
424 429
425 scoped_ptr<ListValue> event_list( 430 scoped_ptr<ListValue> event_list(
426 file_manager_util::ProgressStatusVectorToListValue( 431 file_manager_util::ProgressStatusVectorToListValue(
427 profile_, 432 profile_,
428 file_manager_util::GetFileBrowserExtensionUrl().GetOrigin(), 433 file_manager_util::GetFileBrowserExtensionUrl().GetOrigin(),
429 list)); 434 list));
430 435
431 scoped_ptr<ListValue> args(new ListValue()); 436 scoped_ptr<ListValue> args(new ListValue());
432 args->Append(event_list.release()); 437 args->Append(event_list.release());
433 438
434 profile_->GetExtensionEventRouter()->DispatchEventToExtension( 439 extensions::ExtensionSystem::Get(profile_)->event_router()->
435 std::string(kFileBrowserDomain), 440 DispatchEventToExtension(
436 extensions::event_names::kOnFileTransfersUpdated, args.Pass(), NULL, 441 std::string(kFileBrowserDomain),
437 GURL()); 442 extensions::event_names::kOnFileTransfersUpdated, args.Pass(), NULL,
443 GURL());
438 } 444 }
439 445
440 void FileBrowserEventRouter::OnDirectoryChanged( 446 void FileBrowserEventRouter::OnDirectoryChanged(
441 const FilePath& directory_path) { 447 const FilePath& directory_path) {
442 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 448 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
443 HandleFileWatchNotification(directory_path, false); 449 HandleFileWatchNotification(directory_path, false);
444 } 450 }
445 451
446 void FileBrowserEventRouter::OnDocumentFeedFetched( 452 void FileBrowserEventRouter::OnDocumentFeedFetched(
447 int num_accumulated_entries) { 453 int num_accumulated_entries) {
448 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 454 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
449 455
450 scoped_ptr<ListValue> args(new ListValue()); 456 scoped_ptr<ListValue> args(new ListValue());
451 args->Append(base::Value::CreateIntegerValue(num_accumulated_entries)); 457 args->Append(base::Value::CreateIntegerValue(num_accumulated_entries));
452 458
453 profile_->GetExtensionEventRouter()->DispatchEventToExtension( 459 extensions::ExtensionSystem::Get(profile_)->event_router()->
454 std::string(kFileBrowserDomain), 460 DispatchEventToExtension(
455 extensions::event_names::kOnDocumentFeedFetched, args.Pass(), NULL, 461 std::string(kFileBrowserDomain),
456 GURL()); 462 extensions::event_names::kOnDocumentFeedFetched, args.Pass(), NULL,
463 GURL());
457 } 464 }
458 465
459 void FileBrowserEventRouter::OnFileSystemMounted() { 466 void FileBrowserEventRouter::OnFileSystemMounted() {
460 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 467 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
461 468
462 MountDrive(base::Bind(&base::DoNothing)); // Callback does nothing. 469 MountDrive(base::Bind(&base::DoNothing)); // Callback does nothing.
463 } 470 }
464 471
465 void FileBrowserEventRouter::OnFileSystemBeingUnmounted() { 472 void FileBrowserEventRouter::OnFileSystemBeingUnmounted() {
466 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 473 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 GURL base_url = fileapi::GetFileSystemRootURI(target_origin_url, 527 GURL base_url = fileapi::GetFileSystemRootURI(target_origin_url,
521 fileapi::kFileSystemTypeExternal); 528 fileapi::kFileSystemTypeExternal);
522 GURL target_file_url = GURL(base_url.spec() + virtual_path.value()); 529 GURL target_file_url = GURL(base_url.spec() + virtual_path.value());
523 scoped_ptr<ListValue> args(new ListValue()); 530 scoped_ptr<ListValue> args(new ListValue());
524 DictionaryValue* watch_info = new DictionaryValue(); 531 DictionaryValue* watch_info = new DictionaryValue();
525 args->Append(watch_info); 532 args->Append(watch_info);
526 watch_info->SetString("fileUrl", target_file_url.spec()); 533 watch_info->SetString("fileUrl", target_file_url.spec());
527 watch_info->SetString("eventType", 534 watch_info->SetString("eventType",
528 got_error ? kPathWatchError : kPathChanged); 535 got_error ? kPathWatchError : kPathChanged);
529 536
530 profile_->GetExtensionEventRouter()->DispatchEventToExtension( 537 extensions::ExtensionSystem::Get(profile_)->event_router()->
531 iter->first, extensions::event_names::kOnFileChanged, args.Pass(), NULL, 538 DispatchEventToExtension(iter->first,
532 GURL()); 539 extensions::event_names::kOnFileChanged, args.Pass(), NULL, GURL());
533 } 540 }
534 } 541 }
535 542
536 // TODO(tbarzic): This is not used anymore. Remove it. 543 // TODO(tbarzic): This is not used anymore. Remove it.
537 void FileBrowserEventRouter::DispatchDiskEvent( 544 void FileBrowserEventRouter::DispatchDiskEvent(
538 const DiskMountManager::Disk* disk, bool added) { 545 const DiskMountManager::Disk* disk, bool added) {
539 if (!profile_) { 546 if (!profile_) {
540 NOTREACHED(); 547 NOTREACHED();
541 return; 548 return;
542 } 549 }
543 550
544 scoped_ptr<ListValue> args(new ListValue()); 551 scoped_ptr<ListValue> args(new ListValue());
545 DictionaryValue* mount_info = new DictionaryValue(); 552 DictionaryValue* mount_info = new DictionaryValue();
546 args->Append(mount_info); 553 args->Append(mount_info);
547 mount_info->SetString("eventType", 554 mount_info->SetString("eventType",
548 added ? kDiskAddedEventType : kDiskRemovedEventType); 555 added ? kDiskAddedEventType : kDiskRemovedEventType);
549 DictionaryValue* disk_info = DiskToDictionaryValue(disk); 556 DictionaryValue* disk_info = DiskToDictionaryValue(disk);
550 mount_info->Set("volumeInfo", disk_info); 557 mount_info->Set("volumeInfo", disk_info);
551 558
552 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( 559 extensions::ExtensionSystem::Get(profile_)->event_router()->
553 extensions::event_names::kOnFileBrowserDiskChanged, args.Pass(), NULL, 560 DispatchEventToRenderers(
554 GURL()); 561 extensions::event_names::kOnFileBrowserDiskChanged, args.Pass(), NULL,
562 GURL());
555 } 563 }
556 564
557 void FileBrowserEventRouter::DispatchMountCompletedEvent( 565 void FileBrowserEventRouter::DispatchMountCompletedEvent(
558 DiskMountManager::MountEvent event, 566 DiskMountManager::MountEvent event,
559 chromeos::MountError error_code, 567 chromeos::MountError error_code,
560 const DiskMountManager::MountPointInfo& mount_info) { 568 const DiskMountManager::MountPointInfo& mount_info) {
561 // profile_ is NULL if ShutdownOnUIThread() is called earlier. This can 569 // profile_ is NULL if ShutdownOnUIThread() is called earlier. This can
562 // happen at shutdown. 570 // happen at shutdown.
563 if (!profile_) 571 if (!profile_)
564 return; 572 return;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 mount_info_value->SetString("mountPath", 605 mount_info_value->SetString("mountPath",
598 "/" + relative_mount_path.value()); 606 "/" + relative_mount_path.value());
599 relative_mount_path_set = true; 607 relative_mount_path_set = true;
600 } else { 608 } else {
601 LOG(ERROR) << "Mount path is not accessible: " << mount_info.mount_path; 609 LOG(ERROR) << "Mount path is not accessible: " << mount_info.mount_path;
602 mount_info_value->SetString("status", 610 mount_info_value->SetString("status",
603 MountErrorToString(chromeos::MOUNT_ERROR_PATH_UNMOUNTED)); 611 MountErrorToString(chromeos::MOUNT_ERROR_PATH_UNMOUNTED));
604 } 612 }
605 } 613 }
606 614
607 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( 615 extensions::ExtensionSystem::Get(profile_)->event_router()->
608 extensions::event_names::kOnFileBrowserMountCompleted, args.Pass(), NULL, 616 DispatchEventToRenderers(
609 GURL()); 617 extensions::event_names::kOnFileBrowserMountCompleted, args.Pass(),
618 NULL, GURL());
610 619
611 // Do not attempt to open File Manager while the login is in progress or 620 // Do not attempt to open File Manager while the login is in progress or
612 // the screen is locked. 621 // the screen is locked.
613 if (chromeos::BaseLoginDisplayHost::default_host() || 622 if (chromeos::BaseLoginDisplayHost::default_host() ||
614 chromeos::ScreenLocker::default_screen_locker()) 623 chromeos::ScreenLocker::default_screen_locker())
615 return; 624 return;
616 625
617 if (relative_mount_path_set && 626 if (relative_mount_path_set &&
618 mount_info.mount_type == chromeos::MOUNT_TYPE_DEVICE && 627 mount_info.mount_type == chromeos::MOUNT_TYPE_DEVICE &&
619 !mount_info.mount_condition && 628 !mount_info.mount_condition &&
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 return scoped_refptr<RefcountedProfileKeyedService>( 889 return scoped_refptr<RefcountedProfileKeyedService>(
881 new FileBrowserEventRouter(profile)); 890 new FileBrowserEventRouter(profile));
882 } 891 }
883 892
884 bool FileBrowserEventRouterFactory::ServiceHasOwnInstanceInIncognito() const { 893 bool FileBrowserEventRouterFactory::ServiceHasOwnInstanceInIncognito() const {
885 // Explicitly and always allow this router in guest login mode. see 894 // Explicitly and always allow this router in guest login mode. see
886 // chrome/browser/profiles/profile_keyed_base_factory.h comment 895 // chrome/browser/profiles/profile_keyed_base_factory.h comment
887 // for the details. 896 // for the details.
888 return true; 897 return true;
889 } 898 }
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/bookmark_manager_extension_api.cc ('k') | chrome/browser/chromeos/extensions/file_handler_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698