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; 21928e054931d357326613c78e62f4d850b7c442ffJeff Brown 22928e054931d357326613c78e62f4d850b7c442ffJeff Brown/** 23928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Functions as a handle for a window that can receive input. 24928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Enables the native input dispatcher to refer indirectly to the window manager's window state. 25928e054931d357326613c78e62f4d850b7c442ffJeff Brown * @hide 26928e054931d357326613c78e62f4d850b7c442ffJeff Brown */ 27928e054931d357326613c78e62f4d850b7c442ffJeff Brownpublic final class InputWindowHandle { 28928e054931d357326613c78e62f4d850b7c442ffJeff Brown // Pointer to the native input window handle. 29928e054931d357326613c78e62f4d850b7c442ffJeff Brown // This field is lazily initialized via JNI. 30928e054931d357326613c78e62f4d850b7c442ffJeff Brown @SuppressWarnings("unused") 31928e054931d357326613c78e62f4d850b7c442ffJeff Brown private int ptr; 32928e054931d357326613c78e62f4d850b7c442ffJeff Brown 33928e054931d357326613c78e62f4d850b7c442ffJeff Brown // The input application handle. 34928e054931d357326613c78e62f4d850b7c442ffJeff Brown public final InputApplicationHandle inputApplicationHandle; 35928e054931d357326613c78e62f4d850b7c442ffJeff Brown 36928e054931d357326613c78e62f4d850b7c442ffJeff Brown // The window manager's window state. 374532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown public final Object windowState; 38928e054931d357326613c78e62f4d850b7c442ffJeff Brown 399302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // The input channel associated with the window. 409302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public InputChannel inputChannel; 419302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 429302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // The window name. 439302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public String name; 449302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 459302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window layout params attributes. (WindowManager.LayoutParams) 469302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int layoutParamsFlags; 479302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int layoutParamsType; 489302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 499302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Dispatching timeout. 509302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public long dispatchingTimeoutNanos; 519302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 529302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window frame. 539302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int frameLeft; 549302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int frameTop; 559302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int frameRight; 569302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int frameBottom; 579302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 589302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Global scaling factor applied to touch events when they are dispatched 599302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // to the window 609302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public float scaleFactor; 619302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 629302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window touchable region. 639302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public final Region touchableRegion = new Region(); 649302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 659302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window is visible. 669302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean visible; 679302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 689302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window can receive keys. 699302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean canReceiveKeys; 709302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 719302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window has focus. 729302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean hasFocus; 739302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 749302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window has wallpaper. (window is the current wallpaper target) 759302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean hasWallpaper; 769302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 779302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Input event dispatching is paused. 789302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public boolean paused; 799302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 809302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window layer. 819302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int layer; 829302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 839302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Id of process and user that owns the window. 849302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int ownerPid; 859302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int ownerUid; 869302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 879302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown // Window input features. 889302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown public int inputFeatures; 899302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 9059c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner // Display this input is on. 9159c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner public final int displayId; 9259c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner 93928e054931d357326613c78e62f4d850b7c442ffJeff Brown private native void nativeDispose(); 94928e054931d357326613c78e62f4d850b7c442ffJeff Brown 95928e054931d357326613c78e62f4d850b7c442ffJeff Brown public InputWindowHandle(InputApplicationHandle inputApplicationHandle, 9659c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner Object windowState, int displayId) { 97928e054931d357326613c78e62f4d850b7c442ffJeff Brown this.inputApplicationHandle = inputApplicationHandle; 98928e054931d357326613c78e62f4d850b7c442ffJeff Brown this.windowState = windowState; 9959c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner this.displayId = displayId; 100928e054931d357326613c78e62f4d850b7c442ffJeff Brown } 101928e054931d357326613c78e62f4d850b7c442ffJeff Brown 102928e054931d357326613c78e62f4d850b7c442ffJeff Brown @Override 103928e054931d357326613c78e62f4d850b7c442ffJeff Brown protected void finalize() throws Throwable { 104cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown try { 105cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown nativeDispose(); 106cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown } finally { 107cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown super.finalize(); 108cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown } 109928e054931d357326613c78e62f4d850b7c442ffJeff Brown } 110928e054931d357326613c78e62f4d850b7c442ffJeff Brown} 111