Index: third_party/WebKit/Source/core/page/EventSourceTest.cpp |
diff --git a/third_party/WebKit/Source/core/page/EventSourceTest.cpp b/third_party/WebKit/Source/core/page/EventSourceTest.cpp |
index 93f437efbf9db6594b4cb342c1b71fa5624aa651..221a463977fcf2ea17015779db680a4662d9cfc0 100644 |
--- a/third_party/WebKit/Source/core/page/EventSourceTest.cpp |
+++ b/third_party/WebKit/Source/core/page/EventSourceTest.cpp |
@@ -18,6 +18,7 @@ |
#include "core/page/EventSourceInit.h" |
#include "core/testing/DummyPageHolder.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "wtf/text/CharacterNames.h" |
#include <string.h> |
#include <v8.h> |
@@ -69,6 +70,8 @@ protected: |
{ |
source()->setStateForTest(EventSource::OPEN); |
source()->setThreadableLoaderForTest(MockThreadableLoader::create()); |
+ source()->setParser(new EventSourceParser("https://localhost/", source())); |
+ source()->setRequestInFlightForTest(true); |
} |
~EventSourceTest() override |
{ |
@@ -423,6 +426,21 @@ TEST_F(EventSourceTest, FeedDataOneByOne) |
EXPECT_EQ("8", messageEvent->lastEventId()); |
} |
+TEST_F(EventSourceTest, InvalidUTF8Sequence) |
+{ |
+ RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create(); |
+ |
+ source()->addEventListener("message", listener); |
+ enqueue("data:\xffhello\xc2\n\n"); |
+ |
+ ASSERT_EQ(1u, listener->events().size()); |
+ ASSERT_EQ("message", listener->events()[0]->type()); |
+ RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener->events()[0].get()); |
+ ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); |
+ String expected = String() + replacementCharacter + "hello" + replacementCharacter; |
+ EXPECT_EQ(expected, dataAsString(scriptState(), event.get())); |
+} |
+ |
} // namespace |
} // namespace blink |