Index: ui/base/dragdrop/os_exchange_data_provider_win.cc |
diff --git a/ui/base/dragdrop/os_exchange_data_provider_win.cc b/ui/base/dragdrop/os_exchange_data_provider_win.cc |
index fa2052a10b1f291866e8c26886d6dadad47a8379..8dd4d44a11092b80a4648358ee0b0da1dd802dc4 100644 |
--- a/ui/base/dragdrop/os_exchange_data_provider_win.cc |
+++ b/ui/base/dragdrop/os_exchange_data_provider_win.cc |
@@ -23,6 +23,14 @@ |
namespace ui { |
+static const OSExchangeData::CustomFormat& GetRendererTaintCustomType() { |
+ CR_DEFINE_STATIC_LOCAL( |
+ ui::OSExchangeData::CustomFormat, |
+ format, |
+ (ui::Clipboard::GetFormatType("chromium/x-renderer-taint"))); |
+ return format; |
+} |
+ |
// Creates a new STGMEDIUM object to hold the specified text. The caller |
// owns the resulting object. The "Bytes" version does not NULL terminate, the |
// string version does. |
@@ -269,6 +277,16 @@ OSExchangeData::Provider* OSExchangeDataProviderWin::Clone() const { |
return new OSExchangeDataProviderWin(data_object()); |
} |
+void OSExchangeDataProviderWin::MarkOriginatedFromRenderer() { |
+ STGMEDIUM* storage = GetStorageForString(std::string()); |
+ data_->contents_.push_back(new DataObjectImpl::StoredDataInfo( |
+ GetRendererTaintCustomType().ToFormatEtc(), storage)); |
+} |
+ |
+bool OSExchangeDataProviderWin::DidOriginateFromRenderer() const { |
+ return HasCustomFormat(GetRendererTaintCustomType()); |
+} |
+ |
void OSExchangeDataProviderWin::SetString(const base::string16& data) { |
STGMEDIUM* storage = GetStorageForString(data); |
data_->contents_.push_back(new DataObjectImpl::StoredDataInfo( |