Source/WebCore/ChangeLog

 12012-07-20 Christophe Dumez <christophe.dumez@intel.com>
 2
 3 [EFL] Proxy configuration should honor the no_proxy environment variable
 4 https://bugs.webkit.org/show_bug.cgi?id=91747
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Implement a custom Proxy URI Resolver for EFL port
 9 and ask the SoupSession to use it. This custom
 10 resolver takes into account the "no_proxy"
 11 environment variable so that the client can set
 12 exceptions for the proxy.
 13
 14 By default, the proxy is not used for localhost and
 15 127.0.0.1.
 16
 17 No new tests, no behavior change for layout tests.
 18
 19 * PlatformEfl.cmake:
 20 * platform/network/soup/efl/SoupProxyResolverEfl.cpp: Added.
 21 (soup_proxy_resolver_efl_init):
 22 (soupProxyResolverEflFinalize):
 23 (soupProxyResolverEflSetProperty):
 24 (soupProxyResolverEflGetProperty):
 25 (shouldBypassProxy):
 26 (idle_return_proxy_uri):
 27 (soupProxyResolverEflGetProxyURIAsync):
 28 (soupProxyResolverEflGetProxyURISync):
 29 (soup_proxy_resolver_efl_class_init):
 30 (soup_proxy_resolver_efl_interface_init):
 31 (soupProxyResolverEflNew):
 32 * platform/network/soup/efl/SoupProxyResolverEfl.h: Added.
 33
1342012-07-19 Dan Bernstein <mitz@apple.com>
235
336 The ATSUI-based complex text code is unused

Source/WebCore/PlatformEfl.cmake

