WebDriver: implement maximize, minimize and fullscreen window commands
[WebKit-https.git] / Source / WebKit / UIProcess / API / wpe / WebKitWebViewWPE.cpp
1 /*
2  * Copyright (C) 2017 Igalia S.L.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB.  If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19
20 #include "config.h"
21 #include "WebKitWebView.h"
22
23 #include "WebKitWebViewPrivate.h"
24
25 gboolean webkitWebViewAuthenticate(WebKitWebView*, WebKitAuthenticationRequest*)
26 {
27     return FALSE;
28 }
29
30 gboolean webkitWebViewScriptDialog(WebKitWebView*, WebKitScriptDialog*)
31 {
32     return FALSE;
33 }
34
35 gboolean webkitWebViewRunFileChooser(WebKitWebView*, WebKitFileChooserRequest*)
36 {
37     return FALSE;
38 }
39
40 void webkitWebViewMaximizeWindow(WebKitWebView*, CompletionHandler<void()>&& completionHandler)
41 {
42     completionHandler();
43 }
44
45 void webkitWebViewMinimizeWindow(WebKitWebView*, CompletionHandler<void()>&& completionHandler)
46 {
47     completionHandler();
48 }
49
50 void webkitWebViewRestoreWindow(WebKitWebView*, CompletionHandler<void()>&& completionHandler)
51 {
52     completionHandler();
53 }
54
55 /**
56  * webkit_web_view_new:
57  * @backend: (transfer full): a #WebKitWebViewBackend
58  *
59  * Creates a new #WebKitWebView with the default #WebKitWebContext and
60  * no #WebKitUserContentManager associated with it.
61  * See also webkit_web_view_new_with_context(),
62  * webkit_web_view_new_with_user_content_manager(), and
63  * webkit_web_view_new_with_settings().
64  *
65  * Returns: The newly created #WebKitWebView
66  */
67 WebKitWebView* webkit_web_view_new(WebKitWebViewBackend* backend)
68 {
69     g_return_val_if_fail(backend, nullptr);
70
71     return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
72         "backend", backend,
73         "web-context", webkit_web_context_get_default(),
74         nullptr));
75 }
76
77 /**
78  * webkit_web_view_new_with_context:
79  * @backend: (transfer full): a #WebKitWebViewBackend
80  * @context: the #WebKitWebContext to be used by the #WebKitWebView
81  *
82  * Creates a new #WebKitWebView with the given #WebKitWebContext and
83  * no #WebKitUserContentManager associated with it.
84  * See also webkit_web_view_new_with_user_content_manager() and
85  * webkit_web_view_new_with_settings().
86  *
87  * Returns: The newly created #WebKitWebView
88  */
89 WebKitWebView* webkit_web_view_new_with_context(WebKitWebViewBackend* backend, WebKitWebContext* context)
90 {
91     g_return_val_if_fail(backend, nullptr);
92     g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), nullptr);
93
94     return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
95         "backend", backend,
96         "is-ephemeral", webkit_web_context_is_ephemeral(context),
97         "web-context", context,
98         nullptr));
99 }
100
101 /**
102  * webkit_web_view_new_with_related_view: (constructor)
103  * @backend: (transfer full): a #WebKitWebViewBackend
104  * @web_view: the related #WebKitWebView
105  *
106  * Creates a new #WebKitWebView sharing the same web process with @web_view.
107  * This method doesn't have any effect when %WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS
108  * process model is used, because a single web process is shared for all the web views in the
109  * same #WebKitWebContext. When using %WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES process model,
110  * this method should always be used when creating the #WebKitWebView in the #WebKitWebView::create signal.
111  * You can also use this method to implement other process models based on %WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES,
112  * like for example, sharing the same web process for all the views in the same security domain.
113  *
114  * The newly created #WebKitWebView will also have the same #WebKitUserContentManager
115  * and #WebKitSettings as @web_view.
116  *
117  * Returns: (transfer full): The newly created #WebKitWebView
118  *
119  * Since: 2.4
120  */
121 WebKitWebView* webkit_web_view_new_with_related_view(WebKitWebViewBackend* backend, WebKitWebView* webView)
122 {
123     g_return_val_if_fail(backend, nullptr);
124     g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), nullptr);
125
126     return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
127         "backend", backend,
128         "user-content-manager", webkit_web_view_get_user_content_manager(webView),
129         "settings", webkit_web_view_get_settings(webView),
130         "related-view", webView,
131         nullptr));
132 }
133
134 /**
135  * webkit_web_view_new_with_settings:
136  * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
137  * @settings: a #WebKitSettings
138  *
139  * Creates a new #WebKitWebView with the given #WebKitSettings.
140  * See also webkit_web_view_new_with_context(), and
141  * webkit_web_view_new_with_user_content_manager().
142  *
143  * Returns: The newly created #WebKitWebView
144  *
145  * Since: 2.6
146  */
147 WebKitWebView* webkit_web_view_new_with_settings(WebKitWebViewBackend* backend, WebKitSettings* settings)
148 {
149     g_return_val_if_fail(backend, nullptr);
150     g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), nullptr);
151
152     return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
153         "backend", backend,
154         "settings", settings,
155         nullptr));
156 }
157
158 /**
159  * webkit_web_view_new_with_user_content_manager:
160  * @backend: (transfer full): a #WebKitWebViewBackend
161  * @user_content_manager: a #WebKitUserContentManager.
162  *
163  * Creates a new #WebKitWebView with the given #WebKitUserContentManager.
164  * The content loaded in the view may be affected by the content injected
165  * in the view by the user content manager.
166  *
167  * Returns: The newly created #WebKitWebView
168  *
169  * Since: 2.6
170  */
171 WebKitWebView* webkit_web_view_new_with_user_content_manager(WebKitWebViewBackend* backend, WebKitUserContentManager* userContentManager)
172 {
173     g_return_val_if_fail(backend, nullptr);
174     g_return_val_if_fail(WEBKIT_IS_USER_CONTENT_MANAGER(userContentManager), nullptr);
175
176     return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
177         "backend", backend,
178         "user-content-manager", userContentManager,
179         nullptr));
180 }