Task.java revision 01f79cf91610ec9f85345ea6eeae50ea2f28578f
1b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner/* 2b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * Copyright (C) 2013 The Android Open Source Project 3b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * 4b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * Licensed under the Apache License, Version 2.0 (the "License"); 5b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * you may not use this file except in compliance with the License. 6b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * You may obtain a copy of the License at 7b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * 8b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * http://www.apache.org/licenses/LICENSE-2.0 9b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * 10b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * Unless required by applicable law or agreed to in writing, software 11b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * distributed under the License is distributed on an "AS IS" BASIS, 12b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * See the License for the specific language governing permissions and 14b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner * limitations under the License. 15b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner */ 16b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner 17b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautnerpackage com.android.server.wm; 18b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner 1942bf39edbdad19f51497938d0a3469dd772f19e8Craig Mautnerimport static com.android.server.wm.WindowManagerService.TAG; 2042bf39edbdad19f51497938d0a3469dd772f19e8Craig Mautner 212c2549c5f44b712dbbf66a69d91f07d6f5336ee6Craig Mautnerimport android.util.EventLog; 2242bf39edbdad19f51497938d0a3469dd772f19e8Craig Mautnerimport android.util.Slog; 232c2549c5f44b712dbbf66a69d91f07d6f5336ee6Craig Mautner 24c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautnerclass Task { 25c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner TaskStack mStack; 2605d6272bad2d707b488a6f8784ce8aea5e25b110Craig Mautner final AppTokenList mAppTokens = new AppTokenList(); 2705d6272bad2d707b488a6f8784ce8aea5e25b110Craig Mautner final int taskId; 28ac6f843c917b68ea8805711965b149a9338e3a0eCraig Mautner final int mUserId; 299ef471f7f2f59de032d7cb9c3c7241486109979eCraig Mautner boolean mDeferRemoval = false; 30b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner 31ac6f843c917b68ea8805711965b149a9338e3a0eCraig Mautner Task(AppWindowToken wtoken, TaskStack stack, int userId) { 32b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner taskId = wtoken.groupId; 33b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner mAppTokens.add(wtoken); 34c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mStack = stack; 35ac6f843c917b68ea8805711965b149a9338e3a0eCraig Mautner mUserId = userId; 36c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 37c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 38c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner DisplayContent getDisplayContent() { 39c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner return mStack.getDisplayContent(); 40c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 41c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 42c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner void addAppToken(int addPos, AppWindowToken wtoken) { 4342bf39edbdad19f51497938d0a3469dd772f19e8Craig Mautner final int lastPos = mAppTokens.size(); 4401f79cf91610ec9f85345ea6eeae50ea2f28578fCraig Mautner for (int pos = 0; pos < lastPos && pos < addPos; ++pos) { 4501f79cf91610ec9f85345ea6eeae50ea2f28578fCraig Mautner if (mAppTokens.get(pos).removed) { 4601f79cf91610ec9f85345ea6eeae50ea2f28578fCraig Mautner // addPos assumes removed tokens are actually gone. 4701f79cf91610ec9f85345ea6eeae50ea2f28578fCraig Mautner ++addPos; 4801f79cf91610ec9f85345ea6eeae50ea2f28578fCraig Mautner } 4942bf39edbdad19f51497938d0a3469dd772f19e8Craig Mautner } 50c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mAppTokens.add(addPos, wtoken); 5142bf39edbdad19f51497938d0a3469dd772f19e8Craig Mautner mDeferRemoval = false; 52c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 53c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 54c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner boolean removeAppToken(AppWindowToken wtoken) { 5542bf39edbdad19f51497938d0a3469dd772f19e8Craig Mautner boolean removed = mAppTokens.remove(wtoken); 56c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner if (mAppTokens.size() == 0) { 572c2549c5f44b712dbbf66a69d91f07d6f5336ee6Craig Mautner EventLog.writeEvent(com.android.server.EventLogTags.WM_TASK_REMOVED, taskId, 582c2549c5f44b712dbbf66a69d91f07d6f5336ee6Craig Mautner "removeAppToken: last token"); 59c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 6042bf39edbdad19f51497938d0a3469dd772f19e8Craig Mautner return removed; 61b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner } 625d9c7be84d9628c1cf199fcf9015942835c4671bCraig Mautner 635d9c7be84d9628c1cf199fcf9015942835c4671bCraig Mautner @Override 645d9c7be84d9628c1cf199fcf9015942835c4671bCraig Mautner public String toString() { 654cd0c13f8f765118a24e31548c058b5029481beaCraig Mautner return "{taskId=" + taskId + " appTokens=" + mAppTokens + "}"; 665d9c7be84d9628c1cf199fcf9015942835c4671bCraig Mautner } 67b1fd65c0ff5784b90d765edb7e3c3115d767dff0Craig Mautner} 68