Index: ppapi/tests/test_flash_clipboard.cc |
diff --git a/ppapi/tests/test_flash_clipboard.cc b/ppapi/tests/test_flash_clipboard.cc |
index 8eb756bd47903a7f8b05d18839a990510bd8be20..537dde84950a780c5d3455d1392dc2a5bd6241b1 100644 |
--- a/ppapi/tests/test_flash_clipboard.cc |
+++ b/ppapi/tests/test_flash_clipboard.cc |
@@ -39,6 +39,7 @@ void TestFlashClipboard::RunTests(const std::string& filter) { |
RUN_TEST(Clear, filter); |
RUN_TEST(InvalidFormat, filter); |
RUN_TEST(RegisterCustomFormat, filter); |
+ RUN_TEST(GetSequenceNumber, filter); |
} |
bool TestFlashClipboard::ReadStringVar(uint32_t format, std::string* result) { |
@@ -113,6 +114,19 @@ bool TestFlashClipboard::ReadHTMLMatches(const std::string& expected) { |
return false; |
} |
+uint64_t TestFlashClipboard::GetSequenceNumber(uint64_t last_sequence_number) { |
+ uint64_t next_sequence_number = last_sequence_number; |
+ for (int i = 0; i < kMaxIntervals; ++i) { |
+ pp::flash::Clipboard::GetSequenceNumber( |
+ instance_, PP_FLASH_CLIPBOARD_TYPE_STANDARD, &next_sequence_number); |
+ if (next_sequence_number != last_sequence_number) |
+ return next_sequence_number; |
+ |
+ PlatformSleep(kIntervalMs); |
+ } |
+ return next_sequence_number; |
+} |
+ |
std::string TestFlashClipboard::TestReadWritePlainText() { |
std::string input = "Hello world plain text!"; |
ASSERT_TRUE(WriteStringVar(PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT, input)); |
@@ -276,3 +290,55 @@ std::string TestFlashClipboard::TestRegisterCustomFormat() { |
PASS(); |
} |
+ |
+std::string TestFlashClipboard::TestGetSequenceNumber() { |
+ uint64_t sequence_number_before = 0; |
+ uint64_t sequence_number_after = 0; |
+ ASSERT_TRUE(pp::flash::Clipboard::GetSequenceNumber( |
+ instance_, PP_FLASH_CLIPBOARD_TYPE_STANDARD, &sequence_number_before)); |
+ |
+ // Test the sequence number changes after writing html. |
+ ASSERT_TRUE(WriteStringVar(PP_FLASH_CLIPBOARD_FORMAT_HTML, "<html>")); |
+ sequence_number_after = GetSequenceNumber(sequence_number_before); |
+ ASSERT_NE(sequence_number_before, sequence_number_after); |
+ sequence_number_before = sequence_number_after; |
+ |
+ // Test the sequence number changes after writing some custom data. |
+ std::string custom_data = "custom_data"; |
+ pp::VarArrayBuffer array_buffer(custom_data.size()); |
+ char* bytes = static_cast<char*>(array_buffer.Map()); |
+ std::copy(custom_data.begin(), custom_data.end(), bytes); |
+ uint32_t format_id = |
+ pp::flash::Clipboard::RegisterCustomFormat(instance_, "my-format"); |
+ std::vector<uint32_t> formats_vector(1, format_id); |
+ std::vector<pp::Var> data_vector(1, array_buffer); |
+ ASSERT_TRUE(pp::flash::Clipboard::WriteData(instance_, |
+ PP_FLASH_CLIPBOARD_TYPE_STANDARD, |
+ formats_vector, |
+ data_vector)); |
+ sequence_number_after = GetSequenceNumber(sequence_number_before); |
+ ASSERT_NE(sequence_number_before, sequence_number_after); |
+ sequence_number_before = sequence_number_after; |
+ |
+ // Read the data and make sure the sequence number doesn't change. |
+ pp::Var custom_data_result; |
+ ASSERT_TRUE(pp::flash::Clipboard::ReadData( |
+ instance_, |
+ PP_FLASH_CLIPBOARD_TYPE_STANDARD, |
+ format_id, |
+ &custom_data_result)); |
+ ASSERT_TRUE(pp::flash::Clipboard::GetSequenceNumber( |
+ instance_, PP_FLASH_CLIPBOARD_TYPE_STANDARD, &sequence_number_after)); |
+ ASSERT_EQ(sequence_number_before, sequence_number_after); |
+ sequence_number_before = sequence_number_after; |
+ |
+ // Clear the clipboard and check the sequence number changes. |
+ pp::flash::Clipboard::WriteData(instance_, |
+ PP_FLASH_CLIPBOARD_TYPE_STANDARD, |
+ std::vector<uint32_t>(), |
+ std::vector<pp::Var>()); |
+ sequence_number_after = GetSequenceNumber(sequence_number_before); |
+ ASSERT_NE(sequence_number_before, sequence_number_after); |
+ |
+ PASS(); |
+} |