<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>WebMainResource</key>
	<dict>
		<key>WebResourceData</key>
		<string>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;&lt;html&gt;&lt;head&gt;
&lt;title&gt;Empty iFrame causes archive exception&lt;/title&gt;
&lt;script&gt;
    if (window.layoutTestController)
        layoutTestController.dumpDOMAsWebArchive();
&lt;/script&gt;
&lt;/head&gt;&lt;body&gt;

&lt;p&gt;
Here lies an `iframe` with no content/src:
&lt;/p&gt;&lt;p&gt;

&lt;iframe id="emptyFrame" style="width: 100%; height: 100px; border: solid 2px red;"&gt;&lt;/iframe&gt;



&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
		<key>WebResourceFrameName</key>
		<string></string>
		<key>WebResourceMIMEType</key>
		<string>text/html</string>
		<key>WebResourceTextEncodingName</key>
		<string>UTF-8</string>
		<key>WebResourceURL</key>
		<string>file:///LayoutTests/webarchive/archive-empty-frame-dom.html</string>
	</dict>
	<key>WebSubframeArchives</key>
	<array>
		<dict>
			<key>WebMainResource</key>
			<dict>
				<key>WebResourceData</key>
				<string>&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;</string>
				<key>WebResourceFrameName</key>
				<string>emptyFrame</string>
				<key>WebResourceMIMEType</key>
				<string>text/html</string>
				<key>WebResourceTextEncodingName</key>
				<string>UTF-8</string>
				<key>WebResourceURL</key>
				<string>about:blank</string>
			</dict>
		</dict>
	</array>
</dict>
</plist>
