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

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

Issue 7243012: Change many extension event routers to not be singletons and to be more profile-aware. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: bookmark remove observer Created 9 years, 6 months 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/memory/singleton.h" 8 #include "base/memory/singleton.h"
9 #include "base/stl_util-inl.h" 9 #include "base/stl_util-inl.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 DictionaryValue* result = new DictionaryValue(); 48 DictionaryValue* result = new DictionaryValue();
49 result->SetString("mountPath", disk->mount_path()); 49 result->SetString("mountPath", disk->mount_path());
50 result->SetString("devicePath", disk->device_path()); 50 result->SetString("devicePath", disk->device_path());
51 result->SetString("label", disk->device_label()); 51 result->SetString("label", disk->device_label());
52 result->SetString("deviceType", DeviceTypeToString(disk->device_type())); 52 result->SetString("deviceType", DeviceTypeToString(disk->device_type()));
53 result->SetInteger("totalSizeKB", disk->total_size() / 1024); 53 result->SetInteger("totalSizeKB", disk->total_size() / 1024);
54 result->SetBoolean("readOnly", disk->is_read_only()); 54 result->SetBoolean("readOnly", disk->is_read_only());
55 return result; 55 return result;
56 } 56 }
57 57
58 ExtensionFileBrowserEventRouter::ExtensionFileBrowserEventRouter() 58 ExtensionFileBrowserEventRouter::ExtensionFileBrowserEventRouter(
59 Profile* profile)
59 : delegate_(new ExtensionFileBrowserEventRouter::FileWatcherDelegate()), 60 : delegate_(new ExtensionFileBrowserEventRouter::FileWatcherDelegate()),
60 profile_(NULL) { 61 profile_(profile) {
61 } 62 }
62 63
63 ExtensionFileBrowserEventRouter::~ExtensionFileBrowserEventRouter() { 64 ExtensionFileBrowserEventRouter::~ExtensionFileBrowserEventRouter() {
64 DCHECK(file_watchers_.empty()); 65 DCHECK(file_watchers_.empty());
65 STLDeleteValues(&file_watchers_); 66 STLDeleteValues(&file_watchers_);
66 67
67 if (!profile_) 68 if (!profile_) {
69 NOTREACHED();
68 return; 70 return;
71 }
69 if (!chromeos::CrosLibrary::Get()->EnsureLoaded()) 72 if (!chromeos::CrosLibrary::Get()->EnsureLoaded())
70 return; 73 return;
71 chromeos::MountLibrary* lib = 74 chromeos::MountLibrary* lib =
72 chromeos::CrosLibrary::Get()->GetMountLibrary(); 75 chromeos::CrosLibrary::Get()->GetMountLibrary();
73 lib->RemoveObserver(this); 76 lib->RemoveObserver(this);
74 profile_ = NULL;
75 } 77 }
76 78
77 // static 79 void ExtensionFileBrowserEventRouter::Init() {
78 ExtensionFileBrowserEventRouter* 80 if (!profile_) {
79 ExtensionFileBrowserEventRouter::GetInstance() { 81 NOTREACHED();
80 return Singleton<ExtensionFileBrowserEventRouter>::get();
81 }
82
83 void ExtensionFileBrowserEventRouter::ObserveFileSystemEvents(
84 Profile* profile) {
85 if (!profile)
86 return; 82 return;
87 profile_ = profile; 83 }
88 if (!chromeos::CrosLibrary::Get()->EnsureLoaded()) 84 if (!chromeos::CrosLibrary::Get()->EnsureLoaded())
89 return; 85 return;
90 if (chromeos::UserManager::Get()->user_is_logged_in()) { 86 if (chromeos::UserManager::Get()->user_is_logged_in()) {
91 chromeos::MountLibrary* lib = 87 chromeos::MountLibrary* lib =
92 chromeos::CrosLibrary::Get()->GetMountLibrary(); 88 chromeos::CrosLibrary::Get()->GetMountLibrary();
93 lib->RemoveObserver(this); 89 lib->RemoveObserver(this);
94 lib->AddObserver(this); 90 lib->AddObserver(this);
95 lib->RequestMountInfoRefresh(); 91 lib->RequestMountInfoRefresh();
96 } 92 }
97 } 93 }
(...skipping 28 matching lines...) Expand all
126 if (iter == file_watchers_.end()) 122 if (iter == file_watchers_.end())
127 return; 123 return;
128 // Remove the renderer process for this watch. 124 // Remove the renderer process for this watch.
129 iter->second->extensions.erase(extension_id); 125 iter->second->extensions.erase(extension_id);
130 if (iter->second->extensions.empty()) { 126 if (iter->second->extensions.empty()) {
131 delete iter->second; 127 delete iter->second;
132 file_watchers_.erase(iter); 128 file_watchers_.erase(iter);
133 } 129 }
134 } 130 }
135 131
136 void ExtensionFileBrowserEventRouter::StopObservingFileSystemEvents() {
137 if (!profile_)
138 return;
139 if (!chromeos::CrosLibrary::Get()->EnsureLoaded())
140 return;
141 chromeos::MountLibrary* lib =
142 chromeos::CrosLibrary::Get()->GetMountLibrary();
143 lib->RemoveObserver(this);
144 profile_ = NULL;
145 }
146
147 void ExtensionFileBrowserEventRouter::DiskChanged( 132 void ExtensionFileBrowserEventRouter::DiskChanged(
148 chromeos::MountLibraryEventType event, 133 chromeos::MountLibraryEventType event,
149 const chromeos::MountLibrary::Disk* disk) { 134 const chromeos::MountLibrary::Disk* disk) {
150 if (event == chromeos::MOUNT_DISK_ADDED) { 135 if (event == chromeos::MOUNT_DISK_ADDED) {
151 OnDiskAdded(disk); 136 OnDiskAdded(disk);
152 } else if (event == chromeos::MOUNT_DISK_REMOVED) { 137 } else if (event == chromeos::MOUNT_DISK_REMOVED) {
153 OnDiskRemoved(disk); 138 OnDiskRemoved(disk);
154 } else if (event == chromeos::MOUNT_DISK_CHANGED) { 139 } else if (event == chromeos::MOUNT_DISK_CHANGED) {
155 OnDiskChanged(disk); 140 OnDiskChanged(disk);
156 } 141 }
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 local_path, 368 local_path,
384 true)); // got_error 369 true)); // got_error
385 } 370 }
386 371
387 void 372 void
388 ExtensionFileBrowserEventRouter::FileWatcherDelegate::HandleFileWatchOnUIThread( 373 ExtensionFileBrowserEventRouter::FileWatcherDelegate::HandleFileWatchOnUIThread(
389 const FilePath& local_path, bool got_error) { 374 const FilePath& local_path, bool got_error) {
390 ExtensionFileBrowserEventRouter::GetInstance()->HandleFileWatchNotification( 375 ExtensionFileBrowserEventRouter::GetInstance()->HandleFileWatchNotification(
391 local_path, got_error); 376 local_path, got_error);
392 } 377 }
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/extensions/file_browser_event_router.h ('k') | chrome/browser/extensions/extension_bookmarks_module.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698