1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_RENDERER_CLIPBOARD_CLIENT_H_ 6 #define CONTENT_RENDERER_CLIPBOARD_CLIENT_H_ 7 8 #include "ui/base/clipboard/clipboard.h" 9 10 class GURL; 11 12 namespace content { 13 14 // Interface for the content embedder to implement to support clipboard. 15 class ClipboardClient { 16 public: 17 class WriteContext { 18 public: 19 virtual ~WriteContext() { } 20 21 // Writes bitmap data into the context, updating the ObjectMap. 22 virtual void WriteBitmapFromPixels(ui::Clipboard::ObjectMap* objects, 23 const void* pixels, 24 const gfx::Size& size) = 0; 25 26 // Flushes all gathered data. 27 virtual void Flush(const ui::Clipboard::ObjectMap& objects) = 0; 28 }; 29 30 virtual ~ClipboardClient() { } 31 32 // Get a clipboard that can be used to construct a ScopedClipboardWriterGlue. 33 virtual ui::Clipboard* GetClipboard() = 0; 34 35 // Get a sequence number which uniquely identifies clipboard state. 36 virtual uint64 GetSequenceNumber(ui::ClipboardType type) = 0; 37 38 // Tests whether the clipboard contains a certain format 39 virtual bool IsFormatAvailable(const ui::Clipboard::FormatType& format, 40 ui::ClipboardType type) = 0; 41 42 // Clear the contents of the clipboard. 43 virtual void Clear(ui::ClipboardType type) = 0; 44 45 // Reads the available types from the clipboard, if available. 46 virtual void ReadAvailableTypes(ui::ClipboardType type, 47 std::vector<base::string16>* types, 48 bool* contains_filenames) = 0; 49 50 // Reads UNICODE text from the clipboard, if available. 51 virtual void ReadText(ui::ClipboardType type, 52 base::string16* result) = 0; 53 54 // Reads ASCII text from the clipboard, if available. 55 virtual void ReadAsciiText(ui::ClipboardType type, 56 std::string* result) = 0; 57 58 // Reads HTML from the clipboard, if available. 59 virtual void ReadHTML(ui::ClipboardType type, 60 base::string16* markup, 61 GURL* url, 62 uint32* fragment_start, 63 uint32* fragment_end) = 0; 64 65 // Reads RTF from the clipboard, if available. 66 virtual void ReadRTF(ui::ClipboardType type, std::string* result) = 0; 67 68 // Reads and image from the clipboard, if available. 69 virtual void ReadImage(ui::ClipboardType type, std::string* data) = 0; 70 71 // Reads a custom data type from the clipboard, if available. 72 virtual void ReadCustomData(ui::ClipboardType clipboard_type, 73 const base::string16& type, 74 base::string16* data) = 0; 75 76 // Reads raw data from the clipboard for a given format. 77 virtual void ReadData(const ui::Clipboard::FormatType& format, 78 std::string* data) = 0; 79 80 // Creates a context to write clipboard data. May return NULL. 81 virtual WriteContext* CreateWriteContext() = 0; 82 }; 83 84 } // namespace content 85 86 #endif // CONTENT_RENDERER_CLIPBOARD_CLIENT_H_ 87 88