Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05ca61c1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Print window flags in dumpsys input"

parents ce5576cd 67d44509
Loading
Loading
Loading
Loading
+24 −16
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ struct InputWindowInfo {
    InputWindowInfo(const Parcel& from);

    // Window flags from WindowManager.LayoutParams
    enum {
    enum : uint32_t {
        FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 0x00000001,
        FLAG_DIM_BEHIND = 0x00000002,
        FLAG_BLUR_BEHIND = 0x00000004,
@@ -62,7 +62,14 @@ struct InputWindowInfo {
        FLAG_TURN_SCREEN_ON = 0x00200000,
        FLAG_DISMISS_KEYGUARD = 0x00400000,
        FLAG_SPLIT_TOUCH = 0x00800000,
        FLAG_HARDWARE_ACCELERATED = 0x01000000,
        FLAG_LAYOUT_IN_OVERSCAN = 0x02000000,
        FLAG_TRANSLUCENT_STATUS = 0x04000000,
        FLAG_TRANSLUCENT_NAVIGATION = 0x08000000,
        FLAG_LOCAL_FOCUS_MODE = 0x10000000,
        FLAG_SLIPPERY = 0x20000000,
        FLAG_LAYOUT_ATTACHED_IN_DECOR = 0x40000000,
        FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = 0x80000000,
    };

    // Window types from WindowManager.LayoutParams
@@ -191,6 +198,7 @@ struct InputWindowInfo {
    static InputWindowInfo read(const Parcel& from);
};

std::string inputWindowFlagsToString(uint32_t flags);

/*
 * Handle for a window that can receive input.
+114 −1
Original line number Diff line number Diff line
@@ -17,9 +17,10 @@
#define LOG_TAG "InputWindow"
#define LOG_NDEBUG 0

#include <android-base/stringprintf.h>
#include <binder/Parcel.h>
#include <input/InputWindow.h>
#include <input/InputTransport.h>
#include <input/InputWindow.h>

#include <log/log.h>

@@ -28,6 +29,118 @@

namespace android {

const char* inputWindowFlagToString(uint32_t flag) {
    switch (flag) {
        case InputWindowInfo::FLAG_ALLOW_LOCK_WHILE_SCREEN_ON: {
            return "ALLOW_LOCK_WHILE_SCREEN_ON";
        }
        case InputWindowInfo::FLAG_DIM_BEHIND: {
            return "DIM_BEHIND";
        }
        case InputWindowInfo::FLAG_BLUR_BEHIND: {
            return "BLUR_BEHIND";
        }
        case InputWindowInfo::FLAG_NOT_FOCUSABLE: {
            return "NOT_FOCUSABLE";
        }
        case InputWindowInfo::FLAG_NOT_TOUCHABLE: {
            return "NOT_TOUCHABLE";
        }
        case InputWindowInfo::FLAG_NOT_TOUCH_MODAL: {
            return "NOT_TOUCH_MODAL";
        }
        case InputWindowInfo::FLAG_TOUCHABLE_WHEN_WAKING: {
            return "TOUCHABLE_WHEN_WAKING";
        }
        case InputWindowInfo::FLAG_KEEP_SCREEN_ON: {
            return "KEEP_SCREEN_ON";
        }
        case InputWindowInfo::FLAG_LAYOUT_IN_SCREEN: {
            return "LAYOUT_IN_SCREEN";
        }
        case InputWindowInfo::FLAG_LAYOUT_NO_LIMITS: {
            return "LAYOUT_NO_LIMITS";
        }
        case InputWindowInfo::FLAG_FULLSCREEN: {
            return "FULLSCREEN";
        }
        case InputWindowInfo::FLAG_FORCE_NOT_FULLSCREEN: {
            return "FORCE_NOT_FULLSCREEN";
        }
        case InputWindowInfo::FLAG_DITHER: {
            return "DITHER";
        }
        case InputWindowInfo::FLAG_SECURE: {
            return "SECURE";
        }
        case InputWindowInfo::FLAG_SCALED: {
            return "SCALED";
        }
        case InputWindowInfo::FLAG_IGNORE_CHEEK_PRESSES: {
            return "IGNORE_CHEEK_PRESSES";
        }
        case InputWindowInfo::FLAG_LAYOUT_INSET_DECOR: {
            return "LAYOUT_INSET_DECOR";
        }
        case InputWindowInfo::FLAG_ALT_FOCUSABLE_IM: {
            return "ALT_FOCUSABLE_IM";
        }
        case InputWindowInfo::FLAG_WATCH_OUTSIDE_TOUCH: {
            return "WATCH_OUTSIDE_TOUCH";
        }
        case InputWindowInfo::FLAG_SHOW_WHEN_LOCKED: {
            return "SHOW_WHEN_LOCKED";
        }
        case InputWindowInfo::FLAG_SHOW_WALLPAPER: {
            return "SHOW_WALLPAPER";
        }
        case InputWindowInfo::FLAG_TURN_SCREEN_ON: {
            return "TURN_SCREEN_ON";
        }
        case InputWindowInfo::FLAG_DISMISS_KEYGUARD: {
            return "DISMISS_KEYGUARD";
        }
        case InputWindowInfo::FLAG_SPLIT_TOUCH: {
            return "SPLIT_TOUCH";
        }
        case InputWindowInfo::FLAG_HARDWARE_ACCELERATED: {
            return "HARDWARE_ACCELERATED";
        }
        case InputWindowInfo::FLAG_LAYOUT_IN_OVERSCAN: {
            return "LAYOUT_IN_OVERSCAN";
        }
        case InputWindowInfo::FLAG_TRANSLUCENT_STATUS: {
            return "TRANSLUCENT_STATUS";
        }
        case InputWindowInfo::FLAG_TRANSLUCENT_NAVIGATION: {
            return "TRANSLUCENT_NAVIGATION";
        }
        case InputWindowInfo::FLAG_LOCAL_FOCUS_MODE: {
            return "LOCAL_FOCUS_MODE";
        }
        case InputWindowInfo::FLAG_SLIPPERY: {
            return "SLIPPERY";
        }
        case InputWindowInfo::FLAG_LAYOUT_ATTACHED_IN_DECOR: {
            return "LAYOUT_ATTACHED_IN_DECOR";
        }
        case InputWindowInfo::FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS: {
            return "DRAWS_SYSTEM_BAR_BACKGROUNDS";
        }
    }
    return "UNKNOWN";
}

std::string inputWindowFlagsToString(uint32_t flags) {
    std::string result;
    for (BitSet32 bits(flags); !bits.isEmpty();) {
        uint32_t bit = bits.clearLastMarkedBit(); // counts from left
        const uint32_t flag = 1 << (32 - bit - 1);
        result += android::base::StringPrintf("%s | ", inputWindowFlagToString(flag));
    }
    return result;
}

// --- InputWindowInfo ---
void InputWindowInfo::addTouchableRegion(const Rect& region) {
    touchableRegion.orSelf(region);
+3 −0
Original line number Diff line number Diff line
@@ -4101,6 +4101,9 @@ void InputDispatcher::dumpDispatchStateLocked(std::string& dump) {
                    dump += StringPrintf(", ownerPid=%d, ownerUid=%d, dispatchingTimeout=%0.3fms\n",
                                         windowInfo->ownerPid, windowInfo->ownerUid,
                                         windowInfo->dispatchingTimeout / 1000000.0);
                    dump += StringPrintf(INDENT4 "    flags: %s\n",
                                         inputWindowFlagsToString(windowInfo->layoutParamsFlags)
                                                 .c_str());
                }
            } else {
                dump += INDENT2 "Windows: <none>\n";