[EFL] Add ewk_network.cpp|h files.
[WebKit-https.git] / Source / WebKit / efl / ewk / ewk_network.cpp
1 /*
2     Copyright (C) 2011 Samsung Electronics
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 "ewk_network.h"
22
23 #include "NetworkStateNotifier.h"
24 #include "ewk_logging.h"
25 #include <Eina.h>
26 #include <wtf/text/CString.h>
27
28 #if USE(SOUP)
29 #include "ResourceHandle.h"
30 #include <libsoup/soup.h>
31 #endif
32
33 /**
34  * Sets the given proxy URI to network backend.
35  *
36  * @param proxy URI to set.
37  */
38 void ewk_network_proxy_uri_set(const char* proxy)
39 {
40 #if USE(SOUP)
41     SoupSession* session = WebCore::ResourceHandle::defaultSession();
42
43     if (!proxy) {
44         ERR("no proxy uri. remove proxy feature in soup.");
45         soup_session_remove_feature_by_type(session, SOUP_TYPE_PROXY_RESOLVER);
46         return;
47     }
48
49     SoupURI* uri = soup_uri_new(proxy);
50     EINA_SAFETY_ON_NULL_RETURN(uri);
51
52     g_object_set(session, SOUP_SESSION_PROXY_URI, uri, NULL);
53     soup_uri_free(uri);
54 #elif USE(CURL)
55     EINA_SAFETY_ON_TRUE_RETURN(1);
56 #endif
57 }
58
59 /**
60  * Gets the proxy URI from the network backend.
61  *
62  * The returned string should be freed by eina_stringshare_del() after use.
63  *
64  * @return current proxy URI or @c 0 if it's not set.
65  */
66 const char* ewk_network_proxy_uri_get(void)
67 {
68 #if USE(SOUP)
69     SoupURI* uri;
70     SoupSession* session = WebCore::ResourceHandle::defaultSession();
71     g_object_get(session, SOUP_SESSION_PROXY_URI, &uri, NULL);
72
73     if (!uri) {
74         ERR("no proxy uri");
75         return 0;
76     }
77
78     WTF::String proxy = soup_uri_to_string(uri, EINA_FALSE);
79     return eina_stringshare_add(proxy.utf8().data());
80 #elif USE(CURL)
81     EINA_SAFETY_ON_TRUE_RETURN_VAL(1, 0);
82 #endif
83 }
84
85 /**
86  * Sets if network backend is online or not.
87  * 
88  * @param online @c EINA_FALSE if network is disconnected.
89  */
90 void ewk_network_state_notifier_online_set(Eina_Bool online)
91 {
92     WebCore::networkStateNotifier().setOnLine(online);
93 }