15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_WEBUI_QUOTA_INTERNALS_QUOTA_INTERNALS_HANDLER_H_
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CHROME_BROWSER_UI_WEBUI_QUOTA_INTERNALS_QUOTA_INTERNALS_HANDLER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_ui_message_handler.h"
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/common/quota/quota_types.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Value;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ListValue;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace quota_internals {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class QuotaInternalsProxy;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GlobalStorageInfo;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PerHostStorageInfo;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PerOriginStorageInfo;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::map<std::string, std::string> Statistics;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class handles message from WebUI page of chrome://quota-internals/.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// All methods in this class should be called on UI thread.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class QuotaInternalsHandler : public content::WebUIMessageHandler {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  QuotaInternalsHandler();
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~QuotaInternalsHandler();
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RegisterMessages() OVERRIDE;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called by QuotaInternalsProxy to report information to WebUI page.
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ReportAvailableSpace(int64 available_space);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ReportGlobalInfo(const GlobalStorageInfo& data);
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ReportPerHostInfo(const std::vector<PerHostStorageInfo>& hosts);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ReportPerOriginInfo(const std::vector<PerOriginStorageInfo>& origins);
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ReportStatistics(const Statistics& stats);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnRequestInfo(const base::ListValue*);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SendMessage(const std::string& message, const base::Value& value);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<QuotaInternalsProxy> proxy_;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(QuotaInternalsHandler);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace quota_internals
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif  // CHROME_BROWSER_UI_WEBUI_QUOTA_INTERNALS_QUOTA_INTERNALS_HANDLER_H_
55