Home | History | Annotate | Download | only in common
      1 // Copyright 2013 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 // A struct for managing data being dropped on a WebContents.  This represents
      6 // a union of all the types of data that can be dropped in a platform neutral
      7 // way.
      8 
      9 #ifndef CONTENT_PUBLIC_COMMON_DROP_DATA_H_
     10 #define CONTENT_PUBLIC_COMMON_DROP_DATA_H_
     11 
     12 #include <map>
     13 #include <string>
     14 #include <vector>
     15 
     16 #include "base/strings/nullable_string16.h"
     17 #include "content/common/content_export.h"
     18 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h"
     19 #include "ui/base/dragdrop/file_info.h"
     20 #include "url/gurl.h"
     21 
     22 namespace content {
     23 
     24 struct CONTENT_EXPORT DropData {
     25   struct FileSystemFileInfo {
     26     FileSystemFileInfo() : size(0) {}
     27     ~FileSystemFileInfo() {}
     28 
     29     GURL url;
     30     int64 size;
     31   };
     32 
     33   DropData();
     34   ~DropData();
     35 
     36   // Whether this drag originated from a renderer.
     37   bool did_originate_from_renderer;
     38 
     39   // User is dragging a link into the webview.
     40   GURL url;
     41   base::string16 url_title;  // The title associated with |url|.
     42 
     43   // User is dragging a link out-of the webview.
     44   base::string16 download_metadata;
     45 
     46   // Referrer policy to use when dragging a link out of the webview results in
     47   // a download.
     48   blink::WebReferrerPolicy referrer_policy;
     49 
     50   // User is dropping one or more files on the webview. This field is only
     51   // populated if the drag is not renderer tainted, as this allows File access
     52   // from web content.
     53   std::vector<ui::FileInfo> filenames;
     54 
     55   // Isolated filesystem ID for the files being dragged on the webview.
     56   base::string16 filesystem_id;
     57 
     58   // User is dragging files specified with filesystem: URLs.
     59   std::vector<FileSystemFileInfo> file_system_files;
     60 
     61   // User is dragging plain text into the webview.
     62   base::NullableString16 text;
     63 
     64   // User is dragging text/html into the webview (e.g., out of Firefox).
     65   // |html_base_url| is the URL that the html fragment is taken from (used to
     66   // resolve relative links).  It's ok for |html_base_url| to be empty.
     67   base::NullableString16 html;
     68   GURL html_base_url;
     69 
     70   // User is dragging data from the webview (e.g., an image).
     71   base::string16 file_description_filename;
     72   std::string file_contents;
     73 
     74   std::map<base::string16, base::string16> custom_data;
     75 };
     76 
     77 }  // namespace content
     78 
     79 #endif  // CONTENT_PUBLIC_COMMON_DROP_DATA_H_
     80