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

Unified Diff: chrome/browser/ui/webui/chromeos/provided_file_systems_ui.cc

Issue 301873002: [fsp] Show request logs in chrome://provided-file-systems. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Display errors as text. Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/resources/chromeos/provided_file_systems.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/chromeos/provided_file_systems_ui.cc
diff --git a/chrome/browser/ui/webui/chromeos/provided_file_systems_ui.cc b/chrome/browser/ui/webui/chromeos/provided_file_systems_ui.cc
index 1dbbe441617f878e428336f5cb50d070f9bf6b98..9037654457e5ef654e8ca52581de5212362b5f5e 100644
--- a/chrome/browser/ui/webui/chromeos/provided_file_systems_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/provided_file_systems_ui.cc
@@ -4,9 +4,11 @@
#include "chrome/browser/ui/webui/chromeos/provided_file_systems_ui.h"
+#include <string>
#include <vector>
#include "base/bind.h"
+#include "base/files/file.h"
#include "base/memory/weak_ptr.h"
#include "base/values.h"
#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h"
@@ -29,11 +31,24 @@ namespace chromeos {
namespace {
// Class to handle messages from chrome://provided-file-systems.
-class ProvidedFileSystemsWebUIHandler : public content::WebUIMessageHandler {
+class ProvidedFileSystemsWebUIHandler
+ : public content::WebUIMessageHandler,
+ public file_system_provider::RequestManager::Observer {
public:
ProvidedFileSystemsWebUIHandler() : weak_ptr_factory_(this) {}
- virtual ~ProvidedFileSystemsWebUIHandler() {}
+ virtual ~ProvidedFileSystemsWebUIHandler();
+
+ // RequestManager::Observer overrides.
+ virtual void OnRequestCreated(
+ int request_id,
+ file_system_provider::RequestType type) OVERRIDE;
+ virtual void OnRequestDestroyed(int request_id) OVERRIDE;
+ virtual void OnRequestExecuted(int request_id) OVERRIDE;
+ virtual void OnRequestFulfilled(int request_id, bool has_more) OVERRIDE;
+ virtual void OnRequestRejected(int request_id,
+ base::File::Error error) OVERRIDE;
+ virtual void OnRequestTimeouted(int request_id) OVERRIDE;
private:
// content::WebUIMessageHandler overrides.
@@ -44,17 +59,102 @@ class ProvidedFileSystemsWebUIHandler : public content::WebUIMessageHandler {
file_system_provider::Service* GetService();
// Invoked when updating file system list is requested.
- void OnUpdateFileSystems(const base::ListValue* args);
+ void UpdateFileSystems(const base::ListValue* args);
+
+ // Invoked when a file system is selected from the list.
+ void SelectFileSystem(const base::ListValue* args);
+ std::string selected_extension_id;
+ std::string selected_file_system_id;
base::WeakPtrFactory<ProvidedFileSystemsWebUIHandler> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(ProvidedFileSystemsWebUIHandler);
};
+ProvidedFileSystemsWebUIHandler::~ProvidedFileSystemsWebUIHandler() {
+ // Stop observing the currently selected file system.
+ file_system_provider::Service* const service = GetService();
+ if (!service)
+ return;
+
+ file_system_provider::ProvidedFileSystemInterface* const file_system =
+ service->GetProvidedFileSystem(selected_extension_id,
+ selected_file_system_id);
+
+ if (file_system) {
+ file_system_provider::RequestManager* const request_manager =
+ file_system->GetRequestManager();
+ DCHECK(request_manager);
+ request_manager->RemoveObserver(this);
Nikita (slow) 2014/05/30 07:15:10 nit: Just file_system->GetRequestManager()->Remove
mtomasz 2014/06/02 03:16:24 This doesn't happen now, but theoretically Provide
Nikita (slow) 2014/06/02 06:15:12 Either way it will crash if you try to access it b
+ }
+}
+
+void ProvidedFileSystemsWebUIHandler::OnRequestCreated(
+ int request_id,
+ file_system_provider::RequestType type) {
+ base::DictionaryValue event;
+ event.SetInteger("id", request_id);
Nikita (slow) 2014/05/30 07:15:10 nit: Please extract all IDs as constants, they're
mtomasz 2014/06/02 03:16:24 Done.
+ event.SetString("eventType", "created");
+ event.SetString("requestType",
+ file_system_provider::RequestTypeToString(type));
+ event.SetDouble("time", base::Time::Now().ToJsTime());
+ web_ui()->CallJavascriptFunction("onRequestEvent", event);
+}
+
+void ProvidedFileSystemsWebUIHandler::OnRequestDestroyed(int request_id) {
+ base::DictionaryValue event;
+ event.SetInteger("id", request_id);
Nikita (slow) 2014/05/30 07:15:10 nit: You may introduce helper function that will f
mtomasz 2014/06/02 03:16:24 Done.
+ event.SetString("eventType", "destroyed");
+ event.SetDouble("time", base::Time::Now().ToJsTime());
+ web_ui()->CallJavascriptFunction("onRequestEvent", event);
+}
+
+void ProvidedFileSystemsWebUIHandler::OnRequestExecuted(int request_id) {
+ base::DictionaryValue event;
+ event.SetInteger("id", request_id);
+ event.SetString("eventType", "executed");
+ event.SetDouble("time", base::Time::Now().ToJsTime());
+ web_ui()->CallJavascriptFunction("onRequestEvent", event);
+}
+
+void ProvidedFileSystemsWebUIHandler::OnRequestFulfilled(int request_id,
+ bool has_more) {
+ base::DictionaryValue event;
+ event.SetString("eventType", "fulfilled");
+ event.SetInteger("id", request_id);
+ event.SetDouble("time", base::Time::Now().ToJsTime());
+ event.SetBoolean("hasMore", has_more);
+ web_ui()->CallJavascriptFunction("onRequestEvent", event);
+}
+
+void ProvidedFileSystemsWebUIHandler::OnRequestRejected(
+ int request_id,
+ base::File::Error error) {
+ base::DictionaryValue event;
+ event.SetInteger("id", request_id);
+ event.SetString("eventType", "rejected");
+ event.SetDouble("time", base::Time::Now().ToJsTime());
+ event.SetString("error", base::File::ErrorToString(error));
+
+ web_ui()->CallJavascriptFunction("onRequestEvent", event);
+}
+
+void ProvidedFileSystemsWebUIHandler::OnRequestTimeouted(int request_id) {
+ base::DictionaryValue event;
+ event.SetInteger("id", request_id);
+ event.SetString("eventType", "timeouted");
+ event.SetDouble("time", base::Time::Now().ToJsTime());
+ web_ui()->CallJavascriptFunction("onRequestEvent", event);
+}
+
void ProvidedFileSystemsWebUIHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"updateFileSystems",
- base::Bind(&ProvidedFileSystemsWebUIHandler::OnUpdateFileSystems,
+ base::Bind(&ProvidedFileSystemsWebUIHandler::UpdateFileSystems,
+ weak_ptr_factory_.GetWeakPtr()));
+ web_ui()->RegisterMessageCallback(
+ "selectFileSystem",
+ base::Bind(&ProvidedFileSystemsWebUIHandler::SelectFileSystem,
weak_ptr_factory_.GetWeakPtr()));
}
@@ -65,7 +165,7 @@ file_system_provider::Service* ProvidedFileSystemsWebUIHandler::GetService() {
return file_system_provider::ServiceFactory::FindExisting(profile);
}
-void ProvidedFileSystemsWebUIHandler::OnUpdateFileSystems(
+void ProvidedFileSystemsWebUIHandler::UpdateFileSystems(
const base::ListValue* args) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -91,21 +191,64 @@ void ProvidedFileSystemsWebUIHandler::OnUpdateFileSystems(
file_system->GetRequestManager();
DCHECK(request_manager);
- base::DictionaryValue* item_value = new base::DictionaryValue();
- item_value->SetString("id", file_system_info.file_system_id());
- item_value->SetString("name", file_system_info.file_system_name());
- item_value->SetString("extensionId", file_system_info.extension_id());
- item_value->SetString("mountPath",
- file_system_info.mount_path().AsUTF8Unsafe());
- item_value->SetInteger("activeRequests",
- request_manager->GetActiveRequestsForLogging());
+ base::DictionaryValue* item = new base::DictionaryValue();
+ item->SetString("id", file_system_info.file_system_id());
+ item->SetString("name", file_system_info.file_system_name());
+ item->SetString("extensionId", file_system_info.extension_id());
+ item->SetString("mountPath", file_system_info.mount_path().AsUTF8Unsafe());
+ item->SetInteger("activeRequests",
+ request_manager->GetActiveRequestsForLogging());
- items.Append(item_value);
+ items.Append(item);
}
web_ui()->CallJavascriptFunction("updateFileSystems", items);
}
+void ProvidedFileSystemsWebUIHandler::SelectFileSystem(
+ const base::ListValue* args) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+ file_system_provider::Service* const service = GetService();
+ if (!service)
+ return;
+
+ std::string extension_id;
+ if (!args->GetString(0, &extension_id))
+ return;
+
+ std::string file_system_id;
+ if (!args->GetString(1, &file_system_id))
+ return;
+
+ // Stop observing the previously selected request manager.
+ {
+ file_system_provider::ProvidedFileSystemInterface* const file_system =
+ service->GetProvidedFileSystem(selected_extension_id,
+ selected_file_system_id);
+ if (file_system) {
+ file_system_provider::RequestManager* const request_manager =
Nikita (slow) 2014/05/30 07:15:10 nit: file_system->GetRequestManager()->RemoveObser
mtomasz 2014/06/02 03:16:24 As above.
+ file_system->GetRequestManager();
+ DCHECK(request_manager);
+ request_manager->RemoveObserver(this);
+ }
+ }
+
+ // Observe the selected file system.
+ file_system_provider::ProvidedFileSystemInterface* const file_system =
+ service->GetProvidedFileSystem(extension_id, file_system_id);
+ if (!file_system)
+ return;
+
+ file_system_provider::RequestManager* const request_manager =
Nikita (slow) 2014/05/30 07:15:10 nit: same here.
mtomasz 2014/06/02 03:16:24 As above.
+ file_system->GetRequestManager();
+ DCHECK(request_manager);
+
+ request_manager->AddObserver(this);
+ selected_extension_id = extension_id;
+ selected_file_system_id = file_system_id;
+}
+
} // namespace
ProvidedFileSystemsUI::ProvidedFileSystemsUI(content::WebUI* web_ui)
« no previous file with comments | « chrome/browser/resources/chromeos/provided_file_systems.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698