1928e054931d357326613c78e62f4d850b7c442ffJeff Brown/* 2928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Copyright (C) 2011 The Android Open Source Project 3928e054931d357326613c78e62f4d850b7c442ffJeff Brown * 4928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 5928e054931d357326613c78e62f4d850b7c442ffJeff Brown * you may not use this file except in compliance with the License. 6928e054931d357326613c78e62f4d850b7c442ffJeff Brown * You may obtain a copy of the License at 7928e054931d357326613c78e62f4d850b7c442ffJeff Brown * 8928e054931d357326613c78e62f4d850b7c442ffJeff Brown * http://www.apache.org/licenses/LICENSE-2.0 9928e054931d357326613c78e62f4d850b7c442ffJeff Brown * 10928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Unless required by applicable law or agreed to in writing, software 11928e054931d357326613c78e62f4d850b7c442ffJeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 12928e054931d357326613c78e62f4d850b7c442ffJeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13928e054931d357326613c78e62f4d850b7c442ffJeff Brown * See the License for the specific language governing permissions and 14928e054931d357326613c78e62f4d850b7c442ffJeff Brown * limitations under the License. 15928e054931d357326613c78e62f4d850b7c442ffJeff Brown */ 16928e054931d357326613c78e62f4d850b7c442ffJeff Brown 174532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brownpackage com.android.server.input; 18928e054931d357326613c78e62f4d850b7c442ffJeff Brown 199302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brownimport android.graphics.Region; 209302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brownimport android.view.InputChannel; 213787de16d24001eeb452e1c711d4290a396e67c9Vladislav Kaznacheevimport android.view.IWindow; 22928e054931d357326613c78e62f4d850b7c442ffJeff Brown 23928e054931d357326613c78e62f4d850b7c442ffJeff Brown/** 24928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Functions as a handle for a window that can receive input. 25928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Enables the native input dispatcher to refer indirectly to the window manager's window state. 26928e054931d357326613c78e62f4d850b7c442ffJeff Brown * @hide 27928e054931d357326613c78e62f4d850b7c442ffJeff Brown */ 28928e054931d357326613c78e62f4d850b7c442ffJeff Brownpublic final class InputWindowHandle { 29928e054931d357326613c78e62f4d850b7c442ffJeff Brown // Pointer to the native input window handle. 30928e054931d357326613c78e62f4d850b7c442ffJeff Brown // This field is lazily initialized via JNI. 31928e054931d357326613c78e62f4d850b7c442ffJeff Brown @SuppressWarnings("unused") 327e2a9dcf1a4044ed3f81c5b736b5027231395b73Ashok Bhat private long ptr; 33928e054931d357326613c78e62f4d850b7c442ffJeff Brown 34928e054931d357326613c78e62f4d850b7c442ffJeff Brown // The input application handle. 35928e054931d357326613c78e62f4d850b7c442ffJeff Brown public final InputApplicationHandle inputApplicationHandle; 36928e054931d357326613c78e62f4d850b7c442ffJeff Brown 37928e054931d357326613c78e62f4d850b7c442ffJeff Brown // The window manager's window state. 384532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown public final Object windowState; 39928e054931d357326613c78e62f4d850b7c442ffJeff Brown 403787de16d24001eeb452e1c711d4290a396e67c9Vladislav Kaznacheev // The client window. 413787de16d24001eeb452e1c711d4290a396e67c9Vladislav Kaznacheev public final IWindow clientWindow; 423787de16d24001eeb452e1c711d4290a396e67c9Vladislav Kaznacheev 439302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // The input channel associated with the window. 449302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public InputChannel inputChannel; 459302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 469302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // The window name. 479302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public String name; 489302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 499302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window layout params attributes. (WindowManager.LayoutParams) 509302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int layoutParamsFlags; 519302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int layoutParamsType; 529302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 539302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Dispatching timeout. 549302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public long dispatchingTimeoutNanos; 559302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 569302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window frame. 579302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int frameLeft; 589302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int frameTop; 599302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int frameRight; 609302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int frameBottom; 619302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 629302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Global scaling factor applied to touch events when they are dispatched 639302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // to the window 649302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public float scaleFactor; 659302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 669302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window touchable region. 679302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public final Region touchableRegion = new Region(); 689302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 699302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window is visible. 709302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean visible; 719302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 729302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window can receive keys. 739302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean canReceiveKeys; 749302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 759302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window has focus. 769302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean hasFocus; 779302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 789302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window has wallpaper. (window is the current wallpaper target) 799302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean hasWallpaper; 809302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 819302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Input event dispatching is paused. 829302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean paused; 839302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 849302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window layer. 859302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int layer; 869302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 879302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Id of process and user that owns the window. 889302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int ownerPid; 899302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int ownerUid; 909302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 919302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window input features. 929302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int inputFeatures; 939302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 9459c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner // Display this input is on. 9559c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner public final int displayId; 9659c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner 97928e054931d357326613c78e62f4d850b7c442ffJeff Brown private native void nativeDispose(); 98928e054931d357326613c78e62f4d850b7c442ffJeff Brown 99928e054931d357326613c78e62f4d850b7c442ffJeff Brown public InputWindowHandle(InputApplicationHandle inputApplicationHandle, 1003787de16d24001eeb452e1c711d4290a396e67c9Vladislav Kaznacheev Object windowState, IWindow clientWindow, int displayId) { 101928e054931d357326613c78e62f4d850b7c442ffJeff Brown this.inputApplicationHandle = inputApplicationHandle; 102928e054931d357326613c78e62f4d850b7c442ffJeff Brown this.windowState = windowState; 1033787de16d24001eeb452e1c711d4290a396e67c9Vladislav Kaznacheev this.clientWindow = clientWindow; 10459c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner this.displayId = displayId; 105928e054931d357326613c78e62f4d850b7c442ffJeff Brown } 106928e054931d357326613c78e62f4d850b7c442ffJeff Brown 107928e054931d357326613c78e62f4d850b7c442ffJeff Brown @Override 108f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski public String toString() { 109f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski return new StringBuilder(name) 110f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski .append(", layer=").append(layer) 111f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski .append(", frame=[").append(frameLeft).append(",").append(frameTop).append(",") 112f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski .append(frameRight).append(",").append(frameBottom).append("]") 113f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski .append(", touchableRegion=").append(touchableRegion) 11455149303d14adb242f29bf4e91e9428affff9628Filip Gruszczynski .append(", visible=").append(visible) 115f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski .toString(); 116f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski 117f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski } 118f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski 119f8a2a632023ef0bafa9c7d5a343cf84d10dbd241Filip Gruszczynski @Override 120928e054931d357326613c78e62f4d850b7c442ffJeff Brown protected void finalize() throws Throwable { 121cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown try { 122cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown nativeDispose(); 123cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown } finally { 124cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown super.finalize(); 125cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown } 126928e054931d357326613c78e62f4d850b7c442ffJeff Brown } 127928e054931d357326613c78e62f4d850b7c442ffJeff Brown} 128