@@LIST(APPEND WebCore_INCLUDE_DIRECTORIES
1111 "${WEBCORE_DIR}/platform/linux"
1212 "${WEBCORE_DIR}/platform/mediastream/gstreamer"
1313 "${WEBCORE_DIR}/platform/network/soup"
 14 "${WEBCORE_DIR}/platform/network/soup/efl"
1415 "${WEBCORE_DIR}/platform/text/efl"
1516 "${WEBCORE_DIR}/plugins/efl"
1617 "${WEBKIT_DIR}/efl/WebCoreSupport"

@@LIST(APPEND WebCore_SOURCES
9192 platform/network/soup/ResourceResponseSoup.cpp
9293 platform/network/soup/SocketStreamHandleSoup.cpp
9394 platform/network/soup/SoupURIUtils.cpp
 95 platform/network/soup/efl/SoupProxyResolverEfl.cpp
9496 platform/PlatformStrategies.cpp
9597 platform/posix/FileSystemPOSIX.cpp
9698 platform/text/efl/TextBreakIteratorInternalICUEfl.cpp

Source/WebCore/platform/network/soup/efl/SoupProxyResolverEfl.cpp

 1/*
 2 * Copyright (C) 2012 Intel Corporation. All rights reserved.
 3 *
 4 * Redistribution and use in source and binary forms, with or without
 5 * modification, are permitted provided that the following conditions
 6 * are met:
 7 * 1. Redistributions of source code must retain the above copyright
 8 * notice, this list of conditions and the following disclaimer.
 9 * 2. Redistributions in binary form must reproduce the above copyright
 10 * notice, this list of conditions and the following disclaimer in the
 11 * documentation and/or other materials provided with the distribution.
 12 *
 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 23 * THE POSSIBILITY OF SUCH DAMAGE.
 24 */
 25
 26#include "config.h"
 27#include "SoupProxyResolverEfl.h"
 28
 29#include <libsoup/soup.h>
 30#include <string.h>
 31#include <wtf/Vector.h>
 32#include <wtf/text/CString.h>
 33#include <wtf/text/WTFString.h>
 34
 35static const char defaultNoProxyValue[] = "localhost,127.0.0.1";
 36
 37typedef struct {
 38 SoupURI* proxyURI;
 39 CString noProxy;
 40 Vector<String> proxyExceptions;
 41} SoupProxyResolverEflPrivate;
 42
 43#define SOUP_PROXY_RESOLVER_EFL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), SOUP_TYPE_PROXY_RESOLVER_EFL, SoupProxyResolverEflPrivate))
 44
 45static void soup_proxy_resolver_efl_interface_init(SoupProxyURIResolverInterface* proxyResolverInterface);
 46
 47G_DEFINE_TYPE_EXTENDED(SoupProxyResolverEfl, soup_proxy_resolver_efl, G_TYPE_OBJECT, 0,
 48 G_IMPLEMENT_INTERFACE(SOUP_TYPE_SESSION_FEATURE, 0)
 49 G_IMPLEMENT_INTERFACE(SOUP_TYPE_PROXY_URI_RESOLVER, soup_proxy_resolver_efl_interface_init))
 50
 51enum {
 52 PROP_0,
 53 PROP_PROXY_URI,
 54 PROP_NO_PROXY,
 55 LAST_PROP
 56};
 57
 58static void soup_proxy_resolver_efl_init(SoupProxyResolverEfl* resolverEfl)
 59{
 60}
 61
 62static void soupProxyResolverEflFinalize(GObject* object)
 63{
 64 SoupProxyResolverEflPrivate* priv = SOUP_PROXY_RESOLVER_EFL_GET_PRIVATE(object);
 65
 66 g_clear_pointer(&priv->proxyURI, soup_uri_free);
 67
 68 G_OBJECT_CLASS(soup_proxy_resolver_efl_parent_class)->finalize(object);
 69}
 70
 71static void soupProxyResolverEflSetProperty(GObject* object, uint propID, const GValue* value, GParamSpec* pspec)
 72{
 73 SoupProxyResolverEflPrivate* priv = SOUP_PROXY_RESOLVER_EFL_GET_PRIVATE(object);
 74 SoupURI* uri;
 75
 76 switch (propID) {
 77 case PROP_PROXY_URI:
 78 uri = static_cast<SoupURI*>(g_value_get_boxed(value));
 79 if (priv->proxyURI)
 80 soup_uri_free(priv->proxyURI);
 81
 82 priv->proxyURI = uri ? soup_uri_copy(uri) : 0;
 83 break;
 84 case PROP_NO_PROXY:
 85 priv->noProxy = g_value_get_string(value);
 86 priv->proxyExceptions.clear();
 87 String::fromUTF8(priv->noProxy.data()).split(',', priv->proxyExceptions);
 88 break;
 89 default:
 90 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propID, pspec);
 91 break;
 92 }
 93}
 94
 95static void soupProxyResolverEflGetProperty(GObject* object, uint propID, GValue* value, GParamSpec* pspec)
 96{
 97 SoupProxyResolverEflPrivate* priv = SOUP_PROXY_RESOLVER_EFL_GET_PRIVATE(object);
 98
 99 switch (propID) {
 100 case PROP_PROXY_URI:
 101 g_value_set_boxed(value, priv->proxyURI);
 102 break;
 103 case PROP_NO_PROXY:
 104 g_value_set_string(value, priv->noProxy.data());
 105 break;
 106 default:
 107 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propID, pspec);
 108 break;
 109 }
 110}
 111
 112static bool shouldBypassProxy(SoupProxyResolverEflPrivate* priv, SoupURI* uri)
 113{
 114 const size_t exceptionCount = priv->proxyExceptions.size();
 115 for (size_t i = 0; i < exceptionCount; ++i) {
 116 if (String::fromUTF8(uri->host).endsWith(priv->proxyExceptions[i], false))
 117 return true;
 118 }
 119
 120 return false;
 121}
 122
 123typedef struct {
 124 SoupProxyURIResolver* proxyResolver;
 125 SoupURI* uri;
 126 SoupProxyURIResolverCallback callback;
 127 void* userData;
 128} SoupEflAsyncData;
 129
 130static gboolean idle_return_proxy_uri(void* data)
 131{
 132 SoupEflAsyncData* ssad = static_cast<SoupEflAsyncData*>(data);
 133 SoupProxyResolverEflPrivate* priv = SOUP_PROXY_RESOLVER_EFL_GET_PRIVATE(ssad->proxyResolver);
 134
 135 SoupURI* proxyURI = 0;
 136 if (!shouldBypassProxy(priv, ssad->uri))
 137 proxyURI = priv->proxyURI;
 138
 139 ssad->callback(ssad->proxyResolver, SOUP_STATUS_OK, proxyURI, ssad->userData);
 140 g_object_unref(ssad->proxyResolver);
 141 soup_uri_free(ssad->uri);
 142 g_slice_free(SoupEflAsyncData, ssad);
 143
 144 return false;
 145}
 146
 147static void soupProxyResolverEflGetProxyURIAsync(SoupProxyURIResolver* proxyResolver, SoupURI* uri, GMainContext* asyncContext, GCancellable* cancellable, SoupProxyURIResolverCallback callback, void* userData)
 148{
 149 SoupEflAsyncData* ssad;
 150
 151 ssad = g_slice_new0(SoupEflAsyncData);
 152 ssad->proxyResolver = SOUP_PROXY_URI_RESOLVER(g_object_ref(proxyResolver));
 153 ssad->uri = soup_uri_copy(uri);
 154 ssad->callback = callback;
 155 ssad->userData = userData;
 156 soup_add_completion(asyncContext, idle_return_proxy_uri, ssad);
 157}
 158
 159static uint soupProxyResolverEflGetProxyURISync(SoupProxyURIResolver* proxyResolver, SoupURI* uri, GCancellable* cancellable, SoupURI** proxyURI)
 160{
 161 SoupProxyResolverEflPrivate* priv = SOUP_PROXY_RESOLVER_EFL_GET_PRIVATE(proxyResolver);
 162
 163 if (!shouldBypassProxy(priv, uri))
 164 *proxyURI = soup_uri_copy(priv->proxyURI);
 165
 166 return SOUP_STATUS_OK;
 167}
 168
 169static void soup_proxy_resolver_efl_class_init(SoupProxyResolverEflClass* eflClass)
 170{
 171 GObjectClass* object_class = G_OBJECT_CLASS(eflClass);
 172
 173 g_type_class_add_private(eflClass, sizeof(SoupProxyResolverEflPrivate));
 174
 175 object_class->set_property = soupProxyResolverEflSetProperty;
 176 object_class->get_property = soupProxyResolverEflGetProperty;
 177 object_class->finalize = soupProxyResolverEflFinalize;
 178
 179 g_object_class_install_property(object_class, PROP_PROXY_URI,
 180 g_param_spec_boxed(SOUP_PROXY_RESOLVER_EFL_PROXY_URI,
 181 "Proxy URI",
 182 "The HTTP Proxy to use",
 183 SOUP_TYPE_URI,
 184 static_cast<GParamFlags>(G_PARAM_READWRITE)));
 185
 186 g_object_class_install_property(object_class, PROP_NO_PROXY,
 187 g_param_spec_string(SOUP_PROXY_RESOLVER_EFL_NO_PROXY,
 188 "Proxy exceptions",
 189 "Comma-separated proxy exceptions",
 190 defaultNoProxyValue,
 191 static_cast<GParamFlags>(G_PARAM_READWRITE)));
 192}
 193
 194static void soup_proxy_resolver_efl_interface_init(SoupProxyURIResolverInterface* proxy_uri_resolver_interface)
 195{
 196 proxy_uri_resolver_interface->get_proxy_uri_async = soupProxyResolverEflGetProxyURIAsync;
 197 proxy_uri_resolver_interface->get_proxy_uri_sync = soupProxyResolverEflGetProxyURISync;
 198}
 199
 200SoupProxyURIResolver* soupProxyResolverEflNew(const char* httpProxy, const char* noProxy)
 201{
 202 SoupURI* proxyURI = soup_uri_new(httpProxy);
 203 SoupProxyURIResolver* resolver = SOUP_PROXY_URI_RESOLVER(g_object_new(SOUP_TYPE_PROXY_RESOLVER_EFL,
 204 SOUP_PROXY_RESOLVER_EFL_PROXY_URI, proxyURI,
 205 SOUP_PROXY_RESOLVER_EFL_NO_PROXY, noProxy ? noProxy : defaultNoProxyValue,
 206 0));
 207 soup_uri_free(proxyURI);
 208
 209 return resolver;
 210}

