QDeclarativeXMLHttpRequestData::~QDeclarativeXMLHttpRequestData()
{
- nodeFunction.Dispose(); nodeFunction.Clear();
- namedNodeMapPrototype.Dispose(); namedNodeMapPrototype.Clear();
- nodeListPrototype.Dispose(); nodeListPrototype.Clear();
- nodePrototype.Dispose(); nodePrototype.Clear();
- elementPrototype.Dispose(); elementPrototype.Clear();
- attrPrototype.Dispose(); attrPrototype.Clear();
- characterDataPrototype.Dispose(); characterDataPrototype.Clear();
- textPrototype.Dispose(); textPrototype.Clear();
- cdataPrototype.Dispose(); cdataPrototype.Clear();
- documentPrototype.Dispose(); documentPrototype.Clear();
+ qPersistentDispose(nodeFunction);
+ qPersistentDispose(namedNodeMapPrototype);
+ qPersistentDispose(nodeListPrototype);
+ qPersistentDispose(nodePrototype);
+ qPersistentDispose(elementPrototype);
+ qPersistentDispose(attrPrototype);
+ qPersistentDispose(characterDataPrototype);
+ qPersistentDispose(textPrototype);
+ qPersistentDispose(cdataPrototype);
+ qPersistentDispose(documentPrototype);
}
v8::Local<v8::Object> QDeclarativeXMLHttpRequestData::newNode()
if (nodeFunction.IsEmpty()) {
v8::Local<v8::FunctionTemplate> ft = v8::FunctionTemplate::New();
ft->InstanceTemplate()->SetHasExternalResource(true);
- nodeFunction = v8::Persistent<v8::Function>::New(ft->GetFunction());
+ nodeFunction = qPersistentNew<v8::Function>(ft->GetFunction());
}
return nodeFunction->NewInstance();
{
QDeclarativeXMLHttpRequestData *d = xhrdata(engine);
if (d->nodePrototype.IsEmpty()) {
- d->nodePrototype = v8::Persistent<v8::Object>::New(v8::Object::New());
+ d->nodePrototype = qPersistentNew<v8::Object>(v8::Object::New());
d->nodePrototype->SetAccessor(v8::String::New("nodeName"), nodeName,
0, v8::External::Wrap(engine));
d->nodePrototype->SetAccessor(v8::String::New("nodeValue"), nodeValue,
0, v8::External::Wrap(engine));
d->nodePrototype->SetAccessor(v8::String::New("attributes"), attributes,
0, v8::External::Wrap(engine));
- // XXX freeze
+ engine->freezeObject(d->nodePrototype);
}
return d->nodePrototype;
}
{
QDeclarativeXMLHttpRequestData *d = xhrdata(engine);
if (d->elementPrototype.IsEmpty()) {
- d->elementPrototype = v8::Persistent<v8::Object>::New(v8::Object::New());
+ d->elementPrototype = qPersistentNew<v8::Object>(v8::Object::New());
d->elementPrototype->SetPrototype(Node::prototype(engine));
d->elementPrototype->SetAccessor(v8::String::New("tagName"), nodeName,
0, v8::External::Wrap(engine));
- // XXX freeze
+ engine->freezeObject(d->elementPrototype);
}
return d->elementPrototype;
}
{
QDeclarativeXMLHttpRequestData *d = xhrdata(engine);
if (d->attrPrototype.IsEmpty()) {
- d->attrPrototype = v8::Persistent<v8::Object>::New(v8::Object::New());
+ d->attrPrototype = qPersistentNew<v8::Object>(v8::Object::New());
d->attrPrototype->SetPrototype(Node::prototype(engine));
d->attrPrototype->SetAccessor(v8::String::New("name"), name,
0, v8::External::Wrap(engine));
0, v8::External::Wrap(engine));
d->attrPrototype->SetAccessor(v8::String::New("ownerElement"), ownerElement,
0, v8::External::Wrap(engine));
- // XXX freeze
+ engine->freezeObject(d->attrPrototype);
}
return d->attrPrototype;
}
{
QDeclarativeXMLHttpRequestData *d = xhrdata(engine);
if (d->characterDataPrototype.IsEmpty()) {
- d->characterDataPrototype = v8::Persistent<v8::Object>::New(v8::Object::New());
+ d->characterDataPrototype = qPersistentNew<v8::Object>(v8::Object::New());
d->characterDataPrototype->SetPrototype(Node::prototype(engine));
d->characterDataPrototype->SetAccessor(v8::String::New("data"), nodeValue,
0, v8::External::Wrap(engine));
d->characterDataPrototype->SetAccessor(v8::String::New("length"), length,
0, v8::External::Wrap(engine));
- // XXX freeze
+ engine->freezeObject(d->characterDataPrototype);
}
return d->characterDataPrototype;
}
{
QDeclarativeXMLHttpRequestData *d = xhrdata(engine);
if (d->textPrototype.IsEmpty()) {
- d->textPrototype = v8::Persistent<v8::Object>::New(v8::Object::New());
+ d->textPrototype = qPersistentNew<v8::Object>(v8::Object::New());
d->textPrototype->SetPrototype(CharacterData::prototype(engine));
d->textPrototype->SetAccessor(v8::String::New("isElementContentWhitespace"), isElementContentWhitespace,
0, v8::External::Wrap(engine));
d->textPrototype->SetAccessor(v8::String::New("wholeText"), wholeText,
0, v8::External::Wrap(engine));
- // XXX freeze
+ engine->freezeObject(d->textPrototype);
}
return d->textPrototype;
}
{
QDeclarativeXMLHttpRequestData *d = xhrdata(engine);
if (d->cdataPrototype.IsEmpty()) {
- d->cdataPrototype = v8::Persistent<v8::Object>::New(v8::Object::New());
+ d->cdataPrototype = qPersistentNew<v8::Object>(v8::Object::New());
d->cdataPrototype->SetPrototype(Text::prototype(engine));
- // XXX freeze
+ engine->freezeObject(d->cdataPrototype);
}
return d->cdataPrototype;
}
{
QDeclarativeXMLHttpRequestData *d = xhrdata(engine);
if (d->documentPrototype.IsEmpty()) {
- d->documentPrototype = v8::Persistent<v8::Object>::New(v8::Object::New());
+ d->documentPrototype = qPersistentNew<v8::Object>(v8::Object::New());
d->documentPrototype->SetPrototype(Node::prototype(engine));
d->documentPrototype->SetAccessor(v8::String::New("xmlVersion"), xmlVersion,
0, v8::External::Wrap(engine));
0, v8::External::Wrap(engine));
d->documentPrototype->SetAccessor(v8::String::New("documentElement"), documentElement,
0, v8::External::Wrap(engine));
- // XXX freeze
+ engine->freezeObject(d->documentPrototype);
}
return d->documentPrototype;
}
ot->SetAccessor(v8::String::New("length"), length, 0, v8::External::Wrap(engine));
ot->SetIndexedPropertyHandler(indexed, 0, 0, 0, 0, v8::External::Wrap(engine));
ot->SetFallbackPropertyHandler(named, 0, 0, 0, 0, v8::External::Wrap(engine));
- d->namedNodeMapPrototype = v8::Persistent<v8::Object>::New(ot->NewInstance());
- // XXX freeze
+ d->namedNodeMapPrototype = qPersistentNew<v8::Object>(ot->NewInstance());
+ engine->freezeObject(d->namedNodeMapPrototype);
}
return d->namedNodeMapPrototype;
}
if (index < r->d->children.count()) {
return Node::create(engine, r->d->children.at(index));
} else {
- // XXX RangeError exception?
return v8::Undefined();
}
}
v8::Local<v8::ObjectTemplate> ot = v8::ObjectTemplate::New();
ot->SetAccessor(v8::String::New("length"), length, 0, v8::External::Wrap(engine));
ot->SetIndexedPropertyHandler(indexed, 0, 0, 0, 0, v8::External::Wrap(engine));
- d->nodeListPrototype = v8::Persistent<v8::Object>::New(ot->NewInstance());
- // XXX freeze
+ d->nodeListPrototype = qPersistentNew<v8::Object>(ot->NewInstance());
+ engine->freezeObject(d->nodeListPrototype);
}
return d->nodeListPrototype;
}
m_network = networkAccessManager()->get(request);
else if (m_method == QLatin1String("HEAD"))
m_network = networkAccessManager()->head(request);
- else if(m_method == QLatin1String("POST"))
+ else if (m_method == QLatin1String("POST"))
m_network = networkAccessManager()->post(request, m_data);
- else if(m_method == QLatin1String("PUT"))
+ else if (m_method == QLatin1String("PUT"))
m_network = networkAccessManager()->put(request, m_data);
+ else if (m_method == QLatin1String("DELETE"))
+ m_network = networkAccessManager()->deleteResource(request);
QObject::connect(m_network, SIGNAL(downloadProgress(qint64,qint64)),
this, SLOT(downloadProgress(qint64)));
void QDeclarativeXMLHttpRequest::setMe(v8::Handle<v8::Object> me)
{
- m_me.Dispose();
- m_me = v8::Persistent<v8::Object>();
+ qPersistentDispose(m_me);
if (!me.IsEmpty())
- m_me = v8::Persistent<v8::Object>::New(me);
+ m_me = qPersistentNew<v8::Object>(me);
}
void QDeclarativeXMLHttpRequest::downloadProgress(qint64 bytes)
if (method != QLatin1String("GET") &&
method != QLatin1String("PUT") &&
method != QLatin1String("HEAD") &&
- method != QLatin1String("POST"))
+ method != QLatin1String("POST") &&
+ method != QLatin1String("DELETE"))
V8THROW_DOM(SYNTAX_ERR, "Unsupported HTTP method type");
// Argument 1 - URL