Chromium Code Reviews| 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..e4a72345924ae8abfe34d53778fb4277a541525b |
| --- /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 { |
|
nyquist
2013/10/02 16:36:22
Could you remove "Android" from the class name? It
bengr
2013/10/04 23:14:43
Done.
|
| + |
| + 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 allowed to be used. */ |
| + public boolean isDataReductionProxyAllowed() { |
| + return nativeIsDataReductionProxyAllowed(mNativeDataReductionProxySettingsAndroid); |
| + } |
| + |
| + /** Returns true if the SPDY proxy promo is allowed to be shown. */ |
| + public boolean isDataReductionProxyPromoAllowed() { |
| + return nativeIsDataReductionProxyPromoAllowed(mNativeDataReductionProxySettingsAndroid); |
| + } |
| + |
| + /** |
| + * Returns the current data reduction proxy origin. |
| + */ |
| + public String getDataReductionProxyOrigin() { |
| + return nativeGetDataReductionProxyOrigin(mNativeDataReductionProxySettingsAndroid); |
| + } |
| + |
| + /* |
|
aurimas (slooooooooow)
2013/10/03 00:45:49
Missing a second star /**
bengr
2013/10/04 23:14:43
Done.
|
| + * 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 nativeIsDataReductionProxyAllowed( |
| + int nativeDataReductionProxySettingsAndroid); |
| + private native boolean nativeIsDataReductionProxyPromoAllowed( |
| + 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); |
| +} |