mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 12:48:10 +00:00
4283c3e41e
R=sigmund@google.com Review URL: https://codereview.chromium.org//231413003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34890 260f80e4-7a28-3924-810f-c04153c831b5
46 lines
990 B
Dart
46 lines
990 B
Dart
library HiddenDom1Test;
|
|
import 'package:unittest/unittest.dart';
|
|
import 'package:unittest/html_config.dart';
|
|
import 'dart:html';
|
|
|
|
// Test that the dart:html API does not leak native jsdom methods:
|
|
// onfocus setter.
|
|
|
|
main() {
|
|
useHtmlConfiguration();
|
|
|
|
test('test1', () {
|
|
document.body.children.add(new Element.html(r'''
|
|
<div id='div1'>
|
|
Hello World!
|
|
</div>'''));
|
|
Element e = document.query('#div1');
|
|
expect(e, isNotNull);
|
|
|
|
checkNoSuchMethod(() { confuse(e).onfocus = null; });
|
|
});
|
|
|
|
}
|
|
|
|
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.
|
|
|
|
checkNoSuchMethod(action()) {
|
|
var ex = null;
|
|
try {
|
|
action();
|
|
} catch (e) {
|
|
ex = e;
|
|
}
|
|
if (ex == null)
|
|
expect(false, isTrue, reason: 'Action should have thrown exception');
|
|
|
|
expect(ex, isNoSuchMethodError);
|
|
}
|