OSDN Git Service

resolved conflicts for merge of cc9894c8 to klp-modular-dev-plus-aosp
authorJeff Brown <jeffbrown@google.com>
Wed, 12 Mar 2014 04:01:49 +0000 (21:01 -0700)
committerJeff Brown <jeffbrown@google.com>
Wed, 12 Mar 2014 04:01:49 +0000 (21:01 -0700)
Change-Id: I0fa4486ed300a35de3af8748e01300b01f03ec01

1  2 
core/java/android/app/ActivityThread.java
core/java/android/app/ContextImpl.java
core/java/android/app/LoadedApk.java

@@@ -1977,38 -1973,68 +1973,68 @@@ class ContextImpl extends Context 
          return context;
      }
  
-     ContextImpl() {
-         mOuterContext = this;
+     static ContextImpl createAppContext(ActivityThread mainThread, LoadedApk packageInfo) {
+         if (packageInfo == null) throw new IllegalArgumentException("packageInfo");
+         return new ContextImpl(null, mainThread,
+                 packageInfo, null, null, false, null, null);
      }
  
-     /**
-      * Create a new ApplicationContext from an existing one.  The new one
-      * works and operates the same as the one it is copying.
-      *
-      * @param context Existing application context.
-      */
-     public ContextImpl(ContextImpl context) {
-         mPackageInfo = context.mPackageInfo;
-         mBasePackageName = context.mBasePackageName;
-         mOpPackageName = context.mOpPackageName;
-         mResources = context.mResources;
-         mMainThread = context.mMainThread;
-         mContentResolver = context.mContentResolver;
-         mUser = context.mUser;
-         mDisplay = context.mDisplay;
-         mOuterContext = this;
-         mDisplayAdjustments.setCompatibilityInfo(mPackageInfo.getCompatibilityInfo());
+     static ContextImpl createActivityContext(ActivityThread mainThread,
+             LoadedApk packageInfo, IBinder activityToken) {
+         if (packageInfo == null) throw new IllegalArgumentException("packageInfo");
+         if (activityToken == null) throw new IllegalArgumentException("activityInfo");
+         return new ContextImpl(null, mainThread,
+                 packageInfo, activityToken, null, false, null, null);
      }
  
-     final void init(LoadedApk packageInfo, IBinder activityToken, ActivityThread mainThread) {
-         init(packageInfo, activityToken, mainThread, null, null, Process.myUserHandle());
-     }
+     private ContextImpl(ContextImpl container, ActivityThread mainThread,
+             LoadedApk packageInfo, IBinder activityToken, UserHandle user, boolean restricted,
+             Display display, Configuration overrideConfiguration) {
+         mOuterContext = this;
+         mMainThread = mainThread;
+         mActivityToken = activityToken;
+         mRestricted = restricted;
+         if (user == null) {
+             user = Process.myUserHandle();
+         }
+         mUser = user;
  
-     final void init(LoadedApk packageInfo, IBinder activityToken, ActivityThread mainThread,
-             Resources container, String basePackageName, UserHandle user) {
          mPackageInfo = packageInfo;
-         if (basePackageName != null) {
-             mBasePackageName = mOpPackageName = basePackageName;
+         mContentResolver = new ApplicationContentResolver(this, mainThread, user);
+         mResourcesManager = ResourcesManager.getInstance();
+         mDisplay = display;
+         mOverrideConfiguration = overrideConfiguration;
+         final int displayId = getDisplayId();
+         CompatibilityInfo compatInfo = null;
+         if (container != null) {
+             compatInfo = container.getDisplayAdjustments(displayId).getCompatibilityInfo();
+         }
+         if (compatInfo == null && displayId == Display.DEFAULT_DISPLAY) {
+             compatInfo = packageInfo.getCompatibilityInfo();
+         }
+         mDisplayAdjustments.setCompatibilityInfo(compatInfo);
+         mDisplayAdjustments.setActivityToken(activityToken);
+         Resources resources = packageInfo.getResources(mainThread);
+         if (resources != null) {
+             if (activityToken != null
+                     || displayId != Display.DEFAULT_DISPLAY
+                     || overrideConfiguration != null
+                     || (compatInfo != null && compatInfo.applicationScale
+                             != resources.getCompatibilityInfo().applicationScale)) {
+                 resources = mResourcesManager.getTopLevelResources(
 -                        packageInfo.getResDir(), displayId,
++                        packageInfo.getResDir(), packageInfo.getOverlayDirs(), displayId,
+                         overrideConfiguration, compatInfo, activityToken);
+             }
+         }
+         mResources = resources;
+         if (container != null) {
+             mBasePackageName = container.mBasePackageName;
+             mOpPackageName = container.mOpPackageName;
          } else {
              mBasePackageName = packageInfo.mPackageName;
              ApplicationInfo ainfo = packageInfo.getApplicationInfo();
@@@ -134,34 -131,19 +133,20 @@@ public final class LoadedApk 
          mSecurityViolation = securityViolation;
          mIncludeCode = includeCode;
          mDisplayAdjustments.setCompatibilityInfo(compatInfo);
-         if (mAppDir == null) {
-             if (ActivityThread.mSystemContext == null) {
-                 ActivityThread.mSystemContext =
-                     ContextImpl.createSystemContext(mainThread);
-                 ResourcesManager resourcesManager = ResourcesManager.getInstance();
-                 ActivityThread.mSystemContext.getResources().updateConfiguration(
-                         resourcesManager.getConfiguration(),
-                         resourcesManager.getDisplayMetricsLocked(
-                                  Display.DEFAULT_DISPLAY, mDisplayAdjustments), compatInfo);
-                 //Slog.i(TAG, "Created system resources "
-                 //        + mSystemContext.getResources() + ": "
-                 //        + mSystemContext.getResources().getConfiguration());
-             }
-             mClassLoader = ActivityThread.mSystemContext.getClassLoader();
-             mResources = ActivityThread.mSystemContext.getResources();
-         }
      }
  
-     public LoadedApk(ActivityThread activityThread, String name,
-             Context systemContext, ApplicationInfo info, CompatibilityInfo compatInfo) {
+     /**
+      * Create information about the system package.
+      * Must call {@link #installSystemApplicationInfo} later.
+      */
+     LoadedApk(ActivityThread activityThread) {
          mActivityThread = activityThread;
-         mApplicationInfo = info != null ? info : new ApplicationInfo();
-         mApplicationInfo.packageName = name;
-         mPackageName = name;
+         mApplicationInfo = new ApplicationInfo();
+         mApplicationInfo.packageName = "android";
+         mPackageName = "android";
          mAppDir = null;
          mResDir = null;
 +        mOverlayDirs = null;
          mSharedLibraries = null;
          mDataDir = null;
          mDataDirFile = null;