[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/khtml/ecma
From: Harri Porten <porten () kde ! org>
Date: 2007-04-21 17:56:57
Message-ID: 1177178217.561890.10225.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 656559 by porten:
argument checking
M +36 -24 xmlhttprequest.cpp
M +2 -2 xmlhttprequest.h
--- trunk/KDE/kdelibs/khtml/ecma/xmlhttprequest.cpp #656558:656559
@@ -354,10 +354,15 @@
changeState(XHRS_Open);
}
-void XMLHttpRequest::send(const QString& _body)
+void XMLHttpRequest::send(const QString& _body, int& ec)
{
aborted = false;
+ if (m_state != XHRS_Open) {
+ ec = DOMException::INVALID_STATE_ERR;
+ return;
+ }
+
if (method == "post") {
QString protocol = url.protocol().toLower();
@@ -459,10 +464,22 @@
changeState(XHRS_Uninitialized);
}
-void XMLHttpRequest::setRequestHeader(const QString& _name, const QString &value)
+void XMLHttpRequest::setRequestHeader(const QString& _name, const QString& _value, int& ec)
{
+ if (m_state != XHRS_Open) {
+ ec = DOMException::INVALID_STATE_ERR;
+ return;
+ }
+
QString nameTrimmed = _name.trimmed();
+ if (nameTrimmed.isEmpty()) {
+ ec = DOMException::SYNTAX_ERR;
+ return;
+ }
QString name = nameTrimmed.toLower();
+ QString value = _value.trimmed();
+ if (value.isEmpty())
+ return;
// Content-type needs to be set separately from the other headers
if(name == "content-type") {
@@ -495,7 +512,7 @@
return;
}
- m_requestHeaders[nameTrimmed] = value.trimmed();
+ m_requestHeaders[nameTrimmed] = value;
}
ValueImp *XMLHttpRequest::getAllResponseHeaders() const
@@ -702,6 +719,9 @@
}
XMLHttpRequest *request = static_cast<XMLHttpRequest *>(thisObj);
+
+ int ec = 0;
+
switch (id) {
case XMLHttpRequest::Abort:
request->abort();
@@ -749,15 +769,6 @@
}
case XMLHttpRequest::Send:
{
- if (args.size() > 1) {
- return Undefined();
- }
-
- if (request->m_state != XHRS_Open) {
- setDOMException(exec, DOMException::INVALID_STATE_ERR);
- return jsUndefined();
- }
-
QString body;
if (args.size() >= 1) {
DOM::NodeImpl* docNode = toNode(args[0]);
@@ -776,22 +787,23 @@
}
}
- request->send(body);
-
+ request->send(body, ec);
+ setDOMException(exec, ec);
return jsUndefined();
}
case XMLHttpRequest::SetRequestHeader:
- if (args.size() != 2) {
+ if (args.size() < 2)
+ return throwError(exec, SyntaxError, "Not enough arguments");
+ JSValue* keyArgument = args[0];
+ JSValue* valArgument = args[1];
+ QString key, val;
+ if (!keyArgument->isUndefined() && !keyArgument->isNull())
+ key = keyArgument->toString(exec).qstring();
+ if (!valArgument->isUndefined() && !valArgument->isNull())
+ val = valArgument->toString(exec).qstring();
+ request->setRequestHeader(key, val, ec);
+ setDOMException(exec, ec);
return jsUndefined();
- }
- if (request->m_state != XHRS_Open) {
- setDOMException(exec, DOMException::INVALID_STATE_ERR);
- return jsUndefined();
- }
-
- request->setRequestHeader(args[0]->toString(exec).qstring(), args[1]->toString(exec).qstring());
-
- return jsUndefined();
}
return Undefined();
--- trunk/KDE/kdelibs/khtml/ecma/xmlhttprequest.h #656558:656559
@@ -113,9 +113,9 @@
void processSyncLoadResults(const QByteArray &data, const KUrl &finalURL, const QString &headers);
void open(const QString& _method, const KUrl& _url, bool _async);
- void send(const QString& _body);
+ void send(const QString& _body, int& ec);
void abort();
- void setRequestHeader(const QString& name, const QString &value);
+ void setRequestHeader(const QString& name, const QString& value, int& ec);
ValueImp *getAllResponseHeaders() const;
ValueImp *getResponseHeader(const QString& name) const;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic