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/ui/webui/chromeos/drive_internals_ui.h" | 5 #include "chrome/browser/ui/webui/chromeos/drive_internals_ui.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/files/file_enumerator.h" | 10 #include "base/files/file_enumerator.h" |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 virtual ~DriveInternalsWebUIHandler() { | 208 virtual ~DriveInternalsWebUIHandler() { |
209 } | 209 } |
210 | 210 |
211 private: | 211 private: |
212 // WebUIMessageHandler override. | 212 // WebUIMessageHandler override. |
213 virtual void RegisterMessages() OVERRIDE; | 213 virtual void RegisterMessages() OVERRIDE; |
214 | 214 |
215 // Returns a DriveIntegrationService. | 215 // Returns a DriveIntegrationService. |
216 drive::DriveIntegrationService* GetIntegrationService(); | 216 drive::DriveIntegrationService* GetIntegrationService(); |
217 | 217 |
| 218 // Returns a DriveService instance. |
| 219 drive::DriveServiceInterface* GetDriveService(); |
| 220 |
| 221 // Returns a FileSystem instance. |
| 222 drive::FileSystemInterface* GetFileSystem(); |
| 223 |
218 // Called when the page is first loaded. | 224 // Called when the page is first loaded. |
219 void OnPageLoaded(const base::ListValue* args); | 225 void OnPageLoaded(const base::ListValue* args); |
220 | 226 |
221 // Updates respective sections. | 227 // Updates respective sections. |
222 void UpdateDriveRelatedFlagsSection(); | 228 void UpdateDriveRelatedFlagsSection(); |
223 void UpdateDriveRelatedPreferencesSection(); | 229 void UpdateDriveRelatedPreferencesSection(); |
224 void UpdateAuthStatusSection( | 230 void UpdateAuthStatusSection( |
225 drive::DriveServiceInterface* drive_service); | 231 drive::DriveServiceInterface* drive_service); |
226 void UpdateAboutResourceSection( | 232 void UpdateAboutResourceSection( |
227 drive::DriveServiceInterface* drive_service); | 233 drive::DriveServiceInterface* drive_service); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 web_ui()->RegisterMessageCallback( | 373 web_ui()->RegisterMessageCallback( |
368 "listFileEntries", | 374 "listFileEntries", |
369 base::Bind(&DriveInternalsWebUIHandler::ListFileEntries, | 375 base::Bind(&DriveInternalsWebUIHandler::ListFileEntries, |
370 weak_ptr_factory_.GetWeakPtr())); | 376 weak_ptr_factory_.GetWeakPtr())); |
371 } | 377 } |
372 | 378 |
373 drive::DriveIntegrationService* | 379 drive::DriveIntegrationService* |
374 DriveInternalsWebUIHandler::GetIntegrationService() { | 380 DriveInternalsWebUIHandler::GetIntegrationService() { |
375 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 381 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
376 | 382 |
| 383 // TODO(hidehiko): GetForProfile will return the instance always even if it |
| 384 // is disabled. Needs to check the mounting state then. crbug.com/284972. |
377 Profile* profile = Profile::FromWebUI(web_ui()); | 385 Profile* profile = Profile::FromWebUI(web_ui()); |
378 return drive::DriveIntegrationServiceFactory::GetForProfile(profile); | 386 return drive::DriveIntegrationServiceFactory::GetForProfile(profile); |
379 } | 387 } |
380 | 388 |
| 389 drive::DriveServiceInterface* DriveInternalsWebUIHandler::GetDriveService() { |
| 390 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 391 |
| 392 Profile* profile = Profile::FromWebUI(web_ui()); |
| 393 return drive::util::GetDriveServiceByProfile(profile); |
| 394 } |
| 395 |
| 396 drive::FileSystemInterface* DriveInternalsWebUIHandler::GetFileSystem() { |
| 397 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 398 |
| 399 Profile* profile = Profile::FromWebUI(web_ui()); |
| 400 return drive::util::GetFileSystemByProfile(profile); |
| 401 } |
| 402 |
381 void DriveInternalsWebUIHandler::OnPageLoaded(const base::ListValue* args) { | 403 void DriveInternalsWebUIHandler::OnPageLoaded(const base::ListValue* args) { |
382 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 404 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
383 | 405 |
384 drive::DriveIntegrationService* integration_service = | 406 drive::DriveIntegrationService* integration_service = |
385 GetIntegrationService(); | 407 GetIntegrationService(); |
386 // |integration_service| may be NULL in the guest/incognito mode. | 408 // |integration_service| may be NULL in the guest/incognito mode. |
387 if (!integration_service) | 409 if (!integration_service) |
388 return; | 410 return; |
389 | 411 |
390 drive::DriveServiceInterface* drive_service = | 412 drive::DriveServiceInterface* drive_service = |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 base::DictionaryValue local_metadata; | 537 base::DictionaryValue local_metadata; |
516 local_metadata.SetDouble("account-largest-changestamp-local", | 538 local_metadata.SetDouble("account-largest-changestamp-local", |
517 metadata.largest_changestamp); | 539 metadata.largest_changestamp); |
518 local_metadata.SetBoolean("account-metadata-refreshing", metadata.refreshing); | 540 local_metadata.SetBoolean("account-metadata-refreshing", metadata.refreshing); |
519 web_ui()->CallJavascriptFunction("updateLocalMetadata", local_metadata); | 541 web_ui()->CallJavascriptFunction("updateLocalMetadata", local_metadata); |
520 } | 542 } |
521 | 543 |
522 void DriveInternalsWebUIHandler::ClearAccessToken(const base::ListValue* args) { | 544 void DriveInternalsWebUIHandler::ClearAccessToken(const base::ListValue* args) { |
523 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 545 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
524 | 546 |
525 drive::DriveIntegrationService* integration_service = | 547 drive::DriveServiceInterface* drive_service = GetDriveService(); |
526 GetIntegrationService(); | 548 if (drive_service) |
527 if (!integration_service) | 549 drive_service->ClearAccessToken(); |
528 return; | |
529 integration_service->drive_service()->ClearAccessToken(); | |
530 } | 550 } |
531 | 551 |
532 void DriveInternalsWebUIHandler::ClearRefreshToken( | 552 void DriveInternalsWebUIHandler::ClearRefreshToken( |
533 const base::ListValue* args) { | 553 const base::ListValue* args) { |
534 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 554 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
535 | 555 |
536 drive::DriveIntegrationService* integration_service = | 556 drive::DriveServiceInterface* drive_service = GetDriveService(); |
537 GetIntegrationService(); | 557 if (drive_service) |
538 if (!integration_service) | 558 drive_service->ClearRefreshToken(); |
539 return; | |
540 integration_service->drive_service()->ClearRefreshToken(); | |
541 } | 559 } |
542 | 560 |
543 void DriveInternalsWebUIHandler::ListFileEntries(const base::ListValue* args) { | 561 void DriveInternalsWebUIHandler::ListFileEntries(const base::ListValue* args) { |
544 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 562 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
545 | 563 |
546 UpdateFileSystemContentsSection(); | 564 UpdateFileSystemContentsSection(); |
547 } | 565 } |
548 | 566 |
549 void DriveInternalsWebUIHandler::UpdateDeltaUpdateStatusSection( | 567 void DriveInternalsWebUIHandler::UpdateDeltaUpdateStatusSection( |
550 drive::DebugInfoCollector* debug_info_collector) { | 568 drive::DebugInfoCollector* debug_info_collector) { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 gcache_summary), | 641 gcache_summary), |
624 base::Bind(&DriveInternalsWebUIHandler::OnGetGCacheContents, | 642 base::Bind(&DriveInternalsWebUIHandler::OnGetGCacheContents, |
625 weak_ptr_factory_.GetWeakPtr(), | 643 weak_ptr_factory_.GetWeakPtr(), |
626 base::Owned(gcache_contents), | 644 base::Owned(gcache_contents), |
627 base::Owned(gcache_summary))); | 645 base::Owned(gcache_summary))); |
628 } | 646 } |
629 | 647 |
630 void DriveInternalsWebUIHandler::UpdateFileSystemContentsSection() { | 648 void DriveInternalsWebUIHandler::UpdateFileSystemContentsSection() { |
631 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 649 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
632 | 650 |
633 drive::DriveIntegrationService* integration_service = | 651 drive::DriveServiceInterface* drive_service = GetDriveService(); |
634 GetIntegrationService(); | 652 drive::FileSystemInterface* file_system = GetFileSystem(); |
635 if (!integration_service) | 653 if (!drive_service || !file_system) |
636 return; | 654 return; |
| 655 |
637 // Start updating the file system tree section, if we have access token. | 656 // Start updating the file system tree section, if we have access token. |
638 if (!integration_service->drive_service()->HasAccessToken()) | 657 if (!drive_service->HasAccessToken()) |
639 return; | 658 return; |
640 | 659 |
641 // Start rendering the file system tree as text. | 660 // Start rendering the file system tree as text. |
642 const base::FilePath root_path = drive::util::GetDriveGrandRootPath(); | 661 const base::FilePath root_path = drive::util::GetDriveGrandRootPath(); |
643 | 662 |
644 integration_service->file_system()->GetResourceEntryByPath( | 663 file_system->GetResourceEntryByPath( |
645 root_path, | 664 root_path, |
646 base::Bind(&DriveInternalsWebUIHandler::OnGetResourceEntryByPath, | 665 base::Bind(&DriveInternalsWebUIHandler::OnGetResourceEntryByPath, |
647 weak_ptr_factory_.GetWeakPtr(), | 666 weak_ptr_factory_.GetWeakPtr(), |
648 root_path)); | 667 root_path)); |
649 | 668 |
650 integration_service->file_system()->ReadDirectoryByPath( | 669 file_system->ReadDirectoryByPath( |
651 root_path, | 670 root_path, |
652 base::Bind(&DriveInternalsWebUIHandler::OnReadDirectoryByPath, | 671 base::Bind(&DriveInternalsWebUIHandler::OnReadDirectoryByPath, |
653 weak_ptr_factory_.GetWeakPtr(), | 672 weak_ptr_factory_.GetWeakPtr(), |
654 root_path)); | 673 root_path)); |
655 } | 674 } |
656 | 675 |
657 void DriveInternalsWebUIHandler::UpdateLocalStorageUsageSection() { | 676 void DriveInternalsWebUIHandler::UpdateLocalStorageUsageSection() { |
658 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 677 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
659 | 678 |
660 // Propagate the amount of local free space in bytes. | 679 // Propagate the amount of local free space in bytes. |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
736 | 755 |
737 void DriveInternalsWebUIHandler::OnReadDirectoryByPath( | 756 void DriveInternalsWebUIHandler::OnReadDirectoryByPath( |
738 const base::FilePath& parent_path, | 757 const base::FilePath& parent_path, |
739 drive::FileError error, | 758 drive::FileError error, |
740 scoped_ptr<drive::ResourceEntryVector> entries) { | 759 scoped_ptr<drive::ResourceEntryVector> entries) { |
741 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 760 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
742 | 761 |
743 if (error == drive::FILE_ERROR_OK) { | 762 if (error == drive::FILE_ERROR_OK) { |
744 DCHECK(entries.get()); | 763 DCHECK(entries.get()); |
745 | 764 |
| 765 drive::FileSystemInterface* file_system = GetFileSystem(); |
746 std::string file_system_as_text; | 766 std::string file_system_as_text; |
747 for (size_t i = 0; i < entries->size(); ++i) { | 767 for (size_t i = 0; i < entries->size(); ++i) { |
748 const drive::ResourceEntry& entry = (*entries)[i]; | 768 const drive::ResourceEntry& entry = (*entries)[i]; |
749 const base::FilePath current_path = parent_path.Append( | 769 const base::FilePath current_path = parent_path.Append( |
750 base::FilePath::FromUTF8Unsafe(entry.base_name())); | 770 base::FilePath::FromUTF8Unsafe(entry.base_name())); |
751 | 771 |
752 file_system_as_text.append(FormatEntry(current_path, entry) + "\n"); | 772 file_system_as_text.append(FormatEntry(current_path, entry) + "\n"); |
753 | 773 |
754 if (entry.file_info().is_directory()) { | 774 if (entry.file_info().is_directory()) { |
755 GetIntegrationService()->file_system()->ReadDirectoryByPath( | 775 file_system->ReadDirectoryByPath( |
756 current_path, | 776 current_path, |
757 base::Bind(&DriveInternalsWebUIHandler::OnReadDirectoryByPath, | 777 base::Bind(&DriveInternalsWebUIHandler::OnReadDirectoryByPath, |
758 weak_ptr_factory_.GetWeakPtr(), | 778 weak_ptr_factory_.GetWeakPtr(), |
759 current_path)); | 779 current_path)); |
760 } | 780 } |
761 } | 781 } |
762 | 782 |
763 // There may be pending ReadDirectoryByPath() calls, but we can update | 783 // There may be pending ReadDirectoryByPath() calls, but we can update |
764 // the page with what we have now. This results in progressive | 784 // the page with what we have now. This results in progressive |
765 // updates, which is good for a large file system. | 785 // updates, which is good for a large file system. |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 content::WebUIDataSource::Create(chrome::kChromeUIDriveInternalsHost); | 836 content::WebUIDataSource::Create(chrome::kChromeUIDriveInternalsHost); |
817 source->AddResourcePath("drive_internals.css", IDR_DRIVE_INTERNALS_CSS); | 837 source->AddResourcePath("drive_internals.css", IDR_DRIVE_INTERNALS_CSS); |
818 source->AddResourcePath("drive_internals.js", IDR_DRIVE_INTERNALS_JS); | 838 source->AddResourcePath("drive_internals.js", IDR_DRIVE_INTERNALS_JS); |
819 source->SetDefaultResource(IDR_DRIVE_INTERNALS_HTML); | 839 source->SetDefaultResource(IDR_DRIVE_INTERNALS_HTML); |
820 | 840 |
821 Profile* profile = Profile::FromWebUI(web_ui); | 841 Profile* profile = Profile::FromWebUI(web_ui); |
822 content::WebUIDataSource::Add(profile, source); | 842 content::WebUIDataSource::Add(profile, source); |
823 } | 843 } |
824 | 844 |
825 } // namespace chromeos | 845 } // namespace chromeos |
OLD | NEW |