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

Unified Diff: ui/base/dragdrop/os_exchange_data_provider_aura.cc

Issue 8450018: First shot at implementing drag&drop for Aura (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed windows build errors Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/dragdrop/os_exchange_data_provider_aura.h ('k') | ui/ui.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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:
« no previous file with comments | « ui/base/dragdrop/os_exchange_data_provider_aura.h ('k') | ui/ui.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698