| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009, 2012 Ericsson AB. All rights reserved. | 2 * Copyright (C) 2009, 2012 Ericsson AB. All rights reserved. |
| 3 * Copyright (C) 2010 Apple Inc. All rights reserved. | 3 * Copyright (C) 2010 Apple Inc. All rights reserved. |
| 4 * Copyright (C) 2011, Code Aurora Forum. All rights reserved. | 4 * Copyright (C) 2011, Code Aurora Forum. All rights reserved. |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 , m_decoder(TextResourceDecoder::create("text/plain", "UTF-8")) | 65 , m_decoder(TextResourceDecoder::create("text/plain", "UTF-8")) |
| 66 , m_connectTimer(this, &EventSource::connectTimerFired) | 66 , m_connectTimer(this, &EventSource::connectTimerFired) |
| 67 , m_discardTrailingNewline(false) | 67 , m_discardTrailingNewline(false) |
| 68 , m_requestInFlight(false) | 68 , m_requestInFlight(false) |
| 69 , m_reconnectDelay(defaultReconnectDelay) | 69 , m_reconnectDelay(defaultReconnectDelay) |
| 70 { | 70 { |
| 71 ScriptWrappable::init(this); | 71 ScriptWrappable::init(this); |
| 72 eventSourceInit.get("withCredentials", m_withCredentials); | 72 eventSourceInit.get("withCredentials", m_withCredentials); |
| 73 } | 73 } |
| 74 | 74 |
| 75 PassRefPtr<EventSource> EventSource::create(ExecutionContext* context, const Str
ing& url, const Dictionary& eventSourceInit, ExceptionState& es) | 75 PassRefPtr<EventSource> EventSource::create(ExecutionContext* context, const Str
ing& url, const Dictionary& eventSourceInit, ExceptionState& exceptionState) |
| 76 { | 76 { |
| 77 if (url.isEmpty()) { | 77 if (url.isEmpty()) { |
| 78 es.throwDOMException(SyntaxError, "Cannot open an EventSource to an empt
y URL."); | 78 exceptionState.throwDOMException(SyntaxError, "Cannot open an EventSourc
e to an empty URL."); |
| 79 return 0; | 79 return 0; |
| 80 } | 80 } |
| 81 | 81 |
| 82 KURL fullURL = context->completeURL(url); | 82 KURL fullURL = context->completeURL(url); |
| 83 if (!fullURL.isValid()) { | 83 if (!fullURL.isValid()) { |
| 84 es.throwDOMException(SyntaxError, "Cannot open an EventSource to '" + ur
l + "'. The URL is invalid."); | 84 exceptionState.throwDOMException(SyntaxError, "Cannot open an EventSourc
e to '" + url + "'. The URL is invalid."); |
| 85 return 0; | 85 return 0; |
| 86 } | 86 } |
| 87 | 87 |
| 88 // FIXME: Convert this to check the isolated world's Content Security Policy
once webkit.org/b/104520 is solved. | 88 // FIXME: Convert this to check the isolated world's Content Security Policy
once webkit.org/b/104520 is solved. |
| 89 bool shouldBypassMainWorldContentSecurityPolicy = false; | 89 bool shouldBypassMainWorldContentSecurityPolicy = false; |
| 90 if (context->isDocument()) { | 90 if (context->isDocument()) { |
| 91 Document* document = toDocument(context); | 91 Document* document = toDocument(context); |
| 92 shouldBypassMainWorldContentSecurityPolicy = document->frame()->script()
.shouldBypassMainWorldContentSecurityPolicy(); | 92 shouldBypassMainWorldContentSecurityPolicy = document->frame()->script()
.shouldBypassMainWorldContentSecurityPolicy(); |
| 93 } | 93 } |
| 94 if (!shouldBypassMainWorldContentSecurityPolicy && !context->contentSecurity
Policy()->allowConnectToSource(fullURL)) { | 94 if (!shouldBypassMainWorldContentSecurityPolicy && !context->contentSecurity
Policy()->allowConnectToSource(fullURL)) { |
| 95 // We can safely expose the URL to JavaScript, as this exception is gene
rate synchronously before any redirects take place. | 95 // We can safely expose the URL to JavaScript, as this exception is gene
rate synchronously before any redirects take place. |
| 96 es.throwSecurityError("Refused to connect to '" + fullURL.elidedString()
+ "' because it violates the document's Content Security Policy."); | 96 exceptionState.throwSecurityError("Refused to connect to '" + fullURL.el
idedString() + "' because it violates the document's Content Security Policy."); |
| 97 return 0; | 97 return 0; |
| 98 } | 98 } |
| 99 | 99 |
| 100 RefPtr<EventSource> source = adoptRef(new EventSource(context, fullURL, even
tSourceInit)); | 100 RefPtr<EventSource> source = adoptRef(new EventSource(context, fullURL, even
tSourceInit)); |
| 101 | 101 |
| 102 source->setPendingActivity(source.get()); | 102 source->setPendingActivity(source.get()); |
| 103 source->scheduleInitialConnect(); | 103 source->scheduleInitialConnect(); |
| 104 source->suspendIfNeeded(); | 104 source->suspendIfNeeded(); |
| 105 | 105 |
| 106 return source.release(); | 106 return source.release(); |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 | 427 |
| 428 PassRefPtr<MessageEvent> EventSource::createMessageEvent() | 428 PassRefPtr<MessageEvent> EventSource::createMessageEvent() |
| 429 { | 429 { |
| 430 RefPtr<MessageEvent> event = MessageEvent::create(); | 430 RefPtr<MessageEvent> event = MessageEvent::create(); |
| 431 event->initMessageEvent(m_eventName.isEmpty() ? EventTypeNames::message : At
omicString(m_eventName), false, false, SerializedScriptValue::create(String(m_da
ta)), m_eventStreamOrigin, m_lastEventId, 0, nullptr); | 431 event->initMessageEvent(m_eventName.isEmpty() ? EventTypeNames::message : At
omicString(m_eventName), false, false, SerializedScriptValue::create(String(m_da
ta)), m_eventStreamOrigin, m_lastEventId, 0, nullptr); |
| 432 m_data.clear(); | 432 m_data.clear(); |
| 433 return event.release(); | 433 return event.release(); |
| 434 } | 434 } |
| 435 | 435 |
| 436 } // namespace WebCore | 436 } // namespace WebCore |
| OLD | NEW |