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

Side by Side Diff: chrome/browser/chromeos/extensions/file_manager/event_router.h

Issue 1023093002: Files.app: Replace job related code in EventRouter with new JobEventRoter class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update file_manager_private.js. Created 5 years, 9 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
« no previous file with comments | « no previous file | chrome/browser/chromeos/extensions/file_manager/event_router.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_EVENT_ROUTER_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_EVENT_ROUTER_H_
6 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_EVENT_ROUTER_H_ 6 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_EVENT_ROUTER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
14 #include "base/files/file_path_watcher.h" 14 #include "base/files/file_path_watcher.h"
15 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
16 #include "chrome/browser/chromeos/drive/drive_integration_service.h" 16 #include "chrome/browser/chromeos/drive/drive_integration_service.h"
17 #include "chrome/browser/chromeos/drive/file_system_observer.h" 17 #include "chrome/browser/chromeos/drive/file_system_observer.h"
18 #include "chrome/browser/chromeos/drive/job_list.h"
19 #include "chrome/browser/chromeos/drive/sync_client.h" 18 #include "chrome/browser/chromeos/drive/sync_client.h"
19 #include "chrome/browser/chromeos/extensions/file_manager/device_event_router.h"
20 #include "chrome/browser/chromeos/extensions/file_manager/job_event_router.h"
20 #include "chrome/browser/chromeos/file_manager/file_watcher.h" 21 #include "chrome/browser/chromeos/file_manager/file_watcher.h"
21 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" 22 #include "chrome/browser/chromeos/file_manager/fileapi_util.h"
22 #include "chrome/browser/chromeos/file_manager/volume_manager.h" 23 #include "chrome/browser/chromeos/file_manager/volume_manager.h"
23 #include "chrome/browser/chromeos/file_manager/volume_manager_observer.h" 24 #include "chrome/browser/chromeos/file_manager/volume_manager_observer.h"
24 #include "chrome/browser/drive/drive_service_interface.h" 25 #include "chrome/browser/drive/drive_service_interface.h"
25 #include "chrome/common/extensions/api/file_manager_private.h" 26 #include "chrome/common/extensions/api/file_manager_private.h"
26 #include "chromeos/disks/disk_mount_manager.h" 27 #include "chromeos/disks/disk_mount_manager.h"
27 #include "chromeos/network/network_state_handler_observer.h" 28 #include "chromeos/network/network_state_handler_observer.h"
28 #include "components/keyed_service/core/keyed_service.h" 29 #include "components/keyed_service/core/keyed_service.h"
29 #include "storage/browser/fileapi/file_system_operation.h" 30 #include "storage/browser/fileapi/file_system_operation.h"
30 31
31 class PrefChangeRegistrar; 32 class PrefChangeRegistrar;
32 class Profile; 33 class Profile;
33 34
34 using file_manager::util::EntryDefinition; 35 using file_manager::util::EntryDefinition;
35 36
36 namespace base { 37 namespace base {
37 class ListValue; 38 class ListValue;
38 } 39 }
39 40
40 namespace chromeos { 41 namespace chromeos {
41 class NetworkState; 42 class NetworkState;
42 } 43 }
43 44
44 namespace drive { 45 namespace drive {
45 class FileChange; 46 class FileChange;
46 } 47 }
47 48
48 namespace file_manager { 49 namespace file_manager {
49 class DeviceEventRouter;
50 50
51 // Monitors changes in disk mounts, network connection state and preferences 51 // Monitors changes in disk mounts, network connection state and preferences
52 // affecting File Manager. Dispatches appropriate File Browser events. 52 // affecting File Manager. Dispatches appropriate File Browser events.
53 class EventRouter : public KeyedService, 53 class EventRouter : public KeyedService,
54 public chromeos::NetworkStateHandlerObserver, 54 public chromeos::NetworkStateHandlerObserver,
55 public drive::FileSystemObserver, 55 public drive::FileSystemObserver,
56 public drive::JobListObserver,
57 public drive::DriveServiceObserver, 56 public drive::DriveServiceObserver,
58 public VolumeManagerObserver { 57 public VolumeManagerObserver {
59 public: 58 public:
60 typedef base::Callback<void(const base::FilePath& virtual_path, 59 typedef base::Callback<void(const base::FilePath& virtual_path,
61 const drive::FileChange* list, 60 const drive::FileChange* list,
62 bool got_error, 61 bool got_error,
63 const std::vector<std::string>& extension_ids)> 62 const std::vector<std::string>& extension_ids)>
64 DispatchDirectoryChangeEventImplCallback; 63 DispatchDirectoryChangeEventImplCallback;
65 64
66 explicit EventRouter(Profile* profile); 65 explicit EventRouter(Profile* profile);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 104
106 // Called when a notification from a watcher manager arrives. 105 // Called when a notification from a watcher manager arrives.
107 void OnWatcherManagerNotification( 106 void OnWatcherManagerNotification(
108 const storage::FileSystemURL& file_system_url, 107 const storage::FileSystemURL& file_system_url,
109 const std::string& extension_id, 108 const std::string& extension_id,
110 storage::WatcherManager::ChangeType change_type); 109 storage::WatcherManager::ChangeType change_type);
111 110
112 // chromeos::NetworkStateHandlerObserver overrides. 111 // chromeos::NetworkStateHandlerObserver overrides.
113 void DefaultNetworkChanged(const chromeos::NetworkState* network) override; 112 void DefaultNetworkChanged(const chromeos::NetworkState* network) override;
114 113
115 // drive::JobListObserver overrides.
116 void OnJobAdded(const drive::JobInfo& job_info) override;
117 void OnJobUpdated(const drive::JobInfo& job_info) override;
118 void OnJobDone(const drive::JobInfo& job_info,
119 drive::FileError error) override;
120
121 // drive::DriveServiceObserver overrides. 114 // drive::DriveServiceObserver overrides.
122 void OnRefreshTokenInvalid() override; 115 void OnRefreshTokenInvalid() override;
123 void OnReadyToSendRequests() override; 116 void OnReadyToSendRequests() override;
124 117
125 // drive::FileSystemObserver overrides. 118 // drive::FileSystemObserver overrides.
126 void OnDirectoryChanged(const base::FilePath& drive_path) override; 119 void OnDirectoryChanged(const base::FilePath& drive_path) override;
127 void OnFileChanged(const drive::FileChange& changed_files) override; 120 void OnFileChanged(const drive::FileChange& changed_files) override;
128 void OnDriveSyncError(drive::file_system::DriveSyncErrorType type, 121 void OnDriveSyncError(drive::file_system::DriveSyncErrorType type,
129 const base::FilePath& drive_path) override; 122 const base::FilePath& drive_path) override;
130 123
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 extensions::api::file_manager_private::MountCompletedEventType event_type, 183 extensions::api::file_manager_private::MountCompletedEventType event_type,
191 chromeos::MountError error, 184 chromeos::MountError error,
192 const VolumeInfo& volume_info); 185 const VolumeInfo& volume_info);
193 186
194 // If needed, opens a file manager window for the removable device mounted at 187 // If needed, opens a file manager window for the removable device mounted at
195 // |mount_path|. Disk.mount_path() is empty, since it is being filled out 188 // |mount_path|. Disk.mount_path() is empty, since it is being filled out
196 // after calling notifying observers by DiskMountManager. 189 // after calling notifying observers by DiskMountManager.
197 void ShowRemovableDeviceInFileManager(VolumeType type, 190 void ShowRemovableDeviceInFileManager(VolumeType type,
198 const base::FilePath& mount_path); 191 const base::FilePath& mount_path);
199 192
200 // Manages the list of currently active Drive file transfer jobs.
201 struct DriveJobInfoWithStatus {
202 DriveJobInfoWithStatus();
203 DriveJobInfoWithStatus(const drive::JobInfo& info,
204 const std::string& status);
205 drive::JobInfo job_info;
206 std::string status;
207 };
208
209 // Sends onFileTransferUpdate event right now if |immediate| is set. Otherwise 193 // Sends onFileTransferUpdate event right now if |immediate| is set. Otherwise
210 // it refrains from sending for a short while, and after that it sends the 194 // it refrains from sending for a short while, and after that it sends the
211 // most recently scheduled event once. 195 // most recently scheduled event once.
212 // The delay is for waiting subsequent 'added' events to come after the first 196 // The delay is for waiting subsequent 'added' events to come after the first
213 // one when multiple tasks are added. This way, we can avoid frequent UI 197 // one when multiple tasks are added. This way, we can avoid frequent UI
214 // update caused by differences between singular and plural cases. 198 // update caused by differences between singular and plural cases.
215 void ScheduleDriveFileTransferEvent(const drive::JobInfo& job_info, 199 void ScheduleDriveFileTransferEvent(const drive::JobInfo& job_info,
216 const std::string& status, 200 const std::string& status,
217 bool immediate); 201 bool immediate);
218 202
219 // Sends the most recently scheduled onFileTransferUpdated event to 203 // Sends the most recently scheduled onFileTransferUpdated event to
220 // extensions. 204 // extensions.
221 // This is used for implementing ScheduledDriveFileTransferEvent(). 205 // This is used for implementing ScheduledDriveFileTransferEvent().
222 void SendDriveFileTransferEvent(); 206 void SendDriveFileTransferEvent();
223 207
224 std::map<drive::JobID, DriveJobInfoWithStatus> drive_jobs_;
225 scoped_ptr<DriveJobInfoWithStatus> drive_job_info_for_scheduled_event_;
226 base::Time last_copy_progress_event_; 208 base::Time last_copy_progress_event_;
227 base::Time next_send_file_transfer_event_;
228 209
229 WatcherMap file_watchers_; 210 WatcherMap file_watchers_;
230 scoped_ptr<PrefChangeRegistrar> pref_change_registrar_; 211 scoped_ptr<PrefChangeRegistrar> pref_change_registrar_;
231 Profile* profile_; 212 Profile* profile_;
232 213
233 scoped_ptr<DeviceEventRouter> device_event_router_; 214 scoped_ptr<DeviceEventRouter> device_event_router_;
215 scoped_ptr<JobEventRouter> job_event_router_;
234 216
235 DispatchDirectoryChangeEventImplCallback 217 DispatchDirectoryChangeEventImplCallback
236 dispatch_directory_change_event_impl_; 218 dispatch_directory_change_event_impl_;
237 219
238 // Note: This should remain the last member so it'll be destroyed and 220 // Note: This should remain the last member so it'll be destroyed and
239 // invalidate the weak pointers before any other members are destroyed. 221 // invalidate the weak pointers before any other members are destroyed.
240 base::WeakPtrFactory<EventRouter> weak_factory_; 222 base::WeakPtrFactory<EventRouter> weak_factory_;
241 223
242 DISALLOW_COPY_AND_ASSIGN(EventRouter); 224 DISALLOW_COPY_AND_ASSIGN(EventRouter);
243 }; 225 };
244 226
245 } // namespace file_manager 227 } // namespace file_manager
246 228
247 #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_EVENT_ROUTER_H_ 229 #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_EVENT_ROUTER_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/extensions/file_manager/event_router.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698