Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29c30161 authored by Justin Koh's avatar Justin Koh
Browse files

Make the image wallpaper component overlayable

This is necessary for devices that want to have wallpaper but don't have
SystemUi.

Bug: 17394246
Change-Id: I75c2a3a2120fd6600274d44059b3f85569b9a187
parent 69dd40d0
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -771,6 +771,9 @@
         specified -->
         specified -->
    <string name="default_wallpaper_component" translatable="false">@null</string>
    <string name="default_wallpaper_component" translatable="false">@null</string>


    <!-- Component name of the built in wallpaper used to display bitmap wallpapers. This must not be null. -->
    <string name="image_wallpaper_component" translatable="false">com.android.systemui/com.android.systemui.ImageWallpaper</string>

    <!-- True if WallpaperService is enabled -->
    <!-- True if WallpaperService is enabled -->
    <bool name="config_enableWallpaperService">true</bool>
    <bool name="config_enableWallpaperService">true</bool>


+1 −0
Original line number Original line Diff line number Diff line
@@ -1634,6 +1634,7 @@
  <java-symbol type="string" name="hardware" />
  <java-symbol type="string" name="hardware" />
  <java-symbol type="string" name="heavy_weight_notification" />
  <java-symbol type="string" name="heavy_weight_notification" />
  <java-symbol type="string" name="heavy_weight_notification_detail" />
  <java-symbol type="string" name="heavy_weight_notification_detail" />
  <java-symbol type="string" name="image_wallpaper_component" />
  <java-symbol type="string" name="input_method_binding_label" />
  <java-symbol type="string" name="input_method_binding_label" />
  <java-symbol type="string" name="launch_warning_original" />
  <java-symbol type="string" name="launch_warning_original" />
  <java-symbol type="string" name="launch_warning_replace" />
  <java-symbol type="string" name="launch_warning_replace" />
+16 −13
Original line number Original line Diff line number Diff line
@@ -85,6 +85,7 @@ import org.xmlpull.v1.XmlSerializer;
import com.android.internal.content.PackageMonitor;
import com.android.internal.content.PackageMonitor;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.JournaledFile;
import com.android.internal.util.JournaledFile;
import com.android.internal.R;


public class WallpaperManagerService extends IWallpaperManager.Stub {
public class WallpaperManagerService extends IWallpaperManager.Stub {
    static final String TAG = "WallpaperManagerService";
    static final String TAG = "WallpaperManagerService";
@@ -99,12 +100,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
    static final long MIN_WALLPAPER_CRASH_TIME = 10000;
    static final long MIN_WALLPAPER_CRASH_TIME = 10000;
    static final String WALLPAPER = "wallpaper";
    static final String WALLPAPER = "wallpaper";
    static final String WALLPAPER_INFO = "wallpaper_info.xml";
    static final String WALLPAPER_INFO = "wallpaper_info.xml";
    /**
     * Name of the component used to display bitmap wallpapers from either the gallery or
     * built-in wallpapers.
     */
    static final ComponentName IMAGE_WALLPAPER = new ComponentName("com.android.systemui",
            "com.android.systemui.ImageWallpaper");


    /**
    /**
     * Observes the wallpaper for changes and notifies all IWallpaperServiceCallbacks
     * Observes the wallpaper for changes and notifies all IWallpaperServiceCallbacks
@@ -146,7 +141,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
                        if (event == CLOSE_WRITE) {
                        if (event == CLOSE_WRITE) {
                            mWallpaper.imageWallpaperPending = false;
                            mWallpaper.imageWallpaperPending = false;
                        }
                        }
                        bindWallpaperComponentLocked(IMAGE_WALLPAPER, true,
                        bindWallpaperComponentLocked(mImageWallpaper, true,
                                false, mWallpaper, null);
                                false, mWallpaper, null);
                        saveSettingsLocked(mWallpaper);
                        saveSettingsLocked(mWallpaper);
                    }
                    }
@@ -161,6 +156,12 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
    final MyPackageMonitor mMonitor;
    final MyPackageMonitor mMonitor;
    WallpaperData mLastWallpaper;
    WallpaperData mLastWallpaper;


    /**
     * Name of the component used to display bitmap wallpapers from either the gallery or
     * built-in wallpapers.
     */
    final ComponentName mImageWallpaper;

    SparseArray<WallpaperData> mWallpaperMap = new SparseArray<WallpaperData>();
    SparseArray<WallpaperData> mWallpaperMap = new SparseArray<WallpaperData>();


