summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Onorato <joeo@android.com>2010-05-23 15:18:41 -0400
committerJoe Onorato <joeo@android.com>2010-06-02 14:48:43 -0700
commitaaba60b281713d45a0f232580302c7b54a7207df (patch)
tree9e61b9f0133548c1fdc7aacde289c8539fe37698
parente345fff2f80947b0a821f6674c197a02b7bff08e (diff)
downloadframeworks_base-aaba60b281713d45a0f232580302c7b54a7207df.zip
frameworks_base-aaba60b281713d45a0f232580302c7b54a7207df.tar.gz
frameworks_base-aaba60b281713d45a0f232580302c7b54a7207df.tar.bz2
Notifications don't crash when you click them, and pass through events to NotificationManagerService
Change-Id: Iae4a636d3c6d5c617440b11eb5b8bc77838ad584
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBarService.aidl2
-rw-r--r--packages/StatusBarPhone/src/com/android/policy/statusbar/phone/PhoneStatusBarService.java17
-rw-r--r--services/java/com/android/server/status/StatusBarManagerService.java10
3 files changed, 23 insertions, 6 deletions
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index 0a5b90e..f713bf9 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -33,4 +33,6 @@ interface IStatusBarService
// ---- Methods below are for use by the status bar policy services ----
void registerStatusBar(IStatusBar callbacks, out StatusBarIconList state);
void visibilityChanged(boolean visible);
+ void onNotificationClick(String pkg, String tag, int id);
+ void onClearAllNotifications();
}
diff --git a/packages/StatusBarPhone/src/com/android/policy/statusbar/phone/PhoneStatusBarService.java b/packages/StatusBarPhone/src/com/android/policy/statusbar/phone/PhoneStatusBarService.java
index 37b3655..97b38b6 100644
--- a/packages/StatusBarPhone/src/com/android/policy/statusbar/phone/PhoneStatusBarService.java
+++ b/packages/StatusBarPhone/src/com/android/policy/statusbar/phone/PhoneStatusBarService.java
@@ -103,7 +103,7 @@ public class PhoneStatusBarService extends StatusBarService {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
if (!down) {
- //TODO PhoneStatusBarService.this.collapse();
+ animateCollapse();
}
return true;
}
@@ -119,7 +119,6 @@ public class PhoneStatusBarService extends StatusBarService {
int mPixelFormat;
H mHandler = new H();
Object mQueueLock = new Object();
- NotificationCallbacks mNotificationCallbacks;
// icons
String[] mRightIconSlots;
@@ -925,12 +924,16 @@ public class PhoneStatusBarService extends StatusBarService {
new Rect(pos[0], pos[1], pos[0]+v.getWidth(), pos[1]+v.getHeight()));
try {
mIntent.send(PhoneStatusBarService.this, 0, overlay);
- mNotificationCallbacks.onNotificationClick(mPkg, mTag, mId);
} catch (PendingIntent.CanceledException e) {
// the stack trace isn't very helpful here. Just log the exception message.
Slog.w(TAG, "Sending contentIntent failed: " + e);
}
- //collapse();
+ try {
+ mBarService.onNotificationClick(mPkg, mTag, mId);
+ } catch (RemoteException ex) {
+ // system process is dead if we're here.
+ }
+ animateCollapse();
}
}
@@ -1314,7 +1317,11 @@ public class PhoneStatusBarService extends StatusBarService {
private View.OnClickListener mClearButtonListener = new View.OnClickListener() {
public void onClick(View v) {
- mNotificationCallbacks.onClearAll();
+ try {
+ mBarService.onClearAllNotifications();
+ } catch (RemoteException ex) {
+ // system process is dead if we're here.
+ }
animateCollapse();
}
};
diff --git a/services/java/com/android/server/status/StatusBarManagerService.java b/services/java/com/android/server/status/StatusBarManagerService.java
index 22b3810..26a41f3 100644
--- a/services/java/com/android/server/status/StatusBarManagerService.java
+++ b/services/java/com/android/server/status/StatusBarManagerService.java
@@ -255,7 +255,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
mBar = bar;
iconList.copyFrom(mIcons);
}
-
+
/**
* The status bar service should call this when the user changes whether
* the status bar is visible or not.
@@ -264,6 +264,14 @@ public class StatusBarManagerService extends IStatusBarService.Stub
Slog.d(TAG, "visibilityChanged visible=" + visible);
}
+ public void onNotificationClick(String pkg, String tag, int id) {
+ mNotificationCallbacks.onNotificationClick(pkg, tag, id);
+ }
+
+ public void onClearAllNotifications() {
+ mNotificationCallbacks.onClearAll();
+ }
+
// ================================================================================
// Callbacks for NotificationManagerService.
// ================================================================================