Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Side by Side Diff: ui/base/dragdrop/os_exchange_data_provider_chromeos.cc

Issue 14736007: Expose os_exchange_data_provider_chromeos to aura builds (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix extraneous gyp line Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/base/dragdrop/os_exchange_data_provider_chromeos.h ('k') | ui/ui.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/base/dragdrop/os_exchange_data_provider_chromeos.h"
6
7 #include "base/logging.h"
8 #include "base/utf_string_conversions.h"
9 #include "net/base/net_util.h"
10 #include "ui/base/clipboard/clipboard.h"
11 #include "ui/base/clipboard/scoped_clipboard_writer.h"
12
13 namespace ui {
14
15 OSExchangeDataProviderChromeos::OSExchangeDataProviderChromeos()
16 : formats_(0) {
17 }
18
19 OSExchangeDataProviderChromeos::~OSExchangeDataProviderChromeos() {}
20
21 void OSExchangeDataProviderChromeos::SetString(const string16& data) {
22 string_ = data;
23 formats_ |= OSExchangeData::STRING;
24 }
25
26 void OSExchangeDataProviderChromeos::SetURL(const GURL& url,
27 const string16& title) {
28 url_ = url;
29 title_ = title;
30 formats_ |= OSExchangeData::URL;
31 }
32
33 void OSExchangeDataProviderChromeos::SetFilename(const base::FilePath& path) {
34 filenames_.clear();
35 filenames_.push_back(OSExchangeData::FileInfo(path, base::FilePath()));
36 formats_ |= OSExchangeData::FILE_NAME;
37 }
38
39 void OSExchangeDataProviderChromeos::SetFilenames(
40 const std::vector<OSExchangeData::FileInfo>& filenames) {
41 filenames_ = filenames;
42 formats_ |= OSExchangeData::FILE_NAME;
43 }
44
45 void OSExchangeDataProviderChromeos::SetPickledData(
46 OSExchangeData::CustomFormat format,
47 const Pickle& data) {
48 pickle_data_[format] = data;
49 formats_ |= OSExchangeData::PICKLED_DATA;
50 }
51
52 bool OSExchangeDataProviderChromeos::GetString(string16* data) const {
53 if ((formats_ & OSExchangeData::STRING) == 0)
54 return false;
55 *data = string_;
56 return true;
57 }
58
59 bool OSExchangeDataProviderChromeos::GetURLAndTitle(GURL* url,
60 string16* title) const {
61 if ((formats_ & OSExchangeData::URL) == 0) {
62 title->clear();
63 return GetPlainTextURL(url);
64 }
65
66 if (!url_.is_valid())
67 return false;
68
69 *url = url_;
70 *title = title_;
71 return true;
72 }
73
74 bool OSExchangeDataProviderChromeos::GetFilename(base::FilePath* path) const {
75 if ((formats_ & OSExchangeData::FILE_NAME) == 0)
76 return false;
77 DCHECK(!filenames_.empty());
78 *path = filenames_[0].path;
79 return true;
80 }
81
82 bool OSExchangeDataProviderChromeos::GetFilenames(
83 std::vector<OSExchangeData::FileInfo>* filenames) const {
84 if ((formats_ & OSExchangeData::FILE_NAME) == 0)
85 return false;
86 *filenames = filenames_;
87 return true;
88 }
89
90 bool OSExchangeDataProviderChromeos::GetPickledData(
91 OSExchangeData::CustomFormat format,
92 Pickle* data) const {
93 PickleData::const_iterator i = pickle_data_.find(format);
94 if (i == pickle_data_.end())
95 return false;
96
97 *data = i->second;
98 return true;
99 }
100
101 bool OSExchangeDataProviderChromeos::HasString() const {
102 return (formats_ & OSExchangeData::STRING) != 0;
103 }
104
105 bool OSExchangeDataProviderChromeos::HasURL() const {
106 if ((formats_ & OSExchangeData::URL) != 0) {
107 return true;
108 }
109 // No URL, see if we have plain text that can be parsed as a URL.
110 return GetPlainTextURL(NULL);
111 }
112
113 bool OSExchangeDataProviderChromeos::HasFile() const {
114 return (formats_ & OSExchangeData::FILE_NAME) != 0;
115 }
116
117 bool OSExchangeDataProviderChromeos::HasCustomFormat(
118 OSExchangeData::CustomFormat format) const {
119 return pickle_data_.find(format) != pickle_data_.end();
120 }
121
122 void OSExchangeDataProviderChromeos::SetHtml(const string16& html,
123 const GURL& base_url) {
124 formats_ |= OSExchangeData::HTML;
125 html_ = html;
126 base_url_ = base_url;
127 }
128
129 bool OSExchangeDataProviderChromeos::GetHtml(string16* html,
130 GURL* base_url) const {
131 if ((formats_ & OSExchangeData::HTML) == 0)
132 return false;
133 *html = html_;
134 *base_url = base_url_;
135 return true;
136 }
137
138 bool OSExchangeDataProviderChromeos::HasHtml() const {
139 return ((formats_ & OSExchangeData::HTML) != 0);
140 }
141
142 void OSExchangeDataProviderChromeos::SetDragImage(
143 const gfx::ImageSkia& image,
144 const gfx::Vector2d& cursor_offset) {
145 drag_image_ = image;
146 drag_image_offset_ = cursor_offset;
147 }
148
149 const gfx::ImageSkia& OSExchangeDataProviderChromeos::GetDragImage() const {
150 return drag_image_;
151 }
152
153 const gfx::Vector2d&
154 OSExchangeDataProviderChromeos::GetDragImageOffset() const {
155 return drag_image_offset_;
156 }
157
158 bool OSExchangeDataProviderChromeos::GetPlainTextURL(GURL* url) const {
159 if ((formats_ & OSExchangeData::STRING) == 0)
160 return false;
161
162 GURL test_url(string_);
163 if (!test_url.is_valid())
164 return false;
165
166 if (url)
167 *url = test_url;
168 return true;
169 }
170
171 ///////////////////////////////////////////////////////////////////////////////
172 // OSExchangeData, public:
173
174 // static
175 OSExchangeData::Provider* OSExchangeData::CreateProvider() {
176 return new OSExchangeDataProviderChromeos();
177 }
178
179 // static
180 OSExchangeData::CustomFormat
181 OSExchangeData::RegisterCustomFormat(const std::string& type) {
182 // On Aura you probably want to just use the Clipboard::Get*FormatType APIs
183 // instead. But we can also dynamically generate new CustomFormat objects
184 // here too if really necessary.
185 return Clipboard::FormatType::Deserialize(type);
186 }
187
188
189 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/dragdrop/os_exchange_data_provider_chromeos.h ('k') | ui/ui.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698