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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 base::DictionaryValue about_resource; | 325 base::DictionaryValue about_resource; |
326 about_resource.SetDouble("account-quota-total", | 326 about_resource.SetDouble("account-quota-total", |
327 parsed_about_resource->quota_bytes_total()); | 327 parsed_about_resource->quota_bytes_total()); |
328 about_resource.SetDouble("account-quota-used", | 328 about_resource.SetDouble("account-quota-used", |
329 parsed_about_resource->quota_bytes_used_aggregate()); | 329 parsed_about_resource->quota_bytes_used_aggregate()); |
330 about_resource.SetDouble("account-largest-changestamp-remote", | 330 about_resource.SetDouble("account-largest-changestamp-remote", |
331 parsed_about_resource->largest_change_id()); | 331 parsed_about_resource->largest_change_id()); |
332 about_resource.SetString("root-resource-id", | 332 about_resource.SetString("root-resource-id", |
333 parsed_about_resource->root_folder_id()); | 333 parsed_about_resource->root_folder_id()); |
334 | 334 |
335 web_ui()->CallJavascriptFunction("updateAboutResource", about_resource); | 335 web_ui()->CallJavascriptFunctionUnsafe("updateAboutResource", about_resource); |
336 } | 336 } |
337 | 337 |
338 void DriveInternalsWebUIHandler::OnGetAppList( | 338 void DriveInternalsWebUIHandler::OnGetAppList( |
339 google_apis::DriveApiErrorCode status, | 339 google_apis::DriveApiErrorCode status, |
340 std::unique_ptr<google_apis::AppList> parsed_app_list) { | 340 std::unique_ptr<google_apis::AppList> parsed_app_list) { |
341 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 341 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
342 | 342 |
343 if (status != google_apis::HTTP_SUCCESS) { | 343 if (status != google_apis::HTTP_SUCCESS) { |
344 LOG(ERROR) << "Failed to get app list"; | 344 LOG(ERROR) << "Failed to get app list"; |
345 return; | 345 return; |
346 } | 346 } |
347 DCHECK(parsed_app_list); | 347 DCHECK(parsed_app_list); |
348 | 348 |
349 base::DictionaryValue app_list; | 349 base::DictionaryValue app_list; |
350 app_list.SetString("etag", parsed_app_list->etag()); | 350 app_list.SetString("etag", parsed_app_list->etag()); |
351 | 351 |
352 base::ListValue* items = new base::ListValue(); | 352 base::ListValue* items = new base::ListValue(); |
353 for (size_t i = 0; i < parsed_app_list->items().size(); ++i) { | 353 for (size_t i = 0; i < parsed_app_list->items().size(); ++i) { |
354 const google_apis::AppResource* app = parsed_app_list->items()[i]; | 354 const google_apis::AppResource* app = parsed_app_list->items()[i]; |
355 base::DictionaryValue* app_data = new base::DictionaryValue(); | 355 base::DictionaryValue* app_data = new base::DictionaryValue(); |
356 app_data->SetString("name", app->name()); | 356 app_data->SetString("name", app->name()); |
357 app_data->SetString("application_id", app->application_id()); | 357 app_data->SetString("application_id", app->application_id()); |
358 app_data->SetString("object_type", app->object_type()); | 358 app_data->SetString("object_type", app->object_type()); |
359 app_data->SetBoolean("supports_create", app->supports_create()); | 359 app_data->SetBoolean("supports_create", app->supports_create()); |
360 | 360 |
361 items->Append(app_data); | 361 items->Append(app_data); |
362 } | 362 } |
363 app_list.Set("items", items); | 363 app_list.Set("items", items); |
364 | 364 |
365 web_ui()->CallJavascriptFunction("updateAppList", app_list); | 365 web_ui()->CallJavascriptFunctionUnsafe("updateAppList", app_list); |
366 } | 366 } |
367 | 367 |
368 void DriveInternalsWebUIHandler::RegisterMessages() { | 368 void DriveInternalsWebUIHandler::RegisterMessages() { |
369 web_ui()->RegisterMessageCallback( | 369 web_ui()->RegisterMessageCallback( |
370 "pageLoaded", | 370 "pageLoaded", |
371 base::Bind(&DriveInternalsWebUIHandler::OnPageLoaded, | 371 base::Bind(&DriveInternalsWebUIHandler::OnPageLoaded, |
372 weak_ptr_factory_.GetWeakPtr())); | 372 weak_ptr_factory_.GetWeakPtr())); |
373 web_ui()->RegisterMessageCallback( | 373 web_ui()->RegisterMessageCallback( |
374 "periodicUpdate", | 374 "periodicUpdate", |
375 base::Bind(&DriveInternalsWebUIHandler::OnPeriodicUpdate, | 375 base::Bind(&DriveInternalsWebUIHandler::OnPeriodicUpdate, |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 | 469 |
470 base::ListValue preferences; | 470 base::ListValue preferences; |
471 for (size_t i = 0; i < arraysize(kDriveRelatedPreferences); ++i) { | 471 for (size_t i = 0; i < arraysize(kDriveRelatedPreferences); ++i) { |
472 const std::string key = kDriveRelatedPreferences[i]; | 472 const std::string key = kDriveRelatedPreferences[i]; |
473 // As of now, all preferences are boolean. | 473 // As of now, all preferences are boolean. |
474 const std::string value = | 474 const std::string value = |
475 (pref_service->GetBoolean(key.c_str()) ? "true" : "false"); | 475 (pref_service->GetBoolean(key.c_str()) ? "true" : "false"); |
476 AppendKeyValue(&preferences, key, value); | 476 AppendKeyValue(&preferences, key, value); |
477 } | 477 } |
478 | 478 |
479 web_ui()->CallJavascriptFunction("updateDriveRelatedPreferences", | 479 web_ui()->CallJavascriptFunctionUnsafe("updateDriveRelatedPreferences", |
480 preferences); | 480 preferences); |
481 } | 481 } |
482 | 482 |
483 void DriveInternalsWebUIHandler::UpdateConnectionStatusSection( | 483 void DriveInternalsWebUIHandler::UpdateConnectionStatusSection( |
484 drive::DriveServiceInterface* drive_service) { | 484 drive::DriveServiceInterface* drive_service) { |
485 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 485 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
486 DCHECK(drive_service); | 486 DCHECK(drive_service); |
487 | 487 |
488 std::string status; | 488 std::string status; |
489 switch (drive::util::GetDriveConnectionStatus(Profile::FromWebUI(web_ui()))) { | 489 switch (drive::util::GetDriveConnectionStatus(Profile::FromWebUI(web_ui()))) { |
490 case drive::util::DRIVE_DISCONNECTED_NOSERVICE: | 490 case drive::util::DRIVE_DISCONNECTED_NOSERVICE: |
(...skipping 12 matching lines...) Expand all Loading... |
503 status = "connected"; | 503 status = "connected"; |
504 break; | 504 break; |
505 } | 505 } |
506 | 506 |
507 base::DictionaryValue connection_status; | 507 base::DictionaryValue connection_status; |
508 connection_status.SetString("status", status); | 508 connection_status.SetString("status", status); |
509 connection_status.SetBoolean("has-refresh-token", | 509 connection_status.SetBoolean("has-refresh-token", |
510 drive_service->HasRefreshToken()); | 510 drive_service->HasRefreshToken()); |
511 connection_status.SetBoolean("has-access-token", | 511 connection_status.SetBoolean("has-access-token", |
512 drive_service->HasAccessToken()); | 512 drive_service->HasAccessToken()); |
513 web_ui()->CallJavascriptFunction("updateConnectionStatus", connection_status); | 513 web_ui()->CallJavascriptFunctionUnsafe("updateConnectionStatus", |
| 514 connection_status); |
514 } | 515 } |
515 | 516 |
516 void DriveInternalsWebUIHandler::UpdateAboutResourceSection( | 517 void DriveInternalsWebUIHandler::UpdateAboutResourceSection( |
517 drive::DriveServiceInterface* drive_service) { | 518 drive::DriveServiceInterface* drive_service) { |
518 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 519 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
519 DCHECK(drive_service); | 520 DCHECK(drive_service); |
520 | 521 |
521 drive_service->GetAboutResource( | 522 drive_service->GetAboutResource( |
522 base::Bind(&DriveInternalsWebUIHandler::OnGetAboutResource, | 523 base::Bind(&DriveInternalsWebUIHandler::OnGetAboutResource, |
523 weak_ptr_factory_.GetWeakPtr())); | 524 weak_ptr_factory_.GetWeakPtr())); |
(...skipping 20 matching lines...) Expand all Loading... |
544 } | 545 } |
545 | 546 |
546 void DriveInternalsWebUIHandler::OnGetFilesystemMetadataForLocal( | 547 void DriveInternalsWebUIHandler::OnGetFilesystemMetadataForLocal( |
547 const drive::FileSystemMetadata& metadata) { | 548 const drive::FileSystemMetadata& metadata) { |
548 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 549 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
549 | 550 |
550 base::DictionaryValue local_metadata; | 551 base::DictionaryValue local_metadata; |
551 local_metadata.SetDouble("account-largest-changestamp-local", | 552 local_metadata.SetDouble("account-largest-changestamp-local", |
552 metadata.largest_changestamp); | 553 metadata.largest_changestamp); |
553 local_metadata.SetBoolean("account-metadata-refreshing", metadata.refreshing); | 554 local_metadata.SetBoolean("account-metadata-refreshing", metadata.refreshing); |
554 web_ui()->CallJavascriptFunction("updateLocalMetadata", local_metadata); | 555 web_ui()->CallJavascriptFunctionUnsafe("updateLocalMetadata", local_metadata); |
555 } | 556 } |
556 | 557 |
557 void DriveInternalsWebUIHandler::ClearAccessToken(const base::ListValue* args) { | 558 void DriveInternalsWebUIHandler::ClearAccessToken(const base::ListValue* args) { |
558 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 559 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
559 | 560 |
560 drive::DriveServiceInterface* drive_service = GetDriveService(); | 561 drive::DriveServiceInterface* drive_service = GetDriveService(); |
561 if (drive_service) | 562 if (drive_service) |
562 drive_service->ClearAccessToken(); | 563 drive_service->ClearAccessToken(); |
563 } | 564 } |
564 | 565 |
(...skipping 15 matching lines...) Expand all Loading... |
580 if (integration_service) { | 581 if (integration_service) { |
581 integration_service->ClearCacheAndRemountFileSystem( | 582 integration_service->ClearCacheAndRemountFileSystem( |
582 base::Bind(&DriveInternalsWebUIHandler::ResetFinished, | 583 base::Bind(&DriveInternalsWebUIHandler::ResetFinished, |
583 weak_ptr_factory_.GetWeakPtr())); | 584 weak_ptr_factory_.GetWeakPtr())); |
584 } | 585 } |
585 } | 586 } |
586 | 587 |
587 void DriveInternalsWebUIHandler::ResetFinished(bool success) { | 588 void DriveInternalsWebUIHandler::ResetFinished(bool success) { |
588 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 589 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
589 | 590 |
590 web_ui()->CallJavascriptFunction("updateResetStatus", | 591 web_ui()->CallJavascriptFunctionUnsafe("updateResetStatus", |
591 base::FundamentalValue(success)); | 592 base::FundamentalValue(success)); |
592 } | 593 } |
593 | 594 |
594 void DriveInternalsWebUIHandler::ListFileEntries(const base::ListValue* args) { | 595 void DriveInternalsWebUIHandler::ListFileEntries(const base::ListValue* args) { |
595 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 596 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
596 | 597 |
597 UpdateFileSystemContentsSection(); | 598 UpdateFileSystemContentsSection(); |
598 } | 599 } |
599 | 600 |
600 void DriveInternalsWebUIHandler::UpdateDeltaUpdateStatusSection( | 601 void DriveInternalsWebUIHandler::UpdateDeltaUpdateStatusSection( |
601 drive::DebugInfoCollector* debug_info_collector) { | 602 drive::DebugInfoCollector* debug_info_collector) { |
(...skipping 21 matching lines...) Expand all Loading... |
623 "push-notification-enabled", | 624 "push-notification-enabled", |
624 drive_notification_manager->push_notification_enabled()); | 625 drive_notification_manager->push_notification_enabled()); |
625 delta_update_status.SetString( | 626 delta_update_status.SetString( |
626 "last-update-check-time", | 627 "last-update-check-time", |
627 google_apis::util::FormatTimeAsStringLocaltime( | 628 google_apis::util::FormatTimeAsStringLocaltime( |
628 metadata.last_update_check_time)); | 629 metadata.last_update_check_time)); |
629 delta_update_status.SetString( | 630 delta_update_status.SetString( |
630 "last-update-check-error", | 631 "last-update-check-error", |
631 drive::FileErrorToString(metadata.last_update_check_error)); | 632 drive::FileErrorToString(metadata.last_update_check_error)); |
632 | 633 |
633 web_ui()->CallJavascriptFunction("updateDeltaUpdateStatus", | 634 web_ui()->CallJavascriptFunctionUnsafe("updateDeltaUpdateStatus", |
634 delta_update_status); | 635 delta_update_status); |
635 } | 636 } |
636 | 637 |
637 void DriveInternalsWebUIHandler::UpdateInFlightOperationsSection( | 638 void DriveInternalsWebUIHandler::UpdateInFlightOperationsSection( |
638 drive::JobListInterface* job_list) { | 639 drive::JobListInterface* job_list) { |
639 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 640 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
640 DCHECK(job_list); | 641 DCHECK(job_list); |
641 | 642 |
642 std::vector<drive::JobInfo> info_list = job_list->GetJobInfoList(); | 643 std::vector<drive::JobInfo> info_list = job_list->GetJobInfoList(); |
643 | 644 |
644 base::ListValue in_flight_operations; | 645 base::ListValue in_flight_operations; |
645 for (size_t i = 0; i < info_list.size(); ++i) { | 646 for (size_t i = 0; i < info_list.size(); ++i) { |
646 const drive::JobInfo& info = info_list[i]; | 647 const drive::JobInfo& info = info_list[i]; |
647 | 648 |
648 base::DictionaryValue* dict = new base::DictionaryValue; | 649 base::DictionaryValue* dict = new base::DictionaryValue; |
649 dict->SetInteger("id", info.job_id); | 650 dict->SetInteger("id", info.job_id); |
650 dict->SetString("type", drive::JobTypeToString(info.job_type)); | 651 dict->SetString("type", drive::JobTypeToString(info.job_type)); |
651 dict->SetString("file_path", info.file_path.AsUTF8Unsafe()); | 652 dict->SetString("file_path", info.file_path.AsUTF8Unsafe()); |
652 dict->SetString("state", drive::JobStateToString(info.state)); | 653 dict->SetString("state", drive::JobStateToString(info.state)); |
653 dict->SetDouble("progress_current", info.num_completed_bytes); | 654 dict->SetDouble("progress_current", info.num_completed_bytes); |
654 dict->SetDouble("progress_total", info.num_total_bytes); | 655 dict->SetDouble("progress_total", info.num_total_bytes); |
655 in_flight_operations.Append(dict); | 656 in_flight_operations.Append(dict); |
656 } | 657 } |
657 web_ui()->CallJavascriptFunction("updateInFlightOperations", | 658 web_ui()->CallJavascriptFunctionUnsafe("updateInFlightOperations", |
658 in_flight_operations); | 659 in_flight_operations); |
659 } | 660 } |
660 | 661 |
661 void DriveInternalsWebUIHandler::UpdateGCacheContentsSection() { | 662 void DriveInternalsWebUIHandler::UpdateGCacheContentsSection() { |
662 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 663 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
663 | 664 |
664 // Start updating the GCache contents section. | 665 // Start updating the GCache contents section. |
665 Profile* profile = Profile::FromWebUI(web_ui()); | 666 Profile* profile = Profile::FromWebUI(web_ui()); |
666 const base::FilePath root_path = drive::util::GetCacheRootPath(profile); | 667 const base::FilePath root_path = drive::util::GetCacheRootPath(profile); |
667 base::ListValue* gcache_contents = new base::ListValue; | 668 base::ListValue* gcache_contents = new base::ListValue; |
668 base::DictionaryValue* gcache_summary = new base::DictionaryValue; | 669 base::DictionaryValue* gcache_summary = new base::DictionaryValue; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 | 752 |
752 base::DictionaryValue* dict = new base::DictionaryValue; | 753 base::DictionaryValue* dict = new base::DictionaryValue; |
753 dict->SetString("key", | 754 dict->SetString("key", |
754 google_apis::util::FormatTimeAsStringLocaltime(log[i].when)); | 755 google_apis::util::FormatTimeAsStringLocaltime(log[i].when)); |
755 dict->SetString("value", "[" + severity + "] " + log[i].what); | 756 dict->SetString("value", "[" + severity + "] " + log[i].what); |
756 dict->SetString("class", "log-" + severity); | 757 dict->SetString("class", "log-" + severity); |
757 list.Append(dict); | 758 list.Append(dict); |
758 last_sent_event_id_ = log[i].id; | 759 last_sent_event_id_ = log[i].id; |
759 } | 760 } |
760 if (!list.empty()) | 761 if (!list.empty()) |
761 web_ui()->CallJavascriptFunction("updateEventLog", list); | 762 web_ui()->CallJavascriptFunctionUnsafe("updateEventLog", list); |
762 } | 763 } |
763 | 764 |
764 void DriveInternalsWebUIHandler::UpdatePathConfigurationsSection() { | 765 void DriveInternalsWebUIHandler::UpdatePathConfigurationsSection() { |
765 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 766 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
766 | 767 |
767 Profile* const profile = Profile::FromWebUI(web_ui()); | 768 Profile* const profile = Profile::FromWebUI(web_ui()); |
768 | 769 |
769 base::ListValue paths; | 770 base::ListValue paths; |
770 | 771 |
771 AppendKeyValue( | 772 AppendKeyValue( |
772 &paths, "Downloads", | 773 &paths, "Downloads", |
773 file_manager::util::GetDownloadsFolderForProfile(profile).AsUTF8Unsafe()); | 774 file_manager::util::GetDownloadsFolderForProfile(profile).AsUTF8Unsafe()); |
774 AppendKeyValue( | 775 AppendKeyValue( |
775 &paths, "Drive", | 776 &paths, "Drive", |
776 drive::util::GetDriveMountPointPath(profile).AsUTF8Unsafe()); | 777 drive::util::GetDriveMountPointPath(profile).AsUTF8Unsafe()); |
777 | 778 |
778 const char* kPathPreferences[] = { | 779 const char* kPathPreferences[] = { |
779 prefs::kSelectFileLastDirectory, | 780 prefs::kSelectFileLastDirectory, |
780 prefs::kSaveFileDefaultDirectory, | 781 prefs::kSaveFileDefaultDirectory, |
781 prefs::kDownloadDefaultDirectory, | 782 prefs::kDownloadDefaultDirectory, |
782 }; | 783 }; |
783 for (size_t i = 0; i < arraysize(kPathPreferences); ++i) { | 784 for (size_t i = 0; i < arraysize(kPathPreferences); ++i) { |
784 const char* const key = kPathPreferences[i]; | 785 const char* const key = kPathPreferences[i]; |
785 AppendKeyValue(&paths, key, | 786 AppendKeyValue(&paths, key, |
786 profile->GetPrefs()->GetFilePath(key).AsUTF8Unsafe()); | 787 profile->GetPrefs()->GetFilePath(key).AsUTF8Unsafe()); |
787 } | 788 } |
788 | 789 |
789 web_ui()->CallJavascriptFunction("updatePathConfigurations", paths); | 790 web_ui()->CallJavascriptFunctionUnsafe("updatePathConfigurations", paths); |
790 } | 791 } |
791 | 792 |
792 void DriveInternalsWebUIHandler::OnGetGCacheContents( | 793 void DriveInternalsWebUIHandler::OnGetGCacheContents( |
793 base::ListValue* gcache_contents, | 794 base::ListValue* gcache_contents, |
794 base::DictionaryValue* gcache_summary) { | 795 base::DictionaryValue* gcache_summary) { |
795 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 796 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
796 DCHECK(gcache_contents); | 797 DCHECK(gcache_contents); |
797 DCHECK(gcache_summary); | 798 DCHECK(gcache_summary); |
798 | 799 |
799 web_ui()->CallJavascriptFunction("updateGCacheContents", | 800 web_ui()->CallJavascriptFunctionUnsafe("updateGCacheContents", |
800 *gcache_contents, | 801 *gcache_contents, *gcache_summary); |
801 *gcache_summary); | |
802 } | 802 } |
803 | 803 |
804 void DriveInternalsWebUIHandler::OnGetResourceEntryByPath( | 804 void DriveInternalsWebUIHandler::OnGetResourceEntryByPath( |
805 const base::FilePath& path, | 805 const base::FilePath& path, |
806 drive::FileError error, | 806 drive::FileError error, |
807 std::unique_ptr<drive::ResourceEntry> entry) { | 807 std::unique_ptr<drive::ResourceEntry> entry) { |
808 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 808 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
809 | 809 |
810 if (error == drive::FILE_ERROR_OK) { | 810 if (error == drive::FILE_ERROR_OK) { |
811 DCHECK(entry.get()); | 811 DCHECK(entry.get()); |
812 const base::StringValue value(FormatEntry(path, *entry) + "\n"); | 812 const base::StringValue value(FormatEntry(path, *entry) + "\n"); |
813 web_ui()->CallJavascriptFunction("updateFileSystemContents", value); | 813 web_ui()->CallJavascriptFunctionUnsafe("updateFileSystemContents", value); |
814 } | 814 } |
815 } | 815 } |
816 | 816 |
817 void DriveInternalsWebUIHandler::OnReadDirectoryByPath( | 817 void DriveInternalsWebUIHandler::OnReadDirectoryByPath( |
818 const base::FilePath& parent_path, | 818 const base::FilePath& parent_path, |
819 drive::FileError error, | 819 drive::FileError error, |
820 std::unique_ptr<drive::ResourceEntryVector> entries) { | 820 std::unique_ptr<drive::ResourceEntryVector> entries) { |
821 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 821 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
822 | 822 |
823 if (error == drive::FILE_ERROR_OK) { | 823 if (error == drive::FILE_ERROR_OK) { |
(...skipping 14 matching lines...) Expand all Loading... |
838 base::Bind(&DriveInternalsWebUIHandler::OnReadDirectoryByPath, | 838 base::Bind(&DriveInternalsWebUIHandler::OnReadDirectoryByPath, |
839 weak_ptr_factory_.GetWeakPtr(), | 839 weak_ptr_factory_.GetWeakPtr(), |
840 current_path)); | 840 current_path)); |
841 } | 841 } |
842 } | 842 } |
843 | 843 |
844 // There may be pending ReadDirectoryByPath() calls, but we can update | 844 // There may be pending ReadDirectoryByPath() calls, but we can update |
845 // the page with what we have now. This results in progressive | 845 // the page with what we have now. This results in progressive |
846 // updates, which is good for a large file system. | 846 // updates, which is good for a large file system. |
847 const base::StringValue value(file_system_as_text); | 847 const base::StringValue value(file_system_as_text); |
848 web_ui()->CallJavascriptFunction("updateFileSystemContents", value); | 848 web_ui()->CallJavascriptFunctionUnsafe("updateFileSystemContents", value); |
849 } | 849 } |
850 } | 850 } |
851 | 851 |
852 void DriveInternalsWebUIHandler::UpdateCacheEntry( | 852 void DriveInternalsWebUIHandler::UpdateCacheEntry( |
853 const std::string& local_id, | 853 const std::string& local_id, |
854 const drive::FileCacheEntry& cache_entry) { | 854 const drive::FileCacheEntry& cache_entry) { |
855 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 855 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
856 | 856 |
857 // Convert |cache_entry| into a dictionary. | 857 // Convert |cache_entry| into a dictionary. |
858 base::DictionaryValue value; | 858 base::DictionaryValue value; |
859 value.SetString("local_id", local_id); | 859 value.SetString("local_id", local_id); |
860 value.SetString("md5", cache_entry.md5()); | 860 value.SetString("md5", cache_entry.md5()); |
861 value.SetBoolean("is_present", cache_entry.is_present()); | 861 value.SetBoolean("is_present", cache_entry.is_present()); |
862 value.SetBoolean("is_pinned", cache_entry.is_pinned()); | 862 value.SetBoolean("is_pinned", cache_entry.is_pinned()); |
863 value.SetBoolean("is_dirty", cache_entry.is_dirty()); | 863 value.SetBoolean("is_dirty", cache_entry.is_dirty()); |
864 | 864 |
865 web_ui()->CallJavascriptFunction("updateCacheContents", value); | 865 web_ui()->CallJavascriptFunctionUnsafe("updateCacheContents", value); |
866 } | 866 } |
867 | 867 |
868 void DriveInternalsWebUIHandler::OnGetFreeDiskSpace( | 868 void DriveInternalsWebUIHandler::OnGetFreeDiskSpace( |
869 base::DictionaryValue* local_storage_summary) { | 869 base::DictionaryValue* local_storage_summary) { |
870 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 870 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
871 DCHECK(local_storage_summary); | 871 DCHECK(local_storage_summary); |
872 | 872 |
873 web_ui()->CallJavascriptFunction( | 873 web_ui()->CallJavascriptFunctionUnsafe("updateLocalStorageUsage", |
874 "updateLocalStorageUsage", *local_storage_summary); | 874 *local_storage_summary); |
875 } | 875 } |
876 | 876 |
877 void DriveInternalsWebUIHandler::OnPeriodicUpdate(const base::ListValue* args) { | 877 void DriveInternalsWebUIHandler::OnPeriodicUpdate(const base::ListValue* args) { |
878 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 878 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
879 | 879 |
880 drive::DriveIntegrationService* integration_service = | 880 drive::DriveIntegrationService* integration_service = |
881 GetIntegrationService(); | 881 GetIntegrationService(); |
882 // |integration_service| may be NULL in the guest/incognito mode. | 882 // |integration_service| may be NULL in the guest/incognito mode. |
883 if (!integration_service) | 883 if (!integration_service) |
884 return; | 884 return; |
(...skipping 12 matching lines...) Expand all Loading... |
897 content::WebUIDataSource::Create(chrome::kChromeUIDriveInternalsHost); | 897 content::WebUIDataSource::Create(chrome::kChromeUIDriveInternalsHost); |
898 source->AddResourcePath("drive_internals.css", IDR_DRIVE_INTERNALS_CSS); | 898 source->AddResourcePath("drive_internals.css", IDR_DRIVE_INTERNALS_CSS); |
899 source->AddResourcePath("drive_internals.js", IDR_DRIVE_INTERNALS_JS); | 899 source->AddResourcePath("drive_internals.js", IDR_DRIVE_INTERNALS_JS); |
900 source->SetDefaultResource(IDR_DRIVE_INTERNALS_HTML); | 900 source->SetDefaultResource(IDR_DRIVE_INTERNALS_HTML); |
901 | 901 |
902 Profile* profile = Profile::FromWebUI(web_ui); | 902 Profile* profile = Profile::FromWebUI(web_ui); |
903 content::WebUIDataSource::Add(profile, source); | 903 content::WebUIDataSource::Add(profile, source); |
904 } | 904 } |
905 | 905 |
906 } // namespace chromeos | 906 } // namespace chromeos |
OLD | NEW |