blob: bae9df1a8bbac41320474e70d632227d21f0a5bf [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/base/dragdrop/os_exchange_data.h"
#include "base/pickle.h"
#include "build/build_config.h"
#include "ui/base/dragdrop/os_exchange_data_provider_factory.h"
#include "url/gurl.h"
namespace ui {
OSExchangeData::DownloadFileInfo::DownloadFileInfo(
const base::FilePath& filename,
DownloadFileProvider* downloader)
: filename(filename),
downloader(downloader) {
}
OSExchangeData::DownloadFileInfo::~DownloadFileInfo() {}
OSExchangeData::OSExchangeData()
: provider_(OSExchangeDataProviderFactory::CreateProvider()) {
}
OSExchangeData::OSExchangeData(std::unique_ptr<Provider> provider)
: provider_(std::move(provider)) {
}
OSExchangeData::~OSExchangeData() {
}
void OSExchangeData::MarkOriginatedFromRenderer() {
provider_->MarkOriginatedFromRenderer();
}
bool OSExchangeData::DidOriginateFromRenderer() const {
return provider_->DidOriginateFromRenderer();
}
void OSExchangeData::SetString(const base::string16& data) {
provider_->SetString(data);
}
void OSExchangeData::SetURL(const GURL& url, const base::string16& title) {
provider_->SetURL(url, title);
}
void OSExchangeData::SetFilename(const base::FilePath& path) {
provider_->SetFilename(path);
}
void OSExchangeData::SetFilenames(
const std::vector<FileInfo>& filenames) {
provider_->SetFilenames(filenames);
}
void OSExchangeData::SetPickledData(const Clipboard::FormatType& format,
const base::Pickle& data) {
provider_->SetPickledData(format, data);
}
bool OSExchangeData::GetString(base::string16* data) const {
return provider_->GetString(data);
}
bool OSExchangeData::GetURLAndTitle(FilenameToURLPolicy policy,
GURL* url,
base::string16* title) const {
return provider_->GetURLAndTitle(policy, url, title);
}
bool OSExchangeData::GetFilename(base::FilePath* path) const {
return provider_->GetFilename(path);
}
bool OSExchangeData::GetFilenames(std::vector<FileInfo>* filenames) const {
return provider_->GetFilenames(filenames);
}
bool OSExchangeData::GetPickledData(const Clipboard::FormatType& format,
base::Pickle* data) const {
return provider_->GetPickledData(format, data);
}
bool OSExchangeData::HasString() const {
return provider_->HasString();
}
bool OSExchangeData::HasURL(FilenameToURLPolicy policy) const {
return provider_->HasURL(policy);
}
bool OSExchangeData::HasFile() const {
return provider_->HasFile();
}
bool OSExchangeData::HasCustomFormat(
const Clipboard::FormatType& format) const {
return provider_->HasCustomFormat(format);
}
bool OSExchangeData::HasAnyFormat(
int formats,
const std::set<Clipboard::FormatType>& format_types) const {
if ((formats & STRING) != 0 && HasString())
return true;
if ((formats & URL) != 0 && HasURL(CONVERT_FILENAMES))
return true;
#if defined(OS_WIN)
if ((formats & FILE_CONTENTS) != 0 && provider_->HasFileContents())
return true;
#endif
#if defined(USE_AURA)
if ((formats & HTML) != 0 && provider_->HasHtml())
return true;
#endif
if ((formats & FILE_NAME) != 0 && provider_->HasFile())
return true;
for (const auto& format : format_types) {
if (HasCustomFormat(format))
return true;
}
return false;
}
#if defined(OS_WIN)
void OSExchangeData::SetFileContents(const base::FilePath& filename,
const std::string& file_contents) {
provider_->SetFileContents(filename, file_contents);
}
bool OSExchangeData::GetFileContents(base::FilePath* filename,
std::string* file_contents) const {
return provider_->GetFileContents(filename, file_contents);
}
void OSExchangeData::SetDownloadFileInfo(const DownloadFileInfo& download) {
provider_->SetDownloadFileInfo(download);
}
#endif
#if defined(USE_AURA)
void OSExchangeData::SetHtml(const base::string16& html, const GURL& base_url) {
provider_->SetHtml(html, base_url);
}
bool OSExchangeData::GetHtml(base::string16* html, GURL* base_url) const {
return provider_->GetHtml(html, base_url);
}
#endif
} // namespace ui