/*
 * Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
 * for details. All rights reserved. Use of this source code is governed by a
 * BSD-style license that can be found in the LICENSE file.
 */
/**
 * @assertion IFrameElement.created()
 * Constructor instantiated by the DOM when a custom element has been created.
 * This can only be called by subclasses from their created constructor.
 * @description Checks that this constructor can be called only by subclasses
 * @issue 43293
 */
import "dart:html";
import "../../../Utils/expect.dart";

class MyIFrameElement extends IFrameElement {
  factory MyIFrameElement() {
    return new Element.tag('my-iframe') as MyIFrameElement;
  }

  MyIFrameElement.created() : super.created();

  String testit() => "In testit";
}

main() {
  var ife;
  Expect.throws(() {
    ife = new IFrameElement.created();
  });

  var tag = 'my-iframe';
  document.registerElement(tag, MyIFrameElement, extendsTag: "iframe");

  ife = document.createElement('iframe', 'my-iframe');
  document.body?.append(ife);
  Expect.isTrue(ife is MyIFrameElement);
  Expect.equals("In testit", ife.testit());
}
