/* * Copyright (c) 2014-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ package com.facebook.stetho.inspector.elements.android; import android.graphics.Rect; import android.view.View; import android.view.Window; import com.facebook.stetho.common.Accumulator; import com.facebook.stetho.inspector.elements.AbstractChainedDescriptor; import com.facebook.stetho.inspector.elements.Descriptor; import javax.annotation.Nullable; final class WindowDescriptor extends AbstractChainedDescriptor<Window> implements HighlightableDescriptor<Window> { @Override protected void onGetChildren(Window element, Accumulator<Object> children) { View decorView = element.peekDecorView(); if (decorView != null) { children.store(decorView); } } @Override @Nullable public View getViewAndBoundsForHighlighting(Window element, Rect bounds) { return element.peekDecorView(); } @Nullable @Override public Object getElementToHighlightAtPosition(Window element, int x, int y, Rect bounds) { final Descriptor.Host host = getHost(); View view = null; HighlightableDescriptor descriptor = null; if (host instanceof AndroidDescriptorHost) { view = element.peekDecorView(); descriptor = ((AndroidDescriptorHost) host).getHighlightableDescriptor(view); } return descriptor == null ? null : descriptor.getElementToHighlightAtPosition(view, x, y, bounds); } }