summaryrefslogtreecommitdiffstats
path: root/services/core
diff options
context:
space:
mode:
authorPragnya Paramita <prgnya@codeaurora.org>2015-11-30 19:51:56 +0530
committerZhao Wei Liew <zhaoweiliew@gmail.com>2016-11-10 06:18:58 -0700
commit73406be5362100576dae362f218b624065bb9c57 (patch)
tree79ff6c543913e4b87b5964bd31495c405b580e5e /services/core
parentc15736bb1034f8aca5429ca336a2ab7126fe7a57 (diff)
downloadframeworks_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/core')
-rw-r--r--services/core/java/com/android/server/NetworkManagementService.java35
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();
+ }
+ }
+ };
}