X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=services%2Fcore%2Fjava%2Fcom%2Fandroid%2Fserver%2Fwm%2FWindowManagerService.java;fp=services%2Fcore%2Fjava%2Fcom%2Fandroid%2Fserver%2Fwm%2FWindowManagerService.java;h=7f8797a1906491b8c66747577f8e8e1fb4ee045d;hb=c837c92b2873f847c5fe1b66d812b2217a5be143;hp=7a2c28bd5c826bbd3c615082f94d5257d5de0849;hpb=eda1dde45b35f40dd74b0ccfb0287de5680b846a;p=android-x86%2Fframeworks-base.git diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 7a2c28bd5c82..7f8797a19064 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -126,6 +126,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; @@ -148,6 +149,7 @@ import android.os.Binder; import android.os.Build; import android.os.Bundle; import android.os.Debug; +import android.os.Environment; import android.os.Handler; import android.os.IBinder; import android.os.IRemoteCallback; @@ -169,6 +171,7 @@ import android.os.SystemProperties; import android.os.SystemService; import android.os.Trace; import android.os.UserHandle; +import android.os.UserManager; import android.os.WorkSource; import android.provider.Settings; import android.text.format.DateUtils; @@ -7601,4 +7604,66 @@ public class WindowManagerService extends IWindowManager.Stub } } } + // region @boringdroid + private static final String PACKAGE_WINDOW_BOUNDS_NAME = "package-window-bounds"; + + private static boolean isDataSystemDirNotReady(Context context) { + UserManager userManager = context.getSystemService(UserManager.class); + return !(userManager != null && userManager.isUserUnlockingOrUnlocked(UserHandle.myUserId())); + } + + private static File getPackageWindowBoundsName() { + return new File( + Environment.getDataSystemCeDirectory(UserHandle.myUserId()) + + File.separator + PACKAGE_WINDOW_BOUNDS_NAME + ); + } + + /** + * @hide + */ + public static WindowManagerService getWMSInstance() { + return getInstance(); + } + + /** + * @hide + */ + public void savePackageWindowBounds(String packageName, Rect bounds) { + if (isDataSystemDirNotReady(mContext)) { + Slog.e(TAG, "Calling savePackageWindowBounds with package " + packageName + + ", and bounds " + bounds + ", before file is ready"); + return; + } + SharedPreferences sharedPreferences = + mContext.getSharedPreferences(getPackageWindowBoundsName(), Context.MODE_PRIVATE); + Rect tempBounds = new Rect(bounds); + sharedPreferences + .edit() + .putInt(packageName + "-left", tempBounds.left) + .putInt(packageName + "-top", tempBounds.top) + .putInt(packageName + "-right", tempBounds.right) + .putInt(packageName + "-bottom", tempBounds.bottom) + .apply(); + } + + /** + * @hide + */ + public Rect getPackageWindowBounds(String packageName) { + if (isDataSystemDirNotReady(mContext)) { + Slog.e(TAG, "Calling getPackageWindowBounds with package " + packageName + + ", before file is ready"); + return new Rect(); + } + SharedPreferences sharedPreferences = + mContext.getSharedPreferences(getPackageWindowBoundsName(), Context.MODE_PRIVATE); + return new Rect( + sharedPreferences.getInt(packageName + "-left", 0), + sharedPreferences.getInt(packageName + "-top", 0), + sharedPreferences.getInt(packageName + "-right", 0), + sharedPreferences.getInt(packageName + "-bottom", 0) + ); + } + // endregion }