4545extern "C" {
4646#endif
4747
48+ #include <stdbool.h>
4849#include <stdint.h>
4950
5051struct wpe_view_backend ;
@@ -56,6 +57,7 @@ struct wpe_input_touch_event;
5657
5758struct wpe_view_backend_client ;
5859struct wpe_view_backend_input_client ;
60+ struct wpe_view_backend_fullscreen_client ;
5961
6062struct wpe_view_backend_interface {
6163 void * (* create )(void * , struct wpe_view_backend * );
@@ -97,6 +99,53 @@ WPE_EXPORT
9799void
98100wpe_view_backend_set_input_client (struct wpe_view_backend * , const struct wpe_view_backend_input_client * , void * );
99101
102+ /**
103+ * wpe_view_backend_set_fullscreen_client:
104+ * @view_backend: (transfer none): The view backend to obtains events from.
105+ * @client: (transfer none): Client with callbacks for the events.
106+ * @userdata: (transfer none): User data passed to client callbacks.
107+ *
108+ * Configure a @client with callbacks invoked for DOM fullscreen requests.
109+ *
110+ * This function must be only used once for a given @view_backend, the client
111+ * cannot be changed once it has been set.
112+ *
113+ * Since: 1.12
114+ */
115+ WPE_EXPORT
116+ void
117+ wpe_view_backend_set_fullscreen_client (struct wpe_view_backend * , const struct wpe_view_backend_fullscreen_client * , void * );
118+
119+ /**
120+ * wpe_view_backend_fullscreen_handler:
121+ * @userdata: (transfer none): User data passed to the embedder.
122+ * @enable: (transfer none): User data passed to the embedder.
123+ *
124+ * Type of functions used by an embedder to implement fullscreening web views.
125+ *
126+ * Returns: a boolean indicating whether the operation was completed.
127+ *
128+ * Since: 1.12
129+ */
130+ typedef bool (* wpe_view_backend_fullscreen_handler )(void * userdata , bool enable );
131+
132+ /**
133+ * wpe_view_backend_set_fullscreen_handler:
134+ * @view_backend: (transfer none): The view backend to obtains events from.
135+ * @handler: (transfer none): Function used by an embedder to implement fullscreening web views.
136+ * @userdata: (transfer none): User data passed to the handler function.
137+ *
138+ * Handler function set by an embedder to implement fullscreening web views.
139+ *
140+ * This function must be only used once for a given @view_backend, the handler
141+ * cannot be changed once it has been set.
142+ *
143+ * Since: 1.12
144+ */
145+ WPE_EXPORT
146+ void
147+ wpe_view_backend_set_fullscreen_handler (struct wpe_view_backend * , wpe_view_backend_fullscreen_handler handler , void * userdata );
148+
100149WPE_EXPORT
101150void
102151wpe_view_backend_initialize (struct wpe_view_backend * );
@@ -179,6 +228,97 @@ WPE_EXPORT
179228void
180229wpe_view_backend_dispatch_touch_event (struct wpe_view_backend * , struct wpe_input_touch_event * );
181230
231+ /**
232+ * wpe_view_backend_fullscreen_client:
233+ * @did_enter_fullscreen: Invoked after fullscreen has been successfully entered.
234+ * @did_exit_fullscreen: Invoked after fullscreen has been exited.
235+ * @request_enter_fullscreen: Invoked after user has requested to enter fullscreen.
236+ * @request_exit_fullscreen: Invoked after user has requested to exit fullscreen.
237+ *
238+ * A view backend's fullscreen client provides a series of callback functions
239+ * which are invoked at different stages when a web view becomes fullscreened
240+ * and back.
241+ *
242+ * Since: 1.12
243+ */
244+ struct wpe_view_backend_fullscreen_client {
245+ void (* did_enter_fullscreen )(void * );
246+ void (* did_exit_fullscreen )(void * );
247+ void (* request_enter_fullscreen )(void * );
248+ void (* request_exit_fullscreen )(void * );
249+
250+ /*< private >*/
251+ void (* _wpe_reserved0 )(void );
252+ void (* _wpe_reserved1 )(void );
253+ void (* _wpe_reserved2 )(void );
254+ void (* _wpe_reserved3 )(void );
255+ };
256+
257+ /**
258+ * wpe_view_backend_platform_set_fullscreen:
259+ * @view_backend: (transfer none): The view backend which fullscreen state will be changed.
260+ * @fullscreen: (transfer none): True if fullscreen.
261+ *
262+ * Returns: a boolean indicating whether the operation was completed.
263+ *
264+ * DOM content calls this function to request the platform to enter/exit fullscreen.
265+ * The platform will attempt to change it's window fullscreen state.
266+ *
267+ * Since: 1.12
268+ */
269+ WPE_EXPORT
270+ bool
271+ wpe_view_backend_platform_set_fullscreen (struct wpe_view_backend * , bool );
272+
273+ /**
274+ * wpe_view_backend_dispatch_did_enter_fullscreen:
275+ * @view_backend: (transfer none): The view backend that triggered the event.
276+ *
277+ * Dispatchs the event that indicates fullscreen has been successfully entered.
278+ *
279+ * Since: 1.12
280+ */
281+ WPE_EXPORT
282+ void
283+ wpe_view_backend_dispatch_did_enter_fullscreen (struct wpe_view_backend * );
284+
285+ /**
286+ * wpe_view_backend_dispatch_did_exit_fullscreen:
287+ * @view_backend: (transfer none): The view backend that triggered the event.
288+ *
289+ * Dispatchs the event that indicated fullscreen has been successfully entered.
290+ *
291+ * Since: 1.12
292+ */
293+ WPE_EXPORT
294+ void
295+ wpe_view_backend_dispatch_did_exit_fullscreen (struct wpe_view_backend * );
296+
297+ /**
298+ * wpe_view_backend_dispatch_request_enter_fullscreen:
299+ * @view_backend: (transfer none): The view backend that triggered the event.
300+ *
301+ * Dispatchs the event that indicates user wants to enter DOM fullscreen state.
302+ *
303+ * Since: 1.12
304+ */
305+ WPE_EXPORT
306+ void
307+ wpe_view_backend_dispatch_request_enter_fullscreen (struct wpe_view_backend * );
308+
309+ /**
310+ * wpe_view_backend_dispatch_request_exit_fullscreen:
311+ * @view_backend: (transfer none): The view backend that triggered the event.
312+ *
313+ * Dispatchs the event that indicates user wants to exit DOM fullscreen state.
314+ *
315+ * Since: 1.12
316+ */
317+ WPE_EXPORT
318+ void
319+ wpe_view_backend_dispatch_request_exit_fullscreen (struct wpe_view_backend * );
320+
321+
182322#ifdef __cplusplus
183323}
184324#endif
0 commit comments