// 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://html.spec.whatwg.org/C/custom-elements.html#customelementregistry

[Exposed=Window]
interface CustomElementRegistry {
    [CallWith=ScriptState, CEReactions, CustomElementCallbacks, RaisesException, MeasureAs=CustomElementRegistryDefine] void define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions options);
    any get(DOMString name);
    [CallWith=ScriptState,RaisesException] Promise<void> whenDefined(DOMString name);
    [CEReactions] void upgrade(Node root);
};

callback CustomElementConstructor = any ();

// Blink specific types. HTML standard does not explicitly define these types.
callback CustomElementAdoptedCallback = void (Document oldOwner, Document newOwner);
callback CustomElementAttributeChangedCallback = void (DOMString localName, DOMString? oldValue, DOMString? newValue, USVString? attrNamespace);
callback CustomElementFormAssociatedCallback = void (HTMLFormElement? form);
callback CustomElementFormDisabledCallback = void (boolean disabled);
enum FormStateRestoreMode { "restore", "autocomplete" };
callback CustomElementFormStateRestoreCallback = void (ControlValue value, FormStateRestoreMode mode);
