// Copyright (c) 2006-2008 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. // // Some helper functions for working with the clipboard and IDataObjects. #ifndef BASE_CLIPBOARD_UTIL_H_ #define BASE_CLIPBOARD_UTIL_H_ #include #include #include class ClipboardUtil { public: ///////////////////////////////////////////////////////////////////////////// // Clipboard formats. static FORMATETC* GetUrlFormat(); static FORMATETC* GetUrlWFormat(); static FORMATETC* GetMozUrlFormat(); static FORMATETC* GetPlainTextFormat(); static FORMATETC* GetPlainTextWFormat(); static FORMATETC* GetFilenameFormat(); static FORMATETC* GetFilenameWFormat(); // MS HTML Format static FORMATETC* GetHtmlFormat(); // Firefox text/html static FORMATETC* GetTextHtmlFormat(); static FORMATETC* GetCFHDropFormat(); static FORMATETC* GetFileDescriptorFormat(); static FORMATETC* GetFileContentFormatZero(); static FORMATETC* GetWebKitSmartPasteFormat(); ///////////////////////////////////////////////////////////////////////////// // These methods check to see if |data_object| has the requested type. // Returns true if it does. static bool HasUrl(IDataObject* data_object); static bool HasFilenames(IDataObject* data_object); static bool HasPlainText(IDataObject* data_object); ///////////////////////////////////////////////////////////////////////////// // Helper methods to extract information from an IDataObject. These methods // return true if the requested data type is found in |data_object|. static bool GetUrl(IDataObject* data_object, std::wstring* url, std::wstring* title); static bool GetFilenames(IDataObject* data_object, std::vector* filenames); static bool GetPlainText(IDataObject* data_object, std::wstring* plain_text); static bool GetHtml(IDataObject* data_object, std::wstring* text_html, std::string* base_url); static bool GetFileContents(IDataObject* data_object, std::wstring* filename, std::string* file_contents); // A helper method for converting between MS CF_HTML format and plain // text/html. static std::string HtmlToCFHtml(const std::string& html, const std::string& base_url); static void CFHtmlToHtml(const std::string& cf_html, std::string* html, std::string* base_url); }; #endif // BASE_CLIPBOARD_UTIL_H_