Index: ui/base/dragdrop/os_exchange_data_provider_aura.cc |
diff --git a/ui/base/dragdrop/os_exchange_data_provider_aura.cc b/ui/base/dragdrop/os_exchange_data_provider_aura.cc |
index 349b89fff9317ab6bef42dd5de07d7c9b1962810..88bbae44d8ebc0cb3e32ca94bb560df4ead686c6 100644 |
--- a/ui/base/dragdrop/os_exchange_data_provider_aura.cc |
+++ b/ui/base/dragdrop/os_exchange_data_provider_aura.cc |
@@ -2,63 +2,154 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "ui/base/dragdrop/os_exchange_data.h" |
+#include "ui/base/dragdrop/os_exchange_data_provider_aura.h" |
#include "base/logging.h" |
+#include "base/utf_string_conversions.h" |
+#include "net/base/net_util.h" |
namespace ui { |
-// OSExchangeData::Provider implementation for aura on linux. |
-class OSExchangeDataProviderAura : public OSExchangeData::Provider { |
- public: |
- OSExchangeDataProviderAura() { |
- NOTIMPLEMENTED(); |
- } |
+OSExchangeDataProviderAura::OSExchangeDataProviderAura() : formats_(0) {} |
- virtual ~OSExchangeDataProviderAura() { |
- } |
+void OSExchangeDataProviderAura::SetString(const string16& data) { |
+ string_ = data; |
+ formats_ |= OSExchangeData::STRING; |
+} |
- virtual void SetString(const string16& data) OVERRIDE { |
- } |
- virtual void SetURL(const GURL& url, const string16& title) OVERRIDE { |
+void OSExchangeDataProviderAura::SetURL(const GURL& url, |
+ const string16& title) { |
+ url_ = url; |
+ title_ = title; |
+ formats_ |= OSExchangeData::URL; |
+} |
+ |
+void OSExchangeDataProviderAura::SetFilename(const FilePath& path) { |
+ filename_ = path; |
+ formats_ |= OSExchangeData::FILE_NAME; |
+} |
+ |
+void OSExchangeDataProviderAura::SetPickledData( |
+ OSExchangeData::CustomFormat format, |
+ const Pickle& data) { |
+ pickle_data_[format] = data; |
+ formats_ |= OSExchangeData::PICKLED_DATA; |
+} |
+ |
+bool OSExchangeDataProviderAura::GetString(string16* data) const { |
+ if ((formats_ & OSExchangeData::STRING) == 0) |
+ return false; |
+ *data = string_; |
+ return true; |
+} |
+ |
+bool OSExchangeDataProviderAura::GetURLAndTitle(GURL* url, |
+ string16* title) const { |
+ if ((formats_ & OSExchangeData::URL) == 0) { |
+ title->clear(); |
+ return GetPlainTextURL(url); |
} |
- virtual void SetFilename(const FilePath& path) OVERRIDE { |
+ |
+ if (!url_.is_valid()) |
+ return false; |
+ |
+ *url = url_; |
+ *title = title_; |
+ return true; |
+} |
+ |
+bool OSExchangeDataProviderAura::GetFilename(FilePath* path) const { |
+ if ((formats_ & OSExchangeData::FILE_NAME) == 0) |
+ return false; |
+ *path = filename_; |
+ return true; |
+} |
+ |
+bool OSExchangeDataProviderAura::GetPickledData( |
+ OSExchangeData::CustomFormat format, |
+ Pickle* data) const { |
+ PickleData::const_iterator i = pickle_data_.find(format); |
+ if (i == pickle_data_.end()) |
+ return false; |
+ |
+ *data = i->second; |
+ return true; |
+} |
+ |
+bool OSExchangeDataProviderAura::HasString() const { |
+ return (formats_ & OSExchangeData::STRING) != 0; |
+} |
+ |
+bool OSExchangeDataProviderAura::HasURL() const { |
+ if ((formats_ & OSExchangeData::URL) != 0) { |
+ return true; |
} |
- virtual void SetPickledData(OSExchangeData::CustomFormat format, |
- const Pickle& data) OVERRIDE { |
+ // No URL, see if we have plain text that can be parsed as a URL. |
+ return GetPlainTextURL(NULL); |
+} |
+ |
+bool OSExchangeDataProviderAura::HasFile() const { |
+ return (formats_ & OSExchangeData::FILE_NAME) != 0; |
+} |
+ |
+bool OSExchangeDataProviderAura::HasCustomFormat( |
+ OSExchangeData::CustomFormat format) const { |
+ return pickle_data_.find(format) != pickle_data_.end(); |
+} |
+ |
+#if defined(OS_WIN) |
+ void OSExchangeDataProviderAura::SetFileContents( |
+ const FilePath& filename, |
+ const std::string& file_contents) { |
+ NOTIMPLEMENTED(); |
} |
- virtual bool GetString(string16* data) const OVERRIDE { |
- return false; |
+ void OSExchangeDataProviderAura::SetHtml(const string16& html, |
+ const GURL& base_url) { |
+ NOTIMPLEMENTED(); |
} |
- virtual bool GetURLAndTitle(GURL* url, string16* title) const OVERRIDE { |
+ |
+ bool OSExchangeDataProviderAura::GetFileContents( |
+ FilePath* filename, |
+ std::string* file_contents) const { |
+ NOTIMPLEMENTED(); |
return false; |
} |
- virtual bool GetFilename(FilePath* path) const OVERRIDE { |
+ |
+ bool OSExchangeDataProviderAura::GetHtml(string16* html, |
+ GURL* base_url) const { |
+ NOTIMPLEMENTED(); |
return false; |
} |
- virtual bool GetPickledData(OSExchangeData::CustomFormat format, |
- Pickle* data) const OVERRIDE { |
+ |
+ bool OSExchangeDataProviderAura::HasFileContents() const { |
+ NOTIMPLEMENTED(); |
return false; |
} |
- virtual bool HasString() const OVERRIDE { |
+ bool OSExchangeDataProviderAura::HasHtml() const { |
+ NOTIMPLEMENTED(); |
return false; |
} |
- virtual bool HasURL() const OVERRIDE { |
- return false; |
+ |
+ void OSExchangeDataProviderAura::SetDownloadFileInfo( |
+ const OSExchangeData::DownloadFileInfo& download) { |
+ NOTIMPLEMENTED(); |
} |
- virtual bool HasFile() const OVERRIDE { |
+#endif |
+ |
+bool OSExchangeDataProviderAura::GetPlainTextURL(GURL* url) const { |
+ if ((formats_ & OSExchangeData::STRING) == 0) |
return false; |
- } |
- virtual bool HasCustomFormat( |
- OSExchangeData::CustomFormat format) const OVERRIDE { |
+ |
+ GURL test_url(string_); |
+ if (!test_url.is_valid()) |
return false; |
- } |
- private: |
- DISALLOW_COPY_AND_ASSIGN(OSExchangeDataProviderAura); |
-}; |
+ if (url) |
+ *url = test_url; |
+ return true; |
+} |
/////////////////////////////////////////////////////////////////////////////// |
// OSExchangeData, public: |