1/* 2 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31#ifndef WebClipboard_h 32#define WebClipboard_h 33 34#include "WebCommon.h" 35#include "WebData.h" 36#include "WebImage.h" 37#include "WebString.h" 38#include "WebURL.h" 39#include "WebVector.h" 40 41namespace WebKit { 42 43class WebDragData; 44class WebImage; 45class WebURL; 46 47class WebClipboard { 48public: 49 enum Format { 50 FormatPlainText, 51 FormatHTML, 52 FormatBookmark, 53 FormatSmartPaste 54 }; 55 56 enum Buffer { 57 BufferStandard, 58 // Used on platforms like the X Window System that treat selection 59 // as a type of clipboard. 60 BufferSelection, 61 }; 62 63 // Returns an identifier which can be used to determine whether the data 64 // contained within the clipboard has changed. 65 virtual uint64_t sequenceNumber(Buffer) { return 0; } 66 67 virtual bool isFormatAvailable(Format, Buffer) { return false; } 68 69 virtual WebVector<WebString> readAvailableTypes( 70 Buffer, bool* containsFilenames) { return WebVector<WebString>(); } 71 virtual WebString readPlainText(Buffer) { return WebString(); } 72 // fragmentStart and fragmentEnd are indexes into the returned markup that 73 // indicate the start and end of the fragment if the returned markup 74 // contains additional context. If there is no additional context, 75 // fragmentStart will be zero and fragmentEnd will be the same as the length 76 // of the returned markup. 77 virtual WebString readHTML( 78 Buffer buffer, WebURL* pageURL, unsigned* fragmentStart, 79 unsigned* fragmentEnd) { return WebString(); } 80 virtual WebData readImage(Buffer) { return WebData(); } 81 virtual WebString readCustomData( 82 Buffer, const WebString& type) { return WebString(); } 83 84 virtual void writePlainText(const WebString&) { } 85 virtual void writeHTML( 86 const WebString& htmlText, const WebURL&, 87 const WebString& plainText, bool writeSmartPaste) { } 88 virtual void writeURL( 89 const WebURL&, const WebString& title) { } 90 virtual void writeImage( 91 const WebImage&, const WebURL&, const WebString& title) { } 92 virtual void writeDataObject(const WebDragData&) { } 93 94protected: 95 ~WebClipboard() { } 96}; 97 98} // namespace WebKit 99 100#endif 101