Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_mutable_config_values.cc |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_mutable_config_values.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_mutable_config_values.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cebbdaca3471c470d4cda1c17976fbbb32ddb6eb |
--- /dev/null |
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_mutable_config_values.cc |
@@ -0,0 +1,140 @@ |
+// 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 "components/data_reduction_proxy/core/browser/data_reduction_proxy_mutable_config_values.h" |
+ |
+#include "base/single_thread_task_runner.h" |
+#include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h" |
+ |
+namespace data_reduction_proxy { |
+ |
+scoped_ptr<DataReductionProxyMutableConfigValues> |
+DataReductionProxyMutableConfigValues::CreateFromParams( |
+ scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
+ const DataReductionProxyParams* params) { |
+ scoped_ptr<DataReductionProxyMutableConfigValues> config_values( |
+ new DataReductionProxyMutableConfigValues(io_task_runner)); |
+ config_values->promo_allowed_ = params->promo_allowed(); |
+ config_values->holdback_ = params->holdback(); |
+ config_values->allowed_ = params->allowed(); |
+ config_values->fallback_allowed_ = params->fallback_allowed(); |
+ config_values->secure_proxy_check_url_ = params->secure_proxy_check_url(); |
+ return config_values.Pass(); |
+} |
+ |
+DataReductionProxyMutableConfigValues::DataReductionProxyMutableConfigValues( |
+ scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) |
+ : empty_origin_(), |
+ promo_allowed_(false), |
+ holdback_(false), |
+ allowed_(false), |
+ fallback_allowed_(false), |
+ origin_(empty_origin_), |
+ fallback_origin_(empty_origin_), |
+ io_task_runner_(io_task_runner) { |
+ DCHECK(io_task_runner.get()); |
+} |
+ |
+DataReductionProxyMutableConfigValues:: |
+ ~DataReductionProxyMutableConfigValues() { |
+} |
+ |
+bool DataReductionProxyMutableConfigValues::promo_allowed() const { |
+ return promo_allowed_; |
+} |
+ |
+bool DataReductionProxyMutableConfigValues::holdback() const { |
+ return holdback_; |
+} |
+ |
+bool DataReductionProxyMutableConfigValues::allowed() const { |
+ return allowed_; |
+} |
+ |
+bool DataReductionProxyMutableConfigValues::fallback_allowed() const { |
+ return fallback_allowed_; |
+} |
+ |
+bool DataReductionProxyMutableConfigValues::alternative_allowed() const { |
+ return false; |
+} |
+ |
+bool DataReductionProxyMutableConfigValues::alternative_fallback_allowed() |
+ const { |
+ return false; |
+} |
+ |
+bool DataReductionProxyMutableConfigValues::UsingHTTPTunnel( |
+ const net::HostPortPair& proxy_server) const { |
+ return false; |
+} |
+ |
+bool DataReductionProxyMutableConfigValues::IsDataReductionProxy( |
+ const net::HostPortPair& host_port_pair, |
+ DataReductionProxyTypeInfo* proxy_info) const { |
+ // TODO(jeremyim): Rework as part of ConfigValues interface changes. |
+ if (allowed() && origin().is_valid() && |
+ origin().host_port_pair().Equals(host_port_pair)) { |
+ if (proxy_info) { |
+ proxy_info->proxy_servers.first = origin(); |
+ if (fallback_allowed()) |
+ proxy_info->proxy_servers.second = fallback_origin(); |
+ } |
+ return true; |
+ } |
+ |
+ if (!fallback_allowed() || !fallback_origin().is_valid() || |
+ !fallback_origin().host_port_pair().Equals(host_port_pair)) |
+ return false; |
+ |
+ if (proxy_info) { |
+ proxy_info->proxy_servers.first = fallback_origin(); |
+ proxy_info->proxy_servers.second = net::ProxyServer::FromURI( |
+ std::string(), net::ProxyServer::SCHEME_HTTP); |
+ proxy_info->is_fallback = true; |
+ } |
+ |
+ return true; |
+} |
+ |
+const net::ProxyServer& DataReductionProxyMutableConfigValues::origin() const { |
+ DCHECK(io_task_runner_->BelongsToCurrentThread()); |
+ return origin_; |
+} |
+ |
+const net::ProxyServer& DataReductionProxyMutableConfigValues::fallback_origin() |
+ const { |
+ DCHECK(io_task_runner_->BelongsToCurrentThread()); |
+ return fallback_origin_; |
+} |
+ |
+const net::ProxyServer& DataReductionProxyMutableConfigValues::alt_origin() |
+ const { |
+ return empty_origin_; |
+} |
+ |
+const net::ProxyServer& |
+DataReductionProxyMutableConfigValues::alt_fallback_origin() const { |
+ return empty_origin_; |
+} |
+ |
+const net::ProxyServer& DataReductionProxyMutableConfigValues::ssl_origin() |
+ const { |
+ return empty_origin_; |
+} |
+ |
+const GURL& DataReductionProxyMutableConfigValues::secure_proxy_check_url() |
+ const { |
+ return secure_proxy_check_url_; |
+} |
+ |
+void DataReductionProxyMutableConfigValues::UpdateValues( |
+ const net::ProxyServer& origin, |
+ const net::ProxyServer& fallback_origin) { |
+ DCHECK(io_task_runner_->BelongsToCurrentThread()); |
+ origin_ = origin; |
+ fallback_origin_ = fallback_origin; |
+} |
+ |
+} // namespace data_reduction_proxy |