Source/WebCore/platform/network/soup/efl/SoupProxyResolverEfl.h

 1/*
 2 * Copyright (C) 2012 Intel Corporation. All rights reserved.
 3 *
 4 * Redistribution and use in source and binary forms, with or without
 5 * modification, are permitted provided that the following conditions
 6 * are met:
 7 * 1. Redistributions of source code must retain the above copyright
 8 * notice, this list of conditions and the following disclaimer.
 9 * 2. Redistributions in binary form must reproduce the above copyright
 10 * notice, this list of conditions and the following disclaimer in the
 11 * documentation and/or other materials provided with the distribution.
 12 *
 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 23 * THE POSSIBILITY OF SUCH DAMAGE.
 24 */
 25
 26#ifndef SoupProxyResolverEfl_h
 27#define SoupProxyResolverEfl_h
 28
 29#include <libsoup/soup-proxy-uri-resolver.h>
 30#include <libsoup/soup-uri.h>
 31
 32G_BEGIN_DECLS
 33
 34#define SOUP_TYPE_PROXY_RESOLVER_EFL (soup_proxy_resolver_efl_get_type ())
 35#define SOUP_PROXY_RESOLVER_EFL(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_PROXY_RESOLVER_EFL, SoupProxyResolverEfl))
 36#define SOUP_PROXY_RESOLVER_EFL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_PROXY_RESOLVER_EFL, SoupProxyResolverEflClass))
 37#define SOUP_IS_PROXY_RESOLVER_EFL(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_PROXY_RESOLVER_EFL))
 38#define SOUP_IS_PROXY_RESOLVER_EFL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_PROXY_RESOLVER_EFL))
 39#define SOUP_PROXY_RESOLVER_EFL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_PROXY_RESOLVER_EFL, SoupProxyResolverEflClass))
 40
 41static const char SOUP_PROXY_RESOLVER_EFL_PROXY_URI[] = "proxy-uri";
 42static const char SOUP_PROXY_RESOLVER_EFL_NO_PROXY[] = "no-proxy";
 43
 44typedef struct {
 45 GObject parent;
 46} SoupProxyResolverEfl;
 47
 48typedef struct {
 49 GObjectClass parent_class;
 50} SoupProxyResolverEflClass;
 51
 52GType soup_proxy_resolver_efl_get_type(void);
 53
 54SoupProxyURIResolver* soupProxyResolverEflNew(const char* httpProxy, const char* noProxy);
 55
 56G_END_DECLS
 57
 58#endif // SoupProxyResolverEfl_h

