blob: 8f647c2846a54f0c95b8bc513ea5d6ced082ae4b [file] [log] [blame]
// Copyright (c) 2009 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 "app/os_exchange_data.h"
#include "base/pickle.h"
#include "googleurl/src/gurl.h"
OSExchangeData::OSExchangeData() : provider_(CreateProvider()) {
}
OSExchangeData::OSExchangeData(Provider* provider) : provider_(provider) {
}
OSExchangeData::~OSExchangeData() {
}
void OSExchangeData::SetString(const std::wstring& data) {
provider_->SetString(data);
}
void OSExchangeData::SetURL(const GURL& url, const std::wstring& title) {
provider_->SetURL(url, title);
}
void OSExchangeData::SetFilename(const std::wstring& full_path) {
provider_->SetFilename(full_path);
}
void OSExchangeData::SetPickledData(CustomFormat format, const Pickle& data) {
provider_->SetPickledData(format, data);
}
bool OSExchangeData::GetString(std::wstring* data) const {
return provider_->GetString(data);
}
bool OSExchangeData::GetURLAndTitle(GURL* url, std::wstring* title) const {
return provider_->GetURLAndTitle(url, title);
}
bool OSExchangeData::GetFilename(std::wstring* full_path) const {
return provider_->GetFilename(full_path);
}
bool OSExchangeData::GetPickledData(CustomFormat format, Pickle* data) const {
return provider_->GetPickledData(format, data);
}
bool OSExchangeData::HasString() const {
return provider_->HasString();
}
bool OSExchangeData::HasURL() const {
return provider_->HasURL();
}
bool OSExchangeData::HasFile() const {
return provider_->HasFile();
}
bool OSExchangeData::HasCustomFormat(CustomFormat format) const {
return provider_->HasCustomFormat(format);
}
bool OSExchangeData::HasAllFormats(
int formats,
const std::set<CustomFormat>& custom_formats) const {
if ((formats & STRING) != 0 && !HasString())
return false;
if ((formats & URL) != 0 && !HasURL())
return false;
#if defined(OS_WIN)
if ((formats & FILE_CONTENTS) != 0 && !provider_->HasFileContents())
return false;
if ((formats & HTML) != 0 && !provider_->HasHtml())
return false;
#endif
if ((formats & FILE_NAME) != 0 && !provider_->HasFile())
return false;
for (std::set<CustomFormat>::const_iterator i = custom_formats.begin();
i != custom_formats.end(); ++i) {
if (!HasCustomFormat(*i))
return false;
}
return true;
}
bool OSExchangeData::HasAnyFormat(
int formats,
const std::set<CustomFormat>& custom_formats) const {
if ((formats & STRING) != 0 && HasString())
return true;
if ((formats & URL) != 0 && HasURL())
return true;
#if defined(OS_WIN)
if ((formats & FILE_CONTENTS) != 0 && provider_->HasFileContents())
return true;
if ((formats & HTML) != 0 && provider_->HasHtml())
return true;
#endif
if ((formats & FILE_NAME) != 0 && provider_->HasFile())
return true;
for (std::set<CustomFormat>::const_iterator i = custom_formats.begin();
i != custom_formats.end(); ++i) {
if (HasCustomFormat(*i))
return true;
}
return false;
}
#if defined(OS_WIN)
void OSExchangeData::SetFileContents(const std::wstring& filename,
const std::string& file_contents) {
provider_->SetFileContents(filename, file_contents);
}
void OSExchangeData::SetHtml(const std::wstring& html, const GURL& base_url) {
provider_->SetHtml(html, base_url);
}
bool OSExchangeData::GetFileContents(std::wstring* filename,
std::string* file_contents) const {
return provider_->GetFileContents(filename, file_contents);
}
bool OSExchangeData::GetHtml(std::wstring* html, GURL* base_url) const {
return provider_->GetHtml(html, base_url);
}
#endif