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 3 // found in the LICENSE file. 4 5 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h" 6 7 #include "base/android/jni_android.h" 8 #include "base/android/jni_string.h" 9 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.h" 10 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h" 11 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.h" 12 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile_manager.h" 14 #include "chrome/common/pref_names.h" 15 #include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h" 16 #include "components/data_reduction_proxy/browser/data_reduction_proxy_settings.h" 17 #include "components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats.h" 18 #include "jni/DataReductionProxySettings_jni.h" 19 20 21 using base::android::ConvertUTF8ToJavaString; 22 using base::android::ScopedJavaLocalRef; 23 using data_reduction_proxy::DataReductionProxyParams; 24 using data_reduction_proxy::DataReductionProxySettings; 25 26 DataReductionProxySettingsAndroid::DataReductionProxySettingsAndroid() { 27 } 28 29 DataReductionProxySettingsAndroid::~DataReductionProxySettingsAndroid() { 30 } 31 32 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyAllowed( 33 JNIEnv* env, jobject obj) { 34 return Settings()->params()->allowed(); 35 } 36 37 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyPromoAllowed( 38 JNIEnv* env, jobject obj) { 39 return Settings()->params()->promo_allowed(); 40 } 41 42 jboolean DataReductionProxySettingsAndroid::IsIncludedInAltFieldTrial( 43 JNIEnv* env, jobject obj) { 44 return DataReductionProxyParams::IsIncludedInAlternativeFieldTrial(); 45 } 46 47 ScopedJavaLocalRef<jstring> 48 DataReductionProxySettingsAndroid::GetDataReductionProxyOrigin( 49 JNIEnv* env, jobject obj) { 50 return ConvertUTF8ToJavaString(env, Settings()->params()->origin().spec()); 51 } 52 53 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyEnabled( 54 JNIEnv* env, jobject obj) { 55 return Settings()->IsDataReductionProxyEnabled(); 56 } 57 58 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyManaged( 59 JNIEnv* env, jobject obj) { 60 return Settings()->IsDataReductionProxyManaged(); 61 } 62 63 void DataReductionProxySettingsAndroid::SetDataReductionProxyEnabled( 64 JNIEnv* env, 65 jobject obj, 66 jboolean enabled) { 67 Settings()->SetDataReductionProxyEnabled(enabled); 68 } 69 70 jlong DataReductionProxySettingsAndroid::GetDataReductionLastUpdateTime( 71 JNIEnv* env, jobject obj) { 72 return Settings()->GetDataReductionLastUpdateTime(); 73 } 74 75 base::android::ScopedJavaLocalRef<jobject> 76 DataReductionProxySettingsAndroid::GetContentLengths(JNIEnv* env, 77 jobject obj) { 78 int64 original_content_length; 79 int64 received_content_length; 80 int64 last_update_internal; 81 Settings()->GetContentLengths( 82 data_reduction_proxy::kNumDaysInHistorySummary, 83 &original_content_length, 84 &received_content_length, 85 &last_update_internal); 86 87 return Java_ContentLengths_create(env, 88 original_content_length, 89 received_content_length); 90 } 91 92 ScopedJavaLocalRef<jlongArray> 93 DataReductionProxySettingsAndroid::GetDailyOriginalContentLengths( 94 JNIEnv* env, jobject obj) { 95 return GetDailyContentLengths( 96 env, data_reduction_proxy::prefs::kDailyHttpOriginalContentLength); 97 } 98 99 ScopedJavaLocalRef<jlongArray> 100 DataReductionProxySettingsAndroid::GetDailyReceivedContentLengths( 101 JNIEnv* env, jobject obj) { 102 return GetDailyContentLengths( 103 env, data_reduction_proxy::prefs::kDailyHttpReceivedContentLength); 104 } 105 106 jboolean DataReductionProxySettingsAndroid::IsDataReductionProxyUnreachable( 107 JNIEnv* env, jobject obj) { 108 return Settings()->IsDataReductionProxyUnreachable(); 109 } 110 111 // static 112 bool DataReductionProxySettingsAndroid::Register(JNIEnv* env) { 113 bool register_natives_impl_result = RegisterNativesImpl(env); 114 return register_natives_impl_result; 115 } 116 117 ScopedJavaLocalRef<jlongArray> 118 DataReductionProxySettingsAndroid::GetDailyContentLengths( 119 JNIEnv* env, const char* pref_name) { 120 jlongArray result = env->NewLongArray( 121 data_reduction_proxy::kNumDaysInHistory); 122 123 DataReductionProxySettings::ContentLengthList lengths = 124 Settings()->GetDailyContentLengths(pref_name); 125 126 if (!lengths.empty()) { 127 DCHECK_EQ(lengths.size(), data_reduction_proxy::kNumDaysInHistory); 128 env->SetLongArrayRegion(result, 0, lengths.size(), &lengths[0]); 129 return ScopedJavaLocalRef<jlongArray>(env, result); 130 } 131 132 return ScopedJavaLocalRef<jlongArray>(env, result); 133 } 134 135 DataReductionProxySettings* DataReductionProxySettingsAndroid::Settings() { 136 DataReductionProxySettings* settings = 137 DataReductionProxyChromeSettingsFactory::GetForBrowserContext( 138 ProfileManager::GetActiveUserProfile()); 139 DCHECK(settings); 140 return settings; 141 } 142 143 144 // Used by generated jni code. 145 static jlong Init(JNIEnv* env, jobject obj) { 146 return reinterpret_cast<intptr_t>(new DataReductionProxySettingsAndroid()); 147 } 148