// Copyright 2015 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/extensions/api/data_reduction_proxy/data_reduction_proxy_api.h" #include #include #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h" #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_service.h" #include "components/data_reduction_proxy/proto/data_store.pb.h" namespace extensions { AsyncExtensionFunction::ResponseAction DataReductionProxyClearDataSavingsFunction::Run() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); data_reduction_proxy::DataReductionProxySettings* settings = DataReductionProxyChromeSettingsFactory::GetForBrowserContext( browser_context()); settings->data_reduction_proxy_service()->compression_stats()-> ClearDataSavingStatistics(); return RespondNow(NoArguments()); } AsyncExtensionFunction::ResponseAction DataReductionProxyGetDataUsageFunction::Run() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); data_reduction_proxy::DataReductionProxySettings* settings = DataReductionProxyChromeSettingsFactory::GetForBrowserContext( browser_context()); settings->data_reduction_proxy_service() ->compression_stats() ->GetHistoricalDataUsage(base::Bind( &DataReductionProxyGetDataUsageFunction::ReplyWithDataUsage, this)); return RespondLater(); } void DataReductionProxyGetDataUsageFunction::ReplyWithDataUsage( scoped_ptr> data_usage) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); scoped_ptr data_usage_buckets(new base::ListValue()); for (const auto& data_usage_bucket : *data_usage) { scoped_ptr connection_usage_list(new base::ListValue()); for (auto connection_usage : data_usage_bucket.connection_usage()) { scoped_ptr site_usage_list(new base::ListValue()); for (auto site_usage : connection_usage.site_usage()) { scoped_ptr usage(new base::DictionaryValue()); usage->SetString("hostname", site_usage.hostname()); usage->SetDouble("data_used", site_usage.data_used()); usage->SetDouble("original_size", site_usage.original_size()); site_usage_list->Append(std::move(usage)); } connection_usage_list->Append(std::move(site_usage_list)); } data_usage_buckets->Append(std::move(connection_usage_list)); } base::DictionaryValue* result = new base::DictionaryValue(); result->Set("data_usage_buckets", std::move(data_usage_buckets)); Respond(OneArgument(result)); } } // namespace extensions