Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / base / android / java / src / org / chromium / base / ApiCompatibilityUtils.java
index a122c06..2af146b 100644 (file)
@@ -4,10 +4,18 @@
 
 package org.chromium.base;
 
+import android.animation.ValueAnimator;
+import android.annotation.TargetApi;
+import android.app.ActivityOptions;
+import android.app.Notification;
 import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
 import android.content.res.Configuration;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
+import android.os.Bundle;
+import android.provider.Settings;
 import android.view.View;
 import android.view.ViewGroup.MarginLayoutParams;
 import android.view.ViewTreeObserver;
@@ -77,7 +85,7 @@ public class ApiCompatibilityUtils {
     }
 
     /**
-     * @see android.view.View#setTextDirection(int)
+     * @see android.view.View#setTextAlignment(int)
      */
     public static void setTextAlignment(View view, int textAlignment) {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
@@ -88,6 +96,17 @@ public class ApiCompatibilityUtils {
     }
 
     /**
+     * @see android.view.View#setTextDirection(int)
+     */
+    public static void setTextDirection(View view, int textDirection) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+            view.setTextDirection(textDirection);
+        } else {
+            // Do nothing. RTL text isn't supported before JB MR1.
+        }
+    }
+
+    /**
      * @see android.view.ViewGroup.MarginLayoutParams#setMarginEnd(int)
      */
     public static void setMarginEnd(MarginLayoutParams layoutParams, int end) {
@@ -234,6 +253,37 @@ public class ApiCompatibilityUtils {
     }
 
     /**
+     * @see android.view.View#postOnAnimation()
+     */
+    public static void postOnAnimation(View view, Runnable action) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            view.postOnAnimation(action);
+        } else {
+            view.postDelayed(action, getFrameTime());
+        }
+    }
+
+    /**
+     * @see android.view.View#postOnAnimationDelayed()
+     */
+    public static void postOnAnimationDelayed(View view, Runnable action, long delayMillis) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            view.postOnAnimationDelayed(action, delayMillis);
+        } else {
+            view.postDelayed(action, getFrameTime() + delayMillis);
+        }
+    }
+
+    private static long getFrameTime() {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            return ValueAnimator.getFrameDelay();
+        } else {
+            // Any reasonable fake frame delay will have to do.
+            return 10;
+        }
+    }
+
+    /**
      * @see android.widget.RemoteViews#setContentDescription(int, CharSequence)
      */
     public static void setContentDescriptionForRemoteView(RemoteViews remoteViews, int viewId,
@@ -245,6 +295,28 @@ public class ApiCompatibilityUtils {
         }
     }
 
+    /**
+     * @see android.app.Activity#startActivity(Intent, Bundle)
+     */
+    public static void startActivity(Context context, Intent intent, Bundle options) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            context.startActivity(intent, options);
+        } else {
+            context.startActivity(intent);
+        }
+    }
+
+    /**
+     * @see android.app.ActivityOptions#toBundle()
+     */
+    public static Bundle toBundle(ActivityOptions options) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            return options.toBundle();
+        } else {
+            return null;
+        }
+    }
+
     // These methods have a new name, and the old name is deprecated.
 
     /**
@@ -296,9 +368,27 @@ public class ApiCompatibilityUtils {
         }
     }
 
-    public static boolean datePickerRequiresAccept() {
-        // TODO(miguelg) use the final code for the L
-        // https://crbug.com/399198
-        return Build.VERSION.SDK_INT <  20; /* CUR_DEVELOPMENT */
+    /**
+     * @see android.app.Notification.Builder#setLocalOnly(boolean)
+     */
+    @SuppressWarnings("deprecation")
+    public static Notification build(Notification.Builder builder) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            return builder.build();
+        } else {
+            return builder.getNotification();
+        }
+    }
+
+    /**
+     * @see android.provider.Settings.Global#DEVICE_PROVISIONED
+     */
+    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+    public static boolean isDeviceProvisioned(Context context) {
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) return true;
+        if (context == null) return true;
+        if (context.getContentResolver() == null) return true;
+        return Settings.Global.getInt(
+                context.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0;
     }
 }