Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.cc

Issue 412143009: Moved data reduction proxy initialization logic to ProfileImplIOData (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h" 5 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h"
6 6
7 #include "base/android/build_info.h"
8 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
9 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
10 #include "base/bind.h"
11 #include "base/command_line.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "base/metrics/field_trial.h"
14 #include "base/metrics/histogram.h"
15 #include "base/prefs/pref_member.h"
16 #include "base/prefs/pref_service.h"
17 #include "base/strings/string_number_conversions.h"
18 #include "base/strings/utf_string_conversions.h"
19 #include "chrome/browser/browser_process.h"
20 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator. h" 9 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator. h"
21 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_factory_and roid.h" 10 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h"
22 #include "chrome/browser/prefs/proxy_prefs.h" 11 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_fact ory.h"
23 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
24 #include "chrome/browser/profiles/profile_manager.h" 13 #include "chrome/browser/profiles/profile_manager.h"
25 #include "chrome/common/chrome_switches.h"
26 #include "chrome/common/pref_names.h" 14 #include "chrome/common/pref_names.h"
27 #include "components/data_reduction_proxy/browser/data_reduction_proxy_configura tor.h"
28 #include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h" 15 #include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h"
29 #include "components/data_reduction_proxy/browser/data_reduction_proxy_settings. h" 16 #include "components/data_reduction_proxy/browser/data_reduction_proxy_settings. h"
17 #include "components/data_reduction_proxy/browser/data_reduction_proxy_usage_sta ts.h"
30 #include "jni/DataReductionProxySettings_jni.h" 18 #include "jni/DataReductionProxySettings_jni.h"
31 #include "net/base/auth.h"
32 #include "net/base/host_port_pair.h"
33 #include "net/base/load_flags.h"
34 #include "net/base/net_errors.h"
35 #include "net/url_request/url_fetcher.h"
36 #include "net/url_request/url_fetcher_delegate.h"
37 #include "net/url_request/url_request_status.h"
38 19
39 using base::android::CheckException; 20
40 using base::android::ConvertJavaStringToUTF8;
41 using base::android::ConvertUTF16ToJavaString;
42 using base::android::ConvertUTF8ToJavaString; 21 using base::android::ConvertUTF8ToJavaString;
43 using base::android::ScopedJavaLocalRef; 22 using base::android::ScopedJavaLocalRef;
44 using data_reduction_proxy::DataReductionProxyParams; 23 using data_reduction_proxy::DataReductionProxyParams;
45 using data_reduction_proxy::DataReductionProxySettings; 24 using data_reduction_proxy::DataReductionProxySettings;
46 25
47 namespace { 26 DataReductionProxySettingsAndroid::DataReductionProxySettingsAndroid() {
48
49 // The C++ definition of enum SpdyProxyAuthState defined in
50 // tools/histograms/histograms.xml.
51 // New values should be added at the end before |NUM_SPDY_PROXY_AUTH_STATE|.
52 enum {
53 CHROME_STARTUP,
54 SPDY_PROXY_AUTH_ON_AT_STARTUP,
55 SPDY_PROXY_AUTH_ON_BY_USER,
56 SPDY_PROXY_AUTH_OFF_BY_USER,
57 // Used by UMA histograms and should always be the last value.
58 NUM_SPDY_PROXY_AUTH_STATE
59 };
60
61 } // namespace
62
63 DataReductionProxySettingsAndroid::DataReductionProxySettingsAndroid(
64 data_reduction_proxy::DataReductionProxyParams* params)
65 : DataReductionProxySettings(params) {
66 } 27 }
67 28
68 DataReductionProxySettingsAndroid::~DataReductionProxySettingsAndroid() { 29 DataReductionProxySettingsAndroid::~DataReductionProxySettingsAndroid() {
69 } 30 }
70 31
71 void DataReductionProxySettingsAndroid::InitDataReductionProxySettings(
72 Profile* profile) {
73 DCHECK(profile);
74 PrefService* prefs = profile->GetPrefs();
75
76 scoped_ptr<data_reduction_proxy::DataReductionProxyConfigurator>
77 configurator(new DataReductionProxyChromeConfigurator(prefs));
78 SetProxyConfigurator(configurator.Pass());
79 DataReductionProxySettings::InitDataReductionProxySettings(
80 prefs,
81 g_browser_process->local_state(),
82 ProfileManager::GetActiveUserProfile()->GetRequestContext());
83 DataReductionProxySettings::SetDataReductionProxyAlternativeEnabled(
84 DataReductionProxyParams::IsIncludedInAlternativeFieldTrial());
85 }
86
87 void DataReductionProxySettingsAndroid::BypassHostPattern(
88 JNIEnv* env, jobject obj, jstring pattern) {
89 configurator()->AddHostPatternToBypass(
90 ConvertJavaStringToUTF8(env, pattern));
91 }
92 void DataReductionProxySettingsAndroid::BypassURLPattern(
93 JNIEnv* env, jobject obj, jstring pattern) {
94 configurator()->AddURLPatternToBypass(ConvertJavaStringToUTF8(env, pattern));
95 }
96
97 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyAllowed( 32 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyAllowed(
98 JNIEnv* env, jobject obj) { 33 JNIEnv* env, jobject obj) {
99 return params()->allowed(); 34 return Settings()->params()->allowed();
100 } 35 }
101 36
102 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyPromoAllowed( 37 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyPromoAllowed(
103 JNIEnv* env, jobject obj) { 38 JNIEnv* env, jobject obj) {
104 return params()->promo_allowed(); 39 return Settings()->params()->promo_allowed();
105 } 40 }
106 41
107 jboolean DataReductionProxySettingsAndroid::IsIncludedInAltFieldTrial( 42 jboolean DataReductionProxySettingsAndroid::IsIncludedInAltFieldTrial(
108 JNIEnv* env, jobject obj) { 43 JNIEnv* env, jobject obj) {
109 return DataReductionProxyParams::IsIncludedInAlternativeFieldTrial(); 44 return DataReductionProxyParams::IsIncludedInAlternativeFieldTrial();
110 } 45 }
111 46
112 ScopedJavaLocalRef<jstring> 47 ScopedJavaLocalRef<jstring>
113 DataReductionProxySettingsAndroid::GetDataReductionProxyOrigin( 48 DataReductionProxySettingsAndroid::GetDataReductionProxyOrigin(
114 JNIEnv* env, jobject obj) { 49 JNIEnv* env, jobject obj) {
115 return ConvertUTF8ToJavaString(env, params()->origin().spec()); 50 return ConvertUTF8ToJavaString(env, Settings()->params()->origin().spec());
116 } 51 }
117 52
118 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyEnabled( 53 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyEnabled(
119 JNIEnv* env, jobject obj) { 54 JNIEnv* env, jobject obj) {
120 return DataReductionProxySettings::IsDataReductionProxyEnabled(); 55 return Settings()->IsDataReductionProxyEnabled();
121 } 56 }
122 57
123 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyManaged( 58 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyManaged(
124 JNIEnv* env, jobject obj) { 59 JNIEnv* env, jobject obj) {
125 return DataReductionProxySettings::IsDataReductionProxyManaged(); 60 return Settings()->IsDataReductionProxyManaged();
126 } 61 }
127 62
128 void DataReductionProxySettingsAndroid::SetDataReductionProxyEnabled( 63 void DataReductionProxySettingsAndroid::SetDataReductionProxyEnabled(
129 JNIEnv* env, 64 JNIEnv* env,
130 jobject obj, 65 jobject obj,
131 jboolean enabled) { 66 jboolean enabled) {
132 DataReductionProxySettings::SetDataReductionProxyEnabled(enabled); 67 Settings()->SetDataReductionProxyEnabled(enabled);
133 } 68 }
134 69
135 jlong DataReductionProxySettingsAndroid::GetDataReductionLastUpdateTime( 70 jlong DataReductionProxySettingsAndroid::GetDataReductionLastUpdateTime(
136 JNIEnv* env, jobject obj) { 71 JNIEnv* env, jobject obj) {
137 return DataReductionProxySettings::GetDataReductionLastUpdateTime(); 72 return Settings()->GetDataReductionLastUpdateTime();
138 } 73 }
139 74
140 base::android::ScopedJavaLocalRef<jobject> 75 base::android::ScopedJavaLocalRef<jobject>
141 DataReductionProxySettingsAndroid::GetContentLengths(JNIEnv* env, 76 DataReductionProxySettingsAndroid::GetContentLengths(JNIEnv* env,
142 jobject obj) { 77 jobject obj) {
143 int64 original_content_length; 78 int64 original_content_length;
144 int64 received_content_length; 79 int64 received_content_length;
145 int64 last_update_internal; 80 int64 last_update_internal;
146 DataReductionProxySettings::GetContentLengths( 81 Settings()->GetContentLengths(
147 data_reduction_proxy::kNumDaysInHistorySummary, 82 data_reduction_proxy::kNumDaysInHistorySummary,
148 &original_content_length, 83 &original_content_length,
149 &received_content_length, 84 &received_content_length,
150 &last_update_internal); 85 &last_update_internal);
151 86
152 return Java_ContentLengths_create(env, 87 return Java_ContentLengths_create(env,
153 original_content_length, 88 original_content_length,
154 received_content_length); 89 received_content_length);
155 } 90 }
156 91
157 ScopedJavaLocalRef<jlongArray> 92 ScopedJavaLocalRef<jlongArray>
158 DataReductionProxySettingsAndroid::GetDailyOriginalContentLengths( 93 DataReductionProxySettingsAndroid::GetDailyOriginalContentLengths(
159 JNIEnv* env, jobject obj) { 94 JNIEnv* env, jobject obj) {
160 return GetDailyContentLengths( 95 return GetDailyContentLengths(
161 env, data_reduction_proxy::prefs::kDailyHttpOriginalContentLength); 96 env, data_reduction_proxy::prefs::kDailyHttpOriginalContentLength);
162 } 97 }
163 98
164 ScopedJavaLocalRef<jlongArray> 99 ScopedJavaLocalRef<jlongArray>
165 DataReductionProxySettingsAndroid::GetDailyReceivedContentLengths( 100 DataReductionProxySettingsAndroid::GetDailyReceivedContentLengths(
166 JNIEnv* env, jobject obj) { 101 JNIEnv* env, jobject obj) {
167 return GetDailyContentLengths( 102 return GetDailyContentLengths(
168 env, data_reduction_proxy::prefs::kDailyHttpReceivedContentLength); 103 env, data_reduction_proxy::prefs::kDailyHttpReceivedContentLength);
169 } 104 }
170 105
171 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyUnreachable( 106 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyUnreachable(
172 JNIEnv* env, jobject obj) { 107 JNIEnv* env, jobject obj) {
173 DCHECK(usage_stats()); 108 return Settings()->IsDataReductionProxyUnreachable();
174 return usage_stats()->isDataReductionProxyUnreachable();
175 } 109 }
176 110
177 // static 111 // static
178 bool DataReductionProxySettingsAndroid::Register(JNIEnv* env) { 112 bool DataReductionProxySettingsAndroid::Register(JNIEnv* env) {
179 bool register_natives_impl_result = RegisterNativesImpl(env); 113 bool register_natives_impl_result = RegisterNativesImpl(env);
180 return register_natives_impl_result; 114 return register_natives_impl_result;
181 } 115 }
182 116
183 void DataReductionProxySettingsAndroid::AddDefaultProxyBypassRules() {
184 DataReductionProxySettings::AddDefaultProxyBypassRules();
185 // Chrome cannot authenticate with the data reduction proxy when fetching URLs
186 // from the settings menu.
187 configurator()->AddURLPatternToBypass(
188 "http://www.google.com/policies/privacy*");
189 }
190
191 void DataReductionProxySettingsAndroid::SetProxyConfigs(
192 bool enabled,
193 bool alternative_enabled,
194 bool restricted,
195 bool at_startup) {
196 // Sanity check: If there's no fallback proxy, we can't do a restricted mode.
197 std::string fallback = params()->fallback_origin().spec();
198 if (fallback.empty() && enabled && restricted)
199 enabled = false;
200
201 LogProxyState(enabled, restricted, at_startup);
202
203 if (enabled && !params()->holdback()) {
204 if (alternative_enabled) {
205 configurator()->Enable(restricted,
206 !params()->fallback_allowed(),
207 params()->alt_origin().spec(),
208 params()->alt_fallback_origin().spec(),
209 params()->ssl_origin().spec());
210 } else {
211 configurator()->Enable(restricted,
212 !params()->fallback_allowed(),
213 params()->origin().spec(),
214 params()->fallback_origin().spec(),
215 std::string());
216 }
217 } else {
218 configurator()->Disable();
219 }
220 }
221
222 ScopedJavaLocalRef<jlongArray> 117 ScopedJavaLocalRef<jlongArray>
223 DataReductionProxySettingsAndroid::GetDailyContentLengths( 118 DataReductionProxySettingsAndroid::GetDailyContentLengths(
224 JNIEnv* env, const char* pref_name) { 119 JNIEnv* env, const char* pref_name) {
225 jlongArray result = env->NewLongArray( 120 jlongArray result = env->NewLongArray(
226 data_reduction_proxy::kNumDaysInHistory); 121 data_reduction_proxy::kNumDaysInHistory);
227 122
228 DataReductionProxySettings::ContentLengthList lengths = 123 DataReductionProxySettings::ContentLengthList lengths =
229 DataReductionProxySettings::GetDailyContentLengths(pref_name); 124 Settings()->GetDailyContentLengths(pref_name);
230 125
231 if (!lengths.empty()) { 126 if (!lengths.empty()) {
232 DCHECK_EQ(lengths.size(), data_reduction_proxy::kNumDaysInHistory); 127 DCHECK_EQ(lengths.size(), data_reduction_proxy::kNumDaysInHistory);
233 env->SetLongArrayRegion(result, 0, lengths.size(), &lengths[0]); 128 env->SetLongArrayRegion(result, 0, lengths.size(), &lengths[0]);
234 return ScopedJavaLocalRef<jlongArray>(env, result); 129 return ScopedJavaLocalRef<jlongArray>(env, result);
235 } 130 }
236 131
237 return ScopedJavaLocalRef<jlongArray>(env, result); 132 return ScopedJavaLocalRef<jlongArray>(env, result);
238 } 133 }
239 134
135 DataReductionProxySettings* DataReductionProxySettingsAndroid::Settings() {
136 DataReductionProxySettings* settings =
137 DataReductionProxyChromeSettingsFactory::GetForBrowserContext(
138 ProfileManager::GetActiveUserProfile());
139 DCHECK(settings);
140 return settings;
141 }
240 142
241 143
242 // Used by generated jni code. 144 // Used by generated jni code.
243 static jlong Init(JNIEnv* env, jobject obj) { 145 static jlong Init(JNIEnv* env, jobject obj) {
244 DataReductionProxySettingsAndroid* settings = 146 return reinterpret_cast<intptr_t>(new DataReductionProxySettingsAndroid());
245 DataReductionProxySettingsFactoryAndroid::GetForBrowserContext(
246 ProfileManager::GetActiveUserProfile());
247 return reinterpret_cast<intptr_t>(settings);
248 } 147 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698