Skip to content

Commit 95a2223

Browse files
author
Allan Sandfeld Jensen
committed
ResourceType ABI/API fixup
[ChangeLog][Important Changes] The enum value ResourceTypeUnknown has changed value since there was a mismatch between 5.6 and 5.7+ definitions. In general any unknown ResourceType value should handled as unknown for forward compatibility, since more types are and can be added in later Qt versions. Change-Id: I0a9f8a2129d4549deeae01e199f432fbbf1bbb9e Reviewed-by: Leena Miettinen <[email protected]> Reviewed-by: Kai Koehne <[email protected]>
1 parent 95435bb commit 95a2223

File tree

4 files changed

+28
-10
lines changed

4 files changed

+28
-10
lines changed

src/core/api/qwebengineurlrequestinfo.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ ASSERT_ENUMS_MATCH(QWebEngineUrlRequestInfo::ResourceTypeFavicon, content::RESOU
5959
ASSERT_ENUMS_MATCH(QWebEngineUrlRequestInfo::ResourceTypeXhr, content::RESOURCE_TYPE_XHR)
6060
ASSERT_ENUMS_MATCH(QWebEngineUrlRequestInfo::ResourceTypePing, content::RESOURCE_TYPE_PING)
6161
ASSERT_ENUMS_MATCH(QWebEngineUrlRequestInfo::ResourceTypeServiceWorker, content::RESOURCE_TYPE_SERVICE_WORKER)
62-
ASSERT_ENUMS_MATCH(QWebEngineUrlRequestInfo::ResourceTypeUnknown, content::RESOURCE_TYPE_LAST_TYPE)
62+
ASSERT_ENUMS_MATCH(QWebEngineUrlRequestInfo::ResourceTypeLast, content::RESOURCE_TYPE_LAST_TYPE)
6363

6464
ASSERT_ENUMS_MATCH(QtWebEngineCore::WebContentsAdapterClient::LinkNavigation, QWebEngineUrlRequestInfo::NavigationTypeLink)
6565
ASSERT_ENUMS_MATCH(QtWebEngineCore::WebContentsAdapterClient::TypedNavigation, QWebEngineUrlRequestInfo::NavigationTypeTyped)
@@ -166,6 +166,9 @@ QWebEngineUrlRequestInfo::QWebEngineUrlRequestInfo(QWebEngineUrlRequestInfoPriva
166166
\value ResourceTypePing A ping request for <a ping>.
167167
\value ResourceTypeServiceWorker The main resource of a service worker.
168168
\value ResourceTypeUnknown Unknown request type.
169+
170+
\note For forward compatibility all values not matched should be treated as unknown,
171+
not just \c ResourceTypeUnknown.
169172
*/
170173

171174
/*!

src/core/api/qwebengineurlrequestinfo.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@ class QWEBENGINE_EXPORT QWebEngineUrlRequestInfo {
7070
ResourceTypeXhr, // a XMLHttpRequest
7171
ResourceTypePing, // a ping request for <a ping>
7272
ResourceTypeServiceWorker, // the main resource of a service worker.
73-
ResourceTypeUnknown
73+
#ifndef Q_QDOC
74+
ResourceTypeLast,
75+
#endif
76+
ResourceTypeUnknown = 255
7477
};
7578

7679
enum NavigationType {

src/core/network_delegate_qt.cpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555

5656
namespace QtWebEngineCore {
5757

58-
int pageTransitionToNavigationType(ui::PageTransition transition)
58+
WebContentsAdapterClient::NavigationType pageTransitionToNavigationType(ui::PageTransition transition)
5959
{
6060
int32 qualifier = ui::PageTransitionGetQualifier(transition);
6161

@@ -78,6 +78,18 @@ int pageTransitionToNavigationType(ui::PageTransition transition)
7878
}
7979
}
8080

81+
QWebEngineUrlRequestInfo::ResourceType toQt(content::ResourceType resourceType)
82+
{
83+
if (resourceType >= 0 && resourceType < content::ResourceType(QWebEngineUrlRequestInfo::ResourceTypeLast))
84+
return static_cast<QWebEngineUrlRequestInfo::ResourceType>(resourceType);
85+
return QWebEngineUrlRequestInfo::ResourceTypeUnknown;
86+
}
87+
88+
QWebEngineUrlRequestInfo::NavigationType toQt(WebContentsAdapterClient::NavigationType navigationType)
89+
{
90+
return static_cast<QWebEngineUrlRequestInfo::NavigationType>(navigationType);
91+
}
92+
8193
NetworkDelegateQt::NetworkDelegateQt(URLRequestContextGetterQt *requestContext)
8294
: m_requestContextGetter(requestContext)
8395
{
@@ -91,7 +103,7 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, const net::C
91103
const content::ResourceRequestInfo *resourceInfo = content::ResourceRequestInfo::ForRequest(request);
92104

93105
content::ResourceType resourceType = content::RESOURCE_TYPE_LAST_TYPE;
94-
int navigationType = QWebEngineUrlRequestInfo::NavigationTypeOther;
106+
WebContentsAdapterClient::NavigationType navigationType = WebContentsAdapterClient::OtherNavigation;
95107

96108
if (resourceInfo) {
97109
resourceType = resourceInfo->GetResourceType();
@@ -102,11 +114,11 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, const net::C
102114

103115
QWebEngineUrlRequestInterceptor* interceptor = m_requestContextGetter->m_requestInterceptor;
104116
if (interceptor) {
105-
QWebEngineUrlRequestInfoPrivate *infoPrivate = new QWebEngineUrlRequestInfoPrivate(static_cast<QWebEngineUrlRequestInfo::ResourceType>(resourceType)
106-
, static_cast<QWebEngineUrlRequestInfo::NavigationType>(navigationType)
107-
, qUrl
108-
, toQt(request->first_party_for_cookies())
109-
, QByteArray::fromStdString(request->method()));
117+
QWebEngineUrlRequestInfoPrivate *infoPrivate = new QWebEngineUrlRequestInfoPrivate(toQt(resourceType),
118+
toQt(navigationType),
119+
qUrl,
120+
toQt(request->first_party_for_cookies()),
121+
QByteArray::fromStdString(request->method()));
110122
QWebEngineUrlRequestInfo requestInfo(infoPrivate);
111123
interceptor->interceptRequest(requestInfo);
112124
if (requestInfo.changed()) {

src/core/web_contents_delegate_qt.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ void WebContentsDelegateQt::requestGeolocationPermission(const QUrl &requestingO
393393
m_viewClient->runGeolocationPermissionRequest(requestingOrigin);
394394
}
395395

396-
extern int pageTransitionToNavigationType(ui::PageTransition transition);
396+
extern WebContentsAdapterClient::NavigationType pageTransitionToNavigationType(ui::PageTransition transition);
397397

398398
void WebContentsDelegateQt::launchExternalURL(const QUrl &url, ui::PageTransition page_transition, bool is_main_frame)
399399
{

0 commit comments

Comments
 (0)