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

Commit fd218245 authored by Jeff Brown's avatar Jeff Brown Committed by Android (Google) Code Review
Browse files

Merge "Wait for installd to finish starting before booting." into jb-mr1-dev

parents 3c78702d f69c812f
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import com.android.server.display.DisplayManagerService;
import com.android.server.input.InputManagerService;
import com.android.server.net.NetworkPolicyManagerService;
import com.android.server.net.NetworkStatsService;
import com.android.server.pm.Installer;
import com.android.server.pm.PackageManagerService;
import com.android.server.pm.UserManagerService;
import com.android.server.power.PowerManagerService;
@@ -117,6 +118,7 @@ class ServerThread extends Thread {
                : Integer.parseInt(factoryTestStr);
        final boolean headless = "1".equals(SystemProperties.get("ro.config.headless", "0"));

        Installer installer = null;
        AccountManagerService accountManager = null;
        ContentService contentService = null;
        LightsService lights = null;
@@ -195,6 +197,13 @@ class ServerThread extends Thread {
        // Critical services...
        boolean onlyCore = false;
        try {
            // Wait for installd to finished starting up so that it has a chance to
            // create critical directories such as /data/user with the appropriate
            // permissions.  We need this to complete before we initialize other services.
            Slog.i(TAG, "Waiting for installd to be ready.");
            installer = new Installer();
            installer.ping();

            Slog.i(TAG, "Entropy Mixer");
            ServiceManager.addService("entropy", new EntropyMixer());

@@ -234,7 +243,7 @@ class ServerThread extends Thread {
                onlyCore = true;
            }

            pm = PackageManagerService.main(context,
            pm = PackageManagerService.main(context, installer,
                    factoryTest != SystemServer.FACTORY_TEST_OFF,
                    onlyCore);
            boolean firstBoot = false;
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

class Installer {
public final class Installer {
    private static final String TAG = "Installer";

    private static final boolean LOCAL_DEBUG = false;
+7 −5
Original line number Diff line number Diff line
@@ -937,9 +937,10 @@ public class PackageManagerService extends IPackageManager.Stub {
        }
    }

    public static final IPackageManager main(Context context, boolean factoryTest,
            boolean onlyCore) {
        PackageManagerService m = new PackageManagerService(context, factoryTest, onlyCore);
    public static final IPackageManager main(Context context, Installer installer,
            boolean factoryTest, boolean onlyCore) {
        PackageManagerService m = new PackageManagerService(context, installer,
                factoryTest, onlyCore);
        ServiceManager.addService("package", m);
        return m;
    }
@@ -966,7 +967,8 @@ public class PackageManagerService extends IPackageManager.Stub {
        return res;
    }

    public PackageManagerService(Context context, boolean factoryTest, boolean onlyCore) {
    public PackageManagerService(Context context, Installer installer,
            boolean factoryTest, boolean onlyCore) {
        EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_START,
                SystemClock.uptimeMillis());

@@ -1004,7 +1006,7 @@ public class PackageManagerService extends IPackageManager.Stub {
            mSeparateProcesses = null;
        }

        mInstaller = new Installer();
        mInstaller = installer;

        WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
        Display d = wm.getDefaultDisplay();