summaryrefslogtreecommitdiffstats
path: root/base/scoped_clipboard_writer.h
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-05 01:34:30 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-05 01:34:30 +0000
commit3ee3ffd1d79a0c1544f3bfd70c7de7606df9482f (patch)
tree0943a0925f5974478463e5d00886be29109858e6 /base/scoped_clipboard_writer.h
parent38733063b7e1cf0b6e67c0b590773ff4f1aaa18d (diff)
downloadchromium_src-3ee3ffd1d79a0c1544f3bfd70c7de7606df9482f.zip
chromium_src-3ee3ffd1d79a0c1544f3bfd70c7de7606df9482f.tar.gz
chromium_src-3ee3ffd1d79a0c1544f3bfd70c7de7606df9482f.tar.bz2
Rewrote the clipboard API to be more concurrent. Added a helper class to make it more foolproof. Updated all clients and unittests. Mac port by jeremy@chromium.org
Review URL: http://codereview.chromium.org/9154 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4719 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/scoped_clipboard_writer.h')
-rw-r--r--base/scoped_clipboard_writer.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/base/scoped_clipboard_writer.h b/base/scoped_clipboard_writer.h
new file mode 100644
index 0000000..08a36fd
--- /dev/null
+++ b/base/scoped_clipboard_writer.h
@@ -0,0 +1,62 @@
+// 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.
+
+#ifndef SCOPED_CLIPBOARD_WRITER_H_
+#define SCOPED_CLIPBOARD_WRITER_H_
+
+#include "base/clipboard.h"
+
+#if defined(OS_WIN)
+class SkBitmap;
+#endif
+
+// This class is a wrapper for |Clipboard| that handles packing data
+// into a Clipboard::ObjectMap.
+// NB: You should probably NOT be using this class if you include
+// webkit_glue.h. Use ScopedClipboardWriterGlue instead.
+class ScopedClipboardWriter {
+ public:
+ // Create an instance that is a simple wrapper around clipboard.
+ ScopedClipboardWriter(Clipboard* clipboard);
+
+ ~ScopedClipboardWriter();
+
+ // Adds UNICODE and ASCII text to the clipboard.
+ void WriteText(const std::wstring& text);
+
+ // Adds HTML to the clipboard. The url parameter is optional, but especially
+ // useful if the HTML fragment contains relative links
+ void WriteHTML(const std::wstring& markup, const std::string& src_url);
+
+ // Adds a bookmark to the clipboard
+ void WriteBookmark(const std::wstring& title, const std::string& url);
+
+ // Adds both a bookmark and an HTML hyperlink to the clipboard. It is a
+ // convenience wrapper around WriteBookmark and WriteHTML.
+ void WriteHyperlink(const std::wstring& title, const std::string& url);
+
+ // Adds a file or group of files to the clipboard.
+ void WriteFile(const std::wstring& file);
+ void WriteFiles(const std::vector<std::wstring>& files);
+
+#if defined(OS_WIN)
+ // Used by WebKit to determine whether WebKit wrote the clipboard last
+ void WriteWebSmartPaste();
+
+ // Adds a bitmap to the clipboard
+ // This is the slowest way to copy a bitmap to the clipboard as we must first
+ // memcpy the pixels into GDI and the blit the bitmap to the clipboard.
+ // Pixel format is assumed to be 32-bit BI_RGB.
+ void WriteBitmapFromPixels(const void* pixels, const gfx::Size& size);
+#endif
+
+ protected:
+ Clipboard::ObjectMap objects_;
+ Clipboard* clipboard_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ScopedClipboardWriter);
+};
+
+#endif // SCOPED_CLIPBOARD_WRITER_H_