| Index: chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettingsAndroid.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettingsAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettingsAndroid.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..aee76f951c4b4e7ad582101baa5adca3d41ac88c
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettingsAndroid.java
|
| @@ -0,0 +1,202 @@
|
| +// Copyright 2013 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.
|
| +
|
| +package org.chromium.chrome.browser.net.spdyproxy;
|
| +
|
| +import org.chromium.base.CalledByNative;
|
| +import org.chromium.base.ThreadUtils;
|
| +
|
| +public class DataReductionProxySettingsAndroid {
|
| +
|
| + public static class ContentLengths {
|
| + private final long mOriginal;
|
| + private final long mReceived;
|
| +
|
| + @CalledByNative("ContentLengths")
|
| + public static ContentLengths create(long original, long received) {
|
| + return new ContentLengths(original, received);
|
| + }
|
| +
|
| + private ContentLengths(long original, long received) {
|
| + mOriginal = original;
|
| + mReceived = received;
|
| + }
|
| +
|
| + public long getOriginal() {
|
| + return mOriginal;
|
| + }
|
| +
|
| + public long getReceived() {
|
| + return mReceived;
|
| + }
|
| + }
|
| +
|
| + private static DataReductionProxySettingsAndroid sSettings;
|
| +
|
| + public static DataReductionProxySettingsAndroid getInstance() {
|
| + ThreadUtils.assertOnUiThread();
|
| + if (sSettings == null) {
|
| + sSettings = new DataReductionProxySettingsAndroid();
|
| + }
|
| + return sSettings;
|
| + }
|
| +
|
| + private final int mNativeDataReductionProxySettingsAndroid;
|
| +
|
| + private DataReductionProxySettingsAndroid() {
|
| + // Note that this technically leaks the native object, however,
|
| + // DataReductionProxySettingsAndroid is a singleton that lives forever and there's no clean
|
| + // shutdown of Chrome on Android
|
| + mNativeDataReductionProxySettingsAndroid = nativeInit();
|
| + initDataReductionProxySettings();
|
| + }
|
| +
|
| + /**
|
| + * Initializes the data reduction proxy at Chrome startup.
|
| + */
|
| + public void initDataReductionProxySettings() {
|
| + nativeInitDataReductionProxySettings(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /**
|
| + * Add a pattern for hosts to bypass. Wildcards should be compatible with the JavaScript
|
| + * function shExpMatch, which can be used in proxy PAC resolution. This should be called
|
| + * before the proxy is used.
|
| + * @param pattern A pattern to match.
|
| + */
|
| + public void bypassHostPattern(String pattern) {
|
| + nativeBypassHostPattern(mNativeDataReductionProxySettingsAndroid, pattern);
|
| + }
|
| +
|
| + /**
|
| + * Add a pattern for URLs to bypass. Wildcards should be compatible with the JavaScript
|
| + * function shExpMatch, which can be used in proxy PAC resolution. This should be called
|
| + * before the proxy is used.
|
| + * @param pattern A pattern to match.
|
| + */
|
| + public void bypassURLPattern(String pattern) {
|
| + nativeBypassURLPattern(mNativeDataReductionProxySettingsAndroid, pattern);
|
| + }
|
| +
|
| +
|
| + /** Returns true if the SPDY proxy is meant to be available. */
|
| + public boolean isDataReductionProxyAvailable() {
|
| + return nativeIsDataReductionProxyAvailable(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /** Returns true if the SPDY proxy promo is meant to be available. */
|
| + public boolean isDataReductionProxyPromoAvailable() {
|
| + return nativeIsDataReductionProxyPromoAvailable(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /**
|
| + * Returns the current data reduction proxy origin.
|
| + */
|
| + public String getDataReductionProxyOrigin() {
|
| + return nativeGetDataReductionProxyOrigin(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /*
|
| + * Returns a configuration string for the data reduction proxy.
|
| + */
|
| + public String getDataReductionProxyAuth() {
|
| + return nativeGetDataReductionProxyAuth(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /**
|
| + * Sets the preference on whether to enable/disable the SPDY proxy. This will zero out the
|
| + * data reduction statistics if this is the first time the SPDY proxy has been enabled.
|
| + */
|
| + public void setDataReductionProxyEnabled(boolean enabled) {
|
| + nativeSetDataReductionProxyEnabled(mNativeDataReductionProxySettingsAndroid, enabled);
|
| + }
|
| +
|
| + /** Returns true if the SPDY proxy is enabled. */
|
| + public boolean isDataReductionProxyEnabled() {
|
| + return nativeIsDataReductionProxyEnabled(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /** Returns true if the SPDY proxy is managed by an administrator's policy. */
|
| + public boolean isDataReductionProxyManaged() {
|
| + return nativeIsDataReductionProxyManaged(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /**
|
| + * Returns the time that the data reduction statistics were last updated.
|
| + * @return The last update time in milliseconds since the epoch.
|
| + */
|
| + public long getDataReductionLastUpdateTime() {
|
| + return nativeGetDataReductionLastUpdateTime(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /**
|
| + * Returns aggregate original and received content lengths.
|
| + * @return The content lengths.
|
| + */
|
| + public ContentLengths getContentLengths() {
|
| + return nativeGetContentLengths(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /**
|
| + * Retrieves the history of daily totals of bytes that would have been
|
| + * received if no data reducing mechanism had been applied.
|
| + * @return The history of daily totals
|
| + */
|
| + public long[] getOriginalNetworkStatsHistory() {
|
| + return nativeGetDailyOriginalContentLengths(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /**
|
| + * Retrieves the history of daily totals of bytes that were received after
|
| + * applying a data reducing mechanism.
|
| + * @return The history of daily totals
|
| + */
|
| + public long[] getReceivedNetworkStatsHistory() {
|
| + return nativeGetDailyReceivedContentLengths(mNativeDataReductionProxySettingsAndroid);
|
| + }
|
| +
|
| + /**
|
| + * @return The data reduction settings as a string percentage.
|
| + */
|
| + public String getContentLengthPercentSavings() {
|
| + ContentLengths length = getContentLengths();
|
| + String percent = "0%";
|
| + if (length.getOriginal() > 0L && length.getOriginal() > length.getReceived()) {
|
| + percent = String.format(
|
| + "%.0f%%", 100.0 *
|
| + (length.getOriginal() - length.getReceived()) / length.getOriginal());
|
| + }
|
| + return percent;
|
| + }
|
| +
|
| + private native int nativeInit();
|
| + private native void nativeInitDataReductionProxySettings(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native void nativeBypassHostPattern(
|
| + int nativeDataReductionProxySettingsAndroid, String pattern);
|
| + private native void nativeBypassURLPattern(
|
| + int nativeDataReductionProxySettingsAndroid, String pattern);
|
| + private native boolean nativeIsDataReductionProxyAvailable(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native boolean nativeIsDataReductionProxyPromoAvailable(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native String nativeGetDataReductionProxyOrigin(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native String nativeGetDataReductionProxyAuth(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native boolean nativeIsDataReductionProxyEnabled(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native boolean nativeIsDataReductionProxyManaged(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native void nativeSetDataReductionProxyEnabled(
|
| + int nativeDataReductionProxySettingsAndroid, boolean enabled);
|
| + private native long nativeGetDataReductionLastUpdateTime(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native ContentLengths nativeGetContentLengths(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native long[] nativeGetDailyOriginalContentLengths(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| + private native long[] nativeGetDailyReceivedContentLengths(
|
| + int nativeDataReductionProxySettingsAndroid);
|
| +}
|
|
|