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/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/stl_util.h" | 10 #include "base/stl_util.h" |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 if (iter == file_watchers_.end()) | 219 if (iter == file_watchers_.end()) |
220 return; | 220 return; |
221 // Remove the renderer process for this watch. | 221 // Remove the renderer process for this watch. |
222 iter->second->RemoveExtension(extension_id); | 222 iter->second->RemoveExtension(extension_id); |
223 if (iter->second->GetRefCount() == 0) { | 223 if (iter->second->GetRefCount() == 0) { |
224 delete iter->second; | 224 delete iter->second; |
225 file_watchers_.erase(iter); | 225 file_watchers_.erase(iter); |
226 } | 226 } |
227 } | 227 } |
228 | 228 |
| 229 void FileBrowserEventRouter::MountDrive( |
| 230 const base::Closure& callback) { |
| 231 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 232 |
| 233 gdata::GDataSystemService* system_service = |
| 234 gdata::GDataSystemServiceFactory::GetForProfile(profile_); |
| 235 if (system_service) { |
| 236 system_service->docs_service()->Authenticate( |
| 237 base::Bind(&FileBrowserEventRouter::OnAuthenticated, |
| 238 this, |
| 239 callback)); |
| 240 } |
| 241 } |
| 242 |
| 243 void FileBrowserEventRouter::OnAuthenticated( |
| 244 const base::Closure& callback, |
| 245 gdata::GDataErrorCode error, |
| 246 const std::string& token) { |
| 247 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 248 |
| 249 chromeos::MountError error_code; |
| 250 // For the file manager to work offline, GDATA_NO_CONNECTION is allowed. |
| 251 if (error == gdata::HTTP_SUCCESS || error == gdata::GDATA_NO_CONNECTION) |
| 252 error_code = chromeos::MOUNT_ERROR_NONE; |
| 253 else |
| 254 error_code = chromeos::MOUNT_ERROR_NOT_AUTHENTICATED; |
| 255 |
| 256 // Pass back the gdata mount point path as source path. |
| 257 const std::string& gdata_path = gdata::util::GetGDataMountPointPathAsString(); |
| 258 DiskMountManager::MountPointInfo mount_info( |
| 259 gdata_path, |
| 260 gdata_path, |
| 261 chromeos::MOUNT_TYPE_GDATA, |
| 262 chromeos::disks::MOUNT_CONDITION_NONE); |
| 263 |
| 264 // Raise mount event. |
| 265 MountCompleted(DiskMountManager::MOUNTING, error_code, mount_info); |
| 266 |
| 267 if (!callback.is_null()) |
| 268 callback.Run(); |
| 269 } |
| 270 |
229 void FileBrowserEventRouter::HandleRemoteUpdateRequestOnUIThread(bool start) { | 271 void FileBrowserEventRouter::HandleRemoteUpdateRequestOnUIThread(bool start) { |
230 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 272 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
231 | 273 |
232 gdata::GDataFileSystemInterface* file_system = GetRemoteFileSystem(); | 274 gdata::GDataFileSystemInterface* file_system = GetRemoteFileSystem(); |
233 DCHECK(file_system); | 275 DCHECK(file_system); |
234 | 276 |
235 if (start) { | 277 if (start) { |
236 file_system->CheckForUpdates(); | 278 file_system->CheckForUpdates(); |
237 if (num_remote_update_requests_ == 0) | 279 if (num_remote_update_requests_ == 0) |
238 file_system->StartUpdates(); | 280 file_system->StartUpdates(); |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 args.Append(base::Value::CreateIntegerValue(num_accumulated_entries)); | 451 args.Append(base::Value::CreateIntegerValue(num_accumulated_entries)); |
410 std::string args_json; | 452 std::string args_json; |
411 base::JSONWriter::Write(&args, &args_json); | 453 base::JSONWriter::Write(&args, &args_json); |
412 | 454 |
413 profile_->GetExtensionEventRouter()->DispatchEventToExtension( | 455 profile_->GetExtensionEventRouter()->DispatchEventToExtension( |
414 std::string(kFileBrowserDomain), | 456 std::string(kFileBrowserDomain), |
415 extensions::event_names::kOnDocumentFeedFetched, args_json, | 457 extensions::event_names::kOnDocumentFeedFetched, args_json, |
416 NULL, GURL()); | 458 NULL, GURL()); |
417 } | 459 } |
418 | 460 |
| 461 void FileBrowserEventRouter::OnFileSystemMounted() { |
| 462 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 463 |
| 464 MountDrive(base::Bind(&base::DoNothing)); // Callback does nothing. |
| 465 } |
| 466 |
| 467 void FileBrowserEventRouter::OnFileSystemUnmounting() { |
| 468 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 469 |
| 470 // Raise a MountCompleted event to notify the File Manager. |
| 471 const std::string& gdata_path = gdata::util::GetGDataMountPointPathAsString(); |
| 472 DiskMountManager::MountPointInfo mount_info( |
| 473 gdata_path, |
| 474 gdata_path, |
| 475 chromeos::MOUNT_TYPE_GDATA, |
| 476 chromeos::disks::MOUNT_CONDITION_NONE); |
| 477 MountCompleted(DiskMountManager::UNMOUNTING, chromeos::MOUNT_ERROR_NONE, |
| 478 mount_info); |
| 479 } |
| 480 |
419 void FileBrowserEventRouter::OnAuthenticationFailed() { | 481 void FileBrowserEventRouter::OnAuthenticationFailed() { |
420 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 482 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
421 | 483 |
422 // Raise a MountCompleted event to notify the File Manager. | 484 // Raise a MountCompleted event to notify the File Manager. |
423 const std::string& gdata_path = gdata::util::GetGDataMountPointPathAsString(); | 485 const std::string& gdata_path = gdata::util::GetGDataMountPointPathAsString(); |
424 DiskMountManager::MountPointInfo mount_info( | 486 DiskMountManager::MountPointInfo mount_info( |
425 gdata_path, | 487 gdata_path, |
426 gdata_path, | 488 gdata_path, |
427 chromeos::MOUNT_TYPE_GDATA, | 489 chromeos::MOUNT_TYPE_GDATA, |
428 chromeos::disks::MOUNT_CONDITION_NONE); | 490 chromeos::disks::MOUNT_CONDITION_NONE); |
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 return scoped_refptr<RefcountedProfileKeyedService>( | 874 return scoped_refptr<RefcountedProfileKeyedService>( |
813 new FileBrowserEventRouter(profile)); | 875 new FileBrowserEventRouter(profile)); |
814 } | 876 } |
815 | 877 |
816 bool FileBrowserEventRouterFactory::ServiceHasOwnInstanceInIncognito() { | 878 bool FileBrowserEventRouterFactory::ServiceHasOwnInstanceInIncognito() { |
817 // Explicitly and always allow this router in guest login mode. see | 879 // Explicitly and always allow this router in guest login mode. see |
818 // chrome/browser/profiles/profile_keyed_base_factory.h comment | 880 // chrome/browser/profiles/profile_keyed_base_factory.h comment |
819 // for the details. | 881 // for the details. |
820 return true; | 882 return true; |
821 } | 883 } |
OLD | NEW |