Merge "AOSP/Email - Added WidgetService#isWidgetSupported to check if widgets are supported on the device and avoid calling AppWidgetManager#getInstance if not supported to avoid NullPointerException."
diff --git a/emailcommon/AndroidManifest.xml b/emailcommon/AndroidManifest.xml
index 4659bbb..c1fcdb4 100644
--- a/emailcommon/AndroidManifest.xml
+++ b/emailcommon/AndroidManifest.xml
@@ -2,5 +2,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.emailcommon"
android:versionCode="1">
- <uses-sdk android:targetSdkVersion="19" android:minSdkVersion="14" />
+ <uses-sdk android:targetSdkVersion="21" android:minSdkVersion="14" />
</manifest>
diff --git a/emailcommon/src/com/android/emailcommon/utility/EmailAsyncTask.java b/emailcommon/src/com/android/emailcommon/utility/EmailAsyncTask.java
index e0db427..492816b 100644
--- a/emailcommon/src/com/android/emailcommon/utility/EmailAsyncTask.java
+++ b/emailcommon/src/com/android/emailcommon/utility/EmailAsyncTask.java
@@ -263,14 +263,17 @@
return mInnerTask.get();
}
+ @VisibleForTesting
/* package */ final Result callDoInBackgroundForTest(Params... params) {
return mInnerTask.doInBackground(params);
}
+ @VisibleForTesting
/* package */ final void callOnCancelledForTest(Result result) {
mInnerTask.onCancelled(result);
}
+ @VisibleForTesting
/* package */ final void callOnPostExecuteForTest(Result result) {
mInnerTask.onPostExecute(result);
}
diff --git a/proguard-test.flags b/proguard-test.flags
index 26d7dea..3daa0be 100644
--- a/proguard-test.flags
+++ b/proguard-test.flags
@@ -91,8 +91,12 @@
*** tempFileExistsForTest();
}
+-keepclasseswithmembers class com.android.emailcommon.utility.EmailAsyncTask {
+ *** callDoInBackgroundForTest(Params...);
+}
-keepclasseswithmembers class com.android.emailcommon.utility.EmailAsyncTask$Tracker {
<init>();
*** getTaskCountForTest();
*** containsTaskForTest(com.android.emailcommon.utility.EmailAsyncTask);
}
+-keep class com.android.emailcommon.utility.DelayedOperations
diff --git a/proguard.flags b/proguard.flags
index ce50245..0a9c2f1 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -5,4 +5,4 @@
}
-keep class com.android.email.activity.setup.AccountSetupFinal
--keep class com.android.email.activity.setup.AccountSettingsFragment
\ No newline at end of file
+-keep class com.android.email.activity.setup.AccountSettingsFragment
diff --git a/provider_src/com/android/email/provider/EmailProvider.java b/provider_src/com/android/email/provider/EmailProvider.java
index 4bd9d4d..00d608f 100644
--- a/provider_src/com/android/email/provider/EmailProvider.java
+++ b/provider_src/com/android/email/provider/EmailProvider.java
@@ -129,6 +129,7 @@
import com.android.mail.utils.MimeType;
import com.android.mail.utils.Utils;
import com.android.mail.widget.BaseWidgetProvider;
+import com.android.mail.widget.WidgetService;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
@@ -6139,6 +6140,9 @@
Context context = getContext();
// Lazily initialize these
if (mAppWidgetManager == null) {
+ if (!WidgetService.isWidgetSupported(context)) {
+ return;
+ }
mAppWidgetManager = AppWidgetManager.getInstance(context);
mEmailComponent = new ComponentName(context, WidgetProvider.getProviderName(context));
}
diff --git a/tests/src/com/android/email/ThrottleTest.java b/tests/src/com/android/email/ThrottleTest.java
index 49adea7..e31c513 100644
--- a/tests/src/com/android/email/ThrottleTest.java
+++ b/tests/src/com/android/email/ThrottleTest.java
@@ -17,6 +17,7 @@
package com.android.email;
import android.os.Handler;
+import android.os.Looper;
import android.os.Message;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
@@ -37,7 +38,8 @@
private final CountingRunnable mRunnable = new CountingRunnable();
private final MockClock mClock = new MockClock();
private final MockTimer mTimer = new MockTimer(mClock);
- private final Throttle mTarget = new Throttle("test", mRunnable, new CallItNowHandler(),
+ private final Throttle mTarget = new Throttle("test", mRunnable,
+ new CallItNowHandler(Looper.getMainLooper()),
MIN_TIMEOUT, MAX_TIMEOUT, mClock, mTimer);
/**
@@ -155,9 +157,13 @@
/**
* Dummy {@link Handler} that executes {@link Runnable}s passed to {@link Handler#post}
- * immediately on the current thread.
+ * immediately via the provided {@link Looper}.
*/
private static class CallItNowHandler extends Handler {
+ public CallItNowHandler(Looper looper) {
+ super(looper);
+ }
+
@Override
public boolean sendMessageAtTime(Message msg, long uptimeMillis) {
msg.getCallback().run();