khtmlpart_p.h
00001 #ifndef khtmlpart_p_h
00002 #define khtmlpart_p_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <kcursor.h>
00029 #include <kxmlguifactory.h>
00030
00031 #include "khtml_run.h"
00032 #include "../kutils/kfind.h"
00033 #include "khtml_factory.h"
00034 #include "khtml_events.h"
00035 #include "khtml_ext.h"
00036 #include "khtml_iface.h"
00037 #include "khtml_settings.h"
00038 #include "misc/decoder.h"
00039 #include "java/kjavaappletcontext.h"
00040 #include "ecma/kjs_proxy.h"
00041
00042 class KPopupMenu;;
00043 class KSelectAction;
00044
00045 namespace KIO
00046 {
00047 class Job;
00048 class TransferJob;
00049 }
00050
00051 namespace khtml
00052 {
00053 struct ChildFrame
00054 {
00055 enum Type { Frame, IFrame, Object };
00056
00057 ChildFrame() {
00058 m_bCompleted = false; m_bPreloaded = false; m_type = Frame; m_bNotify = false;
00059 m_bPendingRedirection = false;
00060 }
00061
00062 ~ChildFrame() { if (m_run) m_run->abort(); }
00063
00064 QGuardedPtr<khtml::RenderPart> m_frame;
00065 QGuardedPtr<KParts::ReadOnlyPart> m_part;
00066 QGuardedPtr<KParts::BrowserExtension> m_extension;
00067 QGuardedPtr<KParts::LiveConnectExtension> m_liveconnect;
00068 QString m_serviceName;
00069 QString m_serviceType;
00070 bool m_bCompleted;
00071 QString m_name;
00072 KParts::URLArgs m_args;
00073 QGuardedPtr<KHTMLRun> m_run;
00074 bool m_bPreloaded;
00075 KURL m_workingURL;
00076 Type m_type;
00077 QStringList m_params;
00078 bool m_bNotify;
00079 bool m_bPendingRedirection;
00080 };
00081
00082 }
00083
00084 class FrameList : public QValueList<khtml::ChildFrame>
00085 {
00086 public:
00087 Iterator find( const QString &name );
00088 };
00089
00090 typedef FrameList::ConstIterator ConstFrameIt;
00091 typedef FrameList::Iterator FrameIt;
00092
00093 static int khtml_part_dcop_counter = 0;
00094
00095 class KHTMLPartPrivate
00096 {
00097 public:
00098 KHTMLPartPrivate(QObject* parent)
00099 {
00100 m_doc = 0L;
00101 m_decoder = 0L;
00102 m_jscript = 0L;
00103 m_runningScripts = 0;
00104 m_kjs_lib = 0;
00105 m_job = 0L;
00106 m_bComplete = true;
00107 m_bLoadEventEmitted = true;
00108 m_cachePolicy = KIO::CC_Verify;
00109 m_manager = 0L;
00110 m_settings = new KHTMLSettings(*KHTMLFactory::defaultHTMLSettings());
00111 m_bClearing = false;
00112 m_bCleared = false;
00113 m_zoomFactor = 100;
00114 m_bDnd = true;
00115 m_startOffset = m_endOffset = 0;
00116 m_startBeforeEnd = true;
00117 m_linkCursor = KCursor::handCursor();
00118 m_loadedObjects = 0;
00119 m_totalObjectCount = 0;
00120 m_jobPercent = 0;
00121 m_haveEncoding = false;
00122 m_activeFrame = 0L;
00123 m_find = 0;
00124 m_ssl_in_use = false;
00125 #ifndef Q_WS_QWS
00126 m_javaContext = 0;
00127 #endif
00128 m_cacheId = 0;
00129 m_frameNameId = 1;
00130
00131 m_restored = false;
00132
00133 m_focusNodeNumber = -1;
00134 m_focusNodeRestored = false;
00135
00136 m_bJScriptForce = false;
00137 m_bJScriptOverride = false;
00138 m_bJavaForce = false;
00139 m_bJavaOverride = false;
00140 m_bPluginsForce = false;
00141 m_bPluginsOverride = false;
00142 m_onlyLocalReferences = false;
00143
00144 m_metaRefreshEnabled = true;
00145 m_bHTTPRefresh = false;
00146
00147 m_bFirstData = true;
00148 m_submitForm = 0;
00149 m_delayRedirect = 0;
00150 m_automaticDetectionLanguage = khtml::Decoder::SemiautomaticDetection;
00151
00152
00153 if(parent && parent->inherits("KHTMLPart"))
00154 {
00155 KHTMLPart* part = static_cast<KHTMLPart*>(parent);
00156 if(part->d)
00157 {
00158 m_bJScriptForce = part->d->m_bJScriptForce;
00159 m_bJScriptOverride = part->d->m_bJScriptOverride;
00160 m_bJavaForce = part->d->m_bJavaForce;
00161 m_bJavaOverride = part->d->m_bJavaOverride;
00162 m_bPluginsForce = part->d->m_bPluginsForce;
00163 m_bPluginsOverride = part->d->m_bPluginsOverride;
00164
00165 m_ssl_in_use = part->d->m_ssl_in_use;
00166 m_onlyLocalReferences = part->d->m_onlyLocalReferences;
00167 m_zoomFactor = part->d->m_zoomFactor;
00168 m_automaticDetectionLanguage = part->d->m_automaticDetectionLanguage;
00169 }
00170 }
00171
00172 m_focusNodeNumber = -1;
00173 m_focusNodeRestored = false;
00174 m_opener = 0;
00175 m_openedByJS = false;
00176 m_newJSInterpreterExists = false;
00177 m_dcopobject = 0;
00178 m_jobspeed = 0;
00179 m_dcop_counter = ++khtml_part_dcop_counter;
00180 }
00181 ~KHTMLPartPrivate()
00182 {
00183 delete m_dcopobject;
00184 delete m_extension;
00185 delete m_settings;
00186 delete m_jscript;
00187 if ( m_kjs_lib)
00188 m_kjs_lib->unload();
00189 #ifndef Q_WS_QWS
00190 delete m_javaContext;
00191 #endif
00192 }
00193
00194 FrameList m_frames;
00195 QValueList<khtml::ChildFrame> m_objects;
00196
00197 QGuardedPtr<KHTMLView> m_view;
00198 KHTMLPartBrowserExtension *m_extension;
00199 KHTMLPartBrowserHostExtension *m_hostExtension;
00200 DOM::DocumentImpl *m_doc;
00201 khtml::Decoder *m_decoder;
00202 QString m_encoding;
00203 QString m_sheetUsed;
00204 long m_cacheId;
00205 QString scheduledScript;
00206 DOM::Node scheduledScriptNode;
00207
00208 KJSProxy *m_jscript;
00209 KLibrary *m_kjs_lib;
00210 int m_runningScripts;
00211 bool m_bBackRightClick :1;
00212 bool m_bJScriptEnabled :1;
00213 bool m_bJScriptDebugEnabled :1;
00214 bool m_bJavaEnabled :1;
00215 bool m_bPluginsEnabled :1;
00216 bool m_bJScriptForce :1;
00217 bool m_bJScriptOverride :1;
00218 bool m_bJavaForce :1;
00219 bool m_bJavaOverride :1;
00220 bool m_bPluginsForce :1;
00221 bool m_metaRefreshEnabled :1;
00222 bool m_bPluginsOverride :1;
00223 bool m_restored :1;
00224 int m_frameNameId;
00225 int m_dcop_counter;
00226 DCOPObject *m_dcopobject;
00227
00228 #ifndef Q_WS_QWS
00229 KJavaAppletContext *m_javaContext;
00230 #endif
00231
00232 KHTMLSettings *m_settings;
00233
00234 KIO::TransferJob * m_job;
00235
00236 QString m_statusBarText[3];
00237 unsigned long m_jobspeed;
00238 QString m_lastModified;
00239 QString m_httpHeaders;
00240 QString m_pageServices;
00241
00242
00243
00244 bool m_ssl_in_use;
00245 QString m_ssl_peer_certificate,
00246 m_ssl_peer_chain,
00247 m_ssl_peer_ip,
00248 m_ssl_cipher,
00249 m_ssl_cipher_desc,
00250 m_ssl_cipher_version,
00251 m_ssl_cipher_used_bits,
00252 m_ssl_cipher_bits,
00253 m_ssl_cert_state,
00254 m_ssl_parent_ip,
00255 m_ssl_parent_cert;
00256
00257 bool m_bComplete:1;
00258 bool m_bLoadEventEmitted:1;
00259 bool m_haveEncoding:1;
00260 bool m_bHTTPRefresh:1;
00261 bool m_onlyLocalReferences :1;
00262 bool m_redirectLockHistory:1;
00263
00264 KURL m_workingURL;
00265
00266 KIO::CacheControl m_cachePolicy;
00267 QTimer m_redirectionTimer;
00268 QTime m_parsetime;
00269 int m_delayRedirect;
00270 QString m_redirectURL;
00271
00272 KAction *m_paViewDocument;
00273 KAction *m_paViewFrame;
00274 KAction *m_paViewInfo;
00275 KAction *m_paSaveBackground;
00276 KAction *m_paSaveDocument;
00277 KAction *m_paSaveFrame;
00278 KAction *m_paSecurity;
00279 KActionMenu *m_paSetEncoding;
00280 KSelectAction *m_paUseStylesheet;
00281 KHTMLZoomFactorAction *m_paIncZoomFactor;
00282 KHTMLZoomFactorAction *m_paDecZoomFactor;
00283 KAction *m_paLoadImages;
00284 KAction *m_paFind;
00285 KAction *m_paFindNext;
00286 KAction *m_paPrintFrame;
00287 KAction *m_paSelectAll;
00288 KAction *m_paDebugDOMTree;
00289 KAction *m_paDebugRenderTree;
00290
00291 KParts::PartManager *m_manager;
00292
00293 QString m_popupMenuXML;
00294 KHTMLPart::GUIProfile m_guiProfile;
00295
00296 int m_zoomFactor;
00297
00298 QString m_strSelectedURL;
00299 QString m_strSelectedURLTarget;
00300 QString m_referrer;
00301 QString m_pageReferrer;
00302
00303 struct SubmitForm
00304 {
00305 const char *submitAction;
00306 QString submitUrl;
00307 QByteArray submitFormData;
00308 QString target;
00309 QString submitContentType;
00310 QString submitBoundary;
00311 };
00312
00313 SubmitForm *m_submitForm;
00314
00315 bool m_bMousePressed;
00316 bool m_bRightMousePressed;
00317 DOM::Node m_mousePressNode;
00318
00319 DOM::Node m_selectionStart;
00320 long m_startOffset;
00321 DOM::Node m_selectionEnd;
00322 long m_endOffset;
00323 QString m_overURL;
00324 QString m_overURLTarget;
00325
00326 bool m_startBeforeEnd:1;
00327 bool m_bDnd:1;
00328 bool m_bFirstData:1;
00329 bool m_bClearing:1;
00330 bool m_bCleared:1;
00331 bool m_bSecurityInQuestion:1;
00332 bool m_focusNodeRestored:1;
00333
00334 int m_focusNodeNumber;
00335
00336 QPoint m_dragStartPos;
00337 #ifdef KHTML_NO_SELECTION
00338 QPoint m_dragLastPos;
00339 #endif
00340
00341 QCursor m_linkCursor;
00342 QTimer m_scrollTimer;
00343
00344 unsigned long m_loadedObjects;
00345 unsigned long m_totalObjectCount;
00346 unsigned int m_jobPercent;
00347
00348 QTimer m_progressUpdateTimer;
00349
00350 QStringList m_pluginPageQuestionAsked;
00351
00353 struct StringPortion
00354 {
00355
00356 StringPortion( int i, DOM::NodeImpl* n ) : index(i), node(n) { if (node) node->ref(); }
00357 StringPortion() : index(0), node(0) {}
00358 StringPortion( const StringPortion& other ) : node(0) { operator=(other); }
00359 StringPortion& operator=( const StringPortion& other ) {
00360 index=other.index;
00361 if (other.node) other.node->ref();
00362 if (node) node->deref();
00363 node=other.node;
00364 return *this;
00365 }
00366 ~StringPortion() { if (node) node->deref(); }
00367
00368 int index;
00369 DOM::NodeImpl *node;
00370 };
00371 QValueList<StringPortion> m_stringPortions;
00372
00373 KFind *m_find;
00374
00375 struct findState
00376 {
00377 findState()
00378 { options = 0; }
00379 QStringList history;
00380 QString text;
00381 int options;
00382 };
00383
00384 findState m_lastFindState;
00385
00386 DOM::NodeImpl *m_findNode;
00387 DOM::NodeImpl *m_findNodeEnd;
00388 int m_findPos;
00389 int m_findPosEnd;
00391
00392
00393 KParts::Part * m_activeFrame;
00394 QGuardedPtr<KHTMLPart> m_opener;
00395 bool m_openedByJS;
00396 bool m_newJSInterpreterExists;
00397
00398 khtml::Decoder::AutomaticDetectinonLanguage m_automaticDetectionLanguage;
00399 KPopupMenu *m_automaticDetection;
00400 KSelectAction *m_manualDetection;
00401 };
00402
00403 #endif
This file is part of the documentation for kdelibs Version 3.1.5.