diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/net/ZeroBalanceHelper.java | 99 | ||||
-rw-r--r-- | core/res/res/values/config.xml | 6 | ||||
-rw-r--r-- | core/res/res/values/symbols.xml | 4 |
3 files changed, 109 insertions, 0 deletions
diff --git a/core/java/android/net/ZeroBalanceHelper.java b/core/java/android/net/ZeroBalanceHelper.java new file mode 100644 index 0000000..e0ffca5 --- /dev/null +++ b/core/java/android/net/ZeroBalanceHelper.java @@ -0,0 +1,99 @@ +/* + ** Copyright (c) 2015, The Linux Foundation. All rights reserved. + + ** Redistribution and use in source and binary forms, with or without + ** modification, are permitted provided that the following conditions are + ** met: + ** * Redistributions of source code must retain the above copyright + ** notice, this list of conditions and the following disclaimer. + ** * Redistributions in binary form must reproduce the above + ** copyright notice, this list of conditions and the following + ** disclaimer in the documentation and/or other materials provided + ** with the distribution. + ** * Neither the name of The Linux Foundation nor the names of its + ** contributors may be used to endorse or promote products derived + ** from this software without specific prior written permission. + + ** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + ** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + ** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + ** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + ** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + ** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + ** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + ** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + ** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package android.net; + +import android.app.ActivityThread; +import android.content.Context; +import android.content.Intent; +import android.os.SystemProperties; +import android.os.UserHandle; +import android.util.Log; + +import com.android.internal.R; + +/** @hide */ +public final class ZeroBalanceHelper { + + public static final String BACKGROUND_DATA_PROPERTY = "sys.background.data.disable"; + public static final String BACKGROUND_DATA_BROADCAST = "org.codeaurora.background.data"; + public static final String TAG = "ZeroBalance"; + + private static int sRedirectCount = 0; + private static int sRedirectMaxCount = 3; + + private Context mContext = null; + + public ZeroBalanceHelper() { + mContext = ActivityThread.currentApplication(); + } + + public void setBgDataProperty(String enabled) { + Intent intent = new Intent(); + intent.setAction(BACKGROUND_DATA_BROADCAST); + intent.putExtra("enabled", enabled); + mContext.sendBroadcast(intent); + } + + public String getBgDataProperty() { + String isBgDataPropertySet = SystemProperties.get(BACKGROUND_DATA_PROPERTY, "false"); + if (Boolean.parseBoolean(isBgDataPropertySet)) { + sRedirectCount = 0; + } + return isBgDataPropertySet; + } + + private String getConfiguredRedirectURL() { + String redirectURL = mContext.getResources().getString( + com.android.internal.R.string.operator_config_url); + Log.d(TAG, "Returning the configured redirect URL : " + + redirectURL); + return redirectURL; + } + + public synchronized void setHttpRedirectCount(String url) { + String redirectUrl = getConfiguredRedirectURL(); + if (redirectUrl != null && url.contains(redirectUrl)) { + sRedirectCount++; + Log.d(TAG, "http:sRedirectCount="+sRedirectCount); + if (sRedirectCount >= sRedirectMaxCount) { + Log.d(TAG,"http:Background Data will be disabled" ); + setBgDataProperty("true"); + sRedirectCount = 0; + } + } else { + Log.d(TAG,"http: resetting the counter "); + sRedirectCount = 0; + } + } + + public boolean getFeatureConfigValue() { + return mContext.getResources().getBoolean(R.bool.config_zero_balance_operator); + } +} diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 8b49227..0bbc730 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2598,4 +2598,10 @@ <integer-array translatable="false" name="config_deviceLightCapabilities"> </integer-array> + <!-- Zero Balance redirect URL config --> + <string name="operator_config_url" translatable="false"></string> + <!-- Zero Balance ping URL config --> + <string name="operator_ping_url" translatable="false"></string> + <!-- Zero Balance feature enable config --> + <bool name="config_zero_balance_operator">false</bool> </resources> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 0989e20..ccc80c7 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2418,4 +2418,8 @@ <java-symbol type="string" name="config_packagedKeyboardName" /> <java-symbol type="bool" name="config_useSystemClockforRotationSensor" /> + + <java-symbol type="string" name="operator_config_url" /> + <java-symbol type="string" name="operator_ping_url" /> + <java-symbol type="bool" name="config_zero_balance_operator"/> </resources> |