summaryrefslogtreecommitdiffstats
path: root/app/os_exchange_data.cc
blob: 93614662d671ac92fc47e00d0607f042baed1a19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
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;
}