From: <Saved by UnMHT>
Subject: =?iso-2022-jp?B?QSBzaW1wbGUgcGFnZQ==?=
Date: Wed, May 11 2011 15:36:36 GMT-0700
MIME-Version: 1.0
Content-Type: multipart/related;
	boundary="----=_NextPart_000_0000_87206557.D2C008B0";
	type="text/html"

------=_NextPart_000_0000_87206557.D2C008B0
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://localhost/simple_page.html

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; charset=
=3Diso-8859-1">


<title>A simple page</title>
<script>
if (window.testRunner) {
  testRunner.dumpAsText();
  testRunner.waitUntilDone();
}

window.onload = function() {
  var span=3Ddocument.createElement("span");
  if (window.location !=3D 'http://localhost/simple_page.html' &&
      document.domain !=3D 'localhost') {
     span.innerHTML = "PASS";
  } else {
     span.innerHTML = "FAIL window.location=" + window.location +
         " document.domain=" + document.domain;
  }

  document.getElementById('locDiv').appendChild(span);
  testRunner.notifyDone();
}

</script>
<base href=3D"http://localhost/"></base></head><body>
<h1>This is a very simple page</h1>
Very <b>basic</b> page.
<div id=3D'locDiv'></div>
</body></html>
------=_NextPart_000_0000_87206557.D2C008B0--
