diff options
Diffstat (limited to 'chromium/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc')
-rw-r--r-- | chromium/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc | 381 |
1 files changed, 9 insertions, 372 deletions
diff --git a/chromium/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc b/chromium/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc index 686d55faf55..857d5816fdf 100644 --- a/chromium/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc +++ b/chromium/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc @@ -29,7 +29,6 @@ #include "base/task/post_task.h" #include "base/task/task_traits.h" #include "base/threading/sequenced_task_runner_handle.h" -#include "chrome/browser/chromeos/drive/debug_info_collector.h" #include "chrome/browser/chromeos/drive/drive_integration_service.h" #include "chrome/browser/chromeos/drive/file_system_util.h" #include "chrome/browser/chromeos/file_manager/path_util.h" @@ -43,13 +42,9 @@ #include "chromeos/constants/chromeos_features.h" #include "components/download/content/public/all_download_item_notifier.h" #include "components/download/public/common/download_item.h" -#include "components/drive/drive.pb.h" -#include "components/drive/drive_api_util.h" #include "components/drive/drive_notification_manager.h" #include "components/drive/drive_pref_names.h" #include "components/drive/event_logger.h" -#include "components/drive/job_list.h" -#include "components/drive/service/drive_service_interface.h" #include "components/prefs/pref_service.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -152,74 +147,6 @@ std::pair<base::ListValue, base::DictionaryValue> GetGCacheContents( return result; } -// Formats |entry| into text. -std::string FormatEntry(const base::FilePath& path, - const drive::ResourceEntry& entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - using base::StringAppendF; - - std::string out; - StringAppendF(&out, "%s\n", path.AsUTF8Unsafe().c_str()); - StringAppendF(&out, " title: %s\n", entry.title().c_str()); - StringAppendF(&out, " local_id: %s\n", entry.local_id().c_str()); - StringAppendF(&out, " resource_id: %s\n", entry.resource_id().c_str()); - StringAppendF(&out, " parent_local_id: %s\n", - entry.parent_local_id().c_str()); - StringAppendF(&out, " shared: %s\n", entry.shared() ? "true" : "false"); - StringAppendF(&out, " shared_with_me: %s\n", - entry.shared_with_me() ? "true" : "false"); - StringAppendF(&out, " alternate_url: %s\n", entry.alternate_url().c_str()); - - const drive::PlatformFileInfoProto& file_info = entry.file_info(); - StringAppendF(&out, " file_info\n"); - StringAppendF(&out, " size: %" PRId64 "\n", file_info.size()); - StringAppendF(&out, " is_directory: %d\n", file_info.is_directory()); - StringAppendF(&out, " is_symbolic_link: %d\n", - file_info.is_symbolic_link()); - - const base::Time last_modified = base::Time::FromInternalValue( - file_info.last_modified()); - const base::Time last_modified_by_me = - base::Time::FromInternalValue(entry.last_modified_by_me()); - const base::Time last_accessed = base::Time::FromInternalValue( - file_info.last_accessed()); - const base::Time creation_time = base::Time::FromInternalValue( - file_info.creation_time()); - StringAppendF(&out, " last_modified: %s\n", - google_apis::util::FormatTimeAsString(last_modified).c_str()); - StringAppendF( - &out, " last_modified_by_me: %s\n", - google_apis::util::FormatTimeAsString(last_modified_by_me).c_str()); - StringAppendF(&out, " last_accessed: %s\n", - google_apis::util::FormatTimeAsString(last_accessed).c_str()); - StringAppendF(&out, " creation_time: %s\n", - google_apis::util::FormatTimeAsString(creation_time).c_str()); - - if (entry.has_file_specific_info()) { - const drive::FileSpecificInfo& file_specific_info = - entry.file_specific_info(); - StringAppendF(&out, " content_mime_type: %s\n", - file_specific_info.content_mime_type().c_str()); - StringAppendF(&out, " file_md5: %s\n", - file_specific_info.md5().c_str()); - StringAppendF(&out, " document_extension: %s\n", - file_specific_info.document_extension().c_str()); - StringAppendF(&out, " is_hosted_document: %d\n", - file_specific_info.is_hosted_document()); - } - - if (entry.has_directory_specific_info()) { - StringAppendF(&out, " directory_info\n"); - const drive::DirectorySpecificInfo& directory_specific_info = - entry.directory_specific_info(); - StringAppendF(&out, " changestamp: %" PRId64 "\n", - directory_specific_info.changestamp()); - } - - return out; -} - // Appends {'key': key, 'value': value, 'class': clazz} dictionary to the // |list|. void AppendKeyValue(base::ListValue* list, @@ -231,7 +158,7 @@ void AppendKeyValue(base::ListValue* list, dict->SetKey(kValue, base::Value(std::move(value))); if (!clazz.empty()) dict->SetKey(kClass, base::Value(std::move(clazz))); - list->GetList().push_back(std::move(*dict)); + list->Append(std::move(*dict)); } ino_t GetInodeValue(const base::FilePath& path) { @@ -335,22 +262,10 @@ class DriveInternalsWebUIHandler : public content::WebUIMessageHandler { base::BindRepeating(&DriveInternalsWebUIHandler::OnPeriodicUpdate, weak_ptr_factory_.GetWeakPtr())); web_ui()->RegisterMessageCallback( - "clearAccessToken", - base::BindRepeating(&DriveInternalsWebUIHandler::ClearAccessToken, - weak_ptr_factory_.GetWeakPtr())); - web_ui()->RegisterMessageCallback( - "clearRefreshToken", - base::BindRepeating(&DriveInternalsWebUIHandler::ClearRefreshToken, - weak_ptr_factory_.GetWeakPtr())); - web_ui()->RegisterMessageCallback( "resetDriveFileSystem", base::BindRepeating(&DriveInternalsWebUIHandler::ResetDriveFileSystem, weak_ptr_factory_.GetWeakPtr())); web_ui()->RegisterMessageCallback( - "listFileEntries", - base::BindRepeating(&DriveInternalsWebUIHandler::ListFileEntries, - weak_ptr_factory_.GetWeakPtr())); - web_ui()->RegisterMessageCallback( "zipLogs", base::BindRepeating(&DriveInternalsWebUIHandler::ZipDriveFsLogs, weak_ptr_factory_.GetWeakPtr())); @@ -441,224 +356,23 @@ class DriveInternalsWebUIHandler : public content::WebUIMessageHandler { drive_notification_manager ? drive_notification_manager->push_notification_enabled() : false); - auto* drive_service = GetDriveService(); - if (drive_service) { - connection_status.SetBoolean("has-refresh-token", - drive_service->HasRefreshToken()); - connection_status.SetBoolean("has-access-token", - drive_service->HasAccessToken()); - } MaybeCallJavascript("updateConnectionStatus", std::move(connection_status)); } void UpdateAboutResourceSection() { - if (IsDriveFsEnabled()) { - // TODO(crbug.com/896123): Maybe worth implementing. - SetSectionEnabled("account-information-section", false); - return; - } - - SetSectionEnabled("account-information-section", true); - auto* drive_service = GetDriveService(); - if (drive_service) { - drive_service->GetAboutResource( - base::Bind(&DriveInternalsWebUIHandler::OnGetAboutResource, - weak_ptr_factory_.GetWeakPtr())); - } - } - - // Called when GetAboutResource() call to DriveService is complete. - void OnGetAboutResource( - google_apis::DriveApiErrorCode status, - std::unique_ptr<google_apis::AboutResource> about_resource) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - if (status != google_apis::HTTP_SUCCESS) { - LOG(ERROR) << "Failed to get about resource"; - return; - } - DCHECK(about_resource); - - base::DictionaryValue data; - data.SetDouble("account-quota-total", about_resource->quota_bytes_total()); - data.SetDouble("account-quota-used", - about_resource->quota_bytes_used_aggregate()); - data.SetDouble("account-largest-changestamp-remote", - about_resource->largest_change_id()); - data.SetString("root-resource-id", about_resource->root_folder_id()); - - MaybeCallJavascript("updateAboutResource", std::move(data)); + // TODO(crbug.com/896123): Maybe worth implementing. + SetSectionEnabled("account-information-section", false); } void UpdateDeltaUpdateStatusSection() { - if (IsDriveFsEnabled()) { - // TODO(crbug.com/896123): Maybe worth implementing. - SetSectionEnabled("delta-update-status-section", false); - return; - } - - SetSectionEnabled("delta-update-status-section", true); - auto* debug_info_collector = GetDebugInfoCollector(); - if (debug_info_collector) { - debug_info_collector->GetMetadata(base::Bind( - &DriveInternalsWebUIHandler::OnGetFilesystemMetadataForDeltaUpdate, - weak_ptr_factory_.GetWeakPtr())); - } - } - - // Callback for DebugInfoCollector::GetMetadata for delta update. - void OnGetFilesystemMetadataForDeltaUpdate( - const drive::FileSystemMetadata& metadata, - const std::map<std::string, drive::FileSystemMetadata>& - team_drive_metadata) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - auto items = std::make_unique<base::ListValue>(); - // Users default corpus first. - auto app_data = std::make_unique<base::DictionaryValue>(); - app_data->SetString("id", "default corpus"); - app_data->SetString("root_entry_path", metadata.path); - app_data->SetString("start_page_token", metadata.start_page_token); - app_data->SetString("last_check_time", - google_apis::util::FormatTimeAsStringLocaltime( - metadata.last_update_check_time)); - app_data->SetString( - "last_check_result", - drive::FileErrorToString(metadata.last_update_check_error)); - app_data->SetString("refreshing", metadata.refreshing ? "Yes" : "No"); - - items->Append(std::move(app_data)); - - for (const auto& team_drive : team_drive_metadata) { - app_data = std::make_unique<base::DictionaryValue>(); - app_data->SetString("id", team_drive.first); - app_data->SetString("root_entry_path", team_drive.second.path); - app_data->SetString("start_page_token", - team_drive.second.start_page_token); - app_data->SetString("last_check_time", - google_apis::util::FormatTimeAsStringLocaltime( - team_drive.second.last_update_check_time)); - app_data->SetString( - "last_check_result", - drive::FileErrorToString(team_drive.second.last_update_check_error)); - app_data->SetString("refreshing", - team_drive.second.refreshing ? "Yes" : "No"); - items->Append(std::move(app_data)); - } - - base::DictionaryValue delta_update_status; - delta_update_status.Set("items", std::move(items)); - - MaybeCallJavascript("updateDeltaUpdateStatus", - std::move(delta_update_status)); + // TODO(crbug.com/896123): Maybe worth implementing. + SetSectionEnabled("delta-update-status-section", false); } void UpdateInFlightOperationsSection() { - if (IsDriveFsEnabled()) { - // TODO(crbug.com/896123): Maybe worth implementing. - SetSectionEnabled("in-flight-operations-section", false); - return; - } - - SetSectionEnabled("in-flight-operations-section", true); - auto* integration_service = GetIntegrationService(); - if (!integration_service) - return; - drive::JobListInterface* job_list = integration_service->job_list(); - if (!job_list) - return; - std::vector<drive::JobInfo> info_list = job_list->GetJobInfoList(); - - base::ListValue in_flight_operations; - for (size_t i = 0; i < info_list.size(); ++i) { - const drive::JobInfo& info = info_list[i]; - - auto dict = std::make_unique<base::DictionaryValue>(); - dict->SetInteger("id", info.job_id); - dict->SetString("type", drive::JobTypeToString(info.job_type)); - dict->SetString("file_path", info.file_path.AsUTF8Unsafe()); - dict->SetString("state", drive::JobStateToString(info.state)); - dict->SetDouble("progress_current", info.num_completed_bytes); - dict->SetDouble("progress_total", info.num_total_bytes); - in_flight_operations.Append(std::move(dict)); - } - - MaybeCallJavascript("updateInFlightOperations", - std::move(in_flight_operations)); - } - - void UpdateFileSystemContentsSection() { - if (IsDriveFsEnabled()) { - SetSectionEnabled("file-system-contents-section", false); - return; - } - - SetSectionEnabled("file-system-contents-section", true); - drive::DebugInfoCollector* debug_info_collector = GetDebugInfoCollector(); - if (!debug_info_collector) - return; - - // Start rendering the file system tree as text. - const base::FilePath root_path = drive::util::GetDriveGrandRootPath(); - - debug_info_collector->GetResourceEntry( - root_path, - base::BindOnce(&DriveInternalsWebUIHandler::OnGetResourceEntryByPath, - weak_ptr_factory_.GetWeakPtr(), root_path)); - - debug_info_collector->ReadDirectory( - root_path, - base::Bind(&DriveInternalsWebUIHandler::OnReadDirectoryByPath, - weak_ptr_factory_.GetWeakPtr(), root_path)); - } - - // Called when GetResourceEntryByPath() is complete. - void OnGetResourceEntryByPath(const base::FilePath& path, - drive::FileError error, - std::unique_ptr<drive::ResourceEntry> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - if (error == drive::FILE_ERROR_OK) { - DCHECK(entry.get()); - MaybeCallJavascript("updateFileSystemContents", - base::Value(FormatEntry(path, *entry) + "\n")); - } - } - - // Called when ReadDirectoryByPath() is complete. - void OnReadDirectoryByPath( - const base::FilePath& parent_path, - drive::FileError error, - std::unique_ptr<drive::ResourceEntryVector> entries) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - if (error == drive::FILE_ERROR_OK) { - DCHECK(entries.get()); - - drive::DebugInfoCollector* debug_info_collector = GetDebugInfoCollector(); - std::string file_system_as_text; - for (size_t i = 0; i < entries->size(); ++i) { - const drive::ResourceEntry& entry = (*entries)[i]; - const base::FilePath current_path = parent_path.Append( - base::FilePath::FromUTF8Unsafe(entry.base_name())); - - file_system_as_text.append(FormatEntry(current_path, entry) + "\n"); - - if (entry.file_info().is_directory()) { - debug_info_collector->ReadDirectory( - current_path, - base::Bind(&DriveInternalsWebUIHandler::OnReadDirectoryByPath, - weak_ptr_factory_.GetWeakPtr(), current_path)); - } - } - - // There may be pending ReadDirectoryByPath() calls, but we can update - // the page with what we have now. This results in progressive - // updates, which is good for a large file system. - MaybeCallJavascript("updateFileSystemContents", - base::Value(file_system_as_text)); - } + // TODO(crbug.com/896123): Maybe worth implementing. + SetSectionEnabled("in-flight-operations-section", false); } void UpdatePathConfigurationsSection() { @@ -727,8 +441,6 @@ class DriveInternalsWebUIHandler : public content::WebUIMessageHandler { PrefService* pref_service = profile()->GetPrefs(); base::ListValue preferences; - AppendKeyValue(&preferences, "DriveFS", - IsDriveFsEnabled() ? "true" : "false"); for (size_t i = 0; i < base::size(kDriveRelatedPreferences); ++i) { const std::string key = kDriveRelatedPreferences[i]; // As of now, all preferences are boolean. @@ -772,10 +484,6 @@ class DriveInternalsWebUIHandler : public content::WebUIMessageHandler { } void UpdateServiceLogSection() { - if (!IsDriveFsEnabled()) { - SetSectionEnabled("service-log-section", false); - return; - } SetSectionEnabled("service-log-section", true); if (service_log_file_is_processing_) @@ -818,36 +526,8 @@ class DriveInternalsWebUIHandler : public content::WebUIMessageHandler { } void UpdateCacheContentsSection() { - if (IsDriveFsEnabled()) { - // TODO(crbug.com/896123): Maybe worth implementing. - SetSectionEnabled("cache-contents-section", false); - return; - } - SetSectionEnabled("cache-contents-section", true); - - auto* debug_info_collector = GetDebugInfoCollector(); - if (debug_info_collector) { - debug_info_collector->IterateFileCache( - base::Bind(&DriveInternalsWebUIHandler::OnUpdateCacheEntry, - weak_ptr_factory_.GetWeakPtr()), - base::DoNothing()); - } - } - - // Called as the iterator for DebugInfoCollector::IterateFileCache(). - void OnUpdateCacheEntry(const std::string& local_id, - const drive::FileCacheEntry& cache_entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - // Convert |cache_entry| into a dictionary. - base::DictionaryValue value; - value.SetString("local_id", local_id); - value.SetString("md5", cache_entry.md5()); - value.SetBoolean("is_present", cache_entry.is_present()); - value.SetBoolean("is_pinned", cache_entry.is_pinned()); - value.SetBoolean("is_dirty", cache_entry.is_dirty()); - - MaybeCallJavascript("updateCacheContents", std::move(value)); + // TODO(crbug.com/896123): Maybe worth implementing. + SetSectionEnabled("cache-contents-section", false); } void UpdateGCacheContentsSection() { @@ -873,24 +553,6 @@ class DriveInternalsWebUIHandler : public content::WebUIMessageHandler { } // Called when the corresponding button on the page is pressed. - void ClearAccessToken(const base::ListValue* args) { - AllowJavascript(); - - drive::DriveServiceInterface* drive_service = GetDriveService(); - if (drive_service) - drive_service->ClearAccessToken(); - } - - // Called when the corresponding button on the page is pressed. - void ClearRefreshToken(const base::ListValue* args) { - AllowJavascript(); - - drive::DriveServiceInterface* drive_service = GetDriveService(); - if (drive_service) - drive_service->ClearRefreshToken(); - } - - // Called when the corresponding button on the page is pressed. void ResetDriveFileSystem(const base::ListValue* args) { AllowJavascript(); @@ -903,13 +565,6 @@ class DriveInternalsWebUIHandler : public content::WebUIMessageHandler { } } - // Called when the corresponding button on the page is pressed. - void ListFileEntries(const base::ListValue* args) { - AllowJavascript(); - - UpdateFileSystemContentsSection(); - } - void ZipDriveFsLogs(const base::ListValue* args) { AllowJavascript(); @@ -941,24 +596,6 @@ class DriveInternalsWebUIHandler : public content::WebUIMessageHandler { return service; } - // Returns a DriveService instance. - drive::DriveServiceInterface* GetDriveService() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - return drive::util::GetDriveServiceByProfile(profile()); - } - - // Returns a DebugInfoCollector instance. - drive::DebugInfoCollector* GetDebugInfoCollector() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - drive::DriveIntegrationService* service = GetIntegrationService(); - return service ? service->debug_info_collector() : NULL; - } - - // Whether DriveFS is enabled. - bool IsDriveFsEnabled() { - return base::FeatureList::IsEnabled(chromeos::features::kDriveFs); - } - // The last event sent to the JavaScript side. int last_sent_event_id_; |