<!DOCTYPE html>
<meta charset="utf-8">
<title>HTML Test: display fallback content</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>

var t1 = async_test("the typemustmatch attribute is specified");
var t2 = async_test("the typemustmatch attribute is not specified");

</script>
<body onload="t1.done(); t2.done()">
<object id="obj"></object>
<div id="log"></div>
<script>

t1.step(function() {
  var obj1 = document.createElement("object");
  obj1.setAttribute("data", "/images/blue.png");
  obj1.setAttribute("type", "text/plain");
  obj1.setAttribute("typemustmatch", "");
  obj1.onload = t1.step_func(function () {
    assert_true("typeMustMatch" in obj1, "typeMustMatch is not supported.");
    assert_unreached("The image of the first object should not be loaded.");
  });
  document.getElementById("obj").appendChild(obj1);
});

t2.step(function () {
  var obj2 = document.createElement("object");
  obj2.setAttribute("data", "test2.html");
  obj2.setAttribute("type", "text/plain");
  obj2.onload = t2.step_func( function () {
    assert_not_equals(obj2.contentDocument, null, "The test2.html should be loaded.");
  });
  document.getElementById("obj").appendChild(obj2);
});

</script>
</body>