Source/WebKit/ChangeLog

 12012-07-20 Christophe Dumez <christophe.dumez@intel.com>
 2
 3 [EFL] Proxy configuration should honor the no_proxy environment variable
 4 https://bugs.webkit.org/show_bug.cgi?id=91747
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Add WebCore/platform/network/soup/efl to INCLUDE paths.
 9
 10 * PlatformEfl.cmake:
 11
1122012-07-18 Yong Li <yoli@rim.com>
213
314 [BlackBerry] Move about: URL handling out of WebCore

Source/WebKit/PlatformEfl.cmake

@@LIST(APPEND WebKit_INCLUDE_DIRECTORIES
1313 "${WEBCORE_DIR}/platform/efl"
1414 "${WEBCORE_DIR}/platform/graphics/cairo"
1515 "${WEBCORE_DIR}/platform/graphics/efl"
 16 "${WEBCORE_DIR}/platform/network/soup/efl"
1617 ${CAIRO_INCLUDE_DIRS}
1718 ${ECORE_X_INCLUDE_DIRS}
1819 ${EDJE_INCLUDE_DIRS}

Source/WebKit/efl/ChangeLog

 12012-07-20 Christophe Dumez <christophe.dumez@intel.com>
 2
 3 [EFL] Proxy configuration should honor the no_proxy environment variable
 4 https://bugs.webkit.org/show_bug.cgi?id=91747
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Use the new custom proxy resolver from WebCore in
 9 WebKit1-EFL so that it is possible for the client
 10 to set proxy exceptions via the "no_proxy"
 11 environment variable.
 12
 13 * ewk/ewk_network.cpp:
 14 (ewk_network_proxy_uri_set):
 15 (ewk_network_proxy_uri_get):
 16
1172012-07-19 Kihong Kwon <kihong.kwon@samsung.com>
218
319 [EFL] Enable interactive form validation

Source/WebKit/efl/ewk/ewk_network.cpp

2222
2323#include "NetworkStateNotifier.h"
2424#include "ResourceHandle.h"
 25#include "SoupProxyResolverEfl.h"
2526#include "ewk_private.h"
2627#include <Eina.h>
2728#include <libsoup/soup.h>

@@void ewk_network_proxy_uri_set(const char* proxy)
3738 return;
3839 }
3940
40  SoupURI* uri = soup_uri_new(proxy);
41  EINA_SAFETY_ON_NULL_RETURN(uri);
42 
43  g_object_set(session, SOUP_SESSION_PROXY_URI, uri, NULL);
44  soup_uri_free(uri);
 41 SoupProxyURIResolver* resolverEfl = soupProxyResolverEflNew(proxy, 0);
 42 soup_session_add_feature(session, SOUP_SESSION_FEATURE(resolverEfl));
 43 g_object_unref(resolverEfl);
