// Copyright (c) 2020, 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.

import 'dart:html';

import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package

// Test that the dart:html API does not leak native jsdom methods:
//   onfocus setter.

main() {
  test('test1', () {
    document.body!.children.add(
      new Element.html(r'''
<div id='div1'>
Hello World!
</div>'''),
    );
    Element? e = document.querySelector('#div1');
    expect(e, isNotNull);

    expect(() {
      confuse(e!).onfocus = null;
    }, throwsNoSuchMethodError);
  });
}

class Decoy {
  void set onfocus(x) {
    throw 'dead code';
  }
}

confuse(x) => opaqueTrue() ? x : (opaqueTrue() ? new Object() : new Decoy());

/** Returns `true`, but in a way that confuses the compiler. */
opaqueTrue() => true; // Expand as needed.
