Home | History | Annotate | Download | only in spdyproxy
      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