3f9dea3a2721e13dfbae1ad451523951e82c2889
[WebKit-https.git] / Source / WebCore / platform / gtk / DragDataGtk.cpp
1 /*
2  *  This library is free software; you can redistribute it and/or
3  *  modify it under the terms of the GNU Lesser General Public
4  *  License as published by the Free Software Foundation; either
5  *  version 2 of the License, or (at your option) any later version.
6  *
7  *  This library is distributed in the hope that it will be useful,
8  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
9  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
10  *  Lesser General Public License for more details.
11  *
12  *  You should have received a copy of the GNU Lesser General Public
13  *  License along with this library; if not, write to the Free Software
14  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
15  */
16
17 #include "config.h"
18 #include "DragData.h"
19
20 #include "DataObjectGtk.h"
21 #include "Document.h"
22 #include "DocumentFragment.h"
23 #include "Frame.h"
24 #include "markup.h"
25
26 namespace WebCore {
27
28 bool DragData::canSmartReplace() const
29 {
30     return false;
31 }
32
33 bool DragData::containsColor() const
34 {
35     return false;
36 }
37
38 bool DragData::containsFiles() const
39 {
40     return m_platformDragData->hasFilenames();
41 }
42
43 unsigned DragData::numberOfFiles() const
44 {
45     return m_platformDragData->filenames().size();
46 }
47
48 void DragData::asFilenames(Vector<String>& result) const
49 {
50     result = m_platformDragData->filenames();
51 }
52
53 bool DragData::containsPlainText() const
54 {
55     return m_platformDragData->hasText();
56 }
57
58 String DragData::asPlainText(Frame*) const
59 {
60     return m_platformDragData->text();
61 }
62
63 Color DragData::asColor() const
64 {
65     return Color();
66 }
67
68 bool DragData::containsCompatibleContent() const
69 {
70     return containsPlainText() || containsURL(0) || m_platformDragData->hasMarkup() || containsColor() || containsFiles();
71 }
72
73 bool DragData::containsURL(Frame* frame, FilenameConversionPolicy filenamePolicy) const
74 {
75     return !asURL(frame, filenamePolicy).isEmpty();
76 }
77
78 String DragData::asURL(Frame*, FilenameConversionPolicy filenamePolicy, String* title) const
79 {
80     if (!m_platformDragData->hasURL())
81         return String();
82     if (filenamePolicy != ConvertFilenames) {
83         URL url(URL(), m_platformDragData->url());
84         if (url.isLocalFile())
85             return String();
86     }
87
88     String url(m_platformDragData->url());
89     if (title)
90         *title = m_platformDragData->urlLabel();
91     return url;
92 }
93
94
95 PassRefPtr<DocumentFragment> DragData::asFragment(Frame* frame, PassRefPtr<Range>, bool, bool&) const
96 {
97     if (!m_platformDragData->hasMarkup())
98         return 0;
99
100     return createFragmentFromMarkup(frame->document(), m_platformDragData->markup(), "");
101 }
102
103 }