// Convert a String containing CF_HTML formatted text to a DocumentFragment PassRefPtr<DocumentFragment> fragmentFromCFHTML(Document* doc, const String& cfhtml) { // obtain baseURL if present String srcURLStr("sourceURL:"); String srcURL; unsigned lineStart = cfhtml.find(srcURLStr, 0, false); if (lineStart != -1) { unsigned srcEnd = cfhtml.find("\n", lineStart, false); unsigned srcStart = lineStart+srcURLStr.length(); String rawSrcURL = cfhtml.substring(srcStart, srcEnd-srcStart); replaceNBSPWithSpace(rawSrcURL); srcURL = rawSrcURL.stripWhiteSpace(); } String markup = extractMarkupFromCFHTML(cfhtml); return createFragmentFromMarkup(doc, markup, srcURL, FragmentScriptingNotAllowed); }
//Convert a String containing CF_HTML formatted text to a DocumentFragment PassRefPtr<DocumentFragment> fragmentFromCF_HTML(Document* doc, const String& cf_html) { // obtain baseURL if present String srcURLStr("sourceURL:"); String srcURL; unsigned lineStart = cf_html.find(srcURLStr, 0, false); if (lineStart != -1) { unsigned srcEnd = cf_html.find("\n", lineStart, false); unsigned srcStart = lineStart+srcURLStr.length(); String rawSrcURL = cf_html.substring(srcStart, srcEnd-srcStart); replaceNBSPWithSpace(rawSrcURL); srcURL = rawSrcURL.stripWhiteSpace(); } // find the markup between "<!--StartFragment -->" and "<!--EndFragment -->", accounting for browser quirks unsigned markupStart = cf_html.find("<html", 0, false); unsigned tagStart = cf_html.find("startfragment", markupStart, false); unsigned fragmentStart = cf_html.find('>', tagStart) + 1; unsigned tagEnd = cf_html.find("endfragment", fragmentStart, false); unsigned fragmentEnd = cf_html.reverseFind('<', tagEnd); String markup = cf_html.substring(fragmentStart, fragmentEnd - fragmentStart).stripWhiteSpace(); return createFragmentFromMarkup(doc, markup, srcURL); }