25 #ifndef __khtml_part_h__
26 #define __khtml_part_h__
28 #include "dom/dom_doc.h"
29 #include "dom/dom2_range.h"
31 #include <kparts/readonlypart.h>
32 #include <kparts/browserextension.h>
33 #include <kparts/browserhostextension.h>
35 #include <kfinddialog.h>
37 #include <kencodingdetector.h>
38 #include <kencodingprober.h>
42 class KHTMLPartPrivate;
49 class KJavaAppletContext;
55 class HTMLDocumentImpl;
58 class XMLDocumentImpl;
59 class HTMLTitleElementImpl;
60 class HTMLFrameElementImpl;
61 class HTMLIFrameElementImpl;
62 class HTMLObjectElementImpl;
63 class HTMLFormElementImpl;
64 class HTMLAnchorElementImpl;
65 class HTMLMetaElementImpl;
69 class HTMLEventListener;
71 class HTMLPartContainerElementImpl;
72 class HTMLObjectBaseElementImpl;
81 class SVGDocumentExtensions;
95 class MousePressEvent;
96 class MouseDoubleClickEvent;
98 class MouseReleaseEvent;
99 class DrawContentsEvent;
103 class CSSStyleSelector;
106 struct EditorContext;
107 class EditCommandImpl;
108 class KHTMLPartAccessor;
116 class JSEventListener;
117 class JSLazyEventListener;
121 class ScheduledAction;
123 class DOMSelectionProtoFunc;
124 class KHTMLPartScriptable;
130 class ScriptableExtension;
212 friend class DOM::HTMLTitleElementImpl;
213 friend class DOM::HTMLFrameElementImpl;
214 friend class DOM::HTMLIFrameElementImpl;
215 friend class DOM::HTMLObjectBaseElementImpl;
216 friend class DOM::HTMLObjectElementImpl;
217 friend class DOM::HTMLAnchorElementImpl;
218 friend class DOM::HTMLMetaElementImpl;
219 friend class DOM::NodeImpl;
220 friend class DOM::ElementImpl;
221 friend class KHTMLRun;
222 friend class DOM::HTMLFormElementImpl;
223 friend class KJS::Window;
225 friend class KJS::JSNodeFilter;
226 friend class KJS::WindowFunc;
227 friend class KJS::ExternalFunc;
228 friend class KJS::JSEventListener;
229 friend class KJS::JSLazyEventListener;
230 friend class KJS::DOMDocument;
231 friend class KJS::HTMLElement;
232 friend class KJS::SourceFile;
233 friend class KJS::DOMSelection;
234 friend class KJS::DOMSelectionProtoFunc;
235 friend class KJS::KHTMLPartScriptable;
239 friend class DOM::HTMLDocumentImpl;
240 friend class DOM::Selection;
242 friend class KHTMLPartBrowserHostExtension;
243 friend class khtml::HTMLTokenizer;
244 friend class khtml::XMLTokenizer;
245 friend class khtml::RenderWidget;
246 friend class khtml::RenderBlock;
248 friend class khtml::EditCommandImpl;
251 friend class KHTMLPartFunction;
253 friend class KHTMLFind;
254 friend class StorePass;
255 friend class WebCore::SVGDocumentExtensions;
257 Q_PROPERTY(
bool javaScriptEnabled READ jScriptEnabled WRITE setJScriptEnabled)
258 Q_PROPERTY(
bool javaEnabled READ javaEnabled WRITE setJavaEnabled)
259 Q_PROPERTY(
bool dndEnabled READ dndEnabled WRITE setDNDEnabled)
260 Q_PROPERTY(
bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled)
271 Q_PROPERTY(
bool metaRefreshEnabled READ metaRefreshEnabled WRITE setMetaRefreshEnabled)
274 enum GUIProfile { DefaultGUI, BrowserViewGUI };
284 DNSPrefetchDisabled = 0,
286 DNSPrefetchOnlyWWWAndSLD
302 QObject *parent =
nullptr, GUIProfile prof = DefaultGUI);
346 virtual void showError(
KJob *job);
361 QString documentSource()
const;
385 void setJScriptEnabled(
bool enable);
391 bool jScriptEnabled()
const;
423 void setStatusMessagesEnabled(
bool enable);
428 bool statusMessagesEnabled()
const;
433 void setMetaRefreshEnabled(
bool enable);
438 bool metaRefreshEnabled()
const;
450 void setDNDEnabled(
bool b);
455 bool dndEnabled()
const;
463 void setJavaEnabled(
bool enable);
468 bool javaEnabled()
const;
473 void setPluginsEnabled(
bool enable);
478 bool pluginsEnabled()
const;
486 void setAutoloadImages(
bool enable);
493 bool autoloadImages()
const;
511 void setOnlyLocalReferences(
bool enable);
522 void setForcePermitLocalImages(
bool enable);
536 void setDNSPrefetch(DNSPrefetch pmode);
546 DNSPrefetch dnsPrefetch()
const;
552 bool onlyLocalReferences()
const;
560 bool forcePermitLocalImages()
const;
564 bool isCaretMode()
const;
569 bool isEditable()
const;
583 void setCaretPosition(
DOM::Node node,
long offset,
bool extendSelection =
false);
597 CaretDisplayPolicy caretDisplayPolicyNonFocused()
const;
608 void setCaretDisplayPolicyNonFocused(CaretDisplayPolicy policy);
610 #ifndef KDE_NO_COMPAT
611 QUrl baseURL()
const;
617 QUrl backgroundURL()
const;
622 void scheduleRedirection(
int delay,
const QString &url,
bool lockHistory =
true);
646 virtual void begin(
const QUrl &url =
QUrl(),
int xOffset = 0,
int yOffset = 0);
668 virtual void write(
const char *str,
int len = -1);
682 virtual void write(
const QString &str);
699 void paint(
QPainter *,
const QRect &,
int = 0,
bool * =
nullptr);
707 bool setEncoding(
const QString &name,
bool override =
false);
725 void setUserStyleSheet(
const QUrl &url);
736 void setUserStyleSheet(
const QString &styleSheet);
745 void setStandardFont(
const QString &name);
753 void setFixedFont(
const QString &name);
762 bool gotoAnchor(
const QString &name);
779 void setURLCursor(
const QCursor &c);
808 void findText(
const QString &str,
long options,
QWidget *parent =
nullptr,
814 void findTextBegin();
821 bool findTextNext(
bool reverse =
false);
832 void setZoomFactor(
int percent);
837 int zoomFactor()
const;
848 void setFontScaleFactor(
int percent);
853 int fontScaleFactor()
const;
858 virtual QString selectedText()
const;
866 QString selectedTextAsHTML()
const;
871 DOM::Range selection()
const;
883 void selection(
DOM::Node &startNode,
long &startOffset,
884 DOM::Node &endNode,
long &endOffset)
const;
889 void setSelection(
const DOM::Range &);
899 bool hasSelection()
const;
966 DOM::Node nonSharedNodeUnderMouse()
const;
1018 bool frameExists(
const QString &frameName);
1034 void setJSStatusBarText(
const QString &text);
1041 void setJSDefaultStatusBarText(
const QString &text);
1048 QString jsStatusBarText()
const;
1055 QString jsDefaultStatusBarText()
const;
1075 void preloadStyleSheet(
const QString &url,
const QString &stylesheet);
1087 bool isPointInsideSelection(
int x,
int y);
1092 bool restored()
const;
1104 void setAlwaysHonourDoctype(
bool b =
true);
1107 enum FormNotification { NoNotification = 0, Before, Only, Unused = 255 };
1113 void setFormNotification(FormNotification fn);
1120 FormNotification formNotification()
const;
1135 bool isModified()
const;
1140 void setSuppressedPopupIndicator(
bool enable,
KHTMLPart *originPart =
nullptr);
1145 bool inProgress()
const;
1151 void onURL(
const QString &url);
1163 void selectionChanged();
1188 void caretPositionChanged(
const DOM::Node &node,
long offset);
1195 void formSubmitNotification(
const char *action,
const QString &url,
1202 void configurationChanged();
1218 void htmlError(
int errorCode,
const QString &text,
const QUrl &reqUrl);
1225 virtual void khtmlMousePressEvent(khtml::MousePressEvent *event);
1229 virtual void khtmlMouseDoubleClickEvent(khtml::MouseDoubleClickEvent *);
1233 virtual void khtmlMouseMoveEvent(khtml::MouseMoveEvent *event);
1237 virtual void khtmlMouseReleaseEvent(khtml::MouseReleaseEvent *event);
1241 virtual void khtmlDrawContentsEvent(khtml::DrawContentsEvent *);
1253 virtual bool urlSelected(
const QString &url,
int button,
int state,
1273 bool pluginPageQuestionAsked(
const QString &mimetype)
const;
1274 void setPluginPageQuestionAsked(
const QString &mimetype);
1276 enum PageSecurity { NotCrypted,
Encrypted, Mixed };
1277 void setPageSecurity(PageSecurity sec);
1305 bool mayPrefetchHostname(
const QString &name);
1310 void updateZoomFactor();
1323 void setActiveNode(
const DOM::Node &node);
1328 void stopAnimations();
1348 void setCaretMode(
bool enable);
1360 void setEditable(
bool enable);
1377 void setCaretVisible(
bool show);
1382 void submitFormProxy(
const char *action,
const QString &url,
1395 virtual void slotFinished(
KJob *);
1410 void reparseConfiguration();
1423 void slotRestoreData(
const QByteArray &data);
1427 void slotFinishedParsing();
1431 void slotRedirect();
1439 void slotDebugScript();
1443 void slotDebugDOMTree();
1447 void slotDebugRenderTree();
1449 void slotDebugFrameTree();
1454 void slotStopAnimations();
1458 virtual void slotViewDocumentSource();
1462 virtual void slotViewFrameSource();
1466 void slotViewPageInfo();
1470 virtual void slotSaveBackground();
1474 virtual void slotSaveDocument();
1478 virtual void slotSaveFrame();
1482 virtual void slotSecurity();
1486 virtual void slotSetEncoding(
const QString &);
1491 virtual void slotUseStylesheet();
1493 virtual void slotFind();
1494 virtual void slotFindDone();
1495 virtual void slotFindDialogDestroyed();
1496 void slotFindNext();
1497 void slotFindPrev();
1498 void slotFindAheadText();
1499 void slotFindAheadLink();
1503 void slotIncZoomFast();
1504 void slotDecZoomFast();
1506 void slotIncFontSize();
1507 void slotDecFontSize();
1508 void slotIncFontSizeFast();
1509 void slotDecFontSizeFast();
1511 void slotLoadImages();
1512 void slotWalletClosed();
1513 void launchWalletManager();
1515 void delNonPasswordStorableSite();
1516 void removeStoredPasswordForm(
QAction *action);
1517 void addWalletFormKey(
const QString &walletFormKey);
1522 void submitFormAgain();
1527 void updateActions();
1539 void slotChildStarted(
KIO::Job *job);
1543 void slotChildCompleted();
1547 void slotChildCompleted(
bool);
1551 void slotParentCompleted();
1559 void slotChildDocCreated();
1566 void checkCompleted();
1571 void slotAutoScroll();
1573 void slotPrintFrame();
1575 void slotSelectAll();
1580 void slotProgressUpdate();
1585 void slotJobPercent(
KJob *,
unsigned long);
1590 void slotJobDone(
KJob *);
1595 void slotUserSheetStatDone(
KJob *);
1600 void slotJobSpeed(
KJob *,
unsigned long);
1605 void slotClearSelection();
1610 void slotZoomView(
int);
1615 void slotAutomaticDetectionLanguage(KEncodingProber::ProberType scri);
1620 void slotToggleCaretMode();
1625 void suppressedPopupMenu();
1630 void togglePopupPassivePopup();
1635 void showSuppressedPopups();
1640 void launchJSConfigDialog();
1645 void launchJSErrorDialog();
1650 void removeJSErrorExtension();
1655 void disableJSErrorExtension();
1660 void jsErrorDialogContextMenu();
1667 void restoreScrollPosition();
1673 KJSErrorDlg *jsErrorExtension();
1675 enum StatusBarPriority { BarDefaultText, BarHoverText, BarOverrideText };
1678 bool restoreURL(
const QUrl &url);
1679 void clearCaretRectIfNeeded();
1680 void setFocusNodeIfNeeded(
const DOM::Selection &);
1681 void selectionLayoutChanged();
1682 void notifySelectionChanged(
bool closeTyping =
true);
1683 void resetFromScript();
1684 void emitSelectionChanged();
1687 bool checkFrameAccess(
KHTMLPart *callingHtmlPart);
1689 void startAutoScroll();
1690 void stopAutoScroll();
1691 void overURL(
const QString &url,
const QString &target,
bool shiftPressed =
false);
1692 void resetHoverText();
1698 void openWallet(DOM::HTMLFormElementImpl *);
1700 void dequeueWallet(DOM::HTMLFormElementImpl *);
1703 void enableFindAheadActions(
bool);
1708 KHTMLViewBar *pTopViewBar()
const;
1713 KHTMLViewBar *pBottomViewBar()
const;
1718 bool pFindTextNextInThisFrame(
bool reverse);
1730 void submitForm(
const char *action,
const QString &url,
const QByteArray &formData,
1734 void popupMenu(
const QString &url);
1752 void loadFrameElement(DOM::HTMLPartContainerElementImpl *frame,
const QString &url,
const QString &frameName,
1757 bool loadObjectElement(DOM::HTMLPartContainerElementImpl *frame,
const QString &url,
const QString &serviceType,
1766 bool requestObject(khtml::ChildFrame *child,
const QUrl &url,
1772 bool processObjectRequest(khtml::ChildFrame *child,
const QUrl &url,
const QString &mimetype);
1775 void childLoadFailure(khtml::ChildFrame *child);
1787 bool navigateChild(khtml::ChildFrame *child,
const QUrl &url);
1795 DOM::HTMLDocumentImpl *docImpl()
const;
1797 khtml::ChildFrame *frame(
const QObject *obj);
1799 khtml::ChildFrame *recursiveFrameRequest(
KHTMLPart *callingHtmlPart,
const QUrl &url,
1801 bool callParent =
true);
1809 long cacheId()
const;
1812 void setOpenedByJS(
bool _openedByJS);
1814 void checkEmitLoadEvent();
1815 void emitLoadEvent();
1817 bool initFindNode(
bool selection,
bool reverse,
bool fromCursor);
1828 void extendSelectionTo(
int x,
int y,
const DOM::Node &innerNode);
1832 bool isExtendingSelection()
const;
1834 QString defaultEncoding()
const;
1837 QString defaultExtension()
const;
1842 void zoomIn(
const int stepping[],
int count);
1846 void zoomOut(
const int stepping[],
int count);
1848 void incFontSize(
const int stepping[],
int count);
1850 void decFontSize(
const int stepping[],
int count);
1852 void emitCaretPositionChanged(
const DOM::Position &pos);
1854 void setDebugScript(
bool enable);
1858 khtml::EditorContext *editorContext()
const;
1869 const DOM::Selection &caret()
const;
1874 const DOM::Selection &dragCaret()
const;
1879 void setCaret(
const DOM::Selection &,
bool closeTyping =
true);
1884 void setDragCaret(
const DOM::Selection &);
1889 void clearSelection();
1894 void invalidateSelection();
1899 void setSelectionVisible(
bool flag =
true);
1918 QString simplifiedSelectedText()
const;
1920 bool handleMouseMoveEventDrag(khtml::MouseMoveEvent *event);
1921 bool handleMouseMoveEventOver(khtml::MouseMoveEvent *event);
1922 void handleMouseMoveEventSelection(khtml::MouseMoveEvent *event);
1924 void handleMousePressEventSingleClick(khtml::MousePressEvent *event);
1925 void handleMousePressEventDoubleClick(khtml::MouseDoubleClickEvent *event);
1926 void handleMousePressEventTripleClick(khtml::MouseDoubleClickEvent *event);
1928 KHTMLPartPrivate *d;
1929 friend class KHTMLPartPrivate;