diff --git a/api/current.txt b/api/current.txt
index 24df97a..e66b359 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -3686,6 +3686,7 @@
     field public static final int PRIORITY_MIN = -2; // 0xfffffffe
     field public static final int STREAM_DEFAULT = -1; // 0xffffffff
     field public int audioStreamType;
+    field public android.widget.RemoteViews bigContentView;
     field public android.app.PendingIntent contentIntent;
     field public android.widget.RemoteViews contentView;
     field public int defaults;
@@ -3708,6 +3709,18 @@
     field public long when;
   }
 
+  public static class Notification.BigPictureStyle {
+    ctor public Notification.BigPictureStyle(android.app.Notification.Builder);
+    method public android.app.Notification.BigPictureStyle bigPicture(android.graphics.Bitmap);
+    method public android.app.Notification build();
+  }
+
+  public static class Notification.BigTextStyle {
+    ctor public Notification.BigTextStyle(android.app.Notification.Builder);
+    method public android.app.Notification.BigTextStyle bigText(java.lang.CharSequence);
+    method public android.app.Notification build();
+  }
+
   public static class Notification.Builder {
     ctor public Notification.Builder(android.content.Context);
     method public android.app.Notification.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
@@ -3737,6 +3750,7 @@
     method public android.app.Notification.Builder setSubText(java.lang.CharSequence);
     method public android.app.Notification.Builder setTicker(java.lang.CharSequence);
     method public android.app.Notification.Builder setTicker(java.lang.CharSequence, android.widget.RemoteViews);
+    method public android.app.Notification.Builder setUsesChronometer(boolean);
     method public android.app.Notification.Builder setUsesIntruderAlert(boolean);
     method public android.app.Notification.Builder setVibrate(long[]);
     method public android.app.Notification.Builder setWhen(long);
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 04c64a0..5cce25f 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -196,10 +196,9 @@
     public RemoteViews intruderView;
 
     /**
-     * A larger version of {@link #contentView}, giving the Notification an
+     * A large-format version of {@link #contentView}, giving the Notification an
      * opportunity to show more detail. The system UI may choose to show this
      * instead of the normal content view at its discretion.
-     * @hide
      */
     public RemoteViews bigContentView;
 
@@ -987,8 +986,6 @@
         }
 
         /**
-         * @hide
-         * 
          * Show the {@link Notification#when} field as a countdown (or count-up) timer instead of a timestamp.  
          *
          * @see Notification#when
@@ -1609,23 +1606,21 @@
     }
 
     /**
-     * @hide because this API is still very rough
+     * Helper class for generating large-format notifications that include a large image attachment.
      * 
-     * This is a "rebuilder": It consumes a Builder object and modifies its output.
-     * 
-     * This represents the "big picture" style notification, with a large Bitmap atop the usual notification.
-     *
-     * Usage:
+     * This class is a "rebuilder": It consumes a Builder object and modifies its behavior, like so:
      * <pre class="prettyprint">
      * Notification noti = new Notification.BigPictureStyle(
      *      new Notification.Builder()
-     *         .setContentTitle(&quot;New mail from &quot; + sender.toString())
+     *         .setContentTitle(&quot;New photo from &quot; + sender.toString())
      *         .setContentText(subject)
-     *         .setSmallIcon(R.drawable.new_mail)
+     *         .setSmallIcon(R.drawable.new_post)
      *         .setLargeIcon(aBitmap))
      *      .bigPicture(aBigBitmap)
      *      .build();
      * </pre>
+     * 
+     * @see Notification#bigContentView
      */
     public static class BigPictureStyle {
         private Builder mBuilder;
@@ -1656,13 +1651,9 @@
     }
 
     /**
-     * @hide because this API is still very rough
+     * Helper class for generating large-format notifications that include a lot of text.
      * 
-     * This is a "rebuilder": It consumes a Builder object and modifies its output.
-     * 
-     * This represents the "big text" style notification, with more area for the main content text to be read in its entirety.
-     *
-     * Usage:
+     * This class is a "rebuilder": It consumes a Builder object and modifies its behavior, like so:
      * <pre class="prettyprint">
      * Notification noti = new Notification.BigPictureStyle(
      *      new Notification.Builder()
@@ -1673,6 +1664,8 @@
      *      .bigText(aVeryLongString)
      *      .build();
      * </pre>
+     * 
+     * @see Notification#bigContentView
      */
     public static class BigTextStyle {
         private Builder mBuilder;