    int mCurrentUserId;
    int mCurrentUserId;
@@ -447,6 +448,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
    public WallpaperManagerService(Context context) {
    public WallpaperManagerService(Context context) {
        if (DEBUG) Slog.v(TAG, "WallpaperService startup");
        if (DEBUG) Slog.v(TAG, "WallpaperService startup");
        mContext = context;
        mContext = context;
        mImageWallpaper = ComponentName.unflattenFromString(
                context.getResources().getString(R.string.image_wallpaper_component));
        mIWindowManager = IWindowManager.Stub.asInterface(
        mIWindowManager = IWindowManager.Stub.asInterface(
                ServiceManager.getService(Context.WINDOW_SERVICE));
                ServiceManager.getService(Context.WINDOW_SERVICE));
        mIPackageManager = AppGlobals.getPackageManager();
        mIPackageManager = AppGlobals.getPackageManager();
@@ -604,7 +607,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
            wallpaper.imageWallpaperPending = false;
            wallpaper.imageWallpaperPending = false;
            if (userId != mCurrentUserId) return;
            if (userId != mCurrentUserId) return;
            if (bindWallpaperComponentLocked(defaultFailed
            if (bindWallpaperComponentLocked(defaultFailed
                    ? IMAGE_WALLPAPER
                    ? mImageWallpaper
                    : null, true, false, wallpaper, reply)) {
                    : null, true, false, wallpaper, reply)) {
                return;
                return;
            }
            }
@@ -848,7 +851,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
                componentName = WallpaperManager.getDefaultWallpaperComponent(mContext);
                componentName = WallpaperManager.getDefaultWallpaperComponent(mContext);
                if (componentName == null) {
                if (componentName == null) {
                    // Fall back to static image wallpaper
                    // Fall back to static image wallpaper
                    componentName = IMAGE_WALLPAPER;
                    componentName = mImageWallpaper;
                    //clearWallpaperComponentLocked();
                    //clearWallpaperComponentLocked();
                    //return;
                    //return;
                    if (DEBUG) Slog.v(TAG, "Using image wallpaper");
                    if (DEBUG) Slog.v(TAG, "Using image wallpaper");
@@ -876,7 +879,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
            WallpaperInfo wi = null;
            WallpaperInfo wi = null;
            
            
            Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE);
            Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE);
            if (componentName != null && !componentName.equals(IMAGE_WALLPAPER)) {
            if (componentName != null && !componentName.equals(mImageWallpaper)) {
                // Make sure the selected service is actually a wallpaper service.
                // Make sure the selected service is actually a wallpaper service.
                List<ResolveInfo> ris =
                List<ResolveInfo> ris =
                        mIPackageManager.queryIntentServices(intent,
                        mIPackageManager.queryIntentServices(intent,
@@ -1052,7 +1055,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
            out.attribute(null, "height", Integer.toString(wallpaper.height));
            out.attribute(null, "height", Integer.toString(wallpaper.height));
            out.attribute(null, "name", wallpaper.name);
            out.attribute(null, "name", wallpaper.name);
            if (wallpaper.wallpaperComponent != null
            if (wallpaper.wallpaperComponent != null
                    && !wallpaper.wallpaperComponent.equals(IMAGE_WALLPAPER)) {
                    && !wallpaper.wallpaperComponent.equals(mImageWallpaper)) {
                out.attribute(null, "component",
                out.attribute(null, "component",
                        wallpaper.wallpaperComponent.flattenToShortString());
                        wallpaper.wallpaperComponent.flattenToShortString());
            }
            }
@@ -1124,7 +1127,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
                        if (wallpaper.nextWallpaperComponent == null
                        if (wallpaper.nextWallpaperComponent == null
                                || "android".equals(wallpaper.nextWallpaperComponent
                                || "android".equals(wallpaper.nextWallpaperComponent
                                        .getPackageName())) {
                                        .getPackageName())) {
                            wallpaper.nextWallpaperComponent = IMAGE_WALLPAPER;
                            wallpaper.nextWallpaperComponent = mImageWallpaper;
                        }
                        }
                          
                          
                        if (DEBUG) {
                        if (DEBUG) {
@@ -1196,7 +1199,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
            loadSettingsLocked(0);
            loadSettingsLocked(0);
            wallpaper = mWallpaperMap.get(0);
            wallpaper = mWallpaperMap.get(0);
            if (wallpaper.nextWallpaperComponent != null
            if (wallpaper.nextWallpaperComponent != null
                    && !wallpaper.nextWallpaperComponent.equals(IMAGE_WALLPAPER)) {
                    && !wallpaper.nextWallpaperComponent.equals(mImageWallpaper)) {
                if (!bindWallpaperComponentLocked(wallpaper.nextWallpaperComponent, false, false,
                if (!bindWallpaperComponentLocked(wallpaper.nextWallpaperComponent, false, false,
                        wallpaper, null)) {
                        wallpaper, null)) {
                    // No such live wallpaper or other failure; fall back to the default
                    // No such live wallpaper or other failure; fall back to the default