Index: chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java |
index a3fa31f1f084fab4cd4d3fc1bfbb03fb4f6f2f15..ba7bb632728674b5bf8595751588e66a9c7a60cc 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java |
@@ -20,6 +20,7 @@ import android.support.v4.app.BundleCompat; |
import org.chromium.base.Log; |
import org.chromium.base.VisibleForTesting; |
+import java.io.Serializable; |
import java.util.ArrayList; |
/** |
@@ -265,6 +266,23 @@ public class IntentUtils { |
} |
/** |
+ * Just like {@link Intent#getSerializableExtra(String)} but doesn't throw exceptions. |
+ */ |
+ @SuppressWarnings("unchecked") |
+ public static <T extends Serializable> T safeGetSerializableExtra(Intent intent, String name) { |
+ try { |
+ return (T) intent.getSerializableExtra(name); |
+ } catch (ClassCastException ex) { |
+ Log.e(TAG, "Invalide class for Serializable: " + name, ex); |
+ return null; |
+ } catch (Throwable t) { |
+ // Catches un-serializable exceptions. |
+ Log.e(TAG, "getSerializableExtra failed on intent " + intent); |
+ return null; |
+ } |
+ } |
+ |
+ /** |
* Just like {@link BundleCompat#getBinder()}, but doesn't throw exceptions. |
*/ |
public static IBinder safeGetBinder(Bundle bundle, String name) { |