Snap for 6864616 from a9397251d5b2f848db34dc85df38440dfc18f305 to rvc-qpr1-release
Change-Id: I57c82f0fab5d16cef9f87ae8cf1d622ac421f2d0
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 9f03248..166a289 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -54,7 +54,7 @@
<string name="next_wallpaper" msgid="3911873152952596232">"الخلفية التالية"</string>
<string name="wallpaper_disabled_message" msgid="7309484130562148185">"تم إيقاف إمكانية تعيين خلفية على هذا الجهاز."</string>
<string name="wallpaper_disabled_by_administrator_message" msgid="1551430406714747884">"أوقف مشرف الجهاز إمكانية تعيين خلفية."</string>
- <string name="wallpaper_set_successfully_message" msgid="2958998799111688578">"تم تعيين الخلفية بنجاح."</string>
+ <string name="wallpaper_set_successfully_message" msgid="2958998799111688578">"تم ضبط الخلفية بنجاح."</string>
<string name="wallpapers_unavailable_offline_message" msgid="8136405438621689532">"يلزمك الاتصال بالإنترنت للاطّلاع على الخلفيات. يُرجى الاتصال وإعادة المحاولة."</string>
<string name="currently_set_home_wallpaper_thumbnail" msgid="4022381436821898917">"صورة مصغَّرة لخلفية الشاشة الرئيسية المعيَّنة حاليًا"</string>
<string name="currently_set_lock_wallpaper_thumbnail" msgid="2094209303934569997">"صورة مصغَّرة لخلفية شاشة القفل المعيَّنة حاليًا"</string>
diff --git a/src/com/android/wallpaper/model/CategoryProvider.java b/src/com/android/wallpaper/model/CategoryProvider.java
index ceef6b4..b86e6df 100755
--- a/src/com/android/wallpaper/model/CategoryProvider.java
+++ b/src/com/android/wallpaper/model/CategoryProvider.java
@@ -59,4 +59,9 @@
* Checks if the categories are fetched.
*/
boolean isCategoriesFetched();
+
+ /**
+ * Resets the fetched categories if needed.
+ */
+ void resetIfNeeded();
}
diff --git a/src/com/android/wallpaper/module/DefaultCategoryProvider.java b/src/com/android/wallpaper/module/DefaultCategoryProvider.java
index e9b6955..e687bf5 100755
--- a/src/com/android/wallpaper/module/DefaultCategoryProvider.java
+++ b/src/com/android/wallpaper/module/DefaultCategoryProvider.java
@@ -15,6 +15,8 @@
*/
package com.android.wallpaper.module;
+import static com.android.wallpaper.module.NetworkStatusNotifier.NETWORK_NOT_INITIALIZED;
+
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
@@ -41,6 +43,7 @@
import com.android.wallpaper.model.WallpaperCategory;
import com.android.wallpaper.model.WallpaperInfo;
import com.android.wallpaper.module.FormFactorChecker.FormFactor;
+import com.android.wallpaper.module.NetworkStatusNotifier.NetworkStatus;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -76,9 +79,16 @@
protected ArrayList<Category> mCategories;
protected boolean mFetchedCategories;
+ private NetworkStatusNotifier mNetworkStatusNotifier;
+ // The network status of the last fetch from the server.
+ @NetworkStatus
+ private int mNetworkStatus;
+
public DefaultCategoryProvider(Context context) {
mAppContext = context.getApplicationContext();
mCategories = new ArrayList<>();
+ mNetworkStatusNotifier = InjectorProvider.getInjector().getNetworkStatusNotifier(context);
+ mNetworkStatus = NETWORK_NOT_INITIALIZED;
}
@Override
@@ -94,6 +104,7 @@
mFetchedCategories = false;
}
+ mNetworkStatus = mNetworkStatusNotifier.getNetworkStatus();
doFetch(receiver, forceRefresh);
}
@@ -127,6 +138,14 @@
return mFetchedCategories;
}
+ @Override
+ public void resetIfNeeded() {
+ if (mNetworkStatus != mNetworkStatusNotifier.getNetworkStatus()) {
+ mCategories.clear();
+ mFetchedCategories = false;
+ }
+ }
+
protected void doFetch(final CategoryReceiver receiver, boolean forceRefresh) {
CategoryReceiver delegatingReceiver = new CategoryReceiver() {
@Override
diff --git a/src/com/android/wallpaper/module/NetworkStatusNotifier.java b/src/com/android/wallpaper/module/NetworkStatusNotifier.java
index 50e52e4..def7e6e 100755
--- a/src/com/android/wallpaper/module/NetworkStatusNotifier.java
+++ b/src/com/android/wallpaper/module/NetworkStatusNotifier.java
@@ -22,6 +22,7 @@
* used for testability.
*/
public interface NetworkStatusNotifier {
+ static int NETWORK_NOT_INITIALIZED = -1;
static int NETWORK_NOT_CONNECTED = 0;
static int NETWORK_CONNECTED = 1;
@@ -40,6 +41,7 @@
* Possible network statuses .
*/
@IntDef({
+ NETWORK_NOT_INITIALIZED,
NETWORK_NOT_CONNECTED,
NETWORK_CONNECTED
})
diff --git a/src/com/android/wallpaper/picker/CategoryFragment.java b/src/com/android/wallpaper/picker/CategoryFragment.java
index 42566eb..a90acc9 100755
--- a/src/com/android/wallpaper/picker/CategoryFragment.java
+++ b/src/com/android/wallpaper/picker/CategoryFragment.java
@@ -19,6 +19,7 @@
import static com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.WallpaperColors;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -39,7 +40,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.cardview.widget.CardView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
diff --git a/src/com/android/wallpaper/picker/CategorySelectorFragment.java b/src/com/android/wallpaper/picker/CategorySelectorFragment.java
index 887eb92..bb5d3d2 100644
--- a/src/com/android/wallpaper/picker/CategorySelectorFragment.java
+++ b/src/com/android/wallpaper/picker/CategorySelectorFragment.java
@@ -16,6 +16,7 @@
package com.android.wallpaper.picker;
import android.app.Activity;
+import android.app.AlertDialog;
import android.content.Intent;
import android.graphics.Point;
import android.graphics.PorterDuff;
@@ -34,7 +35,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.cardview.widget.CardView;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
index 308e907..c827b5a 100755
--- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
@@ -250,10 +250,6 @@
mBottomActionBar.disableActions();
mWallpaperAsset.decodeRawDimensions(getActivity(), dimensions -> {
- if (mBottomActionBar != null) {
- mBottomActionBar.enableActions();
- }
-
// Don't continue loading the wallpaper if the Fragment is detached.
if (getActivity() == null) {
return;
@@ -265,6 +261,10 @@
return;
}
+ if (mBottomActionBar != null) {
+ mBottomActionBar.enableActions();
+ }
+
mRawWallpaperSize = dimensions;
setUpExploreIntentAndLabel(ImagePreviewFragment.this::initFullResView);
diff --git a/src/com/android/wallpaper/picker/LoadWallpaperErrorDialogFragment.java b/src/com/android/wallpaper/picker/LoadWallpaperErrorDialogFragment.java
index 0d9e9af..603d931 100755
--- a/src/com/android/wallpaper/picker/LoadWallpaperErrorDialogFragment.java
+++ b/src/com/android/wallpaper/picker/LoadWallpaperErrorDialogFragment.java
@@ -15,6 +15,7 @@
*/
package com.android.wallpaper.picker;
+import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
@@ -22,7 +23,6 @@
import com.android.wallpaper.R;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
/**
diff --git a/src/com/android/wallpaper/picker/SetWallpaperDialogFragment.java b/src/com/android/wallpaper/picker/SetWallpaperDialogFragment.java
index 00772c9..4ed2e13 100755
--- a/src/com/android/wallpaper/picker/SetWallpaperDialogFragment.java
+++ b/src/com/android/wallpaper/picker/SetWallpaperDialogFragment.java
@@ -15,6 +15,7 @@
*/
package com.android.wallpaper.picker;
+import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
@@ -24,7 +25,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
-import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.fragment.app.DialogFragment;
diff --git a/src/com/android/wallpaper/picker/SetWallpaperErrorDialogFragment.java b/src/com/android/wallpaper/picker/SetWallpaperErrorDialogFragment.java
index 89a7d02..b484d1a 100755
--- a/src/com/android/wallpaper/picker/SetWallpaperErrorDialogFragment.java
+++ b/src/com/android/wallpaper/picker/SetWallpaperErrorDialogFragment.java
@@ -16,6 +16,7 @@
package com.android.wallpaper.picker;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
@@ -23,7 +24,6 @@
import com.android.wallpaper.R;
import com.android.wallpaper.module.WallpaperPersister.Destination;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
diff --git a/src/com/android/wallpaper/picker/StartRotationErrorDialogFragment.java b/src/com/android/wallpaper/picker/StartRotationErrorDialogFragment.java
index 9f98b70..d8f67c1 100755
--- a/src/com/android/wallpaper/picker/StartRotationErrorDialogFragment.java
+++ b/src/com/android/wallpaper/picker/StartRotationErrorDialogFragment.java
@@ -15,6 +15,7 @@
*/
package com.android.wallpaper.picker;
+import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
@@ -23,7 +24,6 @@
import com.android.wallpaper.model.WallpaperRotationInitializer.NetworkPreference;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
/**
diff --git a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java
index 40627b5..f74a445 100755
--- a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java
+++ b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java
@@ -16,6 +16,7 @@
package com.android.wallpaper.picker;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
@@ -41,7 +42,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@@ -169,6 +169,8 @@
mWallpaperPreferences = injector.getPreferences(this);
mWasCustomPhotoWallpaperSet = false;
+ mDelegate.getCategoryProvider().resetIfNeeded();
+
@WallpaperSupportLevel int wallpaperSupportLevel = mDelegate.getWallpaperSupportLevel();
if (wallpaperSupportLevel != WallpaperDisabledFragment.SUPPORTED_CAN_SET) {
setContentView(R.layout.activity_top_level_picker);
diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
index 260d121..0925f39 100755
--- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
+++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
@@ -369,8 +369,12 @@
@Override
public void doneFetchingCategories() {
- mCategory = (WallpaperCategory) categoryProvider.getCategory(
+ Category category = categoryProvider.getCategory(
getArguments().getString(ARG_CATEGORY_COLLECTION_ID));
+ if (category != null && !(category instanceof WallpaperCategory)) {
+ return;
+ }
+ mCategory = (WallpaperCategory) category;
if (mCategory == null) {
DiskBasedLogger.e(TAG, "Failed to find the category.", getContext());
@@ -388,6 +392,9 @@
protected void onCategoryLoaded() {
+ if (getIndividualPickerFragmentHost() == null) {
+ return;
+ }
getIndividualPickerFragmentHost().setToolbarTitle(mCategory.getTitle());
mWallpaperRotationInitializer = mCategory.getWallpaperRotationInitializer();
// Avoids the "rotation" action is not shown correctly
diff --git a/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java b/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java
index c7d7c95..9354958 100644
--- a/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java
+++ b/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java
@@ -92,6 +92,11 @@
return false;
}
+ @Override
+ public void resetIfNeeded() {
+ mCategories.clear();
+ }
+
/** Returns a list of test Category objects used by this TestCategoryProvider. */
public List<Category> getTestCategories() {
return mCategories;