Merge "Fix bug 5159596 - Slider grabs touch point when trying to scroll a list"
diff --git a/core/java/android/view/InputChannel.java b/core/java/android/view/InputChannel.java
index f2cad2f..523af04 100644
--- a/core/java/android/view/InputChannel.java
+++ b/core/java/android/view/InputChannel.java
@@ -48,8 +48,6 @@
     @SuppressWarnings("unused")
     private int mPtr; // used by native code
     
-    private boolean mDisposeAfterWriteToParcel;
-    
     private static native InputChannel[] nativeOpenInputChannelPair(String name);
     
     private native void nativeDispose(boolean finalized);
@@ -117,13 +115,12 @@
      * as an out parameter in a binder call.
      * @param other The other input channel instance.
      */
-    public void transferToBinderOutParameter(InputChannel outParameter) {
+    public void transferTo(InputChannel outParameter) {
         if (outParameter == null) {
             throw new IllegalArgumentException("outParameter must not be null");
         }
         
         nativeTransferTo(outParameter);
-        outParameter.mDisposeAfterWriteToParcel = true;
     }
 
     public int describeContents() {
@@ -145,7 +142,7 @@
         
         nativeWriteToParcel(out);
         
-        if (mDisposeAfterWriteToParcel) {
+        if ((flags & PARCELABLE_WRITE_RETURN_VALUE) != 0) {
             dispose();
         }
     }
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 9e6a7fe..54bd637 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -8780,6 +8780,12 @@
      * @see #SCROLLBARS_OUTSIDE_OVERLAY
      * @see #SCROLLBARS_OUTSIDE_INSET
      */
+    @ViewDebug.ExportedProperty(mapping = {
+            @ViewDebug.IntToString(from = SCROLLBARS_INSIDE_OVERLAY, to = "INSIDE_OVERLAY"),
+            @ViewDebug.IntToString(from = SCROLLBARS_INSIDE_INSET, to = "INSIDE_INSET"),
+            @ViewDebug.IntToString(from = SCROLLBARS_OUTSIDE_OVERLAY, to = "OUTSIDE_OVERLAY"),
+            @ViewDebug.IntToString(from = SCROLLBARS_OUTSIDE_INSET, to = "OUTSIDE_INSET")
+    })
     public int getScrollBarStyle() {
         return mViewFlags & SCROLLBARS_STYLE_MASK;
     }
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index d78050a9..1ab1a87 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -139,6 +139,11 @@
 
 import org.xmlpull.v1.XmlPullParserException;
 
+import com.android.internal.util.FastMath;
+import com.android.internal.widget.EditableInputConnection;
+
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.lang.ref.WeakReference;
 import java.text.BreakIterator;
@@ -220,6 +225,7 @@
  * @attr ref android.R.styleable#TextView_imeActionLabel
  * @attr ref android.R.styleable#TextView_imeActionId
  * @attr ref android.R.styleable#TextView_editorExtras
+ * @attr ref android.R.styleable#TextView_suggestionsEnabled
  */
 @RemoteView
 public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {
@@ -9418,7 +9424,7 @@
     }
 
     void showSuggestions() {
-        if (!mSuggestionsEnabled || !isTextEditable()) return;
+        if (!isSuggestionsEnabled() || !isTextEditable()) return;
 
         if (mSuggestionsPopupWindow == null) {
             mSuggestionsPopupWindow = new SuggestionsPopupWindow();
@@ -9445,18 +9451,41 @@
      * user double taps on these parts of the text. No suggestions are displayed when this value is
      * false. Use {@link #setSuggestionsEnabled(boolean)} to change this value.
      *
+     * Note that suggestions are only enabled for a subset of input types. In addition to setting
+     * this flag to <code>true</code> using {@link #setSuggestionsEnabled(boolean)} or the
+     * <code>android:suggestionsEnabled</code> xml attribute, this method will return
+     * <code>true</code> only if the class of your input type is {@link InputType#TYPE_CLASS_TEXT}.
+     * In addition, the type variation must also be one of
+     * {@link InputType#TYPE_TEXT_VARIATION_NORMAL},
+     * {@link InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT},
+     * {@link InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE},
+     * {@link InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE} or
+     * {@link InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
+     *
      * @return true if the suggestions popup window is enabled.
      *
      * @attr ref android.R.styleable#TextView_suggestionsEnabled
      */
     public boolean isSuggestionsEnabled() {
-        return mSuggestionsEnabled;
+        if (!mSuggestionsEnabled) return false;
+        if ((mInputType & InputType.TYPE_MASK_CLASS) != InputType.TYPE_CLASS_TEXT) return false;
+        final int variation =
+                mInputType & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION);
+        if (variation == EditorInfo.TYPE_TEXT_VARIATION_NORMAL ||
+                variation == EditorInfo.TYPE_TEXT_VARIATION_EMAIL_SUBJECT ||
+                variation == EditorInfo.TYPE_TEXT_VARIATION_LONG_MESSAGE ||
+                variation == EditorInfo.TYPE_TEXT_VARIATION_SHORT_MESSAGE ||
+                variation == EditorInfo.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT) return true;
+
+        return false;
     }
 
     /**
      * Enables or disables the suggestion popup. See {@link #isSuggestionsEnabled()}.
      *
      * @param enabled Whether or not suggestions are enabled.
+     *
+     * @attr ref android.R.styleable#TextView_suggestionsEnabled
      */
     public void setSuggestionsEnabled(boolean enabled) {
         mSuggestionsEnabled = enabled;
@@ -9728,10 +9757,12 @@
 
         @Override
         public void show() {
-            mPasteTextView.setVisibility(canPaste() ? View.VISIBLE : View.GONE);
-            mReplaceTextView.setVisibility(mSuggestionsEnabled ? View.VISIBLE : View.GONE);
+            boolean canPaste = canPaste();
+            boolean suggestionsEnabled = isSuggestionsEnabled();
+            mPasteTextView.setVisibility(canPaste ? View.VISIBLE : View.GONE);
+            mReplaceTextView.setVisibility(suggestionsEnabled ? View.VISIBLE : View.GONE);
 
-            if (!canPaste() && !mSuggestionsEnabled) return;
+            if (!canPaste && !suggestionsEnabled) return;
 
             super.show();
         }
diff --git a/core/res/res/layout/preference_category_holo.xml b/core/res/res/layout/preference_category_holo.xml
index a4e20d2..81e595c 100644
--- a/core/res/res/layout/preference_category_holo.xml
+++ b/core/res/res/layout/preference_category_holo.xml
@@ -18,5 +18,5 @@
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
     style="?android:attr/listSeparatorTextViewStyle"
     android:id="@+android:id/title"
-    android:paddingLeft="16dp"
-/>
+    android:paddingLeft="@dimen/preference_item_padding_side"
+    android:paddingRight="@dimen/preference_item_padding_side" />
diff --git a/core/res/res/layout/preference_child_holo.xml b/core/res/res/layout/preference_child_holo.xml
index 06c846b..3c6a12e 100644
--- a/core/res/res/layout/preference_child_holo.xml
+++ b/core/res/res/layout/preference_child_holo.xml
@@ -20,7 +20,7 @@
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical"
-    android:paddingLeft="16dip"
+    android:paddingLeft="@dimen/preference_child_padding_side"
     android:paddingRight="?android:attr/scrollbarSize">
 
     <LinearLayout
@@ -34,17 +34,16 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
-            />
+            android:paddingRight="@dimen/preference_item_padding_inner" />
     </LinearLayout>
 
     <RelativeLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="32dip"
-        android:layout_marginRight="6dip"
-        android:layout_marginTop="6dip"
-        android:layout_marginBottom="6dip"
-        android:layout_weight="1">
+        android:layout_weight="1"
+        android:paddingRight="@dimen/preference_item_padding_inner"
+        android:paddingTop="6dip"
+        android:paddingBottom="6dip">
 
         <TextView android:id="@+android:id/title"
             android:layout_width="wrap_content"
diff --git a/core/res/res/layout/preference_holo.xml b/core/res/res/layout/preference_holo.xml
index e5ed33c..48f483d 100644
--- a/core/res/res/layout/preference_holo.xml
+++ b/core/res/res/layout/preference_holo.xml
@@ -22,6 +22,7 @@
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical"
+    android:paddingLeft="@dimen/preference_item_padding_side"
     android:paddingRight="?android:attr/scrollbarSize">
 
     <LinearLayout
@@ -36,18 +37,17 @@
             android:layout_height="wrap_content"
             android:layout_gravity="center"
             android:minWidth="48dp"
-            />
+            android:paddingRight="@dimen/preference_item_padding_inner" />
     </LinearLayout>
 
     <RelativeLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="16dip"
-        android:layout_marginRight="8dip"
-        android:layout_marginTop="6dip"
-        android:layout_marginBottom="6dip"
-        android:layout_weight="1">
-    
+        android:layout_weight="1"
+        android:paddingRight="@dimen/preference_item_padding_inner"
+        android:paddingTop="6dip"
+        android:paddingBottom="6dip">
+
         <TextView android:id="@+android:id/title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
diff --git a/core/res/res/layout/preference_information_holo.xml b/core/res/res/layout/preference_information_holo.xml
index d15cd7b..e29ed03 100644
--- a/core/res/res/layout/preference_information_holo.xml
+++ b/core/res/res/layout/preference_information_holo.xml
@@ -22,6 +22,7 @@
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical"
+    android:paddingLeft="@dimen/preference_item_padding_side"
     android:paddingRight="?android:attr/scrollbarSize">
 
     <LinearLayout
@@ -35,17 +36,16 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
-            />
+            android:paddingRight="@dimen/preference_item_padding_inner" />
     </LinearLayout>
 
     <RelativeLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="16dip"
-        android:layout_marginRight="6sp"
-        android:layout_marginTop="6sp"
-        android:layout_marginBottom="6sp"
-        android:layout_weight="1">
+        android:layout_weight="1"
+        android:paddingRight="@dimen/preference_item_padding_inner"
+        android:paddingTop="6dip"
+        android:paddingBottom="6dip">
 
         <TextView android:id="@+android:id/title"
             android:layout_width="wrap_content"
@@ -64,7 +64,7 @@
             android:maxLines="2" />
 
     </RelativeLayout>
-    
+
     <!-- Preference should place its actual preference widget here. -->
     <LinearLayout android:id="@+android:id/widget_frame"
         android:layout_width="wrap_content"
diff --git a/core/res/res/values-w720dp/dimens.xml b/core/res/res/values-w720dp/dimens.xml
index ec1195e..3d10103 100644
--- a/core/res/res/values-w720dp/dimens.xml
+++ b/core/res/res/values-w720dp/dimens.xml
@@ -28,5 +28,5 @@
     <!-- Minimum space to allocate to the left of a preference item for an icon.
         This helps in aligning titles when some items have icons and some don't. When space is
         at a premium, we don't pre-allocate any space. -->
-    <dimen name="preference_icon_minWidth">48dp</dimen>
+    <dimen name="preference_icon_minWidth">56dp</dimen>
 </resources>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 829f757..9295388 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -108,6 +108,10 @@
     <!-- Preference activity, vertical padding for the header list -->
     <dimen name="preference_screen_header_vertical_padding">0dp</dimen>
 
+    <dimen name="preference_item_padding_side">8dip</dimen>
+    <dimen name="preference_item_padding_inner">8dip</dimen>
+    <dimen name="preference_child_padding_side">16dip</dimen>
+
     <!-- The platform's desired minimum size for a dialog's width when it
          is along the minor axis (that is the screen is portrait).  This may
          be either a fraction or a dimension. -->
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 6b0c6a3..c137958 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1291,10 +1291,11 @@
       create network sockets.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
-    <string name="permlab_writeApnSettings">write Access Point Name settings</string>
+    <string name="permlab_writeApnSettings">change/intercept network settings and traffic</string>
     <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
-    <string name="permdesc_writeApnSettings">Allows an application to modify the APN
-        settings, such as Proxy and Port of any APN.</string>
+    <string name="permdesc_writeApnSettings">Allows an application to change network settings and to intercept and inspect all network traffic, 
+      for example to change the proxy and port of any APN. Malicious applications could monitor, redirect, or modify network 
+      packets without your knowledge.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permlab_changeNetworkState">change network connectivity</string>
diff --git a/media/jni/mediaeditor/VideoBrowserMain.c b/media/jni/mediaeditor/VideoBrowserMain.c
index 6ef688d..2de55e3 100755
--- a/media/jni/mediaeditor/VideoBrowserMain.c
+++ b/media/jni/mediaeditor/VideoBrowserMain.c
@@ -258,6 +258,7 @@
                     err = pContext->m_pDecoder->m_pFctCreate(
                             &pContext->m_pDecoderCtx,
                             pContext->m_pStreamHandler,
+                            pContext->m_3gpReader,
                             pContext->m_3gpData,
                             &pContext->m_accessUnit,
                             pContext->m_pCodecLoaderContext) ;
@@ -284,6 +285,7 @@
                     err = pContext->m_pDecoder->m_pFctCreate(
                             &pContext->m_pDecoderCtx,
                             pContext->m_pStreamHandler,
+                            pContext->m_3gpReader,
                             pContext->m_3gpData,
                             &pContext->m_accessUnit,
                             pContext->m_pCodecLoaderContext) ;
@@ -435,9 +437,12 @@
 * @param        pContext     (IN) : Video browser context
 * @param        pTime        (IN/OUT) : Pointer on the time to reach. Updated
 *                                       by this function with the reached time
+* @param        tolerance    (IN) :  We may decode an earlier frame within the tolerance.
+*                                    The time difference is specified in milliseconds.
 * @return       M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
 ******************************************************************************/
-M4OSA_ERR videoBrowserPrepareFrame(M4OSA_Context pContext, M4OSA_UInt32* pTime)
+M4OSA_ERR videoBrowserPrepareFrame(M4OSA_Context pContext, M4OSA_UInt32* pTime,
+    M4OSA_UInt32 tolerance)
 {
     VideoBrowserContext* pC = (VideoBrowserContext*)pContext;
     M4OSA_ERR err = M4NO_ERROR;
@@ -481,52 +486,15 @@
         bJumpNeeded = M4OSA_TRUE;
     }
 
-    if (M4OSA_TRUE == bJumpNeeded)
-    {
-        rapTime = targetTime;
-        /*--- Retrieve the previous RAP time ---*/
-        err = pC->m_3gpReader->m_pFctGetPrevRapTime(
-                pC->m_pReaderCtx, pC->m_pStreamHandler, &rapTime);
-
-        CHECK_ERR(videoBrowserPrepareFrame, err);
-
-        jumpTime = rapTime;
-
-        err = pC->m_3gpReader->m_pFctJump(pC->m_pReaderCtx,
-                                          pC->m_pStreamHandler,
-                                          (M4OSA_Int32*)&jumpTime);
-        CHECK_ERR(videoBrowserPrepareFrame, err);
-    }
-
     timeMS = (M4_MediaTime)targetTime;
     err = pC->m_pDecoder->m_pFctDecode(
-        pC->m_pDecoderCtx, &timeMS, bJumpNeeded);
+        pC->m_pDecoderCtx, &timeMS, bJumpNeeded, tolerance);
 
     if ((err != M4NO_ERROR) && (err != M4WAR_NO_MORE_AU))
     {
         return err;
     }
 
-    // FIXME:
-    // Not sure that I understand why we need a second jump logic here
-    if ((timeMS >= pC->m_currentCTS) && (M4OSA_TRUE == isBackward))
-    {
-        jumpTime = rapTime;
-        err = pC->m_3gpReader->m_pFctJump(
-            pC->m_pReaderCtx, pC->m_pStreamHandler, (M4OSA_Int32*)&jumpTime);
-
-        CHECK_ERR(videoBrowserPrepareFrame, err);
-
-        timeMS = (M4_MediaTime)rapTime;
-        err = pC->m_pDecoder->m_pFctDecode(
-            pC->m_pDecoderCtx, &timeMS, M4OSA_TRUE);
-
-        if ((err != M4NO_ERROR) && (err != M4WAR_NO_MORE_AU))
-        {
-            return err;
-        }
-    }
-
     err = pC->m_pDecoder->m_pFctRender(
         pC->m_pDecoderCtx, &timeMS, pC->m_outputPlane, M4OSA_TRUE);
 
diff --git a/media/jni/mediaeditor/VideoBrowserMain.h b/media/jni/mediaeditor/VideoBrowserMain.h
index 5156ebb..00b5e05 100755
--- a/media/jni/mediaeditor/VideoBrowserMain.h
+++ b/media/jni/mediaeditor/VideoBrowserMain.h
@@ -133,7 +133,8 @@
 *                                     this function with the reached time
 * @return       M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
 ******************************************************************************/
-M4OSA_ERR videoBrowserPrepareFrame(M4OSA_Context pContext, M4OSA_UInt32* pTime);
+M4OSA_ERR videoBrowserPrepareFrame(M4OSA_Context pContext, M4OSA_UInt32* pTime,
+        M4OSA_UInt32 tolerance);
 
 /******************************************************************************
 * @brief        This function sets the size and the position of the display.
diff --git a/media/jni/mediaeditor/VideoEditorMain.cpp b/media/jni/mediaeditor/VideoEditorMain.cpp
index c95a0c2..14972a2 100755
--- a/media/jni/mediaeditor/VideoEditorMain.cpp
+++ b/media/jni/mediaeditor/VideoEditorMain.cpp
@@ -763,7 +763,7 @@
             ClipProperties.uiVideoWidth,
             pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
             ClipProperties.uiVideoHeight,
-            &tnTimeMs);
+            &tnTimeMs, 0);
         if (result != M4NO_ERROR) {
             free(pixelArray);
             ThumbnailClose(tnContext);
@@ -991,7 +991,7 @@
 
     result = ThumbnailGetPixels16(tnContext, (M4OSA_Int16 *)pixelArray,
                                                 frameWidth,
-                                                frameHeight, &timeMs);
+                                                frameHeight, &timeMs, 0);
     if (result != M4NO_ERROR) {
         free(pixelArray);
         ThumbnailClose(tnContext);
@@ -2132,7 +2132,7 @@
 
     m_dst32 = env->GetIntArrayElements(pixelArray, NULL);
 
-    err = ThumbnailGetPixels32(mContext, (M4OSA_Int32 *)m_dst32, width,height,&timeMS);
+    err = ThumbnailGetPixels32(mContext, (M4OSA_Int32 *)m_dst32, width,height,&timeMS,0);
     if (err != M4NO_ERROR ) {
         if (env != NULL) {
             jniThrowException(env, "java/lang/RuntimeException",\
@@ -2194,9 +2194,10 @@
 
     m_dst32 = env->GetIntArrayElements(pixelArray, NULL);
 
+    M4OSA_UInt32 tolerance = deltatimeMS / 2;
     do {
         err = ThumbnailGetPixels32(mContext, ((M4OSA_Int32 *)m_dst32 + arrayOffset),
-            width,height,&timeMS);
+            width,height,&timeMS, tolerance);
         if (err != M4NO_ERROR ) {
             if (env != NULL) {
                 jniThrowException(env, "java/lang/RuntimeException",\
diff --git a/media/jni/mediaeditor/VideoEditorThumbnailMain.cpp b/media/jni/mediaeditor/VideoEditorThumbnailMain.cpp
index fe3734f..1508246 100755
--- a/media/jni/mediaeditor/VideoEditorThumbnailMain.cpp
+++ b/media/jni/mediaeditor/VideoEditorThumbnailMain.cpp
@@ -74,7 +74,7 @@
 M4OSA_ERR ThumbnailGetPixels(const M4OSA_Context pContext,
                              M4OSA_Int32* pixelArray,
                              M4OSA_UInt32 width, M4OSA_UInt32 height,
-                             M4OSA_UInt32* pTimeMS);
+                             M4OSA_UInt32* pTimeMS, M4OSA_UInt32 tolerance);
 
 
 /**
@@ -219,7 +219,7 @@
 M4OSA_ERR ThumbnailGetPixels(const M4OSA_Context pContext,
                              M4OSA_Int32* pixelArray,
                              M4OSA_UInt32 width, M4OSA_UInt32 height,
-                             M4OSA_UInt32* pTimeMS)
+                             M4OSA_UInt32* pTimeMS, M4OSA_UInt32 tolerance)
 {
     M4OSA_ERR err;
 
@@ -249,7 +249,7 @@
         pC->m_previousTime = *pTimeMS;
     }
 
-    err = videoBrowserPrepareFrame(pC->m_pVideoBrowser, pTimeMS);
+    err = videoBrowserPrepareFrame(pC->m_pVideoBrowser, pTimeMS, tolerance);
     CHECK_ERR(ThumbnailGetPixels, err);
 
     if (pC->m_bRender != M4OSA_TRUE) {
@@ -264,7 +264,8 @@
 
 M4OSA_ERR ThumbnailGetPixels32(const M4OSA_Context pContext,
                          M4OSA_Int32* pixelArray, M4OSA_UInt32 width,
-                         M4OSA_UInt32 height, M4OSA_UInt32* timeMS)
+                         M4OSA_UInt32 height, M4OSA_UInt32* timeMS,
+                         M4OSA_UInt32 tolerance)
 {
 
     M4OSA_ERR err = M4NO_ERROR;
@@ -277,7 +278,7 @@
     pC->m_dst16 = NULL;
     pC->m_dst32 = pixelArray;
 
-    err = ThumbnailGetPixels(pContext, pixelArray, width, height, timeMS);
+    err = ThumbnailGetPixels(pContext, pixelArray, width, height, timeMS, tolerance);
 
 ThumbnailGetPixels32_cleanUp:
 
@@ -286,7 +287,8 @@
 
 M4OSA_ERR ThumbnailGetPixels16(const M4OSA_Context pContext,
                          M4OSA_Int16* pixelArray, M4OSA_UInt32 width,
-                         M4OSA_UInt32 height, M4OSA_UInt32* timeMS)
+                         M4OSA_UInt32 height, M4OSA_UInt32* timeMS,
+                         M4OSA_UInt32 tolerance)
 {
     M4OSA_ERR err = M4NO_ERROR;
 
@@ -298,7 +300,8 @@
     pC->m_dst16 = pixelArray;
     pC->m_dst32 = NULL;
 
-    err = ThumbnailGetPixels(pContext, (M4OSA_Int32*)pixelArray, width, height, timeMS);
+    err = ThumbnailGetPixels(pContext, (M4OSA_Int32*)pixelArray, width, height,
+            timeMS, tolerance);
 
 ThumbnailGetPixels16_cleanUp:
 
diff --git a/media/jni/mediaeditor/VideoEditorThumbnailMain.h b/media/jni/mediaeditor/VideoEditorThumbnailMain.h
index 14c60dd..0b3b0c8 100755
--- a/media/jni/mediaeditor/VideoEditorThumbnailMain.h
+++ b/media/jni/mediaeditor/VideoEditorThumbnailMain.h
@@ -49,7 +49,8 @@
 */
 M4OSA_ERR ThumbnailGetPixels32(const M4OSA_Context pContext,
                              M4OSA_Int32* pixelArray, M4OSA_UInt32 width,
-                             M4OSA_UInt32 height, M4OSA_UInt32 *timeMS);
+                             M4OSA_UInt32 height, M4OSA_UInt32 *timeMS,
+                             M4OSA_UInt32 tolerance);
 
 /**
  ************************************************************************
@@ -63,7 +64,8 @@
 */
 M4OSA_ERR ThumbnailGetPixels16(const M4OSA_Context pContext,
                              M4OSA_Int16* pixelArray, M4OSA_UInt32 width,
-                             M4OSA_UInt32 height, M4OSA_UInt32 *timeMS);
+                             M4OSA_UInt32 height, M4OSA_UInt32 *timeMS,
+                             M4OSA_UInt32 tolerance);
 
 /**
  ************************************************************************
diff --git a/packages/SystemUI/res/values-bg/donottranslate.xml b/packages/SystemUI/res/values-bg/donottranslate.xml
new file mode 100644
index 0000000..dcf434d
--- /dev/null
+++ b/packages/SystemUI/res/values-bg/donottranslate.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ *
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
+         but this may be overridden on a per-locale basis if necessary. -->
+    <string name="status_bar_date_formatter">%2$s\n%1$s</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values-hu/donottranslate.xml b/packages/SystemUI/res/values-hu/donottranslate.xml
new file mode 100644
index 0000000..dcf434d
--- /dev/null
+++ b/packages/SystemUI/res/values-hu/donottranslate.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ *
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
+         but this may be overridden on a per-locale basis if necessary. -->
+    <string name="status_bar_date_formatter">%2$s\n%1$s</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values-ja/donottranslate.xml b/packages/SystemUI/res/values-ja/donottranslate.xml
new file mode 100644
index 0000000..dcf434d
--- /dev/null
+++ b/packages/SystemUI/res/values-ja/donottranslate.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ *
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
+         but this may be overridden on a per-locale basis if necessary. -->
+    <string name="status_bar_date_formatter">%2$s\n%1$s</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values-ko/donottranslate.xml b/packages/SystemUI/res/values-ko/donottranslate.xml
new file mode 100644
index 0000000..dcf434d
--- /dev/null
+++ b/packages/SystemUI/res/values-ko/donottranslate.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ *
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
+         but this may be overridden on a per-locale basis if necessary. -->
+    <string name="status_bar_date_formatter">%2$s\n%1$s</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values-lt/donottranslate.xml b/packages/SystemUI/res/values-lt/donottranslate.xml
new file mode 100644
index 0000000..dcf434d
--- /dev/null
+++ b/packages/SystemUI/res/values-lt/donottranslate.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ *
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
+         but this may be overridden on a per-locale basis if necessary. -->
+    <string name="status_bar_date_formatter">%2$s\n%1$s</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values-tr/donottranslate.xml b/packages/SystemUI/res/values-tr/donottranslate.xml
new file mode 100644
index 0000000..dcf434d
--- /dev/null
+++ b/packages/SystemUI/res/values-tr/donottranslate.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ *
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
+         but this may be overridden on a per-locale basis if necessary. -->
+    <string name="status_bar_date_formatter">%2$s\n%1$s</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/donottranslate.xml b/packages/SystemUI/res/values-zh-rCN/donottranslate.xml
new file mode 100644
index 0000000..dcf434d
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rCN/donottranslate.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ *
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
+         but this may be overridden on a per-locale basis if necessary. -->
+    <string name="status_bar_date_formatter">%2$s\n%1$s</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/donottranslate.xml b/packages/SystemUI/res/values-zh-rTW/donottranslate.xml
new file mode 100644
index 0000000..dcf434d
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rTW/donottranslate.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ *
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
+         but this may be overridden on a per-locale basis if necessary. -->
+    <string name="status_bar_date_formatter">%2$s\n%1$s</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values/donottranslate.xml b/packages/SystemUI/res/values/donottranslate.xml
new file mode 100644
index 0000000..c25a5b7
--- /dev/null
+++ b/packages/SystemUI/res/values/donottranslate.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ *
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
+         but this may be overridden on a per-locale basis if necessary. -->
+    <string name="status_bar_date_formatter">%1$s\n%2$s</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 03b82fd..7779703 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -41,10 +41,6 @@
     <!-- Title shown in recents popup for inspecting an application's properties -->
     <string name="status_bar_recent_inspect_item_title">Inspect</string>
 
-    <!-- For formatting day of week and date in DateView.  Day of week precedes date by default,
-         but this may be overridden on a per-locale basis if necessary. -->
-    <string name="status_bar_date_formatter">%1$s\n%2$s</string>
-
     <!-- The label in the bar at the top of the status bar when there are no notifications
          showing.  [CHAR LIMIT=40]-->
     <string name="status_bar_no_notifications_title">No notifications</string>
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 558ba3e..5967428 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -2052,7 +2052,7 @@
                 String name = win.makeInputChannelName();
                 InputChannel[] inputChannels = InputChannel.openInputChannelPair(name);
                 win.mInputChannel = inputChannels[0];
-                inputChannels[1].transferToBinderOutParameter(outInputChannel);
+                inputChannels[1].transferTo(outInputChannel);
                 
                 mInputManager.registerInputChannel(win.mInputChannel, win.mInputWindowHandle);
             }