4544}
4645
4746const char* ewk_network_proxy_uri_get(void)
4847{
4948 SoupURI* uri;
5049 SoupSession* session = WebCore::ResourceHandle::defaultSession();
51  g_object_get(session, SOUP_SESSION_PROXY_URI, &uri, NULL);
 50 SoupProxyURIResolver* resolver = SOUP_PROXY_URI_RESOLVER(soup_session_get_feature(session, SOUP_TYPE_PROXY_RESOLVER));
 51 if (!resolver)
 52 return 0;
 53
 54 g_object_get(resolver, SOUP_PROXY_RESOLVER_EFL_PROXY_URI, &uri, NULL);
5255
5356 if (!uri) {
5457 ERR("no proxy uri");

Source/WebKit2/ChangeLog

 12012-07-20 Christophe Dumez <christophe.dumez@intel.com>
 2
 3 [EFL] Proxy configuration should honor the no_proxy environment variable
 4 https://bugs.webkit.org/show_bug.cgi?id=91747
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Use the new custom proxy resolver from WebCore in
 9 WebKit2-EFL so that it is possible for the client
 10 to set proxy exceptions via the "no_proxy"
 11 environment variable.
 12
 13 * PlatformEfl.cmake:
 14 * WebProcess/efl/WebProcessMainEfl.cpp:
 15 (WebKit::WebProcessMainEfl):
 16
1172012-07-19 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
218
319 [EFL] [WK2] Add methods to get/set a custom text encoding

Source/WebKit2/PlatformEfl.cmake

@@LIST(APPEND WebKit2_INCLUDE_DIRECTORIES
102102 "${WEBCORE_DIR}/platform/efl"
103103 "${WEBCORE_DIR}/platform/graphics/cairo"
104104 "${WEBCORE_DIR}/platform/network/soup"
 105 "${WEBCORE_DIR}/platform/network/soup/efl"
105106 "${WEBCORE_DIR}/svg/graphics"
106107 "${WEBKIT2_DIR}/Shared/efl"
107108 "${WEBKIT2_DIR}/Shared/soup"

Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp

2626#include "config.h"
2727#include "WebProcessMainEfl.h"
2828
 29#include "SoupProxyResolverEfl.h"
2930#include "WKBase.h"
3031#include <Ecore.h>
3132#include <WebCore/ResourceHandle.h>

@@WK_EXPORT int WebProcessMainEfl(int argc, char* argv[])
6768 RunLoop::initializeMainRunLoop();
6869
6970 SoupSession* session = WebCore::ResourceHandle::defaultSession();
70  const char* httpProxy = g_getenv("http_proxy");
 71 const char* httpProxy = getenv("http_proxy");
7172 if (httpProxy) {
72  SoupURI* proxyUri = soup_uri_new(httpProxy);
73  g_object_set(session, SOUP_SESSION_PROXY_URI, proxyUri, NULL);
74  soup_uri_free(proxyUri);
 73 const char* noProxy = getenv("no_proxy");
 74 SoupProxyURIResolver* resolverEfl = soupProxyResolverEflNew(httpProxy, noProxy);
 75 soup_session_add_feature(session, SOUP_SESSION_FEATURE(resolverEfl));
 76 g_object_unref(resolverEfl);
7577 }
7678
7779 int socket = atoi(argv[1]);

Tools/ChangeLog

 12012-07-20 Christophe Dumez <christophe.dumez@intel.com>
 2
 3 [EFL] Proxy configuration should honor the no_proxy environment variable
 4 https://bugs.webkit.org/show_bug.cgi?id=91747
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Add SoupProxyResolverEfl to the list of classes that contain GObjects
 9 in style checker script so that it does not complain about naming
 10 convention issues that are mandated by GObject.
 11
 12 * Scripts/webkitpy/style/checker.py:
 13
1142012-07-19 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
215
316 [EFL] [WK2] Add methods to get/set a custom text encoding

Tools/Scripts/webkitpy/style/checker.py

@@_PATH_RULES_SPECIFIER = [
220220 "Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp",
221221 "Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp",
222222 "Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp",
223  "Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp"],
 223 "Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp",
 224 "Source/WebCore/platform/network/soup/efl/SoupProxyResolverEfl.cpp",
 225 "Source/WebCore/platform/network/soup/efl/SoupProxyResolverEfl.h"],
224226 ["-readability/naming"]),
225227
226228 # For third-party Python code, keep only the following checks--