diff options
author | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-19 01:20:01 +0000 |
---|---|---|
committer | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-19 01:20:01 +0000 |
commit | 22cf8687fe6c4fc4dbb2b9b2ac41d7d45f656d83 (patch) | |
tree | df838980effe3721bdc41b6acea356bf6352df8e /chrome/common/os_exchange_data.cc | |
parent | 234ebdecf98582ca141b9066b1e5f4f74d3bdbff (diff) | |
download | chromium_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.cc | 23 |
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 { |