1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/base/dragdrop/os_exchange_data.h"
7 #include "base/pickle.h"
12 OSExchangeData::DownloadFileInfo::DownloadFileInfo(
13 const base::FilePath
& filename
,
14 DownloadFileProvider
* downloader
)
16 downloader(downloader
) {
19 OSExchangeData::DownloadFileInfo::~DownloadFileInfo() {}
21 OSExchangeData::OSExchangeData() : provider_(CreateProvider()) {
24 OSExchangeData::OSExchangeData(Provider
* provider
) : provider_(provider
) {
27 OSExchangeData::~OSExchangeData() {
30 void OSExchangeData::MarkOriginatedFromRenderer() {
31 provider_
->MarkOriginatedFromRenderer();
34 bool OSExchangeData::DidOriginateFromRenderer() const {
35 return provider_
->DidOriginateFromRenderer();
38 void OSExchangeData::SetString(const base::string16
& data
) {
39 provider_
->SetString(data
);
42 void OSExchangeData::SetURL(const GURL
& url
, const base::string16
& title
) {
43 provider_
->SetURL(url
, title
);
46 void OSExchangeData::SetFilename(const base::FilePath
& path
) {
47 provider_
->SetFilename(path
);
50 void OSExchangeData::SetFilenames(
51 const std::vector
<FileInfo
>& filenames
) {
52 provider_
->SetFilenames(filenames
);
55 void OSExchangeData::SetPickledData(const CustomFormat
& format
,
57 provider_
->SetPickledData(format
, data
);
60 bool OSExchangeData::GetString(base::string16
* data
) const {
61 return provider_
->GetString(data
);
64 bool OSExchangeData::GetURLAndTitle(FilenameToURLPolicy policy
,
66 base::string16
* title
) const {
67 return provider_
->GetURLAndTitle(policy
, url
, title
);
70 bool OSExchangeData::GetFilename(base::FilePath
* path
) const {
71 return provider_
->GetFilename(path
);
74 bool OSExchangeData::GetFilenames(
75 std::vector
<FileInfo
>* filenames
) const {
76 return provider_
->GetFilenames(filenames
);
79 bool OSExchangeData::GetPickledData(const CustomFormat
& format
,
81 return provider_
->GetPickledData(format
, data
);
84 bool OSExchangeData::HasString() const {
85 return provider_
->HasString();
88 bool OSExchangeData::HasURL(FilenameToURLPolicy policy
) const {
89 return provider_
->HasURL(policy
);
92 bool OSExchangeData::HasFile() const {
93 return provider_
->HasFile();
96 bool OSExchangeData::HasCustomFormat(const CustomFormat
& format
) const {
97 return provider_
->HasCustomFormat(format
);
100 bool OSExchangeData::HasAnyFormat(
102 const std::set
<CustomFormat
>& custom_formats
) const {
103 if ((formats
& STRING
) != 0 && HasString())
105 if ((formats
& URL
) != 0 && HasURL(CONVERT_FILENAMES
))
108 if ((formats
& FILE_CONTENTS
) != 0 && provider_
->HasFileContents())
111 #if defined(USE_AURA)
112 if ((formats
& HTML
) != 0 && provider_
->HasHtml())
115 if ((formats
& FILE_NAME
) != 0 && provider_
->HasFile())
117 for (std::set
<CustomFormat
>::const_iterator i
= custom_formats
.begin();
118 i
!= custom_formats
.end(); ++i
) {
119 if (HasCustomFormat(*i
))
126 void OSExchangeData::SetFileContents(const base::FilePath
& filename
,
127 const std::string
& file_contents
) {
128 provider_
->SetFileContents(filename
, file_contents
);
131 bool OSExchangeData::GetFileContents(base::FilePath
* filename
,
132 std::string
* file_contents
) const {
133 return provider_
->GetFileContents(filename
, file_contents
);
136 void OSExchangeData::SetDownloadFileInfo(const DownloadFileInfo
& download
) {
137 provider_
->SetDownloadFileInfo(download
);
141 #if defined(USE_AURA)
142 void OSExchangeData::SetHtml(const base::string16
& html
, const GURL
& base_url
) {
143 provider_
->SetHtml(html
, base_url
);
146 bool OSExchangeData::GetHtml(base::string16
* html
, GURL
* base_url
) const {
147 return provider_
->GetHtml(html
, base_url
);