| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/page/EventSource.h" | 5 #include "core/page/EventSource.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ExceptionState.h" | 7 #include "bindings/core/v8/ExceptionState.h" |
| 8 #include "bindings/core/v8/ScriptState.h" | 8 #include "bindings/core/v8/ScriptState.h" |
| 9 #include "bindings/core/v8/ScriptValue.h" | 9 #include "bindings/core/v8/ScriptValue.h" |
| 10 #include "bindings/core/v8/SerializedScriptValue.h" | 10 #include "bindings/core/v8/SerializedScriptValue.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 #include <v8.h> | 24 #include <v8.h> |
| 25 | 25 |
| 26 namespace blink { | 26 namespace blink { |
| 27 | 27 |
| 28 namespace { | 28 namespace { |
| 29 | 29 |
| 30 String dataAsString(ScriptState* scriptState, MessageEvent* event) | 30 String dataAsString(ScriptState* scriptState, MessageEvent* event) |
| 31 { | 31 { |
| 32 ScriptState::Scope scope(scriptState); | 32 ScriptState::Scope scope(scriptState); |
| 33 v8::Isolate* isolate = scriptState->isolate(); | 33 v8::Isolate* isolate = scriptState->isolate(); |
| 34 ASSERT(MessageEvent::DataTypeSerializedScriptValue == event->dataType()); | 34 ASSERT(MessageEvent::DataTypeSerializedScriptValue == event->getDataType()); |
| 35 if (!event->dataAsSerializedScriptValue()) | 35 if (!event->dataAsSerializedScriptValue()) |
| 36 return String(); | 36 return String(); |
| 37 MessagePortArray ports = event->ports(); | 37 MessagePortArray ports = event->ports(); |
| 38 NonThrowableExceptionState es; | 38 NonThrowableExceptionState es; |
| 39 return toUSVString(isolate, event->dataAsSerializedScriptValue()->deserializ
e(isolate, &ports), es); | 39 return toUSVString(isolate, event->dataAsSerializedScriptValue()->deserializ
e(isolate, &ports), es); |
| 40 } | 40 } |
| 41 | 41 |
| 42 class FakeEventListener : public EventListener { | 42 class FakeEventListener : public EventListener { |
| 43 public: | 43 public: |
| 44 static PassRefPtrWillBeRawPtr<FakeEventListener> create() | 44 static PassRefPtrWillBeRawPtr<FakeEventListener> create() |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 TEST_F(EventSourceTest, DispatchSimpleMessageEvent) | 117 TEST_F(EventSourceTest, DispatchSimpleMessageEvent) |
| 118 { | 118 { |
| 119 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 119 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 120 | 120 |
| 121 source()->addEventListener("message", listener); | 121 source()->addEventListener("message", listener); |
| 122 enqueue("data:hello\n\n"); | 122 enqueue("data:hello\n\n"); |
| 123 | 123 |
| 124 ASSERT_EQ(1u, listener->events().size()); | 124 ASSERT_EQ(1u, listener->events().size()); |
| 125 ASSERT_EQ("message", listener->events()[0]->type()); | 125 ASSERT_EQ("message", listener->events()[0]->type()); |
| 126 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); | 126 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); |
| 127 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); | 127 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->getDataType())
; |
| 128 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); | 128 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); |
| 129 EXPECT_EQ(String(), event->lastEventId()); | 129 EXPECT_EQ(String(), event->lastEventId()); |
| 130 } | 130 } |
| 131 | 131 |
| 132 TEST_F(EventSourceTest, DispatchMessageEventWithLastEventId) | 132 TEST_F(EventSourceTest, DispatchMessageEventWithLastEventId) |
| 133 { | 133 { |
| 134 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 134 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 135 | 135 |
| 136 source()->addEventListener("message", listener); | 136 source()->addEventListener("message", listener); |
| 137 enqueue("id:99\ndata:hello\n\n"); | 137 enqueue("id:99\ndata:hello\n\n"); |
| 138 | 138 |
| 139 ASSERT_EQ(1u, listener->events().size()); | 139 ASSERT_EQ(1u, listener->events().size()); |
| 140 ASSERT_EQ("message", listener->events()[0]->type()); | 140 ASSERT_EQ("message", listener->events()[0]->type()); |
| 141 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); | 141 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); |
| 142 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); | 142 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->getDataType())
; |
| 143 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); | 143 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); |
| 144 EXPECT_EQ("99", event->lastEventId()); | 144 EXPECT_EQ("99", event->lastEventId()); |
| 145 } | 145 } |
| 146 | 146 |
| 147 TEST_F(EventSourceTest, DispatchMessageEventWithCustomEventType) | 147 TEST_F(EventSourceTest, DispatchMessageEventWithCustomEventType) |
| 148 { | 148 { |
| 149 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 149 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 150 | 150 |
| 151 source()->addEventListener("foo", listener); | 151 source()->addEventListener("foo", listener); |
| 152 enqueue("event:foo\ndata:hello\n\n"); | 152 enqueue("event:foo\ndata:hello\n\n"); |
| 153 | 153 |
| 154 ASSERT_EQ(1u, listener->events().size()); | 154 ASSERT_EQ(1u, listener->events().size()); |
| 155 ASSERT_EQ("foo", listener->events()[0]->type()); | 155 ASSERT_EQ("foo", listener->events()[0]->type()); |
| 156 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); | 156 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); |
| 157 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); | 157 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->getDataType())
; |
| 158 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); | 158 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); |
| 159 } | 159 } |
| 160 | 160 |
| 161 TEST_F(EventSourceTest, RetryTakesEffectEvenWhenNotDispatching) | 161 TEST_F(EventSourceTest, RetryTakesEffectEvenWhenNotDispatching) |
| 162 { | 162 { |
| 163 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 163 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 164 | 164 |
| 165 source()->addEventListener("message", listener); | 165 source()->addEventListener("message", listener); |
| 166 ASSERT_NE(999u, EventSource::defaultReconnectDelay); | 166 ASSERT_NE(999u, EventSource::defaultReconnectDelay); |
| 167 | 167 |
| 168 EXPECT_EQ(EventSource::defaultReconnectDelay, source()->reconnectDelayForTes
t()); | 168 EXPECT_EQ(EventSource::defaultReconnectDelay, source()->reconnectDelayForTes
t()); |
| 169 enqueue("retry:999\n"); | 169 enqueue("retry:999\n"); |
| 170 EXPECT_EQ(999u, source()->reconnectDelayForTest()); | 170 EXPECT_EQ(999u, source()->reconnectDelayForTest()); |
| 171 EXPECT_EQ(0u, listener->events().size()); | 171 EXPECT_EQ(0u, listener->events().size()); |
| 172 } | 172 } |
| 173 | 173 |
| 174 TEST_F(EventSourceTest, EventTypeShouldBeReset) | 174 TEST_F(EventSourceTest, EventTypeShouldBeReset) |
| 175 { | 175 { |
| 176 RefPtrWillBeRawPtr<FakeEventListener> fooListener = FakeEventListener::creat
e(); | 176 RefPtrWillBeRawPtr<FakeEventListener> fooListener = FakeEventListener::creat
e(); |
| 177 RefPtrWillBeRawPtr<FakeEventListener> messageListener = FakeEventListener::c
reate(); | 177 RefPtrWillBeRawPtr<FakeEventListener> messageListener = FakeEventListener::c
reate(); |
| 178 | 178 |
| 179 source()->addEventListener("foo", fooListener); | 179 source()->addEventListener("foo", fooListener); |
| 180 source()->addEventListener("message", messageListener); | 180 source()->addEventListener("message", messageListener); |
| 181 enqueue("event:foo\ndata:hello\n\ndata:bye\n\n"); | 181 enqueue("event:foo\ndata:hello\n\ndata:bye\n\n"); |
| 182 | 182 |
| 183 ASSERT_EQ(1u, fooListener->events().size()); | 183 ASSERT_EQ(1u, fooListener->events().size()); |
| 184 ASSERT_EQ("foo", fooListener->events()[0]->type()); | 184 ASSERT_EQ("foo", fooListener->events()[0]->type()); |
| 185 RefPtrWillBeRawPtr<MessageEvent> fooEvent = static_cast<MessageEvent*>(fooLi
stener->events()[0].get()); | 185 RefPtrWillBeRawPtr<MessageEvent> fooEvent = static_cast<MessageEvent*>(fooLi
stener->events()[0].get()); |
| 186 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, fooEvent->dataType())
; | 186 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, fooEvent->getDataType
()); |
| 187 EXPECT_EQ("hello", dataAsString(scriptState(), fooEvent.get())); | 187 EXPECT_EQ("hello", dataAsString(scriptState(), fooEvent.get())); |
| 188 | 188 |
| 189 ASSERT_EQ(1u, messageListener->events().size()); | 189 ASSERT_EQ(1u, messageListener->events().size()); |
| 190 ASSERT_EQ("message", messageListener->events()[0]->type()); | 190 ASSERT_EQ("message", messageListener->events()[0]->type()); |
| 191 RefPtrWillBeRawPtr<MessageEvent> messageEvent = static_cast<MessageEvent*>(m
essageListener->events()[0].get()); | 191 RefPtrWillBeRawPtr<MessageEvent> messageEvent = static_cast<MessageEvent*>(m
essageListener->events()[0].get()); |
| 192 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, messageEvent->dataTyp
e()); | 192 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, messageEvent->getData
Type()); |
| 193 EXPECT_EQ("bye", dataAsString(scriptState(), messageEvent.get())); | 193 EXPECT_EQ("bye", dataAsString(scriptState(), messageEvent.get())); |
| 194 } | 194 } |
| 195 | 195 |
| 196 TEST_F(EventSourceTest, DataShouldBeReset) | 196 TEST_F(EventSourceTest, DataShouldBeReset) |
| 197 { | 197 { |
| 198 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 198 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 199 | 199 |
| 200 source()->addEventListener("message", listener); | 200 source()->addEventListener("message", listener); |
| 201 enqueue("data:hello\n\n\n"); | 201 enqueue("data:hello\n\n\n"); |
| 202 | 202 |
| 203 ASSERT_EQ(1u, listener->events().size()); | 203 ASSERT_EQ(1u, listener->events().size()); |
| 204 ASSERT_EQ("message", listener->events()[0]->type()); | 204 ASSERT_EQ("message", listener->events()[0]->type()); |
| 205 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); | 205 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); |
| 206 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); | 206 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->getDataType())
; |
| 207 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); | 207 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); |
| 208 } | 208 } |
| 209 | 209 |
| 210 TEST_F(EventSourceTest, LastEventIdShouldNotBeReset) | 210 TEST_F(EventSourceTest, LastEventIdShouldNotBeReset) |
| 211 { | 211 { |
| 212 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 212 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 213 | 213 |
| 214 source()->addEventListener("message", listener); | 214 source()->addEventListener("message", listener); |
| 215 enqueue("id:99\ndata:hello\n\ndata:bye\n\n"); | 215 enqueue("id:99\ndata:hello\n\ndata:bye\n\n"); |
| 216 | 216 |
| 217 ASSERT_EQ(2u, listener->events().size()); | 217 ASSERT_EQ(2u, listener->events().size()); |
| 218 | 218 |
| 219 ASSERT_EQ("message", listener->events()[0]->type()); | 219 ASSERT_EQ("message", listener->events()[0]->type()); |
| 220 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); | 220 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); |
| 221 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->dataType()); | 221 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->getDataType()
); |
| 222 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); | 222 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); |
| 223 EXPECT_EQ("99", event0->lastEventId()); | 223 EXPECT_EQ("99", event0->lastEventId()); |
| 224 | 224 |
| 225 ASSERT_EQ("message", listener->events()[1]->type()); | 225 ASSERT_EQ("message", listener->events()[1]->type()); |
| 226 RefPtrWillBeRawPtr<MessageEvent> event1 = static_cast<MessageEvent*>(listene
r->events()[1].get()); | 226 RefPtrWillBeRawPtr<MessageEvent> event1 = static_cast<MessageEvent*>(listene
r->events()[1].get()); |
| 227 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event1->dataType()); | 227 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event1->getDataType()
); |
| 228 EXPECT_EQ("bye", dataAsString(scriptState(), event1.get())); | 228 EXPECT_EQ("bye", dataAsString(scriptState(), event1.get())); |
| 229 EXPECT_EQ("99", event1->lastEventId()); | 229 EXPECT_EQ("99", event1->lastEventId()); |
| 230 } | 230 } |
| 231 | 231 |
| 232 TEST_F(EventSourceTest, VariousNewLinesShouldBeAllowed) | 232 TEST_F(EventSourceTest, VariousNewLinesShouldBeAllowed) |
| 233 { | 233 { |
| 234 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 234 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 235 | 235 |
| 236 source()->addEventListener("message", listener); | 236 source()->addEventListener("message", listener); |
| 237 enqueueOneByOne("data:hello\r\n\rdata:bye\r\r"); | 237 enqueueOneByOne("data:hello\r\n\rdata:bye\r\r"); |
| 238 | 238 |
| 239 ASSERT_EQ(2u, listener->events().size()); | 239 ASSERT_EQ(2u, listener->events().size()); |
| 240 | 240 |
| 241 ASSERT_EQ("message", listener->events()[0]->type()); | 241 ASSERT_EQ("message", listener->events()[0]->type()); |
| 242 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); | 242 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); |
| 243 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->dataType()); | 243 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->getDataType()
); |
| 244 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); | 244 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); |
| 245 | 245 |
| 246 ASSERT_EQ("message", listener->events()[1]->type()); | 246 ASSERT_EQ("message", listener->events()[1]->type()); |
| 247 RefPtrWillBeRawPtr<MessageEvent> event1 = static_cast<MessageEvent*>(listene
r->events()[1].get()); | 247 RefPtrWillBeRawPtr<MessageEvent> event1 = static_cast<MessageEvent*>(listene
r->events()[1].get()); |
| 248 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event1->dataType()); | 248 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event1->getDataType()
); |
| 249 EXPECT_EQ("bye", dataAsString(scriptState(), event1.get())); | 249 EXPECT_EQ("bye", dataAsString(scriptState(), event1.get())); |
| 250 } | 250 } |
| 251 | 251 |
| 252 TEST_F(EventSourceTest, RetryWithEmptyValueShouldRestoreDefaultValue) | 252 TEST_F(EventSourceTest, RetryWithEmptyValueShouldRestoreDefaultValue) |
| 253 { | 253 { |
| 254 // TODO(yhirano): This is unspecified in the spec. We need to update | 254 // TODO(yhirano): This is unspecified in the spec. We need to update |
| 255 // the implementation or the spec. | 255 // the implementation or the spec. |
| 256 EXPECT_EQ(EventSource::defaultReconnectDelay, source()->reconnectDelayForTes
t()); | 256 EXPECT_EQ(EventSource::defaultReconnectDelay, source()->reconnectDelayForTes
t()); |
| 257 enqueue("retry: 12\n"); | 257 enqueue("retry: 12\n"); |
| 258 EXPECT_NE(EventSource::defaultReconnectDelay, source()->reconnectDelayForTes
t()); | 258 EXPECT_NE(EventSource::defaultReconnectDelay, source()->reconnectDelayForTes
t()); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 TEST_F(EventSourceTest, UnrecognizedFieldShouldBeIgnored) | 297 TEST_F(EventSourceTest, UnrecognizedFieldShouldBeIgnored) |
| 298 { | 298 { |
| 299 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 299 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 300 | 300 |
| 301 source()->addEventListener("message", listener); | 301 source()->addEventListener("message", listener); |
| 302 enqueue("data:hello\nhoge:fuga\npiyo\n\n"); | 302 enqueue("data:hello\nhoge:fuga\npiyo\n\n"); |
| 303 | 303 |
| 304 ASSERT_EQ(1u, listener->events().size()); | 304 ASSERT_EQ(1u, listener->events().size()); |
| 305 ASSERT_EQ("message", listener->events()[0]->type()); | 305 ASSERT_EQ("message", listener->events()[0]->type()); |
| 306 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); | 306 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); |
| 307 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); | 307 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->getDataType())
; |
| 308 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); | 308 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); |
| 309 } | 309 } |
| 310 | 310 |
| 311 TEST_F(EventSourceTest, CommentShouldBeIgnored) | 311 TEST_F(EventSourceTest, CommentShouldBeIgnored) |
| 312 { | 312 { |
| 313 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 313 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 314 | 314 |
| 315 source()->addEventListener("message", listener); | 315 source()->addEventListener("message", listener); |
| 316 enqueue("data:hello\n:event:a\n\n"); | 316 enqueue("data:hello\n:event:a\n\n"); |
| 317 | 317 |
| 318 ASSERT_EQ(1u, listener->events().size()); | 318 ASSERT_EQ(1u, listener->events().size()); |
| 319 | 319 |
| 320 ASSERT_EQ("message", listener->events()[0]->type()); | 320 ASSERT_EQ("message", listener->events()[0]->type()); |
| 321 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); | 321 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); |
| 322 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->dataType()); | 322 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->getDataType()
); |
| 323 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); | 323 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); |
| 324 } | 324 } |
| 325 | 325 |
| 326 TEST_F(EventSourceTest, BOMShouldBeIgnored) | 326 TEST_F(EventSourceTest, BOMShouldBeIgnored) |
| 327 { | 327 { |
| 328 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 328 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 329 | 329 |
| 330 source()->addEventListener("message", listener); | 330 source()->addEventListener("message", listener); |
| 331 enqueue("\xef\xbb\xbf" "data:hello\n\n"); | 331 enqueue("\xef\xbb\xbf" "data:hello\n\n"); |
| 332 | 332 |
| 333 ASSERT_EQ(1u, listener->events().size()); | 333 ASSERT_EQ(1u, listener->events().size()); |
| 334 | 334 |
| 335 ASSERT_EQ("message", listener->events()[0]->type()); | 335 ASSERT_EQ("message", listener->events()[0]->type()); |
| 336 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); | 336 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); |
| 337 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->dataType()); | 337 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->getDataType()
); |
| 338 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); | 338 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); |
| 339 } | 339 } |
| 340 | 340 |
| 341 TEST_F(EventSourceTest, ColonlessLineShouldBeTreatedAsNameOnlyField) | 341 TEST_F(EventSourceTest, ColonlessLineShouldBeTreatedAsNameOnlyField) |
| 342 { | 342 { |
| 343 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 343 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 344 | 344 |
| 345 source()->addEventListener("message", listener); | 345 source()->addEventListener("message", listener); |
| 346 enqueue("data:hello\nevent:a\nevent\n\n"); | 346 enqueue("data:hello\nevent:a\nevent\n\n"); |
| 347 | 347 |
| 348 ASSERT_EQ(1u, listener->events().size()); | 348 ASSERT_EQ(1u, listener->events().size()); |
| 349 | 349 |
| 350 ASSERT_EQ("message", listener->events()[0]->type()); | 350 ASSERT_EQ("message", listener->events()[0]->type()); |
| 351 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); | 351 RefPtrWillBeRawPtr<MessageEvent> event0 = static_cast<MessageEvent*>(listene
r->events()[0].get()); |
| 352 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->dataType()); | 352 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event0->getDataType()
); |
| 353 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); | 353 EXPECT_EQ("hello", dataAsString(scriptState(), event0.get())); |
| 354 } | 354 } |
| 355 | 355 |
| 356 TEST_F(EventSourceTest, AtMostOneLeadingSpaceCanBeSkipped) | 356 TEST_F(EventSourceTest, AtMostOneLeadingSpaceCanBeSkipped) |
| 357 { | 357 { |
| 358 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 358 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 359 | 359 |
| 360 source()->addEventListener(" type ", listener); | 360 source()->addEventListener(" type ", listener); |
| 361 enqueue("data: hello \nevent: type \n\n"); | 361 enqueue("data: hello \nevent: type \n\n"); |
| 362 | 362 |
| 363 ASSERT_EQ(1u, listener->events().size()); | 363 ASSERT_EQ(1u, listener->events().size()); |
| 364 ASSERT_EQ(" type ", listener->events()[0]->type()); | 364 ASSERT_EQ(" type ", listener->events()[0]->type()); |
| 365 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); | 365 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); |
| 366 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); | 366 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->getDataType())
; |
| 367 EXPECT_EQ(" hello ", dataAsString(scriptState(), event.get())); | 367 EXPECT_EQ(" hello ", dataAsString(scriptState(), event.get())); |
| 368 } | 368 } |
| 369 | 369 |
| 370 TEST_F(EventSourceTest, DataShouldAccumulate) | 370 TEST_F(EventSourceTest, DataShouldAccumulate) |
| 371 { | 371 { |
| 372 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 372 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 373 | 373 |
| 374 source()->addEventListener("message", listener); | 374 source()->addEventListener("message", listener); |
| 375 enqueue("data:hello\ndata: world\ndata\n\n"); | 375 enqueue("data:hello\ndata: world\ndata\n\n"); |
| 376 | 376 |
| 377 ASSERT_EQ(1u, listener->events().size()); | 377 ASSERT_EQ(1u, listener->events().size()); |
| 378 ASSERT_EQ("message", listener->events()[0]->type()); | 378 ASSERT_EQ("message", listener->events()[0]->type()); |
| 379 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); | 379 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); |
| 380 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); | 380 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->getDataType())
; |
| 381 EXPECT_EQ("hello\nworld\n", dataAsString(scriptState(), event.get())); | 381 EXPECT_EQ("hello\nworld\n", dataAsString(scriptState(), event.get())); |
| 382 } | 382 } |
| 383 | 383 |
| 384 TEST_F(EventSourceTest, EventShouldNotAccumulate) | 384 TEST_F(EventSourceTest, EventShouldNotAccumulate) |
| 385 { | 385 { |
| 386 RefPtrWillBeRawPtr<FakeEventListener> aListener = FakeEventListener::create(
); | 386 RefPtrWillBeRawPtr<FakeEventListener> aListener = FakeEventListener::create(
); |
| 387 RefPtrWillBeRawPtr<FakeEventListener> bListener = FakeEventListener::create(
); | 387 RefPtrWillBeRawPtr<FakeEventListener> bListener = FakeEventListener::create(
); |
| 388 | 388 |
| 389 source()->addEventListener("a", aListener); | 389 source()->addEventListener("a", aListener); |
| 390 source()->addEventListener("b", bListener); | 390 source()->addEventListener("b", bListener); |
| 391 enqueue("data:hello\nevent:a\nevent:b\n\n"); | 391 enqueue("data:hello\nevent:a\nevent:b\n\n"); |
| 392 | 392 |
| 393 ASSERT_EQ(0u, aListener->events().size()); | 393 ASSERT_EQ(0u, aListener->events().size()); |
| 394 ASSERT_EQ(1u, bListener->events().size()); | 394 ASSERT_EQ(1u, bListener->events().size()); |
| 395 ASSERT_EQ("b", bListener->events()[0]->type()); | 395 ASSERT_EQ("b", bListener->events()[0]->type()); |
| 396 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(bListene
r->events()[0].get()); | 396 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(bListene
r->events()[0].get()); |
| 397 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); | 397 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->getDataType())
; |
| 398 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); | 398 EXPECT_EQ("hello", dataAsString(scriptState(), event.get())); |
| 399 } | 399 } |
| 400 | 400 |
| 401 TEST_F(EventSourceTest, FeedDataOneByOne) | 401 TEST_F(EventSourceTest, FeedDataOneByOne) |
| 402 { | 402 { |
| 403 RefPtrWillBeRawPtr<FakeEventListener> aListener = FakeEventListener::create(
); | 403 RefPtrWillBeRawPtr<FakeEventListener> aListener = FakeEventListener::create(
); |
| 404 RefPtrWillBeRawPtr<FakeEventListener> bListener = FakeEventListener::create(
); | 404 RefPtrWillBeRawPtr<FakeEventListener> bListener = FakeEventListener::create(
); |
| 405 RefPtrWillBeRawPtr<FakeEventListener> messageListener = FakeEventListener::c
reate(); | 405 RefPtrWillBeRawPtr<FakeEventListener> messageListener = FakeEventListener::c
reate(); |
| 406 | 406 |
| 407 source()->addEventListener("a", aListener); | 407 source()->addEventListener("a", aListener); |
| 408 source()->addEventListener("b", bListener); | 408 source()->addEventListener("b", bListener); |
| 409 source()->addEventListener("message", messageListener); | 409 source()->addEventListener("message", messageListener); |
| 410 enqueueOneByOne("data:hello\r\ndata:world\revent:a\revent:b\nid:4\n\nid:8\nd
ata:bye\r\n\r"); | 410 enqueueOneByOne("data:hello\r\ndata:world\revent:a\revent:b\nid:4\n\nid:8\nd
ata:bye\r\n\r"); |
| 411 | 411 |
| 412 ASSERT_EQ(0u, aListener->events().size()); | 412 ASSERT_EQ(0u, aListener->events().size()); |
| 413 | 413 |
| 414 ASSERT_EQ(1u, bListener->events().size()); | 414 ASSERT_EQ(1u, bListener->events().size()); |
| 415 ASSERT_EQ("b", bListener->events()[0]->type()); | 415 ASSERT_EQ("b", bListener->events()[0]->type()); |
| 416 RefPtrWillBeRawPtr<MessageEvent> bEvent = static_cast<MessageEvent*>(bListen
er->events()[0].get()); | 416 RefPtrWillBeRawPtr<MessageEvent> bEvent = static_cast<MessageEvent*>(bListen
er->events()[0].get()); |
| 417 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, bEvent->dataType()); | 417 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, bEvent->getDataType()
); |
| 418 EXPECT_EQ("hello\nworld", dataAsString(scriptState(), bEvent.get())); | 418 EXPECT_EQ("hello\nworld", dataAsString(scriptState(), bEvent.get())); |
| 419 EXPECT_EQ("4", bEvent->lastEventId()); | 419 EXPECT_EQ("4", bEvent->lastEventId()); |
| 420 | 420 |
| 421 ASSERT_EQ(1u, messageListener->events().size()); | 421 ASSERT_EQ(1u, messageListener->events().size()); |
| 422 ASSERT_EQ("message", messageListener->events()[0]->type()); | 422 ASSERT_EQ("message", messageListener->events()[0]->type()); |
| 423 RefPtrWillBeRawPtr<MessageEvent> messageEvent = static_cast<MessageEvent*>(m
essageListener->events()[0].get()); | 423 RefPtrWillBeRawPtr<MessageEvent> messageEvent = static_cast<MessageEvent*>(m
essageListener->events()[0].get()); |
| 424 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, messageEvent->dataTyp
e()); | 424 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, messageEvent->getData
Type()); |
| 425 EXPECT_EQ("bye", dataAsString(scriptState(), messageEvent.get())); | 425 EXPECT_EQ("bye", dataAsString(scriptState(), messageEvent.get())); |
| 426 EXPECT_EQ("8", messageEvent->lastEventId()); | 426 EXPECT_EQ("8", messageEvent->lastEventId()); |
| 427 } | 427 } |
| 428 | 428 |
| 429 TEST_F(EventSourceTest, InvalidUTF8Sequence) | 429 TEST_F(EventSourceTest, InvalidUTF8Sequence) |
| 430 { | 430 { |
| 431 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; | 431 RefPtrWillBeRawPtr<FakeEventListener> listener = FakeEventListener::create()
; |
| 432 | 432 |
| 433 source()->addEventListener("message", listener); | 433 source()->addEventListener("message", listener); |
| 434 enqueue("data:\xffhello\xc2\n\n"); | 434 enqueue("data:\xffhello\xc2\n\n"); |
| 435 | 435 |
| 436 ASSERT_EQ(1u, listener->events().size()); | 436 ASSERT_EQ(1u, listener->events().size()); |
| 437 ASSERT_EQ("message", listener->events()[0]->type()); | 437 ASSERT_EQ("message", listener->events()[0]->type()); |
| 438 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); | 438 RefPtrWillBeRawPtr<MessageEvent> event = static_cast<MessageEvent*>(listener
->events()[0].get()); |
| 439 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->dataType()); | 439 ASSERT_EQ(MessageEvent::DataTypeSerializedScriptValue, event->getDataType())
; |
| 440 String expected = String() + replacementCharacter + "hello" + replacementCha
racter; | 440 String expected = String() + replacementCharacter + "hello" + replacementCha
racter; |
| 441 EXPECT_EQ(expected, dataAsString(scriptState(), event.get())); | 441 EXPECT_EQ(expected, dataAsString(scriptState(), event.get())); |
| 442 } | 442 } |
| 443 | 443 |
| 444 } // namespace | 444 } // namespace |
| 445 | 445 |
| 446 } // namespace blink | 446 } // namespace blink |
| OLD | NEW |