7 #include "webengineview.h" 8 #include "webenginenavigationrequestinterceptor.h" 9 #include "webenginemanagescript.h" 10 #include "webengineviewer_debug.h" 11 #include "checkphishingurl/localdatabasemanager.h" 14 #include <QMouseEvent> 15 #include <QWheelEvent> 20 class WebEngineViewer::WebEngineViewPrivate
28 ~WebEngineViewPrivate()
30 delete mWebEngineNavigatorInterceptor;
31 mWebEngineNavigatorInterceptor =
nullptr;
32 delete mWebEngineNavigatorInterceptorView;
33 mWebEngineNavigatorInterceptorView =
nullptr;
36 void renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus status)
39 case QWebEnginePage::NormalTerminationStatus:
42 case QWebEnginePage::AbnormalTerminationStatus:
43 qCInfo(WEBENGINEVIEWER_LOG) <<
"WebEngine render process terminated abnormally";
45 case QWebEnginePage::CrashedTerminationStatus:
46 qCInfo(WEBENGINEVIEWER_LOG) <<
"WebEngine render process crashed";
48 case QWebEnginePage::KilledTerminationStatus:
49 qCInfo(WEBENGINEVIEWER_LOG) <<
"WebEngine render process killed";
55 if (++mCrashCount < 6) {
62 qreal mSavedRelativePosition = -1;
63 QWidget *mCurrentWidget =
nullptr;
65 WebEngineNavigationRequestInterceptor *mWebEngineNavigatorInterceptor =
nullptr;
74 WebEngineView::WebEngineView(
QWidget *parent)
75 : QWebEngineView(parent)
78 installEventFilter(
this);
81 connect(
this, &QWebEngineView::renderProcessTerminated,
82 this, [
this](QWebEnginePage::RenderProcessTerminationStatus status) {
83 d->renderProcessTerminated(status);
85 connect(
this, &QWebEngineView::loadFinished,
94 WebEngineView::~WebEngineView()
101 return d->mManagerScript;
104 void WebEngineView::addScript(
const QString &source,
const QString &scriptName, QWebEngineScript::InjectionPoint injectionPoint)
106 d->mManagerScript->addScript(page()->profile(), source, scriptName, injectionPoint);
109 void WebEngineView::forwardWheelEvent(
QWheelEvent *event)
114 void WebEngineView::forwardKeyPressEvent(
QKeyEvent *event)
119 void WebEngineView::forwardKeyReleaseEvent(
QKeyEvent *event)
124 void WebEngineView::forwardMousePressEvent(
QMouseEvent *event)
129 void WebEngineView::forwardMouseMoveEvent(
QMouseEvent *event)
134 void WebEngineView::forwardMouseReleaseEvent(
QMouseEvent *event)
143 parentWidget()->installEventFilter(
this);
149 if (focusProxy() && d->mCurrentWidget != focusProxy()) {
150 d->mCurrentWidget = focusProxy();
151 d->mCurrentWidget->installEventFilter(
this);
157 if (obj == d->mCurrentWidget) {
158 #define HANDLE_EVENT(f, t) \ 160 bool wasAccepted = event->isAccepted(); \ 161 event->setAccepted(false); \ 162 f(static_cast<t *>(event)); \ 163 bool ret = event->isAccepted(); \ 164 event->setAccepted(wasAccepted); \ 168 switch (event->
type()) {
170 HANDLE_EVENT(forwardKeyPressEvent,
QKeyEvent);
172 HANDLE_EVENT(forwardKeyReleaseEvent,
QKeyEvent);
176 HANDLE_EVENT(forwardMouseReleaseEvent,
QMouseEvent);
189 switch (event->
type()) {
202 return QWebEngineView::eventFilter(obj, event);
205 QWebEngineView *WebEngineView::createWindow(QWebEnginePage::WebWindowType type)
208 delete d->mWebEngineNavigatorInterceptor;
209 delete d->mWebEngineNavigatorInterceptorView;
212 d->mWebEngineNavigatorInterceptor = new WebEngineNavigationRequestInterceptor(this->page());
213 d->mWebEngineNavigatorInterceptorView->setPage(d->mWebEngineNavigatorInterceptor);
214 return d->mWebEngineNavigatorInterceptorView;
217 void WebEngineView::clearRelativePosition()
219 d->mSavedRelativePosition = -1;
222 void WebEngineView::saveRelativePosition()
224 if (d->mSavedRelativePosition != -1) {
225 d->mSavedRelativePosition = page()->scrollPosition().toPoint().y();
229 qreal WebEngineView::relativePosition()
const 231 qCDebug(WEBENGINEVIEWER_LOG) <<
"Relative Position" << d->mSavedRelativePosition;
232 return d->mSavedRelativePosition;
237 if (!d->mPhishingDatabase) {
239 d->mPhishingDatabase->initialize();
241 return d->mPhishingDatabase;
QEvent::Type type() const const
The LocalDataBaseManager class.
The WebEngineManageScript class.