From ca30d0374020752d3ac367fdffef88a5c1fe4a48 Mon Sep 17 00:00:00 2001 From: Andras Becsi Date: Fri, 25 Jul 2014 15:53:07 +0200 Subject: Add QQuick API for intercepting navigation requests Add missing navigationRequested API to be able to intercept navigation requests. This is useful for ignoring requests for example in kiosk-like applications that want to restrinct navigation to a specific url or domain, or want to disable specific types of navigation requests (e.g. reloading, clicking links, form submissions). Change-Id: Ie375e635a3c3566527972d05f5d99b39489c5ca8 Reviewed-by: Jocelyn Turcotte --- src/core/network_delegate_qt.h | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) (limited to 'src/core/network_delegate_qt.h') diff --git a/src/core/network_delegate_qt.h b/src/core/network_delegate_qt.h index 9413addb3..d057b9915 100644 --- a/src/core/network_delegate_qt.h +++ b/src/core/network_delegate_qt.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtWebEngine module of the Qt Toolkit. @@ -42,22 +42,20 @@ #define NETWORK_DELEGATE_QT_H #include "net/base/network_delegate.h" +#include "net/base/net_errors.h" -#include "qglobal.h" +#include +#include +#include // Needed for Q_DECL_OVERRIDE class NetworkDelegateQt : public net::NetworkDelegate { public: NetworkDelegateQt() {} virtual ~NetworkDelegateQt() {} - - private: - // net::NetworkDelegate implementation. - virtual int OnBeforeURLRequest(net::URLRequest* request, const net::CompletionCallback& callback, GURL* new_url) Q_DECL_OVERRIDE - { - return net::OK; - } - +private: + // net::NetworkDelegate implementation + virtual int OnBeforeURLRequest(net::URLRequest* request, const net::CompletionCallback& callback, GURL* new_url) Q_DECL_OVERRIDE; virtual int OnBeforeSendHeaders(net::URLRequest* request, const net::CompletionCallback& callback, net::HttpRequestHeaders* headers) Q_DECL_OVERRIDE { return net::OK; @@ -72,7 +70,7 @@ public: virtual void OnResponseStarted(net::URLRequest* request) Q_DECL_OVERRIDE { } virtual void OnRawBytesRead(const net::URLRequest& request, int bytes_read) Q_DECL_OVERRIDE { } virtual void OnCompleted(net::URLRequest* request, bool started) Q_DECL_OVERRIDE { } - virtual void OnURLRequestDestroyed(net::URLRequest* request) Q_DECL_OVERRIDE { } + virtual void OnURLRequestDestroyed(net::URLRequest* request) Q_DECL_OVERRIDE; virtual void OnPACScriptError(int line_number, const base::string16& error) Q_DECL_OVERRIDE { } virtual AuthRequiredResponse OnAuthRequired(net::URLRequest* request, const net::AuthChallengeInfo& auth_info, @@ -84,6 +82,24 @@ public: virtual bool OnCanThrottleRequest(const net::URLRequest& request) const Q_DECL_OVERRIDE { return false; } virtual int OnBeforeSocketStreamConnect(net::SocketStream* stream, const net::CompletionCallback& callback) Q_DECL_OVERRIDE { return net::OK; } virtual void OnRequestWaitStateChange(const net::URLRequest& request, RequestWaitState state) Q_DECL_OVERRIDE { } + + struct RequestParams { + QUrl url; + bool isMainFrameRequest; + int navigationType; + int renderProcessId; + int renderViewId; + }; + + void NotifyNavigationRequestedOnUIThread(net::URLRequest *request, + RequestParams params, + const net::CompletionCallback &callback); + + void CompleteURLRequestOnIOThread(net::URLRequest *request, + int navigationRequestAction, + const net::CompletionCallback &callback); + + QSet m_activeRequests; }; #endif // NETWORK_DELEGATE_QT_H -- cgit v1.2.3