1d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright/* 2d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Copyright (C) 2011 The Android Open Source Project 3d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * 4d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Licensed under the Apache License, Version 2.0 (the "License"); 5d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * you may not use this file except in compliance with the License. 6d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * You may obtain a copy of the License at 7d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * 8d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * http://www.apache.org/licenses/LICENSE-2.0 9d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * 10d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Unless required by applicable law or agreed to in writing, software 11d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * distributed under the License is distributed on an "AS IS" BASIS, 12d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * See the License for the specific language governing permissions and 14d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * limitations under the License. 15d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright */ 16d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 17d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#ifndef _UI_INPUT_WINDOW_H 18d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#define _UI_INPUT_WINDOW_H 19d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 20d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#include <input/Input.h> 21d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#include <input/InputTransport.h> 22d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#include <ui/Rect.h> 23d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#include <ui/Region.h> 24d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#include <utils/RefBase.h> 25d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#include <utils/Timers.h> 26d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#include <utils/String8.h> 27d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 28d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#include "InputApplication.h" 29d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 30d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wrightnamespace android { 31d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 32d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 33d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright/* 34d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Describes the properties of a window that can receive input. 35d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright */ 36d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wrightstruct InputWindowInfo { 37d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright // Window flags from WindowManager.LayoutParams 38d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright enum { 39d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 0x00000001, 40d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_DIM_BEHIND = 0x00000002, 41d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_BLUR_BEHIND = 0x00000004, 42d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_NOT_FOCUSABLE = 0x00000008, 43d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_NOT_TOUCHABLE = 0x00000010, 44d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_NOT_TOUCH_MODAL = 0x00000020, 45d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_TOUCHABLE_WHEN_WAKING = 0x00000040, 46d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_KEEP_SCREEN_ON = 0x00000080, 47d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_LAYOUT_IN_SCREEN = 0x00000100, 48d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_LAYOUT_NO_LIMITS = 0x00000200, 49d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_FULLSCREEN = 0x00000400, 50d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_FORCE_NOT_FULLSCREEN = 0x00000800, 51d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_DITHER = 0x00001000, 52d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_SECURE = 0x00002000, 53d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_SCALED = 0x00004000, 54d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_IGNORE_CHEEK_PRESSES = 0x00008000, 55d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_LAYOUT_INSET_DECOR = 0x00010000, 56d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_ALT_FOCUSABLE_IM = 0x00020000, 57d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_WATCH_OUTSIDE_TOUCH = 0x00040000, 58d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_SHOW_WHEN_LOCKED = 0x00080000, 59d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_SHOW_WALLPAPER = 0x00100000, 60d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_TURN_SCREEN_ON = 0x00200000, 61d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_DISMISS_KEYGUARD = 0x00400000, 62d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_SPLIT_TOUCH = 0x00800000, 63d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_SLIPPERY = 0x20000000, 64d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FLAG_NEEDS_MENU_KEY = 0x40000000, 65d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright }; 66d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 67d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright // Window types from WindowManager.LayoutParams 68d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright enum { 69d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FIRST_APPLICATION_WINDOW = 1, 70d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_BASE_APPLICATION = 1, 71d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_APPLICATION = 2, 72d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_APPLICATION_STARTING = 3, 73d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright LAST_APPLICATION_WINDOW = 99, 74d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FIRST_SUB_WINDOW = 1000, 75d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_APPLICATION_PANEL = FIRST_SUB_WINDOW, 76d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_APPLICATION_MEDIA = FIRST_SUB_WINDOW+1, 77d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_APPLICATION_SUB_PANEL = FIRST_SUB_WINDOW+2, 78d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_APPLICATION_ATTACHED_DIALOG = FIRST_SUB_WINDOW+3, 79d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_APPLICATION_MEDIA_OVERLAY = FIRST_SUB_WINDOW+4, 80d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright LAST_SUB_WINDOW = 1999, 81d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright FIRST_SYSTEM_WINDOW = 2000, 82d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_STATUS_BAR = FIRST_SYSTEM_WINDOW, 83d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_SEARCH_BAR = FIRST_SYSTEM_WINDOW+1, 84d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_PHONE = FIRST_SYSTEM_WINDOW+2, 85d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_SYSTEM_ALERT = FIRST_SYSTEM_WINDOW+3, 86d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_KEYGUARD = FIRST_SYSTEM_WINDOW+4, 87d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_TOAST = FIRST_SYSTEM_WINDOW+5, 88d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_SYSTEM_OVERLAY = FIRST_SYSTEM_WINDOW+6, 89d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_PRIORITY_PHONE = FIRST_SYSTEM_WINDOW+7, 90d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_SYSTEM_DIALOG = FIRST_SYSTEM_WINDOW+8, 91d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_KEYGUARD_DIALOG = FIRST_SYSTEM_WINDOW+9, 92d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_SYSTEM_ERROR = FIRST_SYSTEM_WINDOW+10, 93d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_INPUT_METHOD = FIRST_SYSTEM_WINDOW+11, 94d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_INPUT_METHOD_DIALOG= FIRST_SYSTEM_WINDOW+12, 95d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_WALLPAPER = FIRST_SYSTEM_WINDOW+13, 96d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_STATUS_BAR_PANEL = FIRST_SYSTEM_WINDOW+14, 97d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_SECURE_SYSTEM_OVERLAY = FIRST_SYSTEM_WINDOW+15, 98d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_DRAG = FIRST_SYSTEM_WINDOW+16, 99d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_STATUS_BAR_SUB_PANEL = FIRST_SYSTEM_WINDOW+17, 100d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_POINTER = FIRST_SYSTEM_WINDOW+18, 101d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_NAVIGATION_BAR = FIRST_SYSTEM_WINDOW+19, 102d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_VOLUME_OVERLAY = FIRST_SYSTEM_WINDOW+20, 103d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright TYPE_BOOT_PROGRESS = FIRST_SYSTEM_WINDOW+21, 10451eb29fa9a2ffe9c5adb9ea25bfbd51992ff16a4Conley Owens TYPE_MAGNIFICATION_OVERLAY = FIRST_SYSTEM_WINDOW+22, 105d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright LAST_SYSTEM_WINDOW = 2999, 106d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright }; 107d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 108d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright enum { 109d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright INPUT_FEATURE_DISABLE_TOUCH_PAD_GESTURES = 0x00000001, 110d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright INPUT_FEATURE_NO_INPUT_CHANNEL = 0x00000002, 111d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright INPUT_FEATURE_DISABLE_USER_ACTIVITY = 0x00000004, 112d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright }; 113d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 114d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright sp<InputChannel> inputChannel; 115d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright String8 name; 116d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t layoutParamsFlags; 117d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t layoutParamsType; 118d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright nsecs_t dispatchingTimeout; 119d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t frameLeft; 120d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t frameTop; 121d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t frameRight; 122d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t frameBottom; 123d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright float scaleFactor; 124d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright Region touchableRegion; 125d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright bool visible; 126d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright bool canReceiveKeys; 127d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright bool hasFocus; 128d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright bool hasWallpaper; 129d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright bool paused; 130d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t layer; 131d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t ownerPid; 132d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t ownerUid; 133d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t inputFeatures; 134d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright int32_t displayId; 135d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 136d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright void addTouchableRegion(const Rect& region); 137d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 138d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright bool touchableRegionContainsPoint(int32_t x, int32_t y) const; 139d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright bool frameContainsPoint(int32_t x, int32_t y) const; 140d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 141d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright /* Returns true if the window is of a trusted type that is allowed to silently 142d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * overlay other windows for the purpose of implementing the secure views feature. 143d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Trusted overlays, such as IME windows, can partly obscure other windows without causing 144d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * motion events to be delivered to them with AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED. 145d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright */ 146d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright bool isTrustedOverlay() const; 147d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 148d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright bool supportsSplitTouch() const; 149d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright}; 150d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 151d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 152d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright/* 153d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Handle for a window that can receive input. 154d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * 155d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Used by the native input dispatcher to indirectly refer to the window manager objects 156d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * that describe a window. 157d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright */ 158d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wrightclass InputWindowHandle : public RefBase { 159d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wrightpublic: 160d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright const sp<InputApplicationHandle> inputApplicationHandle; 161d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 162d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright inline const InputWindowInfo* getInfo() const { 163d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright return mInfo; 164d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright } 165d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 166d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright inline sp<InputChannel> getInputChannel() const { 167d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright return mInfo ? mInfo->inputChannel : NULL; 168d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright } 169d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 170d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright inline String8 getName() const { 171d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright return mInfo ? mInfo->name : String8("<invalid>"); 172d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright } 173d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 174d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright inline nsecs_t getDispatchingTimeout(nsecs_t defaultValue) const { 175d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright return mInfo ? mInfo->dispatchingTimeout : defaultValue; 176d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright } 177d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 178d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright /** 179d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Requests that the state of this object be updated to reflect 180d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * the most current available information about the application. 181d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * 182d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * This method should only be called from within the input dispatcher's 183d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * critical section. 184d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * 185d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Returns true on success, or false if the handle is no longer valid. 186d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright */ 187d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright virtual bool updateInfo() = 0; 188d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 189d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright /** 190d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * Releases the storage used by the associated information when it is 191d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright * no longer needed. 192d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright */ 193d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright void releaseInfo(); 194d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 195d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wrightprotected: 196d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright InputWindowHandle(const sp<InputApplicationHandle>& inputApplicationHandle); 197d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright virtual ~InputWindowHandle(); 198d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 199d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright InputWindowInfo* mInfo; 200d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright}; 201d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 202d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright} // namespace android 203d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright 204d02c5b6aace05d9fd938e2d03705ac4f60f8da19Michael Wright#endif // _UI_INPUT_WINDOW_H 205