<!DOCTYPE html>
<meta charset="utf-8">
<title>HTML Test: object - attributes</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body onload="on_load()">
<div id="log"></div>
<form>
  <object id="obj1" data="blue.html" name="o" height="50" width="100"></object>
  <object id="obj2" name="p" type="image/png"></object>
</form>
<script>
  var obj1;
  var obj2;
  var t1 = async_test("object.contentWindow");
  var t3 = async_test("object.width");
  var t4 = async_test("object.height");

  setup(function() {
    obj1 = document.getElementById("obj1");
    obj2 = document.getElementById("obj2");
  });

  function on_load () {
    t1.step(function() {
      assert_equals(obj1.contentWindow.name, "o", "The contentWindow's name of the object element should be 'o'.");
      assert_equals(obj2.contentWindow, null, "The contentWindow of the object element should be null when it type attribute starts with 'image/'.");
      obj1.setAttribute("name", "o1");
      assert_equals(obj1.name, "o1", "The name of the object element should be 'o1'.");
      assert_equals(obj1.contentWindow.name, "o1", "The contentWindow's name of the object element should be 'o1'.");
      obj1.removeAttribute("name");
      assert_equals(obj1.name, "", "The name of the object element should be empty string.");
      assert_equals(obj1.contentWindow.name, "", "The contentWindow's name of the object element should be empty string.");
    });
    t1.done()

    t3.step(function() {
      assert_equals(getComputedStyle(obj1, null)["width"], "100px", "The width should be 100px.");
    });
    t3.done();

    t4.step(function() {
      assert_equals(getComputedStyle(obj1, null)["height"], "50px", "The height should be 50px.");
    });
    t4.done();
  }
</script>

</body>
