summaryrefslogtreecommitdiffstats
path: root/chrome/common/os_exchange_data.cc
diff options
context:
space:
mode:
authortc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-19 01:20:01 +0000
committertc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-19 01:20:01 +0000
commit22cf8687fe6c4fc4dbb2b9b2ac41d7d45f656d83 (patch)
treedf838980effe3721bdc41b6acea356bf6352df8e /chrome/common/os_exchange_data.cc
parent234ebdecf98582ca141b9066b1e5f4f74d3bdbff (diff)
downloadchromium_src-22cf8687fe6c4fc4dbb2b9b2ac41d7d45f656d83.zip
chromium_src-22cf8687fe6c4fc4dbb2b9b2ac41d7d45f656d83.tar.gz
chromium_src-22cf8687fe6c4fc4dbb2b9b2ac41d7d45f656d83.tar.bz2
Remove cf_html from webdropdata.h. This is windows
specific code so we should handle it before we get to webkit. CF_HTML needs the source URL to resolve relative URLs so I added that to the format and plumb it through from webcore. I also did some small refactoring so we only have one implementation of converting to/from CF_HTML and regular markup. We can tweak these converters (and add unit tests) in follow up changes. Review URL: http://codereview.chromium.org/11247 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5662 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/os_exchange_data.cc')
-rw-r--r--chrome/common/os_exchange_data.cc23
1 files changed, 18 insertions, 5 deletions
diff --git a/chrome/common/os_exchange_data.cc b/chrome/common/os_exchange_data.cc
index 36553c1..e86ce33 100644
--- a/chrome/common/os_exchange_data.cc
+++ b/chrome/common/os_exchange_data.cc
@@ -335,11 +335,20 @@ void OSExchangeData::SetFileContents(const std::wstring& filename,
ClipboardUtil::GetFileContentFormatZero()->cfFormat, storage));
}
-void OSExchangeData::SetCFHtml(const std::wstring& cf_html) {
- std::string utf8 = WideToUTF8(cf_html);
- STGMEDIUM* storage = GetStorageForBytes(utf8.c_str(), utf8.size());
+void OSExchangeData::SetHtml(const std::wstring& html, const GURL& base_url) {
+ // Add both MS CF_HTML and text/html format. CF_HTML should be in utf-8.
+ std::string utf8_html = WideToUTF8(html);
+ std::string url = base_url.is_valid() ? base_url.spec() : std::string();
+
+ std::string cf_html = ClipboardUtil::HtmlToCFHtml(utf8_html, url);
+ STGMEDIUM* storage = GetStorageForBytes(cf_html.c_str(), cf_html.size());
contents_.push_back(new StoredDataInfo(
ClipboardUtil::GetHtmlFormat()->cfFormat, storage));
+
+ STGMEDIUM* storage_plain = GetStorageForBytes(utf8_html.c_str(),
+ utf8_html.size());
+ contents_.push_back(new StoredDataInfo(
+ ClipboardUtil::GetTextHtmlFormat()->cfFormat, storage_plain));
}
bool OSExchangeData::GetString(std::wstring* data) const {
@@ -395,8 +404,12 @@ bool OSExchangeData::GetFileContents(std::wstring* filename,
file_contents);
}
-bool OSExchangeData::GetCFHtml(std::wstring* cf_html) const {
- return ClipboardUtil::GetCFHtml(source_object_, cf_html);
+bool OSExchangeData::GetHtml(std::wstring* html, GURL* base_url) const {
+ std::string url;
+ bool success = ClipboardUtil::GetHtml(source_object_, html, &url);
+ if (success)
+ *base_url = GURL(url);
+ return success;
}
bool OSExchangeData::HasString() const {