khtml Library API Documentation

xmlhttprequest.h

00001 // -*- c-basic-offset: 2 -*- 00002 /* 00003 * This file is part of the KDE libraries 00004 * Copyright (C) 2003 Apple Computer, Inc. 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 */ 00020 00021 #ifndef _XMLHTTPREQUEST_H_ 00022 #define _XMLHTTPREQUEST_H_ 00023 00024 #include "ecma/kjs_binding.h" 00025 #include "ecma/kjs_dom.h" 00026 #include "misc/decoder.h" 00027 #include "kio/jobclasses.h" 00028 00029 namespace KJS { 00030 00031 class JSEventListener; 00032 class XMLHttpRequestQObject; 00033 00034 // these exact numeric values are important because JS expects them 00035 enum XMLHttpRequestState { 00036 Uninitialized = 0, 00037 Loading = 1, 00038 Loaded = 2, 00039 Interactive = 3, 00040 Completed = 4 00041 }; 00042 00043 class XMLHttpRequestConstructorImp : public ObjectImp { 00044 public: 00045 XMLHttpRequestConstructorImp(ExecState *exec, const DOM::Document &d); 00046 virtual bool implementsConstruct() const; 00047 virtual Object construct(ExecState *exec, const List &args); 00048 private: 00049 DOM::Document doc; 00050 }; 00051 00052 class XMLHttpRequest : public DOMObject { 00053 public: 00054 XMLHttpRequest(ExecState *, const DOM::Document &d); 00055 ~XMLHttpRequest(); 00056 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; 00057 Value getValueProperty(ExecState *exec, int token) const; 00058 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None); 00059 void putValueProperty(ExecState *exec, int token, const Value& value, int /*attr*/); 00060 virtual bool toBoolean(ExecState *) const { return true; } 00061 virtual const ClassInfo* classInfo() const { return &info; } 00062 static const ClassInfo info; 00063 enum { Onload, Onreadystatechange, ReadyState, ResponseText, ResponseXML, Status, StatusText, Abort, 00064 GetAllResponseHeaders, GetResponseHeader, Open, Send, SetRequestHeader }; 00065 00066 private: 00067 friend class XMLHttpRequestProtoFunc; 00068 friend class XMLHttpRequestQObject; 00069 00070 Value getStatusText() const; 00071 Value getStatus() const; 00072 bool urlMatchesDocumentDomain(const KURL&) const; 00073 00074 XMLHttpRequestQObject *qObject; 00075 00076 #ifdef APPLE_CHANGES 00077 void slotData( KIO::Job* job, const char *data, int size ); 00078 #else 00079 void slotData( KIO::Job* job, const QByteArray &data ); 00080 #endif 00081 void slotFinished( KIO::Job* ); 00082 void slotRedirection( KIO::Job*, const KURL& ); 00083 00084 void processSyncLoadResults(const QByteArray &data, const KURL &finalURL, const QString &headers); 00085 00086 void open(const QString& _method, const KURL& _url, bool _async); 00087 void send(const QString& _body); 00088 void abort(); 00089 void setRequestHeader(const QString& name, const QString &value); 00090 Value getAllResponseHeaders() const; 00091 Value getResponseHeader(const QString& name) const; 00092 00093 void changeState(XMLHttpRequestState newState); 00094 00095 QGuardedPtr<DOM::DocumentImpl> doc; 00096 00097 KURL url; 00098 QString method; 00099 bool async; 00100 QString requestHeaders; 00101 QString contentType; 00102 00103 KIO::TransferJob * job; 00104 00105 XMLHttpRequestState state; 00106 JSEventListener *onReadyStateChangeListener; 00107 JSEventListener *onLoadListener; 00108 00109 khtml::Decoder *decoder; 00110 QString encoding; 00111 QString responseHeaders; 00112 00113 QString response; 00114 mutable bool createdDocument; 00115 mutable bool typeIsXML; 00116 mutable DOM::Document responseXML; 00117 00118 bool aborted; 00119 }; 00120 00121 00122 class XMLHttpRequestQObject : public QObject { 00123 Q_OBJECT 00124 00125 public: 00126 XMLHttpRequestQObject(XMLHttpRequest *_jsObject); 00127 00128 public slots: 00129 void slotData( KIO::Job* job, const QByteArray &data ); 00130 void slotFinished( KIO::Job* job ); 00131 void slotRedirection( KIO::Job* job, const KURL& url); 00132 00133 private: 00134 XMLHttpRequest *jsObject; 00135 }; 00136 00137 } // namespace 00138 00139 #endif
KDE Logo
This file is part of the documentation for khtml Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 23:31:35 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003