The large icon for notifications.

Change-Id: I8537c602b5b5fca03be8980295bfa28330543669
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 7eab7c8..3af6917 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -34,6 +34,8 @@
 import android.view.View;
 import android.widget.RemoteViews;
 
+import com.android.internal.R;
+
 /**
  * A class that represents how a persistent notification is to be presented to
  * the user using the {@link android.app.NotificationManager}.
@@ -379,6 +381,9 @@
         if (parcel.readInt() != 0) {
             contentView = RemoteViews.CREATOR.createFromParcel(parcel);
         }
+        if (parcel.readInt() != 0) {
+            largeIcon = Bitmap.CREATOR.createFromParcel(parcel);
+        }
         defaults = parcel.readInt();
         flags = parcel.readInt();
         if (parcel.readInt() != 0) {
@@ -418,6 +423,9 @@
         if (this.contentView != null) {
             that.contentView = this.contentView.clone();
         }
+        if (this.largeIcon != null) {
+            that.largeIcon = Bitmap.createBitmap(this.largeIcon);
+        }
         that.iconLevel = that.iconLevel;
         that.sound = this.sound; // android.net.Uri is immutable
         that.audioStreamType = this.audioStreamType;
@@ -483,6 +491,12 @@
         } else {
             parcel.writeInt(0);
         }
+        if (largeIcon != null) {
+            parcel.writeInt(1);
+            largeIcon.writeToParcel(parcel, 0);
+        } else {
+            parcel.writeInt(0);
+        }
 
         parcel.writeInt(defaults);
         parcel.writeInt(this.flags);
@@ -546,18 +560,18 @@
     public void setLatestEventInfo(Context context,
             CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent) {
         RemoteViews contentView = new RemoteViews(context.getPackageName(),
-                com.android.internal.R.layout.status_bar_latest_event_content);
+                R.layout.status_bar_latest_event_content);
         if (this.icon != 0) {
-            contentView.setImageViewResource(com.android.internal.R.id.icon, this.icon);
+            contentView.setImageViewResource(R.id.icon, this.icon);
         }
         if (contentTitle != null) {
-            contentView.setTextViewText(com.android.internal.R.id.title, contentTitle);
+            contentView.setTextViewText(R.id.title, contentTitle);
         }
         if (contentText != null) {
-            contentView.setTextViewText(com.android.internal.R.id.text, contentText);
+            contentView.setTextViewText(R.id.text, contentText);
         }
         if (this.when != 0) {
-            contentView.setLong(com.android.internal.R.id.time, "setTime", when);
+            contentView.setLong(R.id.time, "setTime", when);
         }
 
         this.contentView = contentView;
@@ -754,36 +768,41 @@
             }
         }
 
+        private RemoteViews makeRemoteViews(int resId) {
+            RemoteViews contentView = new RemoteViews(mContext.getPackageName(), resId);
+            if (mSmallIcon != 0) {
+                contentView.setImageViewResource(R.id.icon, mSmallIcon);
+            }
+            if (mContentTitle != null) {
+                contentView.setTextViewText(R.id.title, mContentTitle);
+            }
+            if (mContentText != null) {
+                contentView.setTextViewText(R.id.text, mContentText);
+            }
+            if (mContentInfo != null) {
+                contentView.setTextViewText(R.id.info, mContentInfo);
+            } else if (mNumber > 0) {
+                NumberFormat f = NumberFormat.getIntegerInstance();
+                contentView.setTextViewText(R.id.info, f.format(mNumber));
+                contentView.setFloat(R.id.info, "setTextSize",
+                        mContext.getResources().getDimensionPixelSize(
+                            R.dimen.status_bar_content_number_size));
+            } else {
+                contentView.setViewVisibility(R.id.info, View.GONE);
+            }
+            if (mWhen != 0) {
+                contentView.setLong(R.id.time, "setTime", mWhen);
+            }
+            return contentView;
+        }
+
         private RemoteViews makeContentView() {
             if (mContentView != null) {
                 return mContentView;
             } else {
-                RemoteViews contentView = new RemoteViews(mContext.getPackageName(),
-                        com.android.internal.R.layout.status_bar_latest_event_content);
-                if (mSmallIcon != 0) {
-                    contentView.setImageViewResource(com.android.internal.R.id.icon, mSmallIcon);
-                }
-                if (mContentTitle != null) {
-                    contentView.setTextViewText(com.android.internal.R.id.title, mContentTitle);
-                }
-                if (mContentText != null) {
-                    contentView.setTextViewText(com.android.internal.R.id.text, mContentText);
-                }
-                if (mContentInfo != null) {
-                    contentView.setTextViewText(com.android.internal.R.id.info, mContentInfo);
-                } else if (mNumber > 0) {
-                    NumberFormat f = NumberFormat.getIntegerInstance();
-                    contentView.setTextViewText(com.android.internal.R.id.info, f.format(mNumber));
-                    contentView.setFloat(com.android.internal.R.id.info, "setTextSize",
-                            mContext.getResources().getDimensionPixelSize(
-                                com.android.internal.R.dimen.status_bar_content_number_size));
-                } else {
-                    contentView.setViewVisibility(com.android.internal.R.id.info, View.GONE);
-                }
-                if (mWhen != 0) {
-                    contentView.setLong(com.android.internal.R.id.time, "setTime", mWhen);
-                }
-                return contentView;
+                    return makeRemoteViews(mLargeIcon == null
+                            ? R.layout.status_bar_latest_event_content
+                        : R.layout.status_bar_latest_event_content_large_icon);
             }
         }
 
@@ -791,7 +810,13 @@
             if (mTickerView != null) {
                 return mTickerView;
             } else {
-                return makeContentView();
+                if (mContentView == null) {
+                    return makeRemoteViews(mLargeIcon == null
+                            ? R.layout.status_bar_latest_event_ticker
+                            : R.layout.status_bar_latest_event_ticker_large_icon);
+                } else {
+                    return null;
+                }
             }
         }