15ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen/* 25ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Copyright (c) 2010 Google Inc. All rights reserved. 35ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * 45ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Redistribution and use in source and binary forms, with or without 55ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * modification, are permitted provided that the following conditions are 65ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * met: 75ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * 85ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * * Redistributions of source code must retain the above copyright 95ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * notice, this list of conditions and the following disclaimer. 105ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * * Redistributions in binary form must reproduce the above 115ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * copyright notice, this list of conditions and the following disclaimer 125ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * in the documentation and/or other materials provided with the 135ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * distribution. 145ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * * Neither the name of Google Inc. nor the names of its 155ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * contributors may be used to endorse or promote products derived from 165ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * this software without specific prior written permission. 175ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * 185ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen */ 305ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 315ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#ifndef WritableDataObject_h 325ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#define WritableDataObject_h 335ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 34a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "Clipboard.h" 355ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include "KURL.h" 365ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include "PlatformString.h" 375ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include "SharedBuffer.h" 385ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include <wtf/HashMap.h> 395ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include <wtf/RefCounted.h> 405ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include <wtf/RefPtr.h> 415ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include <wtf/text/StringHash.h> 425ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsennamespace WebCore { 445ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 455ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen// Used for one way communication of drag/drop and copy/paste data from the 465ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen// renderer to the browser. This is intenteded to be used in dragstart/copy/cut 475ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen// events. Due to shortcomings, writes to the pasteboard cannot be performed 485ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen// atomically. 495ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenclass WritableDataObject : public RefCounted<WritableDataObject> { 505ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenpublic: 51a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch static PassRefPtr<WritableDataObject> create(Clipboard::ClipboardType); 525ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 53a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void clearData(const String& type); 54a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void clearAllExceptFiles(); 55a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void clearAll(); 56a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch bool setData(const String& type, const String& data); 575ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 58a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void setUrlTitle(const String& title) { m_urlTitle = title; } 59a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void setHtmlBaseUrl(const KURL& baseURL) { m_htmlBaseURL = baseURL; } 605ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 615ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen // Used for transferring drag data from the renderer to the browser. 62a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch HashMap<String, String> dataMap() const { return m_dataMap; } 63a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch String urlTitle() const { return m_urlTitle; } 64a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch KURL htmlBaseURL() const { return m_htmlBaseURL; } 655ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 66a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch String fileExtension() const { return m_fileExtension; } 67a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch String fileContentFilename() const { return m_fileContentFilename; } 68a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch PassRefPtr<SharedBuffer> fileContent() const { return m_fileContent; } 69a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void setFileExtension(const String& fileExtension) { m_fileExtension = fileExtension; } 70a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void setFileContentFilename(const String& fileContentFilename) { m_fileContentFilename = fileContentFilename; } 71a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void setFileContent(PassRefPtr<SharedBuffer> fileContent) { m_fileContent = fileContent; } 725ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 735ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenprivate: 74a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch explicit WritableDataObject(Clipboard::ClipboardType); 755ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 76a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Clipboard::ClipboardType m_clipboardType; 775ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 785ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen HashMap<String, String> m_dataMap; 795ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen String m_urlTitle; 805ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen KURL m_htmlBaseURL; 815ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen String m_fileExtension; 825ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen String m_fileContentFilename; 835ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen RefPtr<SharedBuffer> m_fileContent; 845ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen}; 855ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 865ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen} // namespace WebCore 875ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 885ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#endif 89