// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// https://dom.spec.whatwg.org/#mixin-documentorshadowroot
// https://w3c.github.io/webcomponents/spec/shadow/#extensions-to-the-documentorshadowroot-mixin
[
    LegacyTreatAsPartialInterface,
    NoInterfaceObject
] interface DocumentOrShadowRoot {
    // Selection API
    // https://w3c.github.io/selection-api/#extensions-to-document-interface
    Selection? getSelection();
    // CSSOM View Module
    // https://drafts.csswg.org/cssom-view/#extensions-to-the-document-interface
    Element? elementFromPoint(double x, double y);
    sequence<Element> elementsFromPoint(double x, double y);
    readonly attribute Element? activeElement;
    [SameObject] readonly attribute StyleSheetList styleSheets;
    // PointerLock API
    // https://w3c.github.io/pointerlock/
    readonly attribute Element? pointerLockElement;
    // Fullscreen API
    // https://fullscreen.spec.whatwg.org/
    [RuntimeEnabled=FullscreenUnprefixed] readonly attribute Element? fullscreenElement;
    [RuntimeEnabled=ConstructableStylesheets] attribute StyleSheetList moreStyleSheets;
};
