| Index: test/codegen/lib/html/instance_of_test.dart
 | 
| diff --git a/test/codegen/lib/html/instance_of_test.dart b/test/codegen/lib/html/instance_of_test.dart
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..da664db79bef29053fa8ed0c0c4cb3cc75604706
 | 
| --- /dev/null
 | 
| +++ b/test/codegen/lib/html/instance_of_test.dart
 | 
| @@ -0,0 +1,70 @@
 | 
| +library InstanceOfTest;
 | 
| +import 'package:unittest/unittest.dart';
 | 
| +import 'package:unittest/html_config.dart';
 | 
| +import 'dart:html';
 | 
| +
 | 
| +main() {
 | 
| +  CanvasElement canvas;
 | 
| +
 | 
| +  canvas = new Element.tag('canvas');
 | 
| +  canvas.attributes['width'] = '100';
 | 
| +  canvas.attributes['height'] = '100';
 | 
| +  document.body.append(canvas);
 | 
| +
 | 
| +  var isCanvasRenderingContext = predicate((x) => x is CanvasRenderingContext,
 | 
| +      'is a CanvasRenderingContext');
 | 
| +  var isCanvasRenderingContext2D =
 | 
| +      predicate((x) => x is CanvasRenderingContext2D,
 | 
| +      'is a CanvasRenderingContext2D');
 | 
| +  var isElement = predicate((x) => x is Element, 'is an Element');
 | 
| +  var isCanvasElement =
 | 
| +      predicate((x) => x is CanvasElement, 'is a CanvasElement');
 | 
| +  var isImageData = predicate((x) => x is ImageData, 'is an ImageData');
 | 
| +  //var isUint8ClampedArray =
 | 
| +  //  predicate((x) => x is Uint8ClampedArray, 'is a Uint8ClampedArray');
 | 
| +  var isIntList =
 | 
| +      predicate((x) => x is List<int>, 'is a List<int>');
 | 
| +
 | 
| +  useHtmlConfiguration();
 | 
| +  test('Instanceof', () {
 | 
| +    expect(canvas, isNot(isCanvasRenderingContext));
 | 
| +    expect(canvas, isNot(isCanvasRenderingContext2D));
 | 
| +    expect(canvas, isElement);
 | 
| +    expect(canvas, isCanvasElement);
 | 
| +    expect(canvas, isNot(isImageData));
 | 
| +    // expect(canvas, isNot(isCanvasPixelArray));
 | 
| +
 | 
| +    CanvasRenderingContext2D context = canvas.getContext('2d');
 | 
| +    expect(context, isCanvasRenderingContext);
 | 
| +    expect(context, isCanvasRenderingContext2D);
 | 
| +    expect(context, isNot(isElement));
 | 
| +    expect(context, isNot(isCanvasElement));
 | 
| +    expect(context, isNot(isImageData));
 | 
| +    // expect(context, isNot(isCanvasPixelArray));
 | 
| +
 | 
| +    // FIXME(b/5286633): Interface injection type check workaround.
 | 
| +    var image = context.createImageData(canvas.width as dynamic,
 | 
| +                                        canvas.height as dynamic);
 | 
| +    expect(image, isNot(isCanvasRenderingContext));
 | 
| +    expect(image, isNot(isCanvasRenderingContext2D));
 | 
| +    expect(image, isNot(isElement));
 | 
| +    expect(image, isNot(isCanvasElement));
 | 
| +    expect(image, isImageData);
 | 
| +    // expect(image, isNot(isCanvasPixelArray));
 | 
| +
 | 
| +    // Include CanvasPixelArray since constructor and prototype are not
 | 
| +    // available until one is created.
 | 
| +    var bytes = image.data;
 | 
| +    expect(bytes, isNot(isCanvasRenderingContext));
 | 
| +    expect(bytes, isNot(isCanvasRenderingContext2D));
 | 
| +    expect(bytes, isNot(isElement));
 | 
| +    expect(bytes, isNot(isCanvasElement));
 | 
| +    expect(bytes, isNot(isImageData));
 | 
| +    expect(bytes, isIntList);
 | 
| +
 | 
| +    // FIXME: Ensure this is an SpanElement when we next update
 | 
| +    // WebKit IDL.
 | 
| +    var span = new Element.tag('span');
 | 
| +    expect(span, isElement);
 | 
| +  });
 | 
| +}
 | 
| 
 |