Skip to content
This repository was archived by the owner on Apr 3, 2020. It is now read-only.

Commit 6e988ae

Browse files
tobiasjsOlli Raula
tobiasjs
authored and
Olli Raula
committed
[Backport] Remove NOTIMPLEMENTED() logspam. Provide an implementation that
mirrors what org/chromium/ui/base/Clipboard.java can currently provide. Also add testing for ReadAvaliableTypes() and correct bounds error on Android with UnicodeHTMLTest. BUG=447167 Review URL: https://codereview.chromium.org/1114213004 Cr-Commit-Position: refs/heads/master@{#339879} BUG=XWALK-4608
1 parent 1096e9e commit 6e988ae

File tree

3 files changed

+59
-2
lines changed

3 files changed

+59
-2
lines changed

Diff for: ui/base/clipboard/clipboard_android.cc

+14-2
Original file line numberDiff line numberDiff line change
@@ -315,9 +315,21 @@ void ClipboardAndroid::ReadAvailableTypes(ClipboardType type,
315315
return;
316316
}
317317

318-
NOTIMPLEMENTED();
319-
320318
types->clear();
319+
320+
// would be nice to ask the ClipboardMap to enumerate the types it supports,
321+
// rather than hardcode the list here.
322+
if (IsFormatAvailable(Clipboard::GetPlainTextFormatType(), type))
323+
types->push_back(base::UTF8ToUTF16(kMimeTypeText));
324+
if (IsFormatAvailable(Clipboard::GetHtmlFormatType(), type))
325+
types->push_back(base::UTF8ToUTF16(kMimeTypeHTML));
326+
327+
// these formats aren't supported by the ClipboardMap currently, but might
328+
// be one day?
329+
if (IsFormatAvailable(Clipboard::GetRtfFormatType(), type))
330+
types->push_back(base::UTF8ToUTF16(kMimeTypeRTF));
331+
if (IsFormatAvailable(Clipboard::GetBitmapFormatType(), type))
332+
types->push_back(base::UTF8ToUTF16(kMimeTypePNG));
321333
*contains_filenames = false;
322334
}
323335

Diff for: ui/base/clipboard/clipboard_test_template.h

+32
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "base/run_loop.h"
2424
#include "base/strings/string_util.h"
2525
#include "base/strings/utf_string_conversions.h"
26+
#include "testing/gmock/include/gmock/gmock-matchers.h"
2627
#include "testing/gtest/include/gtest/gtest.h"
2728
#include "testing/platform_test.h"
2829
#include "third_party/skia/include/core/SkBitmap.h"
@@ -46,6 +47,8 @@ using base::ASCIIToUTF16;
4647
using base::UTF8ToUTF16;
4748
using base::UTF16ToUTF8;
4849

50+
using testing::Contains;
51+
4952
namespace ui {
5053

5154
template <typename ClipboardTraits>
@@ -64,6 +67,13 @@ class ClipboardTest : public PlatformTest {
6467
protected:
6568
Clipboard& clipboard() { return *clipboard_; }
6669

70+
std::vector<base::string16> GetAvailableTypes(ClipboardType type) {
71+
bool contains_filenames;
72+
std::vector<base::string16> types;
73+
clipboard().ReadAvailableTypes(type, &types, &contains_filenames);
74+
return types;
75+
}
76+
6777
private:
6878
base::MessageLoopForUI message_loop_;
6979
#if defined(USE_AURA)
@@ -89,6 +99,7 @@ TYPED_TEST(ClipboardTest, ClearTest) {
8999

90100
this->clipboard().Clear(CLIPBOARD_TYPE_COPY_PASTE);
91101

102+
EXPECT_TRUE(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE).empty());
92103
EXPECT_FALSE(this->clipboard().IsFormatAvailable(
93104
Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE));
94105
EXPECT_FALSE(this->clipboard().IsFormatAvailable(
@@ -104,6 +115,8 @@ TYPED_TEST(ClipboardTest, TextTest) {
104115
clipboard_writer.WriteText(text);
105116
}
106117

118+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE),
119+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeText)));
107120
EXPECT_TRUE(this->clipboard().IsFormatAvailable(
108121
Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE));
109122
EXPECT_TRUE(this->clipboard().IsFormatAvailable(
@@ -126,6 +139,8 @@ TYPED_TEST(ClipboardTest, HTMLTest) {
126139
clipboard_writer.WriteHTML(markup, url);
127140
}
128141

142+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE),
143+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeHTML)));
129144
EXPECT_TRUE(this->clipboard().IsFormatAvailable(
130145
Clipboard::GetHtmlFormatType(), CLIPBOARD_TYPE_COPY_PASTE));
131146
uint32 fragment_start;
@@ -153,6 +168,8 @@ TYPED_TEST(ClipboardTest, RTFTest) {
153168
clipboard_writer.WriteRTF(rtf);
154169
}
155170

171+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE),
172+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeRTF)));
156173
EXPECT_TRUE(this->clipboard().IsFormatAvailable(Clipboard::GetRtfFormatType(),
157174
CLIPBOARD_TYPE_COPY_PASTE));
158175
std::string result;
@@ -178,6 +195,11 @@ TYPED_TEST(ClipboardTest, MultipleBufferTest) {
178195
clipboard_writer.WriteHTML(markup, url);
179196
}
180197

198+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE),
199+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeText)));
200+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_SELECTION),
201+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeHTML)));
202+
181203
EXPECT_TRUE(this->clipboard().IsFormatAvailable(
182204
Clipboard::GetPlainTextFormatType(), CLIPBOARD_TYPE_COPY_PASTE));
183205
EXPECT_FALSE(this->clipboard().IsFormatAvailable(
@@ -214,6 +236,8 @@ TYPED_TEST(ClipboardTest, TrickyHTMLTest) {
214236
clipboard_writer.WriteHTML(markup, url);
215237
}
216238

239+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE),
240+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeHTML)));
217241
EXPECT_TRUE(this->clipboard().IsFormatAvailable(
218242
Clipboard::GetHtmlFormatType(), CLIPBOARD_TYPE_COPY_PASTE));
219243
uint32 fragment_start;
@@ -242,6 +266,8 @@ TYPED_TEST(ClipboardTest, UnicodeHTMLTest) {
242266
clipboard_writer.WriteHTML(markup, url);
243267
}
244268

269+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE),
270+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeHTML)));
245271
EXPECT_TRUE(this->clipboard().IsFormatAvailable(
246272
Clipboard::GetHtmlFormatType(), CLIPBOARD_TYPE_COPY_PASTE));
247273
uint32 fragment_start;
@@ -287,6 +313,10 @@ TYPED_TEST(ClipboardTest, MultiFormatTest) {
287313
clipboard_writer.WriteText(text);
288314
}
289315

316+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE),
317+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeHTML)));
318+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE),
319+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeText)));
290320
EXPECT_TRUE(this->clipboard().IsFormatAvailable(
291321
Clipboard::GetHtmlFormatType(), CLIPBOARD_TYPE_COPY_PASTE));
292322
EXPECT_TRUE(this->clipboard().IsFormatAvailable(
@@ -319,6 +349,8 @@ TYPED_TEST(ClipboardTest, URLTest) {
319349
clipboard_writer.WriteURL(url);
320350
}
321351

352+
EXPECT_THAT(this->GetAvailableTypes(CLIPBOARD_TYPE_COPY_PASTE),
353+
Contains(ASCIIToUTF16(Clipboard::kMimeTypeText)));
322354
EXPECT_TRUE(this->clipboard().IsFormatAvailable(
323355
Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE));
324356
EXPECT_TRUE(this->clipboard().IsFormatAvailable(

Diff for: ui/base/test/test_clipboard.cc

+13
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,19 @@ void TestClipboard::Clear(ClipboardType type) {
4242
void TestClipboard::ReadAvailableTypes(ClipboardType type,
4343
std::vector<base::string16>* types,
4444
bool* contains_filenames) const {
45+
types->clear();
46+
47+
if (IsFormatAvailable(Clipboard::GetPlainTextFormatType(), type))
48+
types->push_back(base::UTF8ToUTF16(kMimeTypeText));
49+
if (IsFormatAvailable(Clipboard::GetHtmlFormatType(), type))
50+
types->push_back(base::UTF8ToUTF16(kMimeTypeHTML));
51+
52+
if (IsFormatAvailable(Clipboard::GetRtfFormatType(), type))
53+
types->push_back(base::UTF8ToUTF16(kMimeTypeRTF));
54+
if (IsFormatAvailable(Clipboard::GetBitmapFormatType(), type))
55+
types->push_back(base::UTF8ToUTF16(kMimeTypePNG));
56+
57+
*contains_filenames = false;
4558
}
4659

4760
void TestClipboard::ReadText(ClipboardType type, base::string16* result) const {

0 commit comments

Comments
 (0)