Merge topic 'hun'

* changes:
  use private notification for the heads up
  explicitly handle clicks on the heads up notification
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index a7cfaba..91ae973 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -624,6 +624,14 @@
     }
 
     public boolean inflateViews(NotificationData.Entry entry, ViewGroup parent) {
+            return inflateViews(entry, parent, false);
+    }
+
+    public boolean inflateViewsForHeadsUp(NotificationData.Entry entry, ViewGroup parent) {
+            return inflateViews(entry, parent, true);
+    }
+
+    public boolean inflateViews(NotificationData.Entry entry, ViewGroup parent, boolean isHeadsUp) {
         int minHeight =
                 mContext.getResources().getDimensionPixelSize(R.dimen.notification_min_height);
         int maxHeight =
@@ -666,8 +674,8 @@
 
         PendingIntent contentIntent = sbn.getNotification().contentIntent;
         if (contentIntent != null) {
-            final View.OnClickListener listener = new NotificationClicker(contentIntent,
-                    sbn.getPackageName(), sbn.getTag(), sbn.getId());
+            final View.OnClickListener listener = makeClicker(contentIntent,
+                    sbn.getPackageName(), sbn.getTag(), sbn.getId(), isHeadsUp);
             content.setOnClickListener(listener);
         } else {
             content.setOnClickListener(null);
@@ -778,8 +786,9 @@
         return true;
     }
 
-    public NotificationClicker makeClicker(PendingIntent intent, String pkg, String tag, int id) {
-        return new NotificationClicker(intent, pkg, tag, id);
+    public NotificationClicker makeClicker(PendingIntent intent, String pkg, String tag, int id,
+            boolean forHun) {
+        return new NotificationClicker(intent, pkg, tag, id, forHun);
     }
 
     protected class NotificationClicker implements View.OnClickListener {
@@ -787,12 +796,15 @@
         private String mPkg;
         private String mTag;
         private int mId;
+        private boolean mIsHeadsUp;
 
-        public NotificationClicker(PendingIntent intent, String pkg, String tag, int id) {
+        public NotificationClicker(PendingIntent intent, String pkg, String tag, int id,
+                boolean forHun) {
             mIntent = intent;
             mPkg = pkg;
             mTag = tag;
             mId = id;
+            mIsHeadsUp = forHun;
         }
 
         public void onClick(View v) {
@@ -825,6 +837,9 @@
             }
 
             try {
+                if (mIsHeadsUp) {
+                    mHandler.sendEmptyMessage(MSG_HIDE_HEADS_UP);
+                }
                 mBarService.onNotificationClick(mPkg, mTag, mId);
             } catch (RemoteException ex) {
                 // system process is dead if we're here.
@@ -835,6 +850,7 @@
             visibilityChanged(false);
         }
     }
+
     /**
      * The LEDs are turned o)ff when the notification panel is shown, even just a little bit.
      * This was added last-minute and is inconsistent with the way the rest of the notifications
@@ -1050,7 +1066,7 @@
                     } else {
                         if (DEBUG) Log.d(TAG, "updating the current heads up:" + notification);
                         mInterruptingNotificationEntry.notification = notification;
-                        updateNotificationViews(mInterruptingNotificationEntry, notification);
+                        updateHeadsUpViews(mInterruptingNotificationEntry, notification);
                     }
                 }
 
@@ -1108,6 +1124,16 @@
 
     private void updateNotificationViews(NotificationData.Entry entry,
             StatusBarNotification notification) {
+        updateNotificationViews(entry, notification, false);
+    }
+
+    private void updateHeadsUpViews(NotificationData.Entry entry,
+            StatusBarNotification notification) {
+        updateNotificationViews(entry, notification, true);
+    }
+
+    private void updateNotificationViews(NotificationData.Entry entry,
+            StatusBarNotification notification, boolean isHeadsUp) {
         final RemoteViews contentView = notification.getNotification().contentView;
         final RemoteViews bigContentView = notification.getNotification().bigContentView;
         final RemoteViews publicContentView
@@ -1125,7 +1151,8 @@
         final PendingIntent contentIntent = notification.getNotification().contentIntent;
         if (contentIntent != null) {
             final View.OnClickListener listener = makeClicker(contentIntent,
-                    notification.getPackageName(), notification.getTag(), notification.getId());
+                    notification.getPackageName(), notification.getTag(), notification.getId(),
+                    isHeadsUp);
             entry.content.setOnClickListener(listener);
         } else {
             entry.content.setOnClickListener(null);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 44e7dac..e5bdd59 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -912,7 +912,8 @@
         if (mUseHeadsUp && shouldInterrupt(notification)) {
             if (DEBUG) Log.d(TAG, "launching notification in heads up mode");
             Entry interruptionCandidate = new Entry(key, notification, null);
-            if (inflateViews(interruptionCandidate, mHeadsUpNotificationView.getHolder())) {
+            ViewGroup holder = mHeadsUpNotificationView.getHolder();
+            if (inflateViewsForHeadsUp(interruptionCandidate, holder)) {
                 mInterruptingNotificationTime = System.currentTimeMillis();
                 mInterruptingNotificationEntry = interruptionCandidate;
                 shadeEntry.setInterruption();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java
index 467e19a..491c35e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java
@@ -73,6 +73,7 @@
     public boolean setNotification(NotificationData.Entry headsUp) {
         mHeadsUp = headsUp;
         mHeadsUp.row.setExpanded(false);
+        mHeadsUp.row.setShowingPublic(false);
         if (mContentHolder == null) {
             // too soon!
             return false;