nsresult MediaDocument::CreateSyntheticDocument() { // Synthesize an empty html document nsresult rv; nsCOMPtr<nsINodeInfo> nodeInfo; nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::html, nsnull, kNameSpaceID_XHTML, nsIDOMNode::ELEMENT_NODE); NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY); nsRefPtr<nsGenericHTMLElement> root = NS_NewHTMLHtmlElement(nodeInfo.forget()); NS_ENSURE_TRUE(root, NS_ERROR_OUT_OF_MEMORY); NS_ASSERTION(GetChildCount() == 0, "Shouldn't have any kids"); rv = AppendChildTo(root, false); NS_ENSURE_SUCCESS(rv, rv); nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::head, nsnull, kNameSpaceID_XHTML, nsIDOMNode::ELEMENT_NODE); NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY); // Create a <head> so our title has somewhere to live nsRefPtr<nsGenericHTMLElement> head = NS_NewHTMLHeadElement(nodeInfo.forget()); NS_ENSURE_TRUE(head, NS_ERROR_OUT_OF_MEMORY); nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::meta, nsnull, kNameSpaceID_XHTML, nsIDOMNode::ELEMENT_NODE); NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY); nsRefPtr<nsGenericHTMLElement> metaContent = NS_NewHTMLMetaElement(nodeInfo.forget()); NS_ENSURE_TRUE(metaContent, NS_ERROR_OUT_OF_MEMORY); metaContent->SetAttr(kNameSpaceID_None, nsGkAtoms::name, NS_LITERAL_STRING("viewport"), true); metaContent->SetAttr(kNameSpaceID_None, nsGkAtoms::content, NS_LITERAL_STRING("width=device-width; height=device-height;"), true); head->AppendChildTo(metaContent, false); root->AppendChildTo(head, false); nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::body, nsnull, kNameSpaceID_XHTML, nsIDOMNode::ELEMENT_NODE); NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY); nsRefPtr<nsGenericHTMLElement> body = NS_NewHTMLBodyElement(nodeInfo.forget()); NS_ENSURE_TRUE(body, NS_ERROR_OUT_OF_MEMORY); root->AppendChildTo(body, false); return NS_OK; }
nsresult nsMediaDocument::CreateSyntheticDocument() { // Synthesize an empty html document nsresult rv; nsCOMPtr<nsINodeInfo> nodeInfo; rv = mNodeInfoManager->GetNodeInfo(nsGkAtoms::html, nsnull, kNameSpaceID_None, getter_AddRefs(nodeInfo)); NS_ENSURE_SUCCESS(rv, rv); nsRefPtr<nsGenericHTMLElement> root = NS_NewHTMLHtmlElement(nodeInfo); if (!root) { return NS_ERROR_OUT_OF_MEMORY; } NS_ASSERTION(GetChildCount() == 0, "Shouldn't have any kids"); rv = AppendChildTo(root, PR_FALSE); NS_ENSURE_SUCCESS(rv, rv); rv = mNodeInfoManager->GetNodeInfo(nsGkAtoms::head, nsnull, kNameSpaceID_None, getter_AddRefs(nodeInfo)); NS_ENSURE_SUCCESS(rv, rv); // Create a <head> so our title has somewhere to live nsRefPtr<nsGenericHTMLElement> head = NS_NewHTMLHeadElement(nodeInfo); if (!head) { return NS_ERROR_OUT_OF_MEMORY; } root->AppendChildTo(head, PR_FALSE); rv = mNodeInfoManager->GetNodeInfo(nsGkAtoms::body, nsnull, kNameSpaceID_None, getter_AddRefs(nodeInfo)); NS_ENSURE_SUCCESS(rv, rv); nsRefPtr<nsGenericHTMLElement> body = NS_NewHTMLBodyElement(nodeInfo); if (!body) { return NS_ERROR_OUT_OF_MEMORY; } root->AppendChildTo(body, PR_FALSE); return NS_OK; }