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 41 namespace blink { 42 43 class WebDragData; 44 class WebImage; 45 class WebURL; 46 47 class WebClipboard { 48 public: 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 writeImage( 89 const WebImage&, const WebURL&, const WebString& title) { } 90 virtual void writeDataObject(const WebDragData&) { } 91 92 protected: 93 ~WebClipboard() { } 94 }; 95 96 } // namespace blink 97 98 #endif 99