Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Side by Side Diff: webkit/support/mock_webclipboard_impl.cc

Issue 23526028: Move source files from webkit/support to content/test (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/support/mock_webclipboard_impl.h ('k') | webkit/support/test_webkit_platform_support.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 #include "webkit/support/mock_webclipboard_impl.h"
6
7 #include <algorithm>
8
9 #include "base/logging.h"
10 #include "base/stl_util.h"
11 #include "base/strings/string_util.h"
12 #include "base/strings/utf_string_conversions.h"
13 #include "third_party/WebKit/public/platform/WebCommon.h"
14 #include "third_party/WebKit/public/platform/WebDragData.h"
15 #include "third_party/WebKit/public/platform/WebImage.h"
16 #include "third_party/WebKit/public/platform/WebURL.h"
17 #include "ui/base/clipboard/clipboard.h"
18 #include "ui/gfx/codec/png_codec.h"
19 #include "ui/gfx/size.h"
20 #include "webkit/glue/webkit_glue.h"
21 #include "webkit/renderer/clipboard_utils.h"
22
23 using WebKit::WebDragData;
24 using WebKit::WebString;
25 using WebKit::WebURL;
26 using WebKit::WebVector;
27
28 MockWebClipboardImpl::MockWebClipboardImpl() {
29 }
30
31 MockWebClipboardImpl::~MockWebClipboardImpl() {
32 }
33
34 bool MockWebClipboardImpl::isFormatAvailable(Format format, Buffer buffer) {
35 switch (format) {
36 case FormatPlainText:
37 return !m_plainText.isNull();
38
39 case FormatHTML:
40 return !m_htmlText.isNull();
41
42 case FormatSmartPaste:
43 return m_writeSmartPaste;
44
45 default:
46 NOTREACHED();
47 return false;
48 }
49
50 switch (buffer) {
51 case BufferStandard:
52 break;
53 case BufferSelection:
54 #if defined(OS_POSIX) && !defined(OS_MACOSX)
55 break;
56 #endif
57 default:
58 NOTREACHED();
59 return false;
60 }
61
62 return true;
63 }
64
65 WebVector<WebString> MockWebClipboardImpl::readAvailableTypes(
66 Buffer buffer, bool* containsFilenames) {
67 *containsFilenames = false;
68 std::vector<WebString> results;
69 if (!m_plainText.isEmpty()) {
70 results.push_back(WebString("text/plain"));
71 }
72 if (!m_htmlText.isEmpty()) {
73 results.push_back(WebString("text/html"));
74 }
75 if (!m_image.isNull()) {
76 results.push_back(WebString("image/png"));
77 }
78 for (std::map<base::string16, base::string16>::const_iterator it =
79 m_customData.begin();
80 it != m_customData.end(); ++it) {
81 CHECK(std::find(results.begin(), results.end(), it->first) ==
82 results.end());
83 results.push_back(it->first);
84 }
85 return results;
86 }
87
88 WebKit::WebString MockWebClipboardImpl::readPlainText(
89 WebKit::WebClipboard::Buffer buffer) {
90 return m_plainText;
91 }
92
93 // TODO(wtc): set output argument *url.
94 WebKit::WebString MockWebClipboardImpl::readHTML(
95 WebKit::WebClipboard::Buffer buffer, WebKit::WebURL* url,
96 unsigned* fragmentStart, unsigned* fragmentEnd) {
97 *fragmentStart = 0;
98 *fragmentEnd = static_cast<unsigned>(m_htmlText.length());
99 return m_htmlText;
100 }
101
102 WebKit::WebData MockWebClipboardImpl::readImage(
103 WebKit::WebClipboard::Buffer buffer) {
104 std::string data;
105 std::vector<unsigned char> encoded_image;
106 // TODO(dcheng): Verify that we can assume the image is ARGB8888. Note that
107 // for endianess reasons, it will be BGRA8888 on Windows.
108 const SkBitmap& bitmap = m_image.getSkBitmap();
109 SkAutoLockPixels lock(bitmap);
110 gfx::PNGCodec::Encode(static_cast<unsigned char*>(bitmap.getPixels()),
111 #if defined(OS_ANDROID)
112 gfx::PNGCodec::FORMAT_RGBA,
113 #else
114 gfx::PNGCodec::FORMAT_BGRA,
115 #endif
116 gfx::Size(bitmap.width(), bitmap.height()),
117 bitmap.rowBytes(),
118 false /* discard_transparency */,
119 std::vector<gfx::PNGCodec::Comment>(),
120 &encoded_image);
121 data.assign(reinterpret_cast<char*>(vector_as_array(&encoded_image)),
122 encoded_image.size());
123 return data;
124 }
125
126 WebKit::WebString MockWebClipboardImpl::readCustomData(
127 WebKit::WebClipboard::Buffer buffer,
128 const WebKit::WebString& type) {
129 std::map<base::string16, base::string16>::const_iterator it =
130 m_customData.find(type);
131 if (it != m_customData.end())
132 return it->second;
133 return WebKit::WebString();
134 }
135
136 void MockWebClipboardImpl::writeHTML(
137 const WebKit::WebString& htmlText, const WebKit::WebURL& url,
138 const WebKit::WebString& plainText, bool writeSmartPaste) {
139 clear();
140
141 m_htmlText = htmlText;
142 m_plainText = plainText;
143 m_writeSmartPaste = writeSmartPaste;
144 }
145
146 void MockWebClipboardImpl::writePlainText(const WebKit::WebString& plain_text) {
147 clear();
148
149 m_plainText = plain_text;
150 }
151
152 void MockWebClipboardImpl::writeURL(
153 const WebKit::WebURL& url, const WebKit::WebString& title) {
154 clear();
155
156 m_htmlText = WebString::fromUTF8(webkit_clipboard::URLToMarkup(url, title));
157 m_plainText = url.spec().utf16();
158 }
159
160 void MockWebClipboardImpl::writeImage(const WebKit::WebImage& image,
161 const WebKit::WebURL& url, const WebKit::WebString& title) {
162 if (!image.isNull()) {
163 clear();
164
165 m_plainText = m_htmlText;
166 m_htmlText = WebString::fromUTF8(
167 webkit_clipboard::URLToImageMarkup(url, title));
168 m_image = image;
169 }
170 }
171
172 void MockWebClipboardImpl::writeDataObject(const WebDragData& data) {
173 clear();
174
175 const WebVector<WebDragData::Item>& itemList = data.items();
176 for (size_t i = 0; i < itemList.size(); ++i) {
177 const WebDragData::Item& item = itemList[i];
178 switch (item.storageType) {
179 case WebDragData::Item::StorageTypeString: {
180 if (EqualsASCII(item.stringType, ui::Clipboard::kMimeTypeText)) {
181 m_plainText = item.stringData;
182 continue;
183 }
184 if (EqualsASCII(item.stringType, ui::Clipboard::kMimeTypeHTML)) {
185 m_htmlText = item.stringData;
186 continue;
187 }
188 m_customData.insert(std::make_pair(item.stringType, item.stringData));
189 continue;
190 }
191 case WebDragData::Item::StorageTypeFilename:
192 case WebDragData::Item::StorageTypeBinaryData:
193 NOTREACHED(); // Currently unused by the clipboard implementation.
194 }
195 }
196 }
197
198 void MockWebClipboardImpl::clear() {
199 m_plainText = WebString();
200 m_htmlText = WebString();
201 m_image.reset();
202 m_customData.clear();
203 m_writeSmartPaste = false;
204 }
OLDNEW
« no previous file with comments | « webkit/support/mock_webclipboard_impl.h ('k') | webkit/support/test_webkit_platform_support.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698