summaryrefslogtreecommitdiffstats
path: root/app/os_exchange_data.cc
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-12 21:58:18 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-12 21:58:18 +0000
commit8c3dc79bc13ba84f418d3c135e1bf296a3e29722 (patch)
tree32eb9688d500a90eb74a7c4f8cb5a97e507dd0fc /app/os_exchange_data.cc
parentabaccb2cb8cff8138e5ea9daf420645e5852c9eb (diff)
downloadchromium_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.cc125
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;
+}