| Index: chrome/browser/chromeos/extensions/file_browser_event_router.cc
|
| diff --git a/chrome/browser/chromeos/extensions/file_browser_event_router.cc b/chrome/browser/chromeos/extensions/file_browser_event_router.cc
|
| index c3479feb361e067385b3f48596832237c6bd1297..ae6add89fb19dabc26a66e4263e847c0f290b788 100644
|
| --- a/chrome/browser/chromeos/extensions/file_browser_event_router.cc
|
| +++ b/chrome/browser/chromeos/extensions/file_browser_event_router.cc
|
| @@ -166,6 +166,11 @@ bool FileBrowserEventRouter::AddFileWatch(
|
| } else {
|
| iter->second->AddExtension(extension_id);
|
| }
|
| + if (is_remote_watch) {
|
| + gdata::GDataFileSystem* file_system = GetFileSystem();
|
| + if (file_system)
|
| + file_system->AddFileWatch(watch_path);
|
| + }
|
| return true;
|
| }
|
|
|
| @@ -174,11 +179,13 @@ void FileBrowserEventRouter::RemoveFileWatch(
|
| const std::string& extension_id) {
|
| base::AutoLock lock(lock_);
|
| FilePath watch_path = local_path;
|
| + bool is_remote_watch = false;
|
| // Tweak watch path for remote sources - we need to drop leading /special
|
| // directory from there in order to be able to pair these events with
|
| // their change notifications.
|
| if (gdata::util::GetSpecialRemoteRootPath().IsParent(watch_path)) {
|
| watch_path = gdata::util::ExtractGDataPath(watch_path);
|
| + is_remote_watch = true;
|
| }
|
| WatcherMap::iterator iter = file_watchers_.find(watch_path);
|
| if (iter == file_watchers_.end())
|
| @@ -189,6 +196,11 @@ void FileBrowserEventRouter::RemoveFileWatch(
|
| delete iter->second;
|
| file_watchers_.erase(iter);
|
| }
|
| + if (is_remote_watch) {
|
| + gdata::GDataFileSystem* file_system = GetFileSystem();
|
| + if (file_system)
|
| + file_system->RemoveFileWatch(watch_path);
|
| + }
|
| }
|
|
|
| void FileBrowserEventRouter::DiskChanged(
|
| @@ -255,10 +267,7 @@ void FileBrowserEventRouter::MountCompleted(
|
| if ((event_type == DiskMountManager::MOUNTING) !=
|
| (error_code == chromeos::MOUNT_ERROR_NONE)) {
|
| FilePath source_path(mount_info.source_path);
|
| - gdata::GDataSystemService* system_service =
|
| - gdata::GDataSystemServiceFactory::GetForProfile(profile_);
|
| - gdata::GDataFileSystem* file_system =
|
| - system_service ? system_service->file_system() : NULL;
|
| + gdata::GDataFileSystem* file_system = GetFileSystem();
|
| if (file_system && file_system->IsUnderGDataCacheDirectory(source_path))
|
| file_system->SetMountedState(source_path, false,
|
| gdata::SetMountedStateCallback());
|
| @@ -601,6 +610,12 @@ FileBrowserEventRouter::FileWatcherExtensions::GetVirtualPath() const {
|
| return virtual_path_;
|
| }
|
|
|
| +gdata::GDataFileSystem* FileBrowserEventRouter::GetFileSystem() const {
|
| + gdata::GDataSystemService* system_service =
|
| + gdata::GDataSystemServiceFactory::GetForProfile(profile_);
|
| + return (system_service ? system_service->file_system() : NULL);
|
| +}
|
| +
|
| bool FileBrowserEventRouter::FileWatcherExtensions::Watch
|
| (const FilePath& path, FileWatcherDelegate* delegate) {
|
| if (is_remote_file_system_)
|
|
|