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

Unified Diff: chrome/browser/ui/webui/quota_internals_ui.h

Issue 7084024: Add chrome://quota-internals/ (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 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
Index: chrome/browser/ui/webui/quota_internals_ui.h
diff --git a/chrome/browser/ui/webui/quota_internals_ui.h b/chrome/browser/ui/webui/quota_internals_ui.h
index c7b90cf0016fd0b930326af699e6eb89b8c786d3..b4c822948bcbf92e3e0b841ccdb78842c8346bfc 100644
--- a/chrome/browser/ui/webui/quota_internals_ui.h
+++ b/chrome/browser/ui/webui/quota_internals_ui.h
@@ -6,10 +6,15 @@
#define CHROME_BROWSER_UI_WEBUI_QUOTA_INTERNALS_UI_H_
#pragma once
+#include <set>
#include <string>
+#include <utility>
+#include <vector>
#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
#include "content/browser/webui/web_ui.h"
+#include "webkit/quota/quota_types.h"
+#include "webkit/quota/quota_manager.h"
class TabContents;
@@ -23,6 +28,7 @@ class QuotaInternalsUI : public WebUI {
};
namespace quota_internals {
+class QuotaInternalsProxy;
class QuotaInternalsHTMLSource : public ChromeURLDataManager::DataSource {
public:
@@ -37,7 +43,132 @@ class QuotaInternalsHTMLSource : public ChromeURLDataManager::DataSource {
DISALLOW_COPY_AND_ASSIGN(QuotaInternalsHTMLSource);
};
+class QuotaInternalsMessageHandler : public WebUIMessageHandler {
kinuko 2011/05/30 10:18:00 nit: could this be declared in .cc?
tzik 2011/05/31 04:53:00 Done.
+ public:
+ struct GlobalData {
+ quota::StorageType type;
+ int64 usage;
+ int64 unlimited_usage;
+ int64 quota;
+ };
+
+ struct HostData {
+ std::string host;
+ quota::StorageType type;
+ int64 usage;
+ int64 quota;
+ };
+
+ struct OriginData {
+ GURL origin;
+ quota::StorageType type;
+ std::string host;
+ int in_use;
+ int used_count;
+ base::Time last_access_time;
+ };
+
+ QuotaInternalsMessageHandler();
+ virtual ~QuotaInternalsMessageHandler();
+
+ virtual WebUIMessageHandler* Attach(WebUI* web_ui) OVERRIDE;
+ virtual void RegisterMessages() OVERRIDE;
+
+ void ReportAvailableSpace(int64 available_space);
+ void ReportGlobalData(const GlobalData& global_data);
+ void ReportHostData(const std::vector<HostData>& hosts);
+ void ReportOriginData(const std::vector<OriginData>& origins);
+
+ private:
+ void OnRequestData(const ListValue* list_unused);
+ void SendMessage(const std::string& message, const Value& value);
+
+ DictionaryValue* GlobalDataToValue(const GlobalData& global_data);
+ ListValue* HostDataToValue(const HostData& host);
+ ListValue* OriginDataToValue(const OriginData& origin);
+
+ scoped_refptr<QuotaInternalsProxy> proxy_;
+
+ DISALLOW_COPY_AND_ASSIGN(QuotaInternalsMessageHandler);
+};
+
+typedef QuotaInternalsProxy QuotaInternalsProxyDeleter;
+
+class QuotaInternalsProxy
+ : public base::RefCountedThreadSafe<QuotaInternalsProxy,
+ QuotaInternalsProxyDeleter> {
kinuko 2011/05/30 10:18:00 As we're in chrome/ I think you can simply use Bro
tzik 2011/05/31 04:53:00 Done.
+ public:
+ typedef QuotaInternalsMessageHandler::GlobalData GlobalData;
+ typedef QuotaInternalsMessageHandler::HostData HostData;
+ typedef QuotaInternalsMessageHandler::OriginData OriginData;
+
+ explicit QuotaInternalsProxy(QuotaInternalsMessageHandler* handler);
+
+ // Called on IO Thread
kinuko 2011/05/30 10:18:00 style-nit: please end the comment with '.'
tzik 2011/05/31 04:53:00 Done.
+ void ReportAvailableSpace(int64 available_space);
+ void ReportGlobalData(const GlobalData& global_data);
+ void ReportHostData(const std::vector<HostData>& hosts);
+ void ReportOriginData(const std::vector<OriginData>& origins);
+
+ // Called on UI Thread
+ void RequestData(quota::QuotaManager* quota_manager);
+
+ static void Destruct(const QuotaInternalsProxy* proxy);
+
+ private:
+ typedef quota::QuotaManager::QuotaTableEntry QuotaTableEntry;
+ typedef quota::QuotaManager::LastAccessTimeTableEntry
+ LastAccessTimeTableEntry;
+ typedef quota::QuotaManager::QuotaTableEntries QuotaTableEntries;
+ typedef quota::QuotaManager::LastAccessTimeTableEntries
+ LastAccessTimeTableEntries;
+
+ // Called on UI Thread
+ void RunReportAvailableSpace(int64 available_space);
+ void RunReportGlobalData(const GlobalData& global_data);
+ void RunReportHostData(const std::vector<HostData>& hosts);
+ void RunReportOriginData(const std::vector<OriginData>& origins);
+
+ // Called on IO Thread
+ void RunRequestData(scoped_refptr<quota::QuotaManager> quota_manager);
+
+ // Called on IO Thread by QuotaManager as callback
+ void DidGetAvailableSpace(quota::QuotaStatusCode status, int64 space);
+ void DidGetGlobalQuota(quota::QuotaStatusCode status,
+ quota::StorageType type,
+ int64 quota);
+ void DidGetGlobalUsage(quota::StorageType type,
+ int64 usage,
+ int64 unlimited_usage);
+ void DidDumpQuotaTable(const QuotaTableEntries& entries);
+ void DidDumpLastAccessTimeTable(const LastAccessTimeTableEntries& entries);
+ void DidGetHostUsage(const std::string& host,
+ quota::StorageType type,
+ int64 usage);
+
+ // Helper. Called on IO Thread
+ void RequestPerOriginData(quota::StorageType type);
+ void VisitHost(const std::string& host, quota::StorageType type);
+ void GetHostUsage(const std::string& host, quota::StorageType type);
+
+ // base::ScopedCallbackFactory<QuotaInternalsProxy> callback_factory_;
kinuko 2011/05/30 10:18:00 you forgot to delete this line?
tzik 2011/05/31 04:53:00 Done.
+ scoped_refptr<base::MessageLoopProxy> io_thread_, ui_thread_;
+
+ // Used on UI Thread
+ QuotaInternalsMessageHandler* handler_;
+
+ // Used on IO Thread
+ base::ScopedCallbackFactory<QuotaInternalsProxy> callback_factory_;
+ base::WeakPtr<quota::QuotaManager> quota_manager_;
+ std::set<std::pair<std::string, quota::StorageType> >
+ hosts_visited_, hosts_pending_;
+ std::vector<HostData> report_pending_;
+
+ friend class QuotaInternalsMessageHandler;
+ friend class DeleteTask<const QuotaInternalsProxy>;
+
+ virtual ~QuotaInternalsProxy() {}
+};
} // namespace quota_internals
#endif // CHROME_BROWSER_UI_WEBUI_QUOTA_INTERNALS_UI_H_
-
« no previous file with comments | « no previous file | chrome/browser/ui/webui/quota_internals_ui.cc » ('j') | chrome/browser/ui/webui/quota_internals_ui.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698