]>
Commit | Line | Data |
---|---|---|
8c83cec1 JR |
1 | From df46add1165314bce93d70e611ddc453561ffb60 Mon Sep 17 00:00:00 2001 |
2 | From: Scott Talbert <swt@techie.net> | |
3 | Date: Mon, 12 Jun 2023 20:28:35 -0400 | |
4 | Subject: [PATCH] Add support for building WebView with libwebkit2gtk-4.1 | |
5 | ||
6 | libwebkit2gtk-4.1 has the same API as libwebkit2gtk-4.0, except that the | |
7 | former links with libsoup-3.0 and the latter links with libsoup-2.4. | |
8 | ||
9 | Fixes #23630. | |
10 | ||
11 | (cherry picked from commit 1b8664426603376b68f8ca3c54de97ec630e5940) | |
12 | --- | |
13 | build/cmake/init.cmake | 10 ++- | |
14 | build/cmake/modules/FindLIBSOUP.cmake | 14 +++- | |
15 | build/cmake/modules/FindWEBKIT2.cmake | 5 +- | |
16 | configure | 95 +++++++++++++++++++++++++-- | |
17 | configure.in | 16 ++++- | |
18 | src/gtk/webview_webkit2.cpp | 4 ++ | |
19 | 6 files changed, 129 insertions(+), 15 deletions(-) | |
20 | ||
21 | diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake | |
22 | index fc206cf2e03a..5d88a7e487cc 100644 | |
23 | --- a/build/cmake/init.cmake | |
24 | +++ b/build/cmake/init.cmake | |
25 | @@ -453,15 +453,21 @@ if(wxUSE_GUI) | |
26 | if(wxUSE_WEBVIEW) | |
27 | if(WXGTK) | |
28 | if(wxUSE_WEBVIEW_WEBKIT) | |
29 | - find_package(LIBSOUP) | |
30 | + set(WEBKIT_LIBSOUP_VERSION 2.4) | |
31 | if(WXGTK2) | |
32 | find_package(WEBKIT 1.0) | |
33 | elseif(WXGTK3) | |
34 | - find_package(WEBKIT2) | |
35 | + find_package(WEBKIT2 4.1 QUIET) | |
36 | + if(WEBKIT2_FOUND) | |
37 | + set(WEBKIT_LIBSOUP_VERSION 3.0) | |
38 | + else() | |
39 | + find_package(WEBKIT2 4.0) | |
40 | + endif() | |
41 | if(NOT WEBKIT2_FOUND) | |
42 | find_package(WEBKIT 3.0) | |
43 | endif() | |
44 | endif() | |
45 | + find_package(LIBSOUP ${WEBKIT_LIBSOUP_VERSION}) | |
46 | endif() | |
47 | set(wxUSE_WEBVIEW_WEBKIT OFF) | |
48 | set(wxUSE_WEBVIEW_WEBKIT2 OFF) | |
49 | diff --git a/build/cmake/modules/FindLIBSOUP.cmake b/build/cmake/modules/FindLIBSOUP.cmake | |
50 | index cbfba1cf9366..2433d141eaf7 100644 | |
51 | --- a/build/cmake/modules/FindLIBSOUP.cmake | |
52 | +++ b/build/cmake/modules/FindLIBSOUP.cmake | |
53 | @@ -31,19 +31,27 @@ | |
54 | # LibSoup does not provide an easy way to retrieve its version other than its | |
55 | # .pc file, so we need to rely on PC_LIBSOUP_VERSION and REQUIRE the .pc file | |
56 | # to be found. | |
57 | +SET(LIBSOUP_VERSION 2.4) | |
58 | +if(DEFINED LIBSOUP_FIND_VERSION) | |
59 | + SET(LIBSOUP_VERSION ${LIBSOUP_FIND_VERSION}) | |
60 | +endif() | |
61 | + | |
62 | +set(LIBSOUP_INCLUDE_DIRS LIBSOUP_INCLUDE_DIRS-NOTFOUND) | |
63 | +set(LIBSOUP_LIBRARIES LIBSOUP_LIBRARIES-NOTFOUND) | |
64 | + | |
65 | FIND_PACKAGE(PkgConfig) | |
66 | -PKG_CHECK_MODULES(PC_LIBSOUP QUIET libsoup-2.4) | |
67 | +PKG_CHECK_MODULES(PC_LIBSOUP QUIET libsoup-${LIBSOUP_VERSION}) | |
68 | ||
69 | if(PC_LIBSOUP_FOUND) | |
70 | FIND_PATH(LIBSOUP_INCLUDE_DIRS | |
71 | NAMES libsoup/soup.h | |
72 | HINTS ${PC_LIBSOUP_INCLUDEDIR} | |
73 | ${PC_LIBSOUP_INCLUDE_DIRS} | |
74 | - PATH_SUFFIXES libsoup-2.4 | |
75 | + PATH_SUFFIXES libsoup-${LIBSOUP_VERSION} | |
76 | ) | |
77 | ||
78 | FIND_LIBRARY(LIBSOUP_LIBRARIES | |
79 | - NAMES soup-2.4 | |
80 | + NAMES soup-${LIBSOUP_VERSION} | |
81 | HINTS ${PC_LIBSOUP_LIBDIR} | |
82 | ${PC_LIBSOUP_LIBRARY_DIRS} | |
83 | ) | |
84 | diff --git a/build/cmake/modules/FindWEBKIT2.cmake b/build/cmake/modules/FindWEBKIT2.cmake | |
85 | index 133e7a4563ea..e39077ac4a71 100644 | |
86 | --- a/build/cmake/modules/FindWEBKIT2.cmake | |
87 | +++ b/build/cmake/modules/FindWEBKIT2.cmake | |
88 | @@ -5,7 +5,10 @@ | |
89 | # WEBKIT2_LIBRARIES - List of libraries when using Webkit2. | |
90 | # WEBKIT2_FOUND - True if Webkit2 found. | |
91 | ||
92 | -SET( WEBKIT2_VERSION 4.0) | |
93 | +SET(WEBKIT2_VERSION 4.0) | |
94 | +if(DEFINED WEBKIT2_FIND_VERSION) | |
95 | + SET(WEBKIT2_VERSION ${WEBKIT2_FIND_VERSION}) | |
96 | +endif() | |
97 | ||
98 | set(WEBKIT2_INCLUDE_DIR WEBKIT2_INCLUDE_DIR-NOTFOUND) | |
99 | set(WEBKIT2_LIBRARY WEBKIT2_LIBRARY-NOTFOUND) | |
100 | diff --git a/configure.in b/configure.in | |
101 | index 957be8dda34c..257c95a6009b 100644 | |
102 | --- a/configure.in | |
103 | +++ b/configure.in | |
104 | @@ -7529,15 +7529,27 @@ if test "$wxUSE_WEBVIEW" = "yes"; then | |
105 | if test "$wxUSE_GTK" = 1; then | |
106 | if test "$WXGTK3" = 1; then | |
107 | PKG_CHECK_MODULES([WEBKIT], | |
108 | - [webkit2gtk-4.0], | |
109 | + [webkit2gtk-4.1], | |
110 | [ | |
111 | USE_WEBVIEW_WEBKIT2=1 | |
112 | CXXFLAGS="$CXXFLAGS $WEBKIT_CFLAGS" | |
113 | EXTRALIBS_WEBVIEW="$WEBKIT_LIBS" | |
114 | ], | |
115 | [ | |
116 | - AC_MSG_WARN([webkit2gtk not found, falling back to webkitgtk]) | |
117 | + AC_MSG_WARN([webkit2gtk-4.1 not found, falling back to webkit2gtk-4.0]) | |
118 | ]) | |
119 | + if test "$USE_WEBVIEW_WEBKIT2" = 0; then | |
120 | + PKG_CHECK_MODULES([WEBKIT], | |
121 | + [webkit2gtk-4.0], | |
122 | + [ | |
123 | + USE_WEBVIEW_WEBKIT2=1 | |
124 | + CXXFLAGS="$CXXFLAGS $WEBKIT_CFLAGS" | |
125 | + EXTRALIBS_WEBVIEW="$WEBKIT_LIBS" | |
126 | + ], | |
127 | + [ | |
128 | + AC_MSG_WARN([webkit2gtk-4.0 not found, falling back to webkitgtk]) | |
129 | + ]) | |
130 | + fi | |
131 | fi | |
132 | if test "$USE_WEBVIEW_WEBKIT2" = 0; then | |
133 | webkitgtk=webkit-1.0 | |
134 | diff --git a/src/gtk/webview_webkit2.cpp b/src/gtk/webview_webkit2.cpp | |
135 | index 191cbcf2cc18..87a9bd5ad3a8 100644 | |
136 | --- a/src/gtk/webview_webkit2.cpp | |
137 | +++ b/src/gtk/webview_webkit2.cpp | |
138 | @@ -173,15 +173,18 @@ wxgtk_webview_webkit_load_failed(WebKitWebView *, | |
139 | { | |
140 | switch (error->code) | |
141 | { | |
142 | +#if SOUP_MAJOR_VERSION < 3 | |
143 | case SOUP_STATUS_CANCELLED: | |
144 | type = wxWEBVIEW_NAV_ERR_USER_CANCELLED; | |
145 | break; | |
146 | ||
147 | case SOUP_STATUS_CANT_RESOLVE: | |
148 | +#endif | |
149 | case SOUP_STATUS_NOT_FOUND: | |
150 | type = wxWEBVIEW_NAV_ERR_NOT_FOUND; | |
151 | break; | |
152 | ||
153 | +#if SOUP_MAJOR_VERSION < 3 | |
154 | case SOUP_STATUS_CANT_RESOLVE_PROXY: | |
155 | case SOUP_STATUS_CANT_CONNECT: | |
156 | case SOUP_STATUS_CANT_CONNECT_PROXY: | |
157 | @@ -193,6 +196,7 @@ wxgtk_webview_webkit_load_failed(WebKitWebView *, | |
158 | case SOUP_STATUS_MALFORMED: | |
159 | type = wxWEBVIEW_NAV_ERR_REQUEST; | |
160 | break; | |
161 | +#endif | |
162 | ||
163 | case SOUP_STATUS_BAD_REQUEST: | |
164 | type = wxWEBVIEW_NAV_ERR_REQUEST; |