From 9b42c2b1275e61e4533f59157d4114509d46be55 Mon Sep 17 00:00:00 2001 From: Andras Becsi Date: Mon, 11 May 2015 16:58:58 +0200 Subject: Remove unneeded ResourceContextQt::set_url_request_context_getter This is an ancient relic that can be removed. Change-Id: Ia6926fff65d0e4d0769de940516866a2c51d9a0c Reviewed-by: Allan Sandfeld Jensen --- src/core/browser_context_qt.cpp | 3 +-- src/core/resource_context_qt.cpp | 11 ++--------- src/core/resource_context_qt.h | 5 ----- 3 files changed, 3 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/core/browser_context_qt.cpp b/src/core/browser_context_qt.cpp index 3fa0f672d..7f285b1e5 100644 --- a/src/core/browser_context_qt.cpp +++ b/src/core/browser_context_qt.cpp @@ -78,7 +78,7 @@ bool BrowserContextQt::IsOffTheRecord() const net::URLRequestContextGetter *BrowserContextQt::GetRequestContext() { - return GetDefaultStoragePartition(this)->GetURLRequestContext(); + return url_request_getter_.get(); } net::URLRequestContextGetter *BrowserContextQt::GetRequestContextForRenderProcess(int) @@ -137,7 +137,6 @@ content::SSLHostStateDelegate* BrowserContextQt::GetSSLHostStateDelegate() net::URLRequestContextGetter *BrowserContextQt::CreateRequestContext(content::ProtocolHandlerMap *protocol_handlers) { url_request_getter_ = new URLRequestContextGetterQt(m_adapter, protocol_handlers); - static_cast(GetResourceContext())->set_url_request_context_getter(url_request_getter_.get()); return url_request_getter_.get(); } diff --git a/src/core/resource_context_qt.cpp b/src/core/resource_context_qt.cpp index acd8ba4b9..715d92aa2 100644 --- a/src/core/resource_context_qt.cpp +++ b/src/core/resource_context_qt.cpp @@ -44,20 +44,13 @@ namespace QtWebEngineCore { net::HostResolver *ResourceContextQt::GetHostResolver() { - CHECK(getter_); - return getter_->GetURLRequestContext()->host_resolver(); + return GetRequestContext()->host_resolver(); } net::URLRequestContext* ResourceContextQt::GetRequestContext() { - if (getter_) - return getter_->GetURLRequestContext(); + Q_ASSERT(context); return context->GetRequestContext()->GetURLRequestContext(); } -void ResourceContextQt::set_url_request_context_getter(net::URLRequestContextGetter *getter) -{ - getter_ = getter; -} - } // namespace QtWebEngineCore diff --git a/src/core/resource_context_qt.h b/src/core/resource_context_qt.h index 48dc3d583..22bceb8e7 100644 --- a/src/core/resource_context_qt.h +++ b/src/core/resource_context_qt.h @@ -55,18 +55,13 @@ class ResourceContextQt : public content::ResourceContext public: ResourceContextQt(BrowserContextQt *ctx) : context(ctx) - , getter_(0) {} virtual net::HostResolver* GetHostResolver() Q_DECL_OVERRIDE; virtual net::URLRequestContext* GetRequestContext() Q_DECL_OVERRIDE; - - void set_url_request_context_getter(net::URLRequestContextGetter* getter); - private: BrowserContextQt *context; - net::URLRequestContextGetter* getter_; DISALLOW_COPY_AND_ASSIGN(ResourceContextQt); }; -- cgit v1.2.3 From 0eebf6b8345333ca753664d8a126aca524fa8316 Mon Sep 17 00:00:00 2001 From: Andras Becsi Date: Mon, 11 May 2015 12:23:32 +0200 Subject: Fix Menu ui delegate after on__MenuClosed has been renamed The internal on__MenuClosed signal has been renamed to onAboutToHide in qtquickcontrols. Also update some import versions while we're at it. This patch also adds examples OSX application bundles to .gitignore which only contained the unix binaries. Change-Id: If1d91cb65987dda6d0e10794c1649b1b4e1ccde3 Reviewed-by: Allan Sandfeld Jensen --- src/webengine/ui/AlertDialog.qml | 2 +- src/webengine/ui/Menu.qml | 6 +++--- src/webengine/ui/MenuItem.qml | 4 ++-- src/webengine/ui/MenuSeparator.qml | 4 ++-- src/webengine/ui/MessageBubble.qml | 2 +- src/webengine/ui/PromptDialog.qml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/webengine/ui/AlertDialog.qml b/src/webengine/ui/AlertDialog.qml index be74dc000..998c953cb 100644 --- a/src/webengine/ui/AlertDialog.qml +++ b/src/webengine/ui/AlertDialog.qml @@ -34,7 +34,7 @@ ** ****************************************************************************/ -import QtQuick.Dialogs 1.1 +import QtQuick.Dialogs 1.2 MessageDialog { icon: StandardIcon.Information diff --git a/src/webengine/ui/Menu.qml b/src/webengine/ui/Menu.qml index 7cc58f947..e6fec297f 100644 --- a/src/webengine/ui/Menu.qml +++ b/src/webengine/ui/Menu.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.1 -import QtQuick.Controls 1.0 as Controls +import QtQuick 2.5 +import QtQuick.Controls 1.4 as Controls Controls.Menu { signal done() // Use private API for now - on__MenuClosed: done(); + onAboutToHide: done(); } diff --git a/src/webengine/ui/MenuItem.qml b/src/webengine/ui/MenuItem.qml index 2b17b6e27..7ed5bef41 100644 --- a/src/webengine/ui/MenuItem.qml +++ b/src/webengine/ui/MenuItem.qml @@ -34,8 +34,8 @@ ** ****************************************************************************/ -import QtQuick 2.1 -import QtQuick.Controls 1.0 as Controls +import QtQuick 2.5 +import QtQuick.Controls 1.4 as Controls Controls.MenuItem { } diff --git a/src/webengine/ui/MenuSeparator.qml b/src/webengine/ui/MenuSeparator.qml index 2c1c2904f..115068870 100644 --- a/src/webengine/ui/MenuSeparator.qml +++ b/src/webengine/ui/MenuSeparator.qml @@ -34,7 +34,7 @@ ** ****************************************************************************/ -import QtQuick 2.1 -import QtQuick.Controls 1.0 as Controls +import QtQuick 2.5 +import QtQuick.Controls 1.4 as Controls Controls.MenuSeparator { } diff --git a/src/webengine/ui/MessageBubble.qml b/src/webengine/ui/MessageBubble.qml index 4328eae40..17cf5b797 100644 --- a/src/webengine/ui/MessageBubble.qml +++ b/src/webengine/ui/MessageBubble.qml @@ -34,7 +34,7 @@ ** ****************************************************************************/ -import QtQuick 2.1 +import QtQuick 2.5 Item { id: bubble diff --git a/src/webengine/ui/PromptDialog.qml b/src/webengine/ui/PromptDialog.qml index 9ac2b9dc2..fb0881320 100644 --- a/src/webengine/ui/PromptDialog.qml +++ b/src/webengine/ui/PromptDialog.qml @@ -35,9 +35,9 @@ ****************************************************************************/ // FIXME: prompt missing in Qt Quick Dialogs atm. Make our own for now. -import QtQuick.Controls 1.1 +import QtQuick.Controls 1.4 import QtQuick.Layouts 1.0 -import QtQuick 2.0 +import QtQuick 2.5 ApplicationWindow { signal input(string text); -- cgit v1.2.3 From 78de547bc25b708000f6ee725be8cbde7c373d4f Mon Sep 17 00:00:00 2001 From: Andras Becsi Date: Fri, 20 Mar 2015 15:13:28 +0100 Subject: Update embedded configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove some obsolete options and add conditionals similar to desktop_linux.pri. Change-Id: Id295345028e5fd5f593cbd0b5dc6acdb5c00518b Reviewed-by: Michael BrĂ¼ning Reviewed-by: Allan Sandfeld Jensen --- src/core/config/embedded_linux.pri | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/core/config/embedded_linux.pri b/src/core/config/embedded_linux.pri index a0d640c18..91b14003c 100644 --- a/src/core/config/embedded_linux.pri +++ b/src/core/config/embedded_linux.pri @@ -3,13 +3,11 @@ GYP_ARGS += "-D qt_os=\"embedded_linux\" -I config/embedded_linux.gypi" GYP_CONFIG += \ build_ffmpegsumo=1 \ clang=0 \ - configuration_policy=0 \ desktop_linux=0 \ disable_nacl=1 \ embedded=1 \ enable_autofill_dialog=0 \ enable_automation=0 \ - enable_background=0 \ enable_captive_portal_detection=0 \ enable_extensions=0 \ enable_google_now=0 \ @@ -30,7 +28,6 @@ GYP_CONFIG += \ ozone_platform_test=0 \ p2p_apis=0 \ safe_browsing=0 \ - toolkit_uses_gtk=0 \ toolkit_views=1 \ use_ash=0 \ use_aura=1 \ @@ -46,11 +43,11 @@ GYP_CONFIG += \ use_openssl=1 \ use_ozone=1 \ use_pango=0 \ - use_pulseaudio=0 \ - use_system_harfbuzz=0 \ use_system_icu=1 \ icu_use_data_file_flag=0 \ use_x11=0 \ v8_use_snapshot=false \ want_separate_host_toolset=1 \ +contains(QT_CONFIG, system-jpeg): GYP_CONFIG += use_system_libjpeg=1 +!contains(QT_CONFIG, pulseaudio): GYP_CONFIG += use_pulseaudio=0 -- cgit v1.2.3 From 3b585086049089224422e6f839485be5a4235524 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 30 Apr 2015 15:15:02 +0200 Subject: Add redirect and error API for custom URL Adds API for failing or redirecting custom URL requests. Change-Id: Ia633bff2c0b8484fd6fdb8d42982fda2e427db4c Reviewed-by: Andras Becsi --- src/core/url_request_custom_job.cpp | 42 ++++++++++++++++++++++ src/core/url_request_custom_job.h | 5 +++ src/core/url_request_custom_job_delegate.cpp | 37 +++++++++++++++++++ src/core/url_request_custom_job_delegate.h | 13 +++++++ .../api/qwebengineurlrequestjob.cpp | 20 +++++++++-- .../api/qwebengineurlrequestjob_p.h | 11 ++++++ 6 files changed, 126 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/core/url_request_custom_job.cpp b/src/core/url_request_custom_job.cpp index 0b8aaf9ba..cd71b6900 100644 --- a/src/core/url_request_custom_job.cpp +++ b/src/core/url_request_custom_job.cpp @@ -117,6 +117,18 @@ bool URLRequestCustomJob::GetCharset(std::string* charset) return false; } +bool URLRequestCustomJob::IsRedirectResponse(GURL* location, int* http_status_code) +{ + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + QMutexLocker lock(&m_mutex); + if (m_redirect.is_valid()) { + *location = m_redirect; + *http_status_code = 303; + return true; + } + return false; +} + void URLRequestCustomJob::setReplyMimeType(const std::string &mimeType) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -158,6 +170,36 @@ bool URLRequestCustomJob::ReadRawData(IOBuffer *buf, int bufSize, int *bytesRead return false; } +void URLRequestCustomJob::redirect(const GURL &url) +{ + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + if (m_device || m_error) + return; + + QMutexLocker lock(&m_mutex); + m_redirect = url; + content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, base::Bind(&URLRequestCustomJob::notifyStarted, m_weakFactory.GetWeakPtr())); +} + +void URLRequestCustomJob::abort() +{ + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + QMutexLocker lock(&m_mutex); + if (m_device && m_device->isOpen()) + m_device->close(); + m_device = 0; + content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, base::Bind(&URLRequestCustomJob::notifyCanceled, m_weakFactory.GetWeakPtr())); +} + +void URLRequestCustomJob::notifyCanceled() +{ + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + if (m_started) + NotifyDone(URLRequestStatus(URLRequestStatus::CANCELED, ERR_ABORTED)); + else + NotifyStartError(URLRequestStatus(URLRequestStatus::CANCELED, ERR_ABORTED)); +} + void URLRequestCustomJob::notifyStarted() { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); diff --git a/src/core/url_request_custom_job.h b/src/core/url_request_custom_job.h index ca20c719d..4975e71d2 100644 --- a/src/core/url_request_custom_job.h +++ b/src/core/url_request_custom_job.h @@ -60,18 +60,22 @@ public: virtual bool ReadRawData(net::IOBuffer *buf, int bufSize, int *bytesRead) Q_DECL_OVERRIDE; virtual bool GetMimeType(std::string *mimeType) const Q_DECL_OVERRIDE; virtual bool GetCharset(std::string *charset) Q_DECL_OVERRIDE; + virtual bool IsRedirectResponse(GURL* location, int* http_status_code) Q_DECL_OVERRIDE; void setReplyMimeType(const std::string &); void setReplyCharset(const std::string &); void setReplyDevice(QIODevice *); + void redirect(const GURL &url); void fail(int); + void abort(); protected: virtual ~URLRequestCustomJob(); void startAsync(); void notifyStarted(); void notifyFailure(); + void notifyCanceled(); private: QMutex m_mutex; @@ -81,6 +85,7 @@ private: std::string m_mimeType; std::string m_charset; int m_error; + GURL m_redirect; bool m_started; base::WeakPtrFactory m_weakFactory; diff --git a/src/core/url_request_custom_job_delegate.cpp b/src/core/url_request_custom_job_delegate.cpp index d324da347..caf7a0e3e 100644 --- a/src/core/url_request_custom_job_delegate.cpp +++ b/src/core/url_request_custom_job_delegate.cpp @@ -38,6 +38,7 @@ #include "url_request_custom_job_delegate.h" #include "type_conversion.h" +#include "net/base/net_errors.h" #include @@ -63,4 +64,40 @@ void URLRequestCustomJobDelegate::setReply(const QByteArray &contentType, QIODev m_job->setReplyDevice(device); } +void URLRequestCustomJobDelegate::abort() +{ + m_job->abort(); +} + +void URLRequestCustomJobDelegate::redirect(const QUrl &url) +{ + m_job->redirect(toGurl(url)); +} + +void URLRequestCustomJobDelegate::fail(Error error) +{ + int net_error = 0; + switch (error) { + case NoError: + break; + case UrlInvalid: + net_error = net::ERR_INVALID_URL; + break; + case UrlNotFound: + net_error = net::ERR_FILE_NOT_FOUND; + break; + case RequestAborted: + net_error = net::ERR_ABORTED; + break; + case RequestDenied: + net_error = net::ERR_ACCESS_DENIED; + break; + case RequestFailed: + net_error = net::ERR_FAILED; + break; + } + if (net_error) + m_job->fail(net_error); +} + } // namespace diff --git a/src/core/url_request_custom_job_delegate.h b/src/core/url_request_custom_job_delegate.h index e0b802897..580149ecf 100644 --- a/src/core/url_request_custom_job_delegate.h +++ b/src/core/url_request_custom_job_delegate.h @@ -53,9 +53,22 @@ class QWEBENGINE_EXPORT URLRequestCustomJobDelegate : public QObject { public: ~URLRequestCustomJobDelegate(); + enum Error { + NoError = 0, + UrlNotFound, + UrlInvalid, + RequestAborted, + RequestDenied, + RequestFailed + }; + QUrl url() const; void setReply(const QByteArray &contentType, QIODevice *device); + void redirect(const QUrl& url); + void abort(); + + void fail(Error); private: URLRequestCustomJobDelegate(URLRequestCustomJob *job); diff --git a/src/webenginewidgets/api/qwebengineurlrequestjob.cpp b/src/webenginewidgets/api/qwebengineurlrequestjob.cpp index 323cdcc72..4a813236c 100644 --- a/src/webenginewidgets/api/qwebengineurlrequestjob.cpp +++ b/src/webenginewidgets/api/qwebengineurlrequestjob.cpp @@ -40,6 +40,8 @@ #include "url_request_custom_job_delegate.h" +using QtWebEngineCore::URLRequestCustomJobDelegate; + QT_BEGIN_NAMESPACE /*! @@ -51,7 +53,7 @@ QT_BEGIN_NAMESPACE A QWebEngineUrlRequestJob is given to QWebEngineUrlSchemeHandler::requestStarted() and must be handled by the derived implementations of class. - A job can be handled by calling setReply(). + A job can be handled by calling either setReply(), redirect() or setError(). The class is owned by QtWebEngine and does not need to be deleted. Note QtWebEngine may delete the job when it is no longer needed, so the signal QObject::destroyed() must be monitored if @@ -63,7 +65,7 @@ QT_BEGIN_NAMESPACE /*! \internal */ -QWebEngineUrlRequestJob::QWebEngineUrlRequestJob(QtWebEngineCore::URLRequestCustomJobDelegate * p) +QWebEngineUrlRequestJob::QWebEngineUrlRequestJob(URLRequestCustomJobDelegate * p) : QObject(p) // owned by the jobdelegate and deleted when the job is done , d_ptr(p) { @@ -92,6 +94,20 @@ void QWebEngineUrlRequestJob::setReply(const QByteArray &contentType, QIODevice d_ptr->setReply(contentType, device); } +/*! + Fails the request with error \a error. + */ +void QWebEngineUrlRequestJob::setError(Error r) +{ + d_ptr->fail((URLRequestCustomJobDelegate::Error)r); +} +/*! + Tell the request is redirected to \a url. + */ +void QWebEngineUrlRequestJob::setRedirect(const QUrl &url) +{ + d_ptr->redirect(url); +} QT_END_NAMESPACE diff --git a/src/webenginewidgets/api/qwebengineurlrequestjob_p.h b/src/webenginewidgets/api/qwebengineurlrequestjob_p.h index 72c9dc836..e496e4051 100644 --- a/src/webenginewidgets/api/qwebengineurlrequestjob_p.h +++ b/src/webenginewidgets/api/qwebengineurlrequestjob_p.h @@ -56,8 +56,19 @@ class QWEBENGINEWIDGETS_EXPORT QWebEngineUrlRequestJob : public QObject { public: ~QWebEngineUrlRequestJob(); + enum Error { + NoError = 0, + UrlNotFound, + UrlInvalid, + RequestAborted, + RequestDenied, + RequestFailed + }; + QUrl requestUrl() const; void setReply(const QByteArray &contentType, QIODevice *device); + void setError(Error error); + void setRedirect(const QUrl &url); private: QWebEngineUrlRequestJob(QtWebEngineCore::URLRequestCustomJobDelegate *); -- cgit v1.2.3