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