180a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn/*
280a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn * Copyright (C) 2012 The Android Open Source Project
380a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn *
480a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
580a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn * you may not use this file except in compliance with the License.
680a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn * You may obtain a copy of the License at
780a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn *
880a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
980a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn *
1080a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn * Unless required by applicable law or agreed to in writing, software
1180a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
1280a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1380a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn * See the License for the specific language governing permissions and
1480a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn * limitations under the License.
1580a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn */
1680a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn
1780a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackbornpackage com.android.server.am;
1880a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn
1980a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackbornimport java.io.PrintWriter;
2080a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackbornimport java.util.ArrayList;
2180a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn
2280a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackbornimport android.app.IStopUserCallback;
2380a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackbornimport android.os.UserHandle;
2480a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn
2580a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackbornpublic class UserStartedState {
2636d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn    // User is first coming up.
2780a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    public final static int STATE_BOOTING = 0;
2836d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn    // User is in the normal running state.
2980a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    public final static int STATE_RUNNING = 1;
3036d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn    // User is in the initial process of being stopped.
3180a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    public final static int STATE_STOPPING = 2;
3236d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn    // User is in the final phase of stopping, sending Intent.ACTION_SHUTDOWN.
3336d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn    public final static int STATE_SHUTDOWN = 3;
3480a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn
3580a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    public final UserHandle mHandle;
3680a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    public final ArrayList<IStopUserCallback> mStopCallbacks
3780a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn            = new ArrayList<IStopUserCallback>();
3880a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn
3980a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    public int mState = STATE_BOOTING;
40d4ac8d7b3de27a9f0e4c6af2496ca71d794e42d1Dianne Hackborn    public boolean switching;
41d4ac8d7b3de27a9f0e4c6af2496ca71d794e42d1Dianne Hackborn    public boolean initializing;
4280a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn
4380a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    public UserStartedState(UserHandle handle, boolean initial) {
4480a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn        mHandle = handle;
4580a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    }
4680a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn
4780a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    void dump(String prefix, PrintWriter pw) {
4836d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn        pw.print(prefix); pw.print("mState=");
4936d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn        switch (mState) {
5036d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn            case STATE_BOOTING: pw.print("BOOTING"); break;
5136d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn            case STATE_RUNNING: pw.print("RUNNING"); break;
5236d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn            case STATE_STOPPING: pw.print("STOPPING"); break;
5336d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn            case STATE_SHUTDOWN: pw.print("SHUTDOWN"); break;
5436d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn            default: pw.print(mState); break;
5536d337adffa6d1c4c953e83730ad58747f554877Dianne Hackborn        }
56d4ac8d7b3de27a9f0e4c6af2496ca71d794e42d1Dianne Hackborn        if (switching) pw.print(" SWITCHING");
57d4ac8d7b3de27a9f0e4c6af2496ca71d794e42d1Dianne Hackborn        if (initializing) pw.print(" INITIALIZING");
58d4ac8d7b3de27a9f0e4c6af2496ca71d794e42d1Dianne Hackborn        pw.println();
5980a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn    }
6080a4af2bbc6af42ae605e454bf89558e564f5244Dianne Hackborn}
61