1a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch/*
2a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Copyright (c) 2008, 2009, Google Inc. All rights reserved.
3a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch *
4a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Redistribution and use in source and binary forms, with or without
5a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * modification, are permitted provided that the following conditions are
6a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * met:
7a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch *
8a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch *     * Redistributions of source code must retain the above copyright
9a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * notice, this list of conditions and the following disclaimer.
10a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch *     * Redistributions in binary form must reproduce the above
11a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * copyright notice, this list of conditions and the following disclaimer
12a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * in the documentation and/or other materials provided with the
13a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * distribution.
14a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch *     * Neither the name of Google Inc. nor the names of its
15a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * contributors may be used to endorse or promote products derived from
16a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * this software without specific prior written permission.
17a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch *
18a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch */
30a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
31a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "config.h"
32a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "ChromiumDataObjectLegacy.h"
33a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
34a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "ClipboardMimeTypes.h"
35a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "Pasteboard.h"
36ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "PlatformBridge.h"
37a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
38a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochnamespace WebCore {
39a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
40a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch// Per RFC 2483, the line separator for "text/..." MIME types is CR-LF.
41a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochstatic char const* const textMIMETypeLineSeparator = "\r\n";
42a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
43a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid ChromiumDataObjectLegacy::clearData(const String& type)
44a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
45a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeTextPlain) {
46a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_plainText = "";
47a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return;
48a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
49a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
50a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeURL || type == mimeTypeTextURIList) {
51a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_uriList = "";
52a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_url = KURL();
53a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_urlTitle = "";
54a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return;
55a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
56a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
57a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeTextHTML) {
58a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_textHtml = "";
59a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_htmlBaseUrl = KURL();
60a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return;
61a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
62a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
63a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeDownloadURL) {
64a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_downloadMetadata = "";
65a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return;
66a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
67a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
68a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
69a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid ChromiumDataObjectLegacy::clearAll()
70a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
71a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    clearAllExceptFiles();
72a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_filenames.clear();
73a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
74a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
75a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid ChromiumDataObjectLegacy::clearAllExceptFiles()
76a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
77a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_urlTitle = "";
78a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_url = KURL();
79a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_uriList = "";
80a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_downloadMetadata = "";
81a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_fileExtension = "";
82a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_plainText = "";
83a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_textHtml = "";
84a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_htmlBaseUrl = KURL();
85a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_fileContentFilename = "";
86a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (m_fileContent)
87a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_fileContent->clear();
88a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
89a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
90a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool ChromiumDataObjectLegacy::hasData() const
91a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
92a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return !m_url.isEmpty()
93a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        || !m_uriList.isEmpty()
94a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        || !m_downloadMetadata.isEmpty()
95a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        || !m_fileExtension.isEmpty()
96a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        || !m_filenames.isEmpty()
97a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        || !m_plainText.isEmpty()
98a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        || !m_textHtml.isEmpty()
99a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        || m_fileContent;
100a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
101a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
102a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochHashSet<String> ChromiumDataObjectLegacy::types() const
103a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
104a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    // This is currently broken for pasteboard events, and always has been.
105a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    HashSet<String> results;
106a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
107a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (!m_plainText.isEmpty()) {
108a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        results.add(mimeTypeText);
109a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        results.add(mimeTypeTextPlain);
110a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
111a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
112a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (m_url.isValid())
113a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        results.add(mimeTypeURL);
114a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
115a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (!m_uriList.isEmpty())
116a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        results.add(mimeTypeTextURIList);
117a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
118a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (!m_textHtml.isEmpty())
119a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        results.add(mimeTypeTextHTML);
120a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
121a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (!m_filenames.isEmpty())
122a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        results.add("Files");
123a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
124a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return results;
125a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
126a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
127a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochString ChromiumDataObjectLegacy::getData(const String& type, bool& success)
128a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
129a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeTextPlain) {
130a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        if (m_clipboardType == Clipboard::CopyAndPaste) {
131a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            PasteboardPrivate::ClipboardBuffer buffer =
132a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                Pasteboard::generalPasteboard()->isSelectionMode() ?
133a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                PasteboardPrivate::SelectionBuffer :
134a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                PasteboardPrivate::StandardBuffer;
135ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch            String text = PlatformBridge::clipboardReadPlainText(buffer);
136a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            success = !text.isEmpty();
137a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            return text;
138a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        }
139a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        success = !m_plainText.isEmpty();
140a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return m_plainText;
141a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
142a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
143a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeURL) {
144a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        success = !m_url.isEmpty();
145a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return m_url.string();
146a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
147a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
148a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeTextURIList) {
149a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        success = !m_uriList.isEmpty();
150a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return m_uriList;
151a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
152a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
153a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeTextHTML) {
154a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        if (m_clipboardType == Clipboard::CopyAndPaste) {
155a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            PasteboardPrivate::ClipboardBuffer buffer =
156a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                Pasteboard::generalPasteboard()->isSelectionMode() ?
157a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                PasteboardPrivate::SelectionBuffer :
158a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                PasteboardPrivate::StandardBuffer;
159a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            String htmlText;
160a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            KURL sourceURL;
161ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch            PlatformBridge::clipboardReadHTML(buffer, &htmlText, &sourceURL);
162a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            success = !htmlText.isEmpty();
163a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            return htmlText;
164a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        }
165a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        success = !m_textHtml.isEmpty();
166a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return m_textHtml;
167a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
168a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
169a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeDownloadURL) {
170a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        success = !m_downloadMetadata.isEmpty();
171a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return m_downloadMetadata;
172a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
173a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
174a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    success = false;
175a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return String();
176a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
177a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
178a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool ChromiumDataObjectLegacy::setData(const String& type, const String& data)
179a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
180a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeTextPlain) {
181a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_plainText = data;
182a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return true;
183a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
184a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
185a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeURL || type == mimeTypeTextURIList) {
186a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_url = KURL();
187a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        Vector<String> uriList;
188a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        // Line separator is \r\n per RFC 2483 - however, for compatibility
189a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        // reasons we also allow just \n here.
190a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        data.split('\n', uriList);
191a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        // Process the input and copy the first valid URL into the url member.
192a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        // In case no URLs can be found, subsequent calls to getData("URL")
193a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        // will get an empty string. This is in line with the HTML5 spec (see
194a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        // "The DragEvent and DataTransfer interfaces").
195a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        for (size_t i = 0; i < uriList.size(); ++i) {
196a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            String& line = uriList[i];
197a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            line = line.stripWhiteSpace();
198a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            if (line.isEmpty())
199a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                continue;
200a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            if (line[0] == '#')
201a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                continue;
202a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            KURL url = KURL(ParsedURLString, line);
203a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            if (url.isValid()) {
204a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                m_url = url;
205a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                break;
206a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            }
207a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        }
208a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_uriList = data;
209a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return true;
210a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
211a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
212a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeTextHTML) {
213a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_textHtml = data;
214a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_htmlBaseUrl = KURL();
215a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return true;
216a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
217a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
218a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (type == mimeTypeDownloadURL) {
219a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_downloadMetadata = data;
220a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return true;
221a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
222a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
223a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return false;
224a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
225a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
226a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochChromiumDataObjectLegacy::ChromiumDataObjectLegacy(Clipboard::ClipboardType clipboardType)
227a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    : m_clipboardType(clipboardType)
228a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
229a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
230a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
231a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochChromiumDataObjectLegacy::ChromiumDataObjectLegacy(const ChromiumDataObjectLegacy& other)
232a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    : RefCounted<ChromiumDataObjectLegacy>()
233a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_clipboardType(other.m_clipboardType)
234a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_urlTitle(other.m_urlTitle)
235a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_downloadMetadata(other.m_downloadMetadata)
236a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_fileExtension(other.m_fileExtension)
237a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_filenames(other.m_filenames)
238a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_plainText(other.m_plainText)
239a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_textHtml(other.m_textHtml)
240a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_htmlBaseUrl(other.m_htmlBaseUrl)
241a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_fileContentFilename(other.m_fileContentFilename)
242a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_url(other.m_url)
243a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    , m_uriList(other.m_uriList)
244a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
245a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (other.m_fileContent.get())
246a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        m_fileContent = other.m_fileContent->copy();
247a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
248a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
249a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} // namespace WebCore
250