| Index: base/clipboard.h
|
| ===================================================================
|
| --- base/clipboard.h (revision 27849)
|
| +++ base/clipboard.h (working copy)
|
| @@ -1,259 +0,0 @@
|
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef BASE_CLIPBOARD_H_
|
| -#define BASE_CLIPBOARD_H_
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/process.h"
|
| -#include "base/string16.h"
|
| -
|
| -namespace gfx {
|
| -class Size;
|
| -}
|
| -
|
| -class FilePath;
|
| -
|
| -class Clipboard {
|
| - public:
|
| - typedef std::string FormatType;
|
| -#if defined(USE_X11)
|
| - typedef struct _GtkClipboard GtkClipboard;
|
| - typedef std::map<FormatType, std::pair<char*, size_t> > TargetMap;
|
| -#endif
|
| -
|
| - // ObjectType designates the type of data to be stored in the clipboard. This
|
| - // designation is shared across all OSes. The system-specific designation
|
| - // is defined by FormatType. A single ObjectType might be represented by
|
| - // several system-specific FormatTypes. For example, on Linux the CBF_TEXT
|
| - // ObjectType maps to "text/plain", "STRING", and several other formats. On
|
| - // windows it maps to CF_UNICODETEXT.
|
| - enum ObjectType {
|
| - CBF_TEXT,
|
| - CBF_HTML,
|
| - CBF_BOOKMARK,
|
| - CBF_FILES,
|
| - CBF_WEBKIT,
|
| - CBF_BITMAP,
|
| - CBF_SMBITMAP, // Bitmap from shared memory.
|
| - CBF_DATA, // Arbitrary block of bytes.
|
| - };
|
| -
|
| - // ObjectMap is a map from ObjectType to associated data.
|
| - // The data is organized differently for each ObjectType. The following
|
| - // table summarizes what kind of data is stored for each key.
|
| - // * indicates an optional argument.
|
| - //
|
| - // Key Arguments Type
|
| - // -------------------------------------
|
| - // CBF_TEXT text char array
|
| - // CBF_HTML html char array
|
| - // url* char array
|
| - // CBF_BOOKMARK html char array
|
| - // url char array
|
| - // CBF_LINK html char array
|
| - // url char array
|
| - // CBF_FILES files char array representing multiple files.
|
| - // Filenames are separated by null characters and
|
| - // the final filename is double null terminated.
|
| - // The filenames are encoded in platform-specific
|
| - // encoding.
|
| - // CBF_WEBKIT none empty vector
|
| - // CBF_BITMAP pixels byte array
|
| - // size gfx::Size struct
|
| - // CBF_SMBITMAP shared_mem shared memory handle
|
| - // size gfx::Size struct
|
| - // CBF_DATA format char array
|
| - // data byte array
|
| - typedef std::vector<char> ObjectMapParam;
|
| - typedef std::vector<ObjectMapParam> ObjectMapParams;
|
| - typedef std::map<int /* ObjectType */, ObjectMapParams> ObjectMap;
|
| -
|
| - // Buffer designates which clipboard the action should be applied to.
|
| - // Only platforms that use the X Window System support the selection
|
| - // buffer. Furthermore we currently only use a buffer other than the
|
| - // standard buffer when reading from the clipboard so only those
|
| - // functions accept a buffer parameter.
|
| - enum Buffer {
|
| - BUFFER_STANDARD,
|
| -#if defined(OS_LINUX)
|
| - BUFFER_SELECTION,
|
| -#endif
|
| - };
|
| -
|
| - static bool IsValidBuffer(int32 buffer) {
|
| - switch (buffer) {
|
| - case BUFFER_STANDARD:
|
| - return true;
|
| -#if defined(OS_LINUX)
|
| - case BUFFER_SELECTION:
|
| - return true;
|
| -#endif
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - static Buffer FromInt(int32 buffer) {
|
| - return static_cast<Buffer>(buffer);
|
| - }
|
| -
|
| - Clipboard();
|
| - ~Clipboard();
|
| -
|
| - // Write a bunch of objects to the system clipboard. Copies are made of the
|
| - // contents of |objects|. On Windows they are copied to the system clipboard.
|
| - // On linux they are copied into a structure owned by the Clipboard object and
|
| - // kept until the system clipboard is set again.
|
| - void WriteObjects(const ObjectMap& objects);
|
| -
|
| - // Behaves as above. If there is some shared memory handle passed as one of
|
| - // the objects, it came from the process designated by |process|. This will
|
| - // assist in turning it into a shared memory region that the current process
|
| - // can use.
|
| - void WriteObjects(const ObjectMap& objects, base::ProcessHandle process);
|
| -
|
| - // On Linux, we need to know when the clipboard is set to a URL. Most
|
| - // platforms don't care.
|
| -#if !defined(OS_LINUX)
|
| - void DidWriteURL(const std::string& utf8_text) {}
|
| -#else // !defined(OS_LINUX)
|
| - void DidWriteURL(const std::string& utf8_text);
|
| -#endif
|
| -
|
| - // Tests whether the clipboard contains a certain format
|
| - bool IsFormatAvailable(const FormatType& format, Buffer buffer) const;
|
| -
|
| - // As above, but instead of interpreting |format| by some platform-specific
|
| - // definition, interpret it as a literal MIME type.
|
| - bool IsFormatAvailableByString(const std::string& format,
|
| - Buffer buffer) const;
|
| -
|
| - // Reads UNICODE text from the clipboard, if available.
|
| - void ReadText(Buffer buffer, string16* result) const;
|
| -
|
| - // Reads ASCII text from the clipboard, if available.
|
| - void ReadAsciiText(Buffer buffer, std::string* result) const;
|
| -
|
| - // Reads HTML from the clipboard, if available.
|
| - void ReadHTML(Buffer buffer, string16* markup, std::string* src_url) const;
|
| -
|
| - // Reads a bookmark from the clipboard, if available.
|
| - void ReadBookmark(string16* title, std::string* url) const;
|
| -
|
| - // Reads a file or group of files from the clipboard, if available, into the
|
| - // out parameter.
|
| - void ReadFile(FilePath* file) const;
|
| - void ReadFiles(std::vector<FilePath>* files) const;
|
| -
|
| - // Reads raw data from the clipboard with the given format type. Stores result
|
| - // as a byte vector.
|
| - void ReadData(const std::string& format, std::string* result);
|
| -
|
| - // Get format Identifiers for various types.
|
| - static FormatType GetUrlFormatType();
|
| - static FormatType GetUrlWFormatType();
|
| - static FormatType GetMozUrlFormatType();
|
| - static FormatType GetPlainTextFormatType();
|
| - static FormatType GetPlainTextWFormatType();
|
| - static FormatType GetFilenameFormatType();
|
| - static FormatType GetFilenameWFormatType();
|
| - static FormatType GetWebKitSmartPasteFormatType();
|
| - // Win: MS HTML Format, Other: Generic HTML format
|
| - static FormatType GetHtmlFormatType();
|
| -#if defined(OS_WIN)
|
| - static FormatType GetBitmapFormatType();
|
| - // Firefox text/html
|
| - static FormatType GetTextHtmlFormatType();
|
| - static FormatType GetCFHDropFormatType();
|
| - static FormatType GetFileDescriptorFormatType();
|
| - static FormatType GetFileContentFormatZeroType();
|
| -
|
| - // Duplicates any remote shared memory handle embedded inside |objects| that
|
| - // was created by |process| so that it can be used by this process.
|
| - static void DuplicateRemoteHandles(base::ProcessHandle process,
|
| - ObjectMap* objects);
|
| -#endif
|
| -
|
| - private:
|
| - void DispatchObject(ObjectType type, const ObjectMapParams& params);
|
| -
|
| - void WriteText(const char* text_data, size_t text_len);
|
| -
|
| - void WriteHTML(const char* markup_data,
|
| - size_t markup_len,
|
| - const char* url_data,
|
| - size_t url_len);
|
| -
|
| - void WriteBookmark(const char* title_data,
|
| - size_t title_len,
|
| - const char* url_data,
|
| - size_t url_len);
|
| -
|
| - void WriteWebSmartPaste();
|
| -
|
| - void WriteFiles(const char* file_data, size_t file_len);
|
| -
|
| - void WriteBitmap(const char* pixel_data, const char* size_data);
|
| -
|
| -#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)
|
| - // |format_name| is an ASCII string and should be NULL-terminated.
|
| - // TODO(estade): port to mac.
|
| - void WriteData(const char* format_name, size_t format_len,
|
| - const char* data_data, size_t data_len);
|
| -#endif
|
| -#if defined(OS_WIN)
|
| - void WriteBitmapFromSharedMemory(const char* bitmap_data,
|
| - const char* size_data,
|
| - base::ProcessHandle handle);
|
| -
|
| - void WriteBitmapFromHandle(HBITMAP source_hbitmap,
|
| - const gfx::Size& size);
|
| -
|
| - // Safely write to system clipboard. Free |handle| on failure.
|
| - void WriteToClipboard(unsigned int format, HANDLE handle);
|
| -
|
| - static void ParseBookmarkClipboardFormat(const string16& bookmark,
|
| - string16* title,
|
| - std::string* url);
|
| -
|
| - // Free a handle depending on its type (as intuited from format)
|
| - static void FreeData(unsigned int format, HANDLE data);
|
| -
|
| - // Return the window that should be the clipboard owner, creating it
|
| - // if neccessary. Marked const for lazily initialization by const methods.
|
| - HWND GetClipboardWindow() const;
|
| -
|
| - // Mark this as mutable so const methods can still do lazy initialization.
|
| - mutable HWND clipboard_owner_;
|
| -
|
| - // True if we can create a window.
|
| - bool create_window_;
|
| -#elif defined(USE_X11)
|
| - // Data is stored in the |clipboard_data_| map until it is saved to the system
|
| - // clipboard. The Store* functions save data to the |clipboard_data_| map. The
|
| - // SetGtkClipboard function replaces whatever is on the system clipboard with
|
| - // the contents of |clipboard_data_|.
|
| - // The Write* functions make a deep copy of the data passed to them an store
|
| - // it in |clipboard_data_|.
|
| -
|
| - // Write changes to gtk clipboard.
|
| - void SetGtkClipboard();
|
| - // Insert a mapping into clipboard_data_.
|
| - void InsertMapping(const char* key, char* data, size_t data_len);
|
| -
|
| - // find the gtk clipboard for the passed buffer enum
|
| - GtkClipboard* LookupBackingClipboard(Buffer clipboard) const;
|
| -
|
| - TargetMap* clipboard_data_;
|
| - GtkClipboard* clipboard_;
|
| - GtkClipboard* primary_selection_;
|
| -#endif
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(Clipboard);
|
| -};
|
| -
|
| -#endif // BASE_CLIPBOARD_H_
|
|
|