Cast: Stop logging kVideoFrameSentToEncoder and rename a couple events.
[chromium-blink-merge.git] / chrome / browser / net / spdyproxy / data_reduction_proxy_chrome_configurator.cc
blobbd4d5713451750bd8ab7a762ae7a7d131ffd152f
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.h"
7 #include "base/prefs/pref_service.h"
8 #include "base/prefs/scoped_user_pref_update.h"
9 #include "base/strings/string_util.h"
10 #include "chrome/browser/prefs/proxy_prefs.h"
11 #include "chrome/common/pref_names.h"
13 DataReductionProxyChromeConfigurator::DataReductionProxyChromeConfigurator(
14 PrefService* prefs) : prefs_(prefs) {
15 DCHECK(prefs);
18 DataReductionProxyChromeConfigurator::~DataReductionProxyChromeConfigurator() {
21 void DataReductionProxyChromeConfigurator::Enable(bool restricted,
22 const std::string& primary_origin,
23 const std::string& fallback_origin) {
24 DCHECK(prefs_);
25 DictionaryPrefUpdate update(prefs_, prefs::kProxy);
26 base::DictionaryValue* dict = update.Get();
27 std::string proxy_list;
28 std::string trimmed_fallback_origin;
29 base::TrimString(fallback_origin, "/", &trimmed_fallback_origin);
31 if (restricted) {
32 DCHECK(!fallback_origin.empty());
33 proxy_list = trimmed_fallback_origin;
34 } else {
35 std::string trimmed_primary_origin;
36 base::TrimString(primary_origin, "/", &trimmed_primary_origin);
37 proxy_list = trimmed_primary_origin +
38 (fallback_origin.empty() ? "" : "," + trimmed_fallback_origin);
41 std::string proxy_server_config = "http=" + proxy_list + ",direct://;";
42 dict->SetString("server", proxy_server_config);
43 dict->SetString("mode", ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS));
44 dict->SetString("bypass_list", JoinString(bypass_rules_, ", "));
47 void DataReductionProxyChromeConfigurator::Disable() {
48 DCHECK(prefs_);
49 DictionaryPrefUpdate update(prefs_, prefs::kProxy);
50 base::DictionaryValue* dict = update.Get();
51 dict->SetString("mode", ProxyModeToString(ProxyPrefs::MODE_SYSTEM));
52 dict->SetString("server", "");
53 dict->SetString("bypass_list", "");
56 void DataReductionProxyChromeConfigurator::AddHostPatternToBypass(
57 const std::string& pattern) {
58 bypass_rules_.push_back(pattern);
61 void DataReductionProxyChromeConfigurator::AddURLPatternToBypass(
62 const std::string& pattern) {
63 size_t pos = pattern.find('/');
64 if (pattern.find('/', pos + 1) == pos + 1)
65 pos = pattern.find('/', pos + 2);
67 std::string host_pattern;
68 if (pos != std::string::npos)
69 host_pattern = pattern.substr(0, pos);
70 else
71 host_pattern = pattern;
73 AddHostPatternToBypass(host_pattern);