Home | History | Annotate | Download | only in dragdrop
      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.h"
      6 
      7 #include "base/pickle.h"
      8 #include "url/gurl.h"
      9 
     10 namespace ui {
     11 
     12 OSExchangeData::DownloadFileInfo::DownloadFileInfo(
     13     const base::FilePath& filename,
     14     DownloadFileProvider* downloader)
     15     : filename(filename),
     16       downloader(downloader) {
     17 }
     18 
     19 OSExchangeData::DownloadFileInfo::~DownloadFileInfo() {}
     20 
     21 OSExchangeData::OSExchangeData() : provider_(CreateProvider()) {
     22 }
     23 
     24 OSExchangeData::OSExchangeData(Provider* provider) : provider_(provider) {
     25 }
     26 
     27 OSExchangeData::~OSExchangeData() {
     28 }
     29 
     30 void OSExchangeData::MarkOriginatedFromRenderer() {
     31   provider_->MarkOriginatedFromRenderer();
     32 }
     33 
     34 bool OSExchangeData::DidOriginateFromRenderer() const {
     35   return provider_->DidOriginateFromRenderer();
     36 }
     37 
     38 void OSExchangeData::SetString(const base::string16& data) {
     39   provider_->SetString(data);
     40 }
     41 
     42 void OSExchangeData::SetURL(const GURL& url, const base::string16& title) {
     43   provider_->SetURL(url, title);
     44 }
     45 
     46 void OSExchangeData::SetFilename(const base::FilePath& path) {
     47   provider_->SetFilename(path);
     48 }
     49 
     50 void OSExchangeData::SetFilenames(
     51     const std::vector<FileInfo>& filenames) {
     52   provider_->SetFilenames(filenames);
     53 }
     54 
     55 void OSExchangeData::SetPickledData(const CustomFormat& format,
     56                                     const Pickle& data) {
     57   provider_->SetPickledData(format, data);
     58 }
     59 
     60 bool OSExchangeData::GetString(base::string16* data) const {
     61   return provider_->GetString(data);
     62 }
     63 
     64 bool OSExchangeData::GetURLAndTitle(FilenameToURLPolicy policy,
     65                                     GURL* url,
     66                                     base::string16* title) const {
     67   return provider_->GetURLAndTitle(policy, url, title);
     68 }
     69 
     70 bool OSExchangeData::GetFilename(base::FilePath* path) const {
     71   return provider_->GetFilename(path);
     72 }
     73 
     74 bool OSExchangeData::GetFilenames(
     75     std::vector<FileInfo>* filenames) const {
     76   return provider_->GetFilenames(filenames);
     77 }
     78 
     79 bool OSExchangeData::GetPickledData(const CustomFormat& format,
     80                                     Pickle* data) const {
     81   return provider_->GetPickledData(format, data);
     82 }
     83 
     84 bool OSExchangeData::HasString() const {
     85   return provider_->HasString();
     86 }
     87 
     88 bool OSExchangeData::HasURL(FilenameToURLPolicy policy) const {
     89   return provider_->HasURL(policy);
     90 }
     91 
     92 bool OSExchangeData::HasFile() const {
     93   return provider_->HasFile();
     94 }
     95 
     96 bool OSExchangeData::HasCustomFormat(const CustomFormat& format) const {
     97   return provider_->HasCustomFormat(format);
     98 }
     99 
    100 bool OSExchangeData::HasAnyFormat(
    101     int formats,
    102     const std::set<CustomFormat>& custom_formats) const {
    103   if ((formats & STRING) != 0 && HasString())
    104     return true;
    105   if ((formats & URL) != 0 && HasURL(CONVERT_FILENAMES))
    106     return true;
    107 #if defined(OS_WIN)
    108   if ((formats & FILE_CONTENTS) != 0 && provider_->HasFileContents())
    109     return true;
    110 #endif
    111 #if defined(USE_AURA)
    112   if ((formats & HTML) != 0 && provider_->HasHtml())
    113     return true;
    114 #endif
    115   if ((formats & FILE_NAME) != 0 && provider_->HasFile())
    116     return true;
    117   for (std::set<CustomFormat>::const_iterator i = custom_formats.begin();
    118        i != custom_formats.end(); ++i) {
    119     if (HasCustomFormat(*i))
    120       return true;
    121   }
    122   return false;
    123 }
    124 
    125 #if defined(OS_WIN)
    126 void OSExchangeData::SetFileContents(const base::FilePath& filename,
    127                                      const std::string& file_contents) {
    128   provider_->SetFileContents(filename, file_contents);
    129 }
    130 
    131 bool OSExchangeData::GetFileContents(base::FilePath* filename,
    132                                      std::string* file_contents) const {
    133   return provider_->GetFileContents(filename, file_contents);
    134 }
    135 
    136 void OSExchangeData::SetDownloadFileInfo(const DownloadFileInfo& download) {
    137   provider_->SetDownloadFileInfo(download);
    138 }
    139 #endif
    140 
    141 #if defined(USE_AURA)
    142 void OSExchangeData::SetHtml(const base::string16& html, const GURL& base_url) {
    143   provider_->SetHtml(html, base_url);
    144 }
    145 
    146 bool OSExchangeData::GetHtml(base::string16* html, GURL* base_url) const {
    147   return provider_->GetHtml(html, base_url);
    148 }
    149 #endif
    150 
    151 }  // namespace ui
    152