diff options
author | Pragnya Paramita <prgnya@codeaurora.org> | 2015-11-30 19:51:56 +0530 |
---|---|---|
committer | Zhao Wei Liew <zhaoweiliew@gmail.com> | 2016-11-10 06:18:58 -0700 |
commit | 73406be5362100576dae362f218b624065bb9c57 (patch) | |
tree | 79ff6c543913e4b87b5964bd31495c405b580e5e /services | |
parent | c15736bb1034f8aca5429ca336a2ab7126fe7a57 (diff) | |
download | frameworks_base-73406be5362100576dae362f218b624065bb9c57.zip frameworks_base-73406be5362100576dae362f218b624065bb9c57.tar.gz frameworks_base-73406be5362100576dae362f218b624065bb9c57.tar.bz2 |
frameworks/base: Addition of Changes for ZeroBalance feature
--Addition of code to receive broadcast from ZeroBalanceHelper
application for executing command to write block/unblock
rule to Iptable.
--Addition of ZeroBalanceHelper file to be accesible by other
modules to notify ZeroBalanceHelper application about update
on change of SIM balance.
--Addition of rule to allow browser uid when rest all applications
are in blocked state.
--Addition of feature flag to control the zerobalance feature.
CRs-Fixed: 927258
Change-Id: Ifdf4c46fd63ab78193047a9bc8b62bf41065a665
Diffstat (limited to 'services')
-rw-r--r-- | services/core/java/com/android/server/NetworkManagementService.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index c063d9f..f53c4ef 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -46,7 +46,10 @@ import static com.android.server.NetworkManagementSocketTagger.PROP_QTAGUID_ENAB import android.annotation.NonNull; import android.app.ActivityManagerNative; +import android.content.BroadcastReceiver; import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.INetworkManagementEventObserver; import android.net.InterfaceConfiguration; @@ -84,6 +87,7 @@ import android.util.Slog; import android.util.SparseBooleanArray; import android.util.SparseIntArray; +import com.android.internal.R; import com.android.internal.annotations.GuardedBy; import com.android.internal.app.IBatteryStats; import com.android.internal.net.NetworkStatsFactory; @@ -332,6 +336,12 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void systemReady() { prepareNativeDaemon(); + // Register the receiver for Zerobalance blocking/unblocking + if (mContext.getResources().getBoolean(R.bool.config_zero_balance_operator)) { + final IntentFilter restrictFilter = new IntentFilter(); + restrictFilter.addAction("org.codeaurora.restrictData"); + mContext.registerReceiver(mZeroBalanceReceiver, restrictFilter); + } if (DBG) Slog.d(TAG, "Prepared"); } @@ -2674,4 +2684,29 @@ public class NetworkManagementService extends INetworkManagementService.Stub mDataInterfaceName = linkProperties.getInterfaceName(); } } + + private BroadcastReceiver mZeroBalanceReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + boolean isBlockAllData = false; + if (intent != null + && intent.getAction().equals("org.codeaurora.restrictData")) { + isBlockAllData = intent.getBooleanExtra("Restrict", false); + Log.wtf("ZeroBalance", "Intent value to block unblock data" + isBlockAllData); + } + mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); + + // Silently discard when control disabled + // TODO: Eventually migrate to always be enabled + if (!mBandwidthControlEnabled) return; + try { + Log.wtf("ZeroBalance", "before calling connector Intent" + + "value to block unblock data" + isBlockAllData); + mConnector.execute("bandwidth", + isBlockAllData ? "blockAllData" : "unblockAllData"); + } catch (NativeDaemonConnectorException e) { + throw e.rethrowAsParcelableException(); + } + } + }; } |