util: Add URL Request Interceptor for QWebEngine

master
Morph 2020-11-23 00:06:31 +07:00
parent 51a7681957
commit 5836786246
3 changed files with 64 additions and 0 deletions

@ -141,6 +141,8 @@ add_executable(yuzu
util/limitable_input_dialog.h
util/sequence_dialog/sequence_dialog.cpp
util/sequence_dialog/sequence_dialog.h
util/url_request_interceptor.cpp
util/url_request_interceptor.h
util/util.cpp
util/util.h
compatdb.cpp

@ -0,0 +1,32 @@
// Copyright 2020 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#ifdef YUZU_USE_QT_WEB_ENGINE
#include "yuzu/util/url_request_interceptor.h"
UrlRequestInterceptor::UrlRequestInterceptor(QObject* p) : QWebEngineUrlRequestInterceptor(p) {}
UrlRequestInterceptor::~UrlRequestInterceptor() = default;
void UrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) {
const auto resource_type = info.resourceType();
switch (resource_type) {
case QWebEngineUrlRequestInfo::ResourceTypeMainFrame:
requested_url = info.requestUrl();
emit FrameChanged();
break;
case QWebEngineUrlRequestInfo::ResourceTypeSubFrame:
case QWebEngineUrlRequestInfo::ResourceTypeXhr:
emit FrameChanged();
break;
}
}
QUrl UrlRequestInterceptor::GetRequestedURL() const {
return requested_url;
}
#endif

@ -0,0 +1,30 @@
// Copyright 2020 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#ifdef YUZU_USE_QT_WEB_ENGINE
#include <QObject>
#include <QWebEngineUrlRequestInterceptor>
class UrlRequestInterceptor : public QWebEngineUrlRequestInterceptor {
Q_OBJECT
public:
explicit UrlRequestInterceptor(QObject* p = nullptr);
~UrlRequestInterceptor() override;
void interceptRequest(QWebEngineUrlRequestInfo& info) override;
QUrl GetRequestedURL() const;
signals:
void FrameChanged();
private:
QUrl requested_url;
};
#endif