Index: Source/modules/websockets/WebSocket.cpp |
diff --git a/Source/modules/websockets/WebSocket.cpp b/Source/modules/websockets/WebSocket.cpp |
index 9016a538928649449bae969c589595524b5a0b9d..caa0d0f795dc432bf7b503a1a442db427b37d02e 100644 |
--- a/Source/modules/websockets/WebSocket.cpp |
+++ b/Source/modules/websockets/WebSocket.cpp |
@@ -32,7 +32,6 @@ |
#include "modules/websockets/WebSocket.h" |
-#include "bindings/v8/ExceptionState.h" |
#include "bindings/v8/ScriptController.h" |
#include "core/dom/Document.h" |
#include "core/dom/Event.h" |
@@ -155,50 +154,50 @@ PassRefPtr<WebSocket> WebSocket::create(ScriptExecutionContext* context) |
return webSocket.release(); |
} |
-PassRefPtr<WebSocket> WebSocket::create(ScriptExecutionContext* context, const String& url, ExceptionState& es) |
+PassRefPtr<WebSocket> WebSocket::create(ScriptExecutionContext* context, const String& url, ExceptionCode& ec) |
{ |
Vector<String> protocols; |
- return WebSocket::create(context, url, protocols, es); |
+ return WebSocket::create(context, url, protocols, ec); |
} |
-PassRefPtr<WebSocket> WebSocket::create(ScriptExecutionContext* context, const String& url, const Vector<String>& protocols, ExceptionState& es) |
+PassRefPtr<WebSocket> WebSocket::create(ScriptExecutionContext* context, const String& url, const Vector<String>& protocols, ExceptionCode& ec) |
{ |
if (url.isNull()) { |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
return 0; |
} |
RefPtr<WebSocket> webSocket(adoptRef(new WebSocket(context))); |
webSocket->suspendIfNeeded(); |
- webSocket->connect(context->completeURL(url), protocols, es); |
- if (es.hadException()) |
+ webSocket->connect(context->completeURL(url), protocols, ec); |
+ if (ec) |
return 0; |
return webSocket.release(); |
} |
-PassRefPtr<WebSocket> WebSocket::create(ScriptExecutionContext* context, const String& url, const String& protocol, ExceptionState& es) |
+PassRefPtr<WebSocket> WebSocket::create(ScriptExecutionContext* context, const String& url, const String& protocol, ExceptionCode& ec) |
{ |
Vector<String> protocols; |
protocols.append(protocol); |
- return WebSocket::create(context, url, protocols, es); |
+ return WebSocket::create(context, url, protocols, ec); |
} |
-void WebSocket::connect(const String& url, ExceptionState& es) |
+void WebSocket::connect(const String& url, ExceptionCode& ec) |
{ |
Vector<String> protocols; |
- connect(url, protocols, es); |
+ connect(url, protocols, ec); |
} |
-void WebSocket::connect(const String& url, const String& protocol, ExceptionState& es) |
+void WebSocket::connect(const String& url, const String& protocol, ExceptionCode& ec) |
{ |
Vector<String> protocols; |
protocols.append(protocol); |
- connect(url, protocols, es); |
+ connect(url, protocols, ec); |
} |
-void WebSocket::connect(const String& url, const Vector<String>& protocols, ExceptionState& es) |
+void WebSocket::connect(const String& url, const Vector<String>& protocols, ExceptionCode& ec) |
{ |
LOG(Network, "WebSocket %p connect() url='%s'", this, url.utf8().data()); |
m_url = KURL(KURL(), url); |
@@ -206,26 +205,26 @@ void WebSocket::connect(const String& url, const Vector<String>& protocols, Exce |
if (!m_url.isValid()) { |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "Invalid url for WebSocket " + m_url.elidedString()); |
m_state = CLOSED; |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
return; |
} |
if (!m_url.protocolIs("ws") && !m_url.protocolIs("wss")) { |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "Wrong url scheme for WebSocket " + m_url.elidedString()); |
m_state = CLOSED; |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
return; |
} |
if (m_url.hasFragmentIdentifier()) { |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "URL has fragment component " + m_url.elidedString()); |
m_state = CLOSED; |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
return; |
} |
if (!portAllowed(m_url)) { |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "WebSocket port " + String::number(m_url.port()) + " blocked"); |
m_state = CLOSED; |
- es.throwDOMException(SecurityError); |
+ ec = SecurityError; |
return; |
} |
@@ -239,7 +238,7 @@ void WebSocket::connect(const String& url, const Vector<String>& protocols, Exce |
m_state = CLOSED; |
// FIXME: Should this be throwing an exception? |
- es.throwDOMException(SecurityError); |
+ ec = SecurityError; |
return; |
} |
@@ -256,7 +255,7 @@ void WebSocket::connect(const String& url, const Vector<String>& protocols, Exce |
if (!isValidProtocolString(protocols[i])) { |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "Wrong protocol for WebSocket '" + encodeProtocolString(protocols[i]) + "'"); |
m_state = CLOSED; |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
return; |
} |
} |
@@ -265,7 +264,7 @@ void WebSocket::connect(const String& url, const Vector<String>& protocols, Exce |
if (!visited.add(protocols[i]).isNewEntry) { |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "WebSocket protocols contain duplicates: '" + encodeProtocolString(protocols[i]) + "'"); |
m_state = CLOSED; |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
return; |
} |
} |
@@ -278,12 +277,12 @@ void WebSocket::connect(const String& url, const Vector<String>& protocols, Exce |
ActiveDOMObject::setPendingActivity(this); |
} |
-void WebSocket::handleSendResult(WebSocketChannel::SendResult result, ExceptionState& es) |
+void WebSocket::handleSendResult(WebSocketChannel::SendResult result, ExceptionCode& ec) |
{ |
switch (result) { |
case WebSocketChannel::InvalidMessage: |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "WebSocket message contains invalid character(s)."); |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
return; |
case WebSocketChannel::SendFail: |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "WebSocket send() failed."); |
@@ -302,11 +301,11 @@ void WebSocket::updateBufferedAmountAfterClose(unsigned long payloadSize) |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "WebSocket is already in CLOSING or CLOSED state."); |
} |
-void WebSocket::send(const String& message, ExceptionState& es) |
+void WebSocket::send(const String& message, ExceptionCode& ec) |
{ |
LOG(Network, "WebSocket %p send() Sending String '%s'", this, message.utf8().data()); |
if (m_state == CONNECTING) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
// No exception is raised if the connection was once established but has subsequently been closed. |
@@ -315,15 +314,15 @@ void WebSocket::send(const String& message, ExceptionState& es) |
return; |
} |
ASSERT(m_channel); |
- handleSendResult(m_channel->send(message), es); |
+ handleSendResult(m_channel->send(message), ec); |
} |
-void WebSocket::send(ArrayBuffer* binaryData, ExceptionState& es) |
+void WebSocket::send(ArrayBuffer* binaryData, ExceptionCode& ec) |
{ |
LOG(Network, "WebSocket %p send() Sending ArrayBuffer %p", this, binaryData); |
ASSERT(binaryData); |
if (m_state == CONNECTING) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
if (m_state == CLOSING || m_state == CLOSED) { |
@@ -331,15 +330,15 @@ void WebSocket::send(ArrayBuffer* binaryData, ExceptionState& es) |
return; |
} |
ASSERT(m_channel); |
- handleSendResult(m_channel->send(*binaryData, 0, binaryData->byteLength()), es); |
+ handleSendResult(m_channel->send(*binaryData, 0, binaryData->byteLength()), ec); |
} |
-void WebSocket::send(ArrayBufferView* arrayBufferView, ExceptionState& es) |
+void WebSocket::send(ArrayBufferView* arrayBufferView, ExceptionCode& ec) |
{ |
LOG(Network, "WebSocket %p send() Sending ArrayBufferView %p", this, arrayBufferView); |
ASSERT(arrayBufferView); |
if (m_state == CONNECTING) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
if (m_state == CLOSING || m_state == CLOSED) { |
@@ -348,15 +347,15 @@ void WebSocket::send(ArrayBufferView* arrayBufferView, ExceptionState& es) |
} |
ASSERT(m_channel); |
RefPtr<ArrayBuffer> arrayBuffer(arrayBufferView->buffer()); |
- handleSendResult(m_channel->send(*arrayBuffer, arrayBufferView->byteOffset(), arrayBufferView->byteLength()), es); |
+ handleSendResult(m_channel->send(*arrayBuffer, arrayBufferView->byteOffset(), arrayBufferView->byteLength()), ec); |
} |
-void WebSocket::send(Blob* binaryData, ExceptionState& es) |
+void WebSocket::send(Blob* binaryData, ExceptionCode& ec) |
{ |
LOG(Network, "WebSocket %p send() Sending Blob '%s'", this, binaryData->url().elidedString().utf8().data()); |
ASSERT(binaryData); |
if (m_state == CONNECTING) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
if (m_state == CLOSING || m_state == CLOSED) { |
@@ -364,38 +363,38 @@ void WebSocket::send(Blob* binaryData, ExceptionState& es) |
return; |
} |
ASSERT(m_channel); |
- handleSendResult(m_channel->send(*binaryData), es); |
+ handleSendResult(m_channel->send(*binaryData), ec); |
} |
-void WebSocket::close(unsigned short code, const String& reason, ExceptionState& es) |
+void WebSocket::close(unsigned short code, const String& reason, ExceptionCode& ec) |
{ |
- closeInternal(code, reason, es); |
+ closeInternal(code, reason, ec); |
} |
-void WebSocket::close(ExceptionState& es) |
+void WebSocket::close(ExceptionCode& ec) |
{ |
- closeInternal(WebSocketChannel::CloseEventCodeNotSpecified, String(), es); |
+ closeInternal(WebSocketChannel::CloseEventCodeNotSpecified, String(), ec); |
} |
-void WebSocket::close(unsigned short code, ExceptionState& es) |
+void WebSocket::close(unsigned short code, ExceptionCode& ec) |
{ |
- closeInternal(code, String(), es); |
+ closeInternal(code, String(), ec); |
} |
-void WebSocket::closeInternal(int code, const String& reason, ExceptionState& es) |
+void WebSocket::closeInternal(int code, const String& reason, ExceptionCode& ec) |
{ |
if (code == WebSocketChannel::CloseEventCodeNotSpecified) |
LOG(Network, "WebSocket %p close() without code and reason", this); |
else { |
LOG(Network, "WebSocket %p close() code=%d reason='%s'", this, code, reason.utf8().data()); |
if (!(code == WebSocketChannel::CloseEventCodeNormalClosure || (WebSocketChannel::CloseEventCodeMinimumUserDefined <= code && code <= WebSocketChannel::CloseEventCodeMaximumUserDefined))) { |
- es.throwDOMException(InvalidAccessError); |
+ ec = InvalidAccessError; |
return; |
} |
CString utf8 = reason.utf8(String::StrictConversionReplacingUnpairedSurrogatesWithFFFD); |
if (utf8.length() > maxReasonSizeInBytes) { |
scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, "WebSocket close message is too long."); |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
return; |
} |
} |