aboutsummaryrefslogtreecommitdiffstats
path: root/cm/lib
diff options
context:
space:
mode:
authorAdnan Begovic <adnan@cyngn.com>2015-04-28 17:51:12 -0700
committerAdnan Begovic <adnan@cyngn.com>2015-04-29 10:46:06 -0700
commitaa558ade9e3680f87d736303d92d1ce94961f414 (patch)
treef99325908e200ab31ae6d6e26420479bc683ad4c /cm/lib
parentaa8614e39b90c0d9cc2d86777d28c691773d9dae (diff)
downloadvendor_cmsdk-aa558ade9e3680f87d736303d92d1ce94961f414.zip
vendor_cmsdk-aa558ade9e3680f87d736303d92d1ce94961f414.tar.gz
vendor_cmsdk-aa558ade9e3680f87d736303d92d1ce94961f414.tar.bz2
CMSDK: Create means of removing tiles via listener interface.
Change-Id: I8934fe5c82963a3aba38ce5eec6e59e50a820d17
Diffstat (limited to 'cm/lib')
-rw-r--r--cm/lib/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java33
1 files changed, 31 insertions, 2 deletions
diff --git a/cm/lib/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java b/cm/lib/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java
index 88472a1..b640aaf 100644
--- a/cm/lib/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java
+++ b/cm/lib/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java
@@ -98,7 +98,7 @@ public class CMStatusBarManagerService extends SystemService {
userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
Binder.getCallingUid(), userId, true, false, "cancelCustomTileWithTag", pkg);
removeCustomTileWithTagInternal(Binder.getCallingUid(),
- Binder.getCallingPid(), pkg, tag, id, userId);
+ Binder.getCallingPid(), pkg, tag, id, userId, null);
}
/**
@@ -124,6 +124,29 @@ public class CMStatusBarManagerService extends SystemService {
enforceBindCustomTileListener();
mCustomTileListeners.unregisterService(listener, userid);
}
+
+ /**
+ * Allow an ICustomTileListener to simulate clearing (dismissing) a single customTile.
+ *
+ * @param token The binder for the listener, to check that the caller is allowed
+ */
+ @Override
+ public void removeCustomTileFromListener(ICustomTileListener token, String pkg,
+ String tag, int id) {
+ final int callingUid = Binder.getCallingUid();
+ final int callingPid = Binder.getCallingPid();
+ long identity = Binder.clearCallingIdentity();
+ try {
+ synchronized (mQSTileList) {
+ final ManagedServices.ManagedServiceInfo info
+ = mCustomTileListeners.checkServiceTokenLocked(token);
+ removeCustomTileFromListenerLocked(info, callingUid, callingPid,
+ pkg, tag, id, info.userid);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
};
void createCustomTileWithTagInternal(final String pkg, final String opPkg, final int callingUid,
@@ -281,8 +304,14 @@ public class CMStatusBarManagerService extends SystemService {
|| r.getUserId() == userId;
}
+ private void removeCustomTileFromListenerLocked(ManagedServices.ManagedServiceInfo info,
+ int callingUid, int callingPid, String pkg, String tag, int id, int userId) {
+ removeCustomTileWithTagInternal(callingUid, callingPid, pkg, tag, id, userId, info);
+ }
+
void removeCustomTileWithTagInternal(final int callingUid, final int callingPid,
- final String pkg, final String tag, final int id, final int userId) {
+ final String pkg, final String tag, final int id, final int userId,
+ final ManagedServices.ManagedServiceInfo listener) {
mHandler.post(new Runnable() {
@Override
public void run() {