diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-05 21:57:29 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-05 21:57:29 +0000 |
commit | db9da27d07d045484f227d7fd3b2f026d6fe7db7 (patch) | |
tree | 12ad8e016468cbecac455ca763030fa4ee845523 /base | |
parent | acd4450a06be8fd2e79f13f143daf5f065991e94 (diff) | |
download | chromium_src-db9da27d07d045484f227d7fd3b2f026d6fe7db7.zip chromium_src-db9da27d07d045484f227d7fd3b2f026d6fe7db7.tar.gz chromium_src-db9da27d07d045484f227d7fd3b2f026d6fe7db7.tar.bz2 |
changelist for estade readability review.
submitted changelist: http://codereview.chromium.org/9154
Review URL: http://codereview.chromium.org/12605
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6457 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/clipboard_unittest.cc | 68 | ||||
-rw-r--r-- | base/scoped_clipboard_writer.cc | 97 | ||||
-rw-r--r-- | base/scoped_clipboard_writer.h | 34 |
3 files changed, 105 insertions, 94 deletions
diff --git a/base/clipboard_unittest.cc b/base/clipboard_unittest.cc index 5432a58..c752b4c 100644 --- a/base/clipboard_unittest.cc +++ b/base/clipboard_unittest.cc @@ -17,13 +17,13 @@ TEST_F(ClipboardTest, ClearTest) { Clipboard clipboard; { - ScopedClipboardWriter scw(&clipboard); - scw.WriteText(std::wstring(L"clear me")); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteText(std::wstring(L"clear me")); } { - ScopedClipboardWriter scw(&clipboard); - scw.WriteHTML(std::wstring(L"<b>broom</b>"), ""); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteHTML(std::wstring(L"<b>broom</b>"), ""); } EXPECT_FALSE(clipboard.IsFormatAvailable( @@ -39,8 +39,8 @@ TEST_F(ClipboardTest, TextTest) { std::string ascii_text; { - ScopedClipboardWriter scw(&clipboard); - scw.WriteText(text); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteText(text); } EXPECT_TRUE(clipboard.IsFormatAvailable( @@ -60,8 +60,8 @@ TEST_F(ClipboardTest, HTMLTest) { std::string url("http://www.example.com/"), url_result; { - ScopedClipboardWriter scw(&clipboard); - scw.WriteHTML(markup, url); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteHTML(markup, url); } EXPECT_EQ(true, clipboard.IsFormatAvailable( @@ -72,7 +72,7 @@ TEST_F(ClipboardTest, HTMLTest) { // TODO(playmobil): It's not clear that non windows clipboards need to support // this. EXPECT_EQ(url, url_result); -#endif +#endif // defined(OS_WIN) } TEST_F(ClipboardTest, TrickyHTMLTest) { @@ -82,8 +82,8 @@ TEST_F(ClipboardTest, TrickyHTMLTest) { std::string url, url_result; { - ScopedClipboardWriter scw(&clipboard); - scw.WriteHTML(markup, url); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteHTML(markup, url); } EXPECT_EQ(true, clipboard.IsFormatAvailable( @@ -94,7 +94,7 @@ TEST_F(ClipboardTest, TrickyHTMLTest) { // TODO(playmobil): It's not clear that non windows clipboards need to support // this. EXPECT_EQ(url, url_result); -#endif +#endif // defined(OS_WIN) } // TODO(estade): Port the following test (decide what target we use for urls) @@ -106,8 +106,8 @@ TEST_F(ClipboardTest, BookmarkTest) { std::string url("http://www.example.com/"), url_result; { - ScopedClipboardWriter scw(&clipboard); - scw.WriteBookmark(title, url); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteBookmark(title, url); } EXPECT_EQ(true, @@ -116,7 +116,7 @@ TEST_F(ClipboardTest, BookmarkTest) { EXPECT_EQ(title, title_result); EXPECT_EQ(url, url_result); } -#endif +#endif // defined(OS_WIN) TEST_F(ClipboardTest, MultiFormatTest) { Clipboard clipboard; @@ -127,9 +127,9 @@ TEST_F(ClipboardTest, MultiFormatTest) { std::string ascii_text; { - ScopedClipboardWriter scw(&clipboard); - scw.WriteHTML(markup, url); - scw.WriteText(text); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteHTML(markup, url); + clipboard_writer.WriteText(text); } EXPECT_EQ(true, @@ -144,7 +144,7 @@ TEST_F(ClipboardTest, MultiFormatTest) { // TODO(playmobil): It's not clear that non windows clipboards need to support // this. EXPECT_EQ(url, url_result); -#endif +#endif // defined(OS_WIN) clipboard.ReadText(&text_result); EXPECT_EQ(text, text_result); clipboard.ReadAsciiText(&ascii_text); @@ -159,15 +159,15 @@ TEST_F(ClipboardTest, FileTest) { Clipboard clipboard; #if defined(OS_WIN) std::wstring file = L"C:\\Downloads\\My Downloads\\A Special File.txt"; -#else +#elif defined(OS_MACOSX) // OS X will print a warning message if we stick a non-existant file on the // clipboard. std::wstring file = L"/usr/bin/make"; -#endif +#endif // defined(OS_MACOSX) { - ScopedClipboardWriter scw(&clipboard); - scw.WriteFile(file); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteFile(file); } std::wstring out_file; @@ -188,15 +188,15 @@ TEST_F(ClipboardTest, MultipleFilesTest) { std::wstring file1 = L"/usr/bin/make"; std::wstring file2 = L"/usr/bin/man"; std::wstring file3 = L"/usr/bin/perl"; -#endif +#endif // defined(OS_MACOSX) std::vector<std::wstring> files; files.push_back(file1); files.push_back(file2); files.push_back(file3); { - ScopedClipboardWriter scw(&clipboard); - scw.WriteFiles(files); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteFiles(files); } std::vector<std::wstring> out_files; @@ -218,8 +218,8 @@ TEST_F(ClipboardTest, HyperlinkTest) { L"The Example Company</a>"), html_result; { - ScopedClipboardWriter scw(&clipboard); - scw.WriteHyperlink(title, url); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteHyperlink(title, url); } EXPECT_EQ(true, @@ -231,15 +231,14 @@ TEST_F(ClipboardTest, HyperlinkTest) { EXPECT_EQ(url, url_result); clipboard.ReadHTML(&html_result, &url_result); EXPECT_EQ(html, html_result); - //XXX EXPECT_FALSE(url_result.is_valid()); } TEST_F(ClipboardTest, WebSmartPasteTest) { Clipboard clipboard; { - ScopedClipboardWriter scw(&clipboard); - scw.WriteWebSmartPaste(); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteWebSmartPaste(); } EXPECT_EQ(true, clipboard.IsFormatAvailable( @@ -256,11 +255,12 @@ TEST_F(ClipboardTest, BitmapTest) { Clipboard clipboard; { - ScopedClipboardWriter scw(&clipboard); - scw.WriteBitmapFromPixels(fake_bitmap, gfx::Size(3, 4)); + ScopedClipboardWriter clipboard_writer(&clipboard); + clipboard_writer.WriteBitmapFromPixels(fake_bitmap, gfx::Size(3, 4)); } EXPECT_EQ(true, clipboard.IsFormatAvailable( Clipboard::GetBitmapFormatType())); } -#endif +#endif // defined(OS_WIN) + diff --git a/base/scoped_clipboard_writer.cc b/base/scoped_clipboard_writer.cc index 5821cd6..3ddb1a9 100644 --- a/base/scoped_clipboard_writer.cc +++ b/base/scoped_clipboard_writer.cc @@ -2,6 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// This file implements the ScopedClipboardWriter class. Documentation on its +// purpose can be found in base/scoped_clipboard_writer.h. Documentation on the +// format of the parameters for each clipboard target can be found in +// base/clipboard.h. #include "base/scoped_clipboard_writer.h" #include "base/clipboard.h" @@ -22,57 +26,57 @@ void ScopedClipboardWriter::WriteText(const std::wstring& text) { std::string utf8_text = WideToUTF8(text); - Clipboard::ObjectMapParams params; - params.push_back(Clipboard::ObjectMapParam(utf8_text.begin(), - utf8_text.end())); - objects_[Clipboard::CBF_TEXT] = params; + Clipboard::ObjectMapParams parameters; + parameters.push_back(Clipboard::ObjectMapParam(utf8_text.begin(), + utf8_text.end())); + objects_[Clipboard::CBF_TEXT] = parameters; } void ScopedClipboardWriter::WriteHTML(const std::wstring& markup, - const std::string& src_url) { + const std::string& source_url) { if (markup.empty()) return; std::string utf8_markup = WideToUTF8(markup); - Clipboard::ObjectMapParams params; - params.push_back( + Clipboard::ObjectMapParams parameters; + parameters.push_back( Clipboard::ObjectMapParam(utf8_markup.begin(), utf8_markup.end())); - if (!src_url.empty()) { - params.push_back(Clipboard::ObjectMapParam(src_url.begin(), - src_url.end())); + if (!source_url.empty()) { + parameters.push_back(Clipboard::ObjectMapParam(source_url.begin(), + source_url.end())); } - objects_[Clipboard::CBF_HTML] = params; + objects_[Clipboard::CBF_HTML] = parameters; } -void ScopedClipboardWriter::WriteBookmark(const std::wstring& title, +void ScopedClipboardWriter::WriteBookmark(const std::wstring& bookmark_title, const std::string& url) { - if (title.empty() || url.empty()) + if (bookmark_title.empty() || url.empty()) return; - std::string utf8_markup = WideToUTF8(title); + std::string utf8_markup = WideToUTF8(bookmark_title); - Clipboard::ObjectMapParams params; - params.push_back(Clipboard::ObjectMapParam(utf8_markup.begin(), - utf8_markup.end())); - params.push_back(Clipboard::ObjectMapParam(url.begin(), url.end())); - objects_[Clipboard::CBF_BOOKMARK] = params; + Clipboard::ObjectMapParams parameters; + parameters.push_back(Clipboard::ObjectMapParam(utf8_markup.begin(), + utf8_markup.end())); + parameters.push_back(Clipboard::ObjectMapParam(url.begin(), url.end())); + objects_[Clipboard::CBF_BOOKMARK] = parameters; } -void ScopedClipboardWriter::WriteHyperlink(const std::wstring& title, +void ScopedClipboardWriter::WriteHyperlink(const std::wstring& link_text, const std::string& url) { - if (title.empty() || url.empty()) + if (link_text.empty() || url.empty()) return; - std::string utf8_markup = WideToUTF8(title); + std::string utf8_markup = WideToUTF8(link_text); - Clipboard::ObjectMapParams params; - params.push_back(Clipboard::ObjectMapParam(utf8_markup.begin(), - utf8_markup.end())); - params.push_back(Clipboard::ObjectMapParam(url.begin(), url.end())); - objects_[Clipboard::CBF_LINK] = params; + Clipboard::ObjectMapParams parameters; + parameters.push_back(Clipboard::ObjectMapParam(utf8_markup.begin(), + utf8_markup.end())); + parameters.push_back(Clipboard::ObjectMapParam(url.begin(), url.end())); + objects_[Clipboard::CBF_LINK] = parameters; } void ScopedClipboardWriter::WriteFile(const std::wstring& file) { @@ -85,23 +89,23 @@ void ScopedClipboardWriter::WriteFiles(const std::vector<std::wstring>& files) { if (files.empty()) return; - Clipboard::ObjectMapParam param; + Clipboard::ObjectMapParam parameter; for (std::vector<std::wstring>::const_iterator iter = files.begin(); iter != files.end(); ++iter) { std::string filename = WideToUTF8(*iter); for (std::string::const_iterator filename_iter = filename.begin(); filename_iter != filename.end(); ++filename_iter) { - param.push_back(*filename_iter); + parameter.push_back(*filename_iter); } - param.push_back('\0'); + parameter.push_back('\0'); } - param.push_back('\0'); + parameter.push_back('\0'); - Clipboard::ObjectMapParams params; - params.push_back(param); - objects_[Clipboard::CBF_FILES] = params; + Clipboard::ObjectMapParams parameters; + parameters.push_back(parameter); + objects_[Clipboard::CBF_FILES] = parameters; } void ScopedClipboardWriter::WriteWebSmartPaste() { @@ -111,20 +115,21 @@ void ScopedClipboardWriter::WriteWebSmartPaste() { #if defined(OS_WIN) void ScopedClipboardWriter::WriteBitmapFromPixels(const void* pixels, const gfx::Size& size) { - Clipboard::ObjectMapParam param1, param2; + Clipboard::ObjectMapParam pixels_parameter, size_parameter; const char* pixels_data = reinterpret_cast<const char*>(pixels); - size_t pixels_len = 4 * size.width() * size.height(); - for (size_t i = 0; i < pixels_len; i++) - param1.push_back(pixels_data[i]); + size_t pixels_length = 4 * size.width() * size.height(); + for (size_t i = 0; i < pixels_length; i++) + pixels_parameter.push_back(pixels_data[i]); const char* size_data = reinterpret_cast<const char*>(&size); - size_t size_len = sizeof(gfx::Size); - for (size_t i = 0; i < size_len; i++) - param2.push_back(size_data[i]); - - Clipboard::ObjectMapParams params; - params.push_back(param1); - params.push_back(param2); - objects_[Clipboard::CBF_BITMAP] = params; + size_t size_length = sizeof(gfx::Size); + for (size_t i = 0; i < size_length; i++) + size_parameter.push_back(size_data[i]); + + Clipboard::ObjectMapParams parameters; + parameters.push_back(pixels_parameter); + parameters.push_back(size_parameter); + objects_[Clipboard::CBF_BITMAP] = parameters; } #endif // defined(OS_WIN) + diff --git a/base/scoped_clipboard_writer.h b/base/scoped_clipboard_writer.h index 932c334..7bfedf4 100644 --- a/base/scoped_clipboard_writer.h +++ b/base/scoped_clipboard_writer.h @@ -2,15 +2,16 @@ // 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_ +// This file declares the ScopedClipboardWriter class, a wrapper around +// the Clipboard class which simplifies writing data to the system clipboard. +// Upon deletion the class atomically writes all data to |clipboard_|, +// avoiding any potential race condition with other processes that are also +// writing to the system clipboard. +#ifndef BASE_SCOPED_CLIPBOARD_WRITER_H_ +#define BASE_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 @@ -22,19 +23,21 @@ class ScopedClipboardWriter { ~ScopedClipboardWriter(); - // Adds UNICODE and ASCII text to the clipboard. + // Converts |text| to UTF-8 and adds it 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); + // useful if the HTML fragment contains relative links. + void WriteHTML(const std::wstring& markup, const std::string& source_url); - // Adds a bookmark to the clipboard - void WriteBookmark(const std::wstring& title, const std::string& url); + // Adds a bookmark to the clipboard. + void WriteBookmark(const std::wstring& bookmark_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); + // convenience wrapper around WriteBookmark and WriteHTML. |link_text| is + // used as the bookmark title. + void WriteHyperlink(const std::wstring& link_text, const std::string& url); // Adds a file or group of files to the clipboard. void WriteFile(const std::wstring& file); @@ -49,9 +52,11 @@ class ScopedClipboardWriter { // 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 +#endif // defined(OS_WIN) protected: + // We accumulate the data passed to the various targets in the |objects_| + // vector, and pass it to Clipboard::WriteObjects() during object destruction. Clipboard::ObjectMap objects_; Clipboard* clipboard_; @@ -60,3 +65,4 @@ class ScopedClipboardWriter { }; #endif // SCOPED_CLIPBOARD_WRITER_H_ + |