| Index: chrome/browser/ui/webui/quota_internals_handler.cc
|
| diff --git a/chrome/browser/ui/webui/quota_internals_handler.cc b/chrome/browser/ui/webui/quota_internals_handler.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f1322b8848c8633cf05839dfde58bff999ff343a
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/webui/quota_internals_handler.cc
|
| @@ -0,0 +1,88 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/ui/webui/quota_internals_handler.h"
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/values.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/ui/webui/quota_internals_proxy.h"
|
| +#include "chrome/browser/ui/webui/quota_internals_types.h"
|
| +#include "net/base/net_util.h"
|
| +
|
| +namespace quota_internals {
|
| +
|
| +QuotaInternalsHandler::QuotaInternalsHandler() {}
|
| +
|
| +QuotaInternalsHandler::~QuotaInternalsHandler() {
|
| + if (proxy_)
|
| + proxy_->handler_ = NULL;
|
| +}
|
| +
|
| +void QuotaInternalsHandler::RegisterMessages() {
|
| + DCHECK(web_ui_);
|
| + web_ui_->RegisterMessageCallback(
|
| + "requestInfo",
|
| + NewCallback(this, &QuotaInternalsHandler::OnRequestInfo));
|
| +}
|
| +
|
| +void QuotaInternalsHandler::ReportAvailableSpace(int64 available_space) {
|
| + scoped_ptr<base::Value> avail(
|
| + base::Value::CreateDoubleValue(static_cast<double>(available_space)));
|
| + SendMessage("AvailableSpaceUpdated", *avail);
|
| +}
|
| +
|
| +void QuotaInternalsHandler::ReportGlobalInfo(const GlobalStorageInfo& data) {
|
| + scoped_ptr<base::Value> value(data.NewValue());
|
| + SendMessage("GlobalInfoUpdated", *value);
|
| +}
|
| +
|
| +void QuotaInternalsHandler::ReportPerHostInfo(
|
| + const std::vector<PerHostStorageInfo>& hosts) {
|
| + base::ListValue values;
|
| + typedef std::vector<PerHostStorageInfo>::const_iterator iterator;
|
| + for (iterator itr(hosts.begin()); itr != hosts.end(); ++itr) {
|
| + values.Append(itr->NewValue());
|
| + }
|
| +
|
| + SendMessage("PerHostInfoUpdated", values);
|
| +}
|
| +
|
| +void QuotaInternalsHandler::ReportPerOriginInfo(
|
| + const std::vector<PerOriginStorageInfo>& origins) {
|
| + base::ListValue origins_value;
|
| + typedef std::vector<PerOriginStorageInfo>::const_iterator iterator;
|
| + for (iterator itr(origins.begin()); itr != origins.end(); ++itr) {
|
| + origins_value.Append(itr->NewValue());
|
| + }
|
| +
|
| + SendMessage("PerOriginInfoUpdated", origins_value);
|
| +}
|
| +
|
| +void QuotaInternalsHandler::ReportStatistics(const Statistics& stats) {
|
| + base::DictionaryValue dict;
|
| + typedef Statistics::const_iterator iterator;
|
| + for (iterator itr(stats.begin()); itr != stats.end(); ++itr) {
|
| + dict.SetString(itr->first, itr->second);
|
| + }
|
| +
|
| + SendMessage("StatisticsUpdated", dict);
|
| +}
|
| +
|
| +void QuotaInternalsHandler::SendMessage(const std::string& message,
|
| + const base::Value& value) {
|
| + scoped_ptr<base::Value> message_data(base::Value::CreateStringValue(message));
|
| + web_ui_->CallJavascriptFunction("cr.quota.messageHandler",
|
| + *message_data,
|
| + value);
|
| +}
|
| +
|
| +void QuotaInternalsHandler::OnRequestInfo(const base::ListValue*) {
|
| + if (!proxy_)
|
| + proxy_ = new QuotaInternalsProxy(this);
|
| + proxy_->RequestInfo(web_ui_->GetProfile()->GetQuotaManager());
|
| +}
|
| +
|
| +} // namespace quota_internals
|
|
|