Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(264)

Unified Diff: webkit/glue/clipboard_conversion.cc

Issue 11247: Remove cf_html from webdropdata.h. This is windows (Closed)
Patch Set: fix feedback Created 12 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/render_messages.h ('k') | webkit/glue/webdropdata.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/clipboard_conversion.cc
diff --git a/webkit/glue/clipboard_conversion.cc b/webkit/glue/clipboard_conversion.cc
index 0c690c0e0459ef6a3c66066a96f9e7892ab6e840..7bf8c51ff3812e39e6dc7685f5f062c2dfaeb3df 100644
--- a/webkit/glue/clipboard_conversion.cc
+++ b/webkit/glue/clipboard_conversion.cc
@@ -16,114 +16,6 @@
#include "webkit/glue/glue_util.h"
-namespace {
-
-// TODO(tc): CF_HTML logic should move into the browser process since it only
-// makes sense on Windows.
-#if defined(OS_WIN)
-void append(WTF::Vector<char>& vector, const WebCore::CString& string) {
- vector.append(string.data(), string.length());
-}
-// Documentation for the CF_HTML format is available at
-// http://msdn.microsoft.com/workshop/networking/clipboard/htmlclipboard.asp
-void markupToCF_HTML(const WebCore::String& markup,
- const WebCore::String& src_url,
- WTF::Vector<char>& result) {
- if (markup.isEmpty())
- return;
-
- #define MAX_DIGITS 10
- #define MAKE_NUMBER_FORMAT_1(digits) MAKE_NUMBER_FORMAT_2(digits)
- #define MAKE_NUMBER_FORMAT_2(digits) "%0" #digits "u"
- #define NUMBER_FORMAT MAKE_NUMBER_FORMAT_1(MAX_DIGITS)
-
- static const char* header = "Version:0.9\n"
- "StartHTML:" NUMBER_FORMAT "\n"
- "EndHTML:" NUMBER_FORMAT "\n"
- "StartFragment:" NUMBER_FORMAT "\n"
- "EndFragment:" NUMBER_FORMAT "\n";
- static const char* source_url_prefix = "SourceURL:";
-
- static const char* start_markup = "<HTML>\n<BODY>\n<!--StartFragment-->\n";
- static const char* end_markup = "\n<!--EndFragment-->\n</BODY>\n</HTML>";
-
- WebCore::CString source_url_utf8 = (src_url == WebCore::blankURL()) ?
- "" : src_url.utf8();
- WebCore::CString markup_utf8 = markup.utf8();
-
- // calculate offsets
- size_t start_html_offset = strlen(header) - strlen(NUMBER_FORMAT) * 4 +
- MAX_DIGITS * 4;
- if (source_url_utf8.length()) {
- start_html_offset += strlen(source_url_prefix) +
- source_url_utf8.length() + 1;
- }
- size_t start_fragment_offset = start_html_offset + strlen(start_markup);
- size_t end_fragment_offset = start_fragment_offset + markup_utf8.length();
- size_t end_html_offset = end_fragment_offset + strlen(end_markup);
-
- append(result, WebCore::String::format(header, start_html_offset,
- end_html_offset, start_fragment_offset, end_fragment_offset).utf8());
- if (source_url_utf8.length()) {
- append(result, source_url_prefix);
- append(result, source_url_utf8);
- result.append('\n');
- }
- append(result, start_markup);
- append(result, markup_utf8);
- append(result, end_markup);
-
- #undef MAX_DIGITS
- #undef MAKE_NUMBER_FORMAT_1
- #undef MAKE_NUMBER_FORMAT_2
- #undef NUMBER_FORMAT
-}
-#endif
-
-std::wstring HTMLToCFHTML(const WebCore::String& html,
- const WebCore::KURL& url) {
-#if defined(OS_WIN)
- Vector<char> cf_html_data;
- markupToCF_HTML(html, url, cf_html_data);
- WebCore::String cf_html_str(cf_html_data.data(), cf_html_data.size());
- return webkit_glue::StringToStdWString(cf_html_str);
-#else
- return std::wstring();
-#endif
-}
-
-WebCore::String CFHTMLToHTML(const std::wstring& cf_html_wstr) {
-#if defined(OS_WIN)
- WebCore::String cf_html = webkit_glue::StdWStringToString(cf_html_wstr);
- // Obtain baseURL if present.
- WebCore::String src_url_str("sourceURL:");
- WebCore::String src_url;
- unsigned int line_start = cf_html.find(src_url_str, 0, false);
- if (line_start != -1) {
- unsigned int src_end = cf_html.find("\n", line_start, false);
- unsigned int src_start = line_start + src_url_str.length();
- WebCore::String raw_src_url = cf_html.substring(src_start, src_end - src_start);
- replaceNBSPWithSpace(raw_src_url);
- src_url = raw_src_url.stripWhiteSpace();
- }
-
- // find the markup between "<!--StartFragment -->" and "<!--EndFragment
- // -->", accounting for browser quirks
- unsigned markup_start = cf_html.find("<html", 0, false);
- unsigned tag_start = cf_html.find("startfragment", markup_start, false);
- unsigned fragment_start = cf_html.find('>', tag_start) + 1;
- unsigned tag_end = cf_html.find("endfragment", fragment_start, false);
- unsigned fragment_end = cf_html.reverseFind('<', tag_end);
- WebCore::String markup = cf_html.substring(fragment_start,
- fragment_end - fragment_start).stripWhiteSpace();
- return markup;
-#else
- return WebCore::String();
-#endif
-}
-
-} // namespace
-
namespace webkit_glue {
WebDropData ChromiumDataObjectToWebDropData(
@@ -139,9 +31,8 @@ WebDropData ChromiumDataObjectToWebDropData(
drop_data.plain_text = StringToStdWString(data_object->plain_text);
- drop_data.cf_html = HTMLToCFHTML(data_object->text_html, data_object->url);
-
drop_data.text_html = StringToStdWString(data_object->text_html);
+ drop_data.html_base_url = KURLToGURL(data_object->html_base_url);
drop_data.file_description_filename = StringToStdWString(
data_object->file_content_filename);
@@ -167,10 +58,7 @@ PassRefPtr<WebCore::ChromiumDataObject> WebDropDataToChromiumDataObject(
data_object->plain_text = StdWStringToString(drop_data.plain_text);
data_object->text_html = StdWStringToString(drop_data.text_html);
- if (data_object->text_html.isEmpty()) {
- // Use CF_HTML only if there's no text/html data.
- data_object->text_html = CFHTMLToHTML(drop_data.cf_html);
- }
+ data_object->html_base_url = GURLToKURL(drop_data.html_base_url);
data_object->file_content_filename = StdWStringToString(
drop_data.file_description_filename);
« no previous file with comments | « chrome/common/render_messages.h ('k') | webkit/glue/webdropdata.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698