diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-12 21:58:18 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-12 21:58:18 +0000 |
commit | 8c3dc79bc13ba84f418d3c135e1bf296a3e29722 (patch) | |
tree | 32eb9688d500a90eb74a7c4f8cb5a97e507dd0fc /app/os_exchange_data.cc | |
parent | abaccb2cb8cff8138e5ea9daf420645e5852c9eb (diff) | |
download | chromium_src-8c3dc79bc13ba84f418d3c135e1bf296a3e29722.zip chromium_src-8c3dc79bc13ba84f418d3c135e1bf296a3e29722.tar.gz chromium_src-8c3dc79bc13ba84f418d3c135e1bf296a3e29722.tar.bz2 |
Refactors OSExchangeData for easier portability.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/164401
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23230 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app/os_exchange_data.cc')
-rw-r--r-- | app/os_exchange_data.cc | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/app/os_exchange_data.cc b/app/os_exchange_data.cc new file mode 100644 index 0000000..9361466 --- /dev/null +++ b/app/os_exchange_data.cc @@ -0,0 +1,125 @@ +// 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); +} + +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::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::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); +} + +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 ((formats & FILE_CONTENTS) != 0 && !provider_->HasFileContents()) + return false; + if ((formats & FILE_NAME) != 0 && !provider_->HasFile()) + return false; + if ((formats & HTML) != 0 && !provider_->HasHtml()) + 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 ((formats & FILE_CONTENTS) != 0 && provider_->HasFileContents()) + return true; + if ((formats & FILE_NAME) != 0 && provider_->HasFile()) + return true; + if ((formats & HTML) != 0 && provider_->HasHtml()) + return true; + for (std::set<CustomFormat>::const_iterator i = custom_formats.begin(); + i != custom_formats.end(); ++i) { + if (HasCustomFormat(*i)) + return true; + } + return false; +} |