#  -*- mode: Python;-*-
#
# When editing this file, please run the following command to make sure you
# haven't introduced any syntax errors:
#
# ./Tools/Scripts/check-webkit-style
#
# If you want to test your regular expressions, you can edit various files and
# then try following command:
#
# ./Tools/Scripts/webkit-patch apply-watchlist-local
#
{
    "DEFINITIONS": {
        "ChromiumGraphics": {
            "filename": r"Source/WebCore/platform/graphics/chromium/",
        },
        "ChromiumPublicApi": {
            "filename": r"Source/WebKit/chromium/public/"
                        r"|Source/Platform/chromium/public/"
                        r"|Tools/DumpRenderTree/chromium/TestRunner/public",
        },
        "ChromiumTestRunner": {
            "filename": r"Tools/DumpRenderTree/chromium/TestRunner",
        },
        "AppleMacPublicApi": {
            "filename": r"Source/WebCore/bindings/objc/PublicDOMInterfaces.h"
        },
        "Forms": {
            "filename": r"Source/WebCore/html/HTML(DataList|FieldSet|Input|Keygen|Label|Legend|OptGroup|Option|Output|Select|TextArea)Element\."
                        r"|Source/WebCore/html/.*Form[A-Z].*\."
                        r"|Source/WebCore/html/\w*InputType\."
                        r"|Source/WebCore/html/shadow/(SliderThumbElement|TextControlInnerElements)\."
                        r"|Source/WebCore/rendering/Render(FileUploadControl|ListBox|MenuList|Slider|TextControl.*)\."
        },
        "GStreamerGraphics": {
            "filename": r"Source/WebCore/platform/graphics/gstreamer/",
        },
        "WebIDL": {
            "filename": r"Source/WebCore/(?!inspector)(?!testing).*\.idl"
        },
        "ThreadingFiles": {
            "filename": r"Source/JavaScriptCore/wtf/ThreadSpecific\."
                        r"|Source/JavaScriptCore/wtf/ThreadSafeRefCounted\."
                        r"|Source/JavaScriptCore/wtf/ThreadingPrimitives\."
                        r"|Source/JavaScriptCore/wtf/Threading\."
                        r"|Source/WebCore/dom/CrossThreadTask\."
                        r"|Source/WebCore/platform/CrossThreadCopier\.",
        },
        "ThreadingUsage": {
            # The intention of this regex is to detect places where people are using common threading mechanisms,
            # so that one can look them over for common mistakes. This list is long and likely to get longer over time.
            # Note the negative look-ahead to avoid new mentions of the files (for builds or includes).
            "more": r"(AllowCrossThreadAccess|AtomicallyInitialize|CrossThreadCopier|CrossThreadRefCounted|Mutex|ReadWriteLock|ThreadCondition|ThreadSafeRefCounted|ThreadSpecific"
                    r"|createCallbackTask|crossThreadString|deprecatedTurnOffVerifier|threadsafeCopy)(?!\.(h|cpp))",
        },
        "WatchListScript": {
            "filename": r"Tools/Scripts/webkitpy/common/watchlist/",
        },
        "webkitpy": {
            "filename": r"Tools/Scripts/webkitpy/",
        },
        "webkitperl": {
            "filename": r"Tools/Scripts/webkitperl/"
                        r"|Tools/Scripts/webkitdirs.pm"
                        r"|Tools/Scripts/VCSUtils.pm"
                        r"|Tools/Scripts/test-webkitperl",
        },
        "SVNScripts": {
            "filename": r"Tools/Scripts/svn-.*",
        },
        "TestFailures": {
            "filename": r"Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/",
        },
        "SecurityCritical": {
            "more": r"[Ss]ecurityOrigin(?!\.(h|cpp))",
            "less": r"[Ss]ecurityOrigin(?!\.(h|cpp))",
            "filename": r"XSS|[Ss]ecurity",
        },
        "XSS": {
            "filename": r".*XSS",
        },
        "SkiaGraphics": {
            "filename": r"Source/WebCore/platform/graphics/skia/"
                        r"|Source/WebCore/platform/graphics/filters/skia/",
        },
        "V8Bindings": {
            "filename": r"Source/WebCore/bindings/v8/",
        },
        "BindingsScripts": {
            "filename": r"Source/WebCore/bindings/scripts/",
        },
        "FrameLoader": {
            "more": r"FrameLoader\.(cpp|h)",
        },
        "Loader": {
            "filename": r"Source/WebCore/loader/",
        },
        "Rendering": {
            "filename": r"Source/WebCore/rendering/",
        },
        "StyleChecker": {
            "filename": r"Tools/Scripts/webkitpy/style/",
        },
        "GtkWebKit2PublicAPI": {
            "filename": r"Source/WebKit2/UIProcess/API/gtk/",
        },
        "QtBuildSystem": {
            # Project files for each target are intentionally left out, as those
            # mostly list source and header files, which would just add noise.
            "filename": r"Tools/qmake/"
                        r"|WebKit.pro",
        },
        "QtWebKit2PublicAPI": {
            "filename": r"Source/WebKit2/UIProcess/API/qt/"
                        r"|Source/WebKit2/UIProcess/API/cpp/qt/"
                        r"|Source/WebKit2/UIProcess/API/C/qt/",
        },
        "QtGraphics": {
            "filename": r"Source/WebCore/platform/graphics/qt/"
        },
        "CoordinatedGraphics": {
            "filename": r"Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/"
                        r"|Source/WebKit2/UIProcess/CoordinatedGraphics/"
                        r"|Source/WebKit2/Shared/CoordinatedGraphics/"
                        r"|Source/WebCore/platform/graphics/surfaces/",
        },
        "TextureMapper": {
            "filename": r"Source/WebCore/platform/graphics/texmap/",
        },
        "OpenGL": {
            "filename": r"Source/WebCore/platform/graphics/opengl/",
        },
        "QtWebKit2PlatformSpecific": {
            "filename": r"Source/WebKit2/.*\.(pri|pro)"
                        r"|Source/WebKit2/Platform/qt/"
                        r"|Source/WebKit2/qt/"
                        r"|Source/WebKit2/PluginProcess/qt/"
                        r"|Source/WebKit2/Platform/qt/"
                        r"|Source/WebKit2/Shared/API/c/qt/"
                        r"|Source/WebKit2/Shared/qt/"
                        r"|Source/WebKit2/WebProcess/InjectedBundle/qt/"
                        r"|Source/WebKit2/WebProcess/FullScreen/qt/"
                        r"|Source/WebKit2/WebProcess/WebPage/qt/"
                        r"|Source/WebKit2/WebProcess/qt/"
                        r"|Source/WebKit2/WebProcess/Plugins/Netscape/qt/"
                        r"|Source/WebKit2/WebProcess/Downloads/qt/"
                        r"|Source/WebKit2/WebProcess/WebCoreSupport/qt/"
                        r"|Source/WebKit2/WebProcess/Cookies/qt/"
                        r"|Source/WebKit2/UIProcess/qt/"
                        r"|Source/WebKit2/UIProcess/Plugins/qt/"
                        r"|Source/WebKit2/UIProcess/Launcher/qt/",
        },
        "CSS": {
            "filename": r"Source/WebCore/css/",
        },
        "DOM": {
            "filename": r"Source/WebCore/dom/",
        },
        "HTML": {
            "filename": r"Source/WebCore/html/",
        },
        "DOMAttributes": {
            "filename": r"Source/WebCore/dom/.*Attr.*"
                        r"|Source/WebCore/dom/NamedNodeMap\.(cpp|h|idl)"
                        r"|Source/WebCore/dom/Element\.(cpp|h|idl)",
        },
        "EFL": {
            "filename": r"Source/WebKit/efl/"
                        r"|Source/WebCore/platform/efl/"
                        r"|Source/WTF/wtf/efl/"
                        r"|Tools/EWebLauncher"
                        r"|Tools/DumpRenderTree/efl/"
                        r"|LayoutTests/platform/efl/",
        },
        "EFLWebKit2PublicAPI": {
            "filename": r"Source/WebKit2/UIProcess/API/efl/"
                        r"|Source/WebKit2/UIProcess/API/C/efl/",
        },
        "EFLWebKit2PlatformSpecific": {
            "filename": r"Source/WebKit2/.*\.(cmake|txt)"
                        r"|Source/WebKit2/Platform/efl/"
                        r"|Source/WebKit2/efl/"
                        r"|Source/WebKit2/Shared/API/c/efl/"
                        r"|Source/WebKit2/Shared/efl/"
                        r"|Source/WebKit2/WebProcess/InjectedBundle/efl/"
                        r"|Source/WebKit2/WebProcess/WebPage/efl/"
                        r"|Source/WebKit2/WebProcess/efl/"
                        r"|Source/WebKit2/WebProcess/Downloads/efl/"
                        r"|Source/WebKit2/WebProcess/WebCoreSupport/efl/"
                        r"|Source/WebKit2/UIProcess/efl/"
                        r"|Source/WebKit2/UIProcess/Launcher/efl/",
        },
        "CMake": {
            "filename": r".*CMakeLists\w*\.txt"
                        r"|.*\w+\.cmake"
                        r"|Source/cmake/",
        },
        "Selectors": {
            "filename": r"Source/WebCore/css/CSSSelector*"
                        r"|Source/WebCore/css/SelectorChecker.*"
                        r"|Source/WebCore/css/StyleResolver.*"
                        r"|Source/WebCore/dom/SelectorQuery.*",
        },
        "SoupNetwork": {
            "filename": r"Source/WebCore/platform/network/soup/",
        },
        "ScrollingCoordinator": {
            "filename": r"Source/WebCore/page/scrolling/",
        },
        "WebKitGTKTranslations": {
            "filename": r"Source/WebKit/gtk/po/",
        },
        "Media": {
            "filename": r"(Source|LayoutTests)/.*([Mm]edia|[Aa]udio|[Vv]ideo)",
        },
        "MathML": {
            "filename": r"(Source|LayoutTests|Websites)/.*mathml",
        },
        "Editing": {
            "filename": r"Source/WebCore/editing/",
        },
        "BlackBerry": {
            "filename": r"Source/WebKit/blackberry/"
                        r"|Source/WebCore/page/blackberry"
                        r"|Source/WebCore/history/blackberry"
                        r"|Source/WebCore/plugins/blackberry"
                        r"|Source/WebCore/editing/blackberry"
                        r"|Source/WebCore/Resources/blackberry"
                        r"|Source/WebCore/platform/image-decoders/blackberry"
                        r"|Source/WebCore/platform/blackberry"
                        r"|Source/WebCore/platform/text/blackberry"
                        r"|Source/WebCore/platform/network/blackberry"
                        r"|Source/WebCore/platform/graphics/blackberry"
                        r"|Source/WTF/wtf/blackberry"
                        r"|ManualTests/blackberry"
                        r"|Tools/DumpRenderTree/blackberry"
                        r"|LayoutTests/platform/blackberry",
        },
        "NetworkInfo": {
            "filename": r"Source/WebCore/Modules/networkinfo",
        },
        "Battery": {
            "filename": r"Source/WebCore/Modules/battery",
        },
        "WTF": {
            "filename": r"Source/WTF/wtf",
        },
        "WebGL": {
            "filename": r"Source/WebCore/html/canvas/.*WebGL.*"
                        r"|Source/WebCore/bindings/js/.*WebGL.*"
                        r"|Source/WebCore/platform/graphics/gpu"
                        r"|Source/WebCore/platform/graphics/opengl"
                        r"|Source/WebCore/platform/graphics/ANGLE.*"
                        r"|Source/WebCore/platform/graphics/.*GraphicsContext3D.*"
                        r"|Source/ThirdParty/ANGLE",
        },
        "Filters": {
            "filename": r"Source/WebCore/platform/graphics/filters"
                        r"|Source/WebCore/rendering/.*Filter.*"
                        r"|Source/WebCore/rendering/style/.*Filter.*"
                        r"|Source/WebCore/rendering/svg/.*Filter.*"
                        r"|Source/WebCore/svg/graphics/filters"
                        r"|Source/WebCore/svg/graphics/.*Filter.*",
        },
        "TouchAdjustment": {
            "filename": r"Source/WebCore/page/TouchAdjustment.*"
                        r"|LayoutTests/touchadjustment"
                        r"|Source/WebKit/blackberry/WebKitSupport/FatFingers.*",
        },
        "SVG": {
            "filename": r"Source/WebCore/svg"
                        r"|Source/WebCore/rendering/svg",
        },
        "WebInspectorAPI": {
            "filename": r"Source/WebCore/inspector/*.json"
                        r"|Source/WebCore/inspector/*.idl",
        },
        "WebSocket": {
            "filename": r"Source/WebCore/Modules/websockets"
                        r"|Source/WebCore/platform/network/(|.+/)SocketStream.*",
        },
        "MediaStream": {
            "filename": r"Source/WebCore/Modules/mediastream"
                        r"|Source/WebCore/platform/mediastream"
                        r"|LayoutTests/fast/mediastream",
        },
        "Accessibility": {
            "filename": r"Source/WebCore/accessibility"
                        r"|LayoutTests/.*accessibility",
        },
        "Cairo": {
            "filename": r"Source/WebCore/platform/graphics/cairo",
        },
        "Harfbuzz": {
            "filename": r"Source/WebCore/platform/graphics/harfbuzz",
        }
    },
    "CC_RULES": {
        # Note: All email addresses listed must be registered with bugzilla.
        # Specifically, levin@chromium.org and levin+threading@chromium.org are
        # two different accounts as far as bugzilla is concerned.
        "Accessibility": [ "cfleizach@apple.com", "dmazzoni@google.com", "apinheiro@igalia.com", "jdiggs@igalia.com" ],
        "AppleMacPublicApi": [ "timothy@apple.com" ],
        "Battery": [ "gyuyoung.kim@samsung.com" ],
        "BlackBerry": [ "mifenton@rim.com", "rwlbuis@gmail.com", "tonikitoo@webkit.org" ],
        "Cairo": [ "dominik.rottsches@intel.com" ],
        "CMake": [ "rakuco@webkit.org", "gyuyoung.kim@samsung.com" ],
        "CoordinatedGraphics" : [ "noam@webkit.org", "zeno@webkit.org" ],
        "CSS": [ "alexis@webkit.org", "macpherson@chromium.org", "cmarcelo@webkit.org", "ojan@chromium.org"],
        "ChromiumGraphics": [ "jamesr@chromium.org", "cc-bugs@chromium.org" ],
        "ChromiumPublicApi": [ "abarth@webkit.org", "dglazkov@chromium.org", "fishd@chromium.org", "jamesr@chromium.org", "tkent+wkapi@chromium.org" ],
        "ChromiumTestRunner": [ "jochen@chromium.org" ],
        "DOM": [ "ojan@chromium.org" ],
        "DOMAttributes": [ "cmarcelo@webkit.org", ],
        "EFL": [ "rakuco@webkit.org", "gyuyoung.kim@samsung.com" ],
        "EFLWebKit2PlatformSpecific": [ "gyuyoung.kim@samsung.com", "rakuco@webkit.org" ],
        "EFLWebKit2PublicAPI": [ "gyuyoung.kim@samsung.com", "rakuco@webkit.org" ],
        "Editing": [ "mifenton@rim.com" ],
        "Filters": [ "dino@apple.com" ],
        "Forms": [ "tkent@chromium.org", "mifenton@rim.com" ],
        "FrameLoader": [ "abarth@webkit.org", "japhet@chromium.org" ],
        "GStreamerGraphics": [ "alexis@webkit.org", "pnormand@igalia.com", "gns@gnome.org", "mrobinson@webkit.org" ],
        "GtkWebKit2PublicAPI": [ "cgarcia@igalia.com", "gns@gnome.org", "mrobinson@webkit.org" ],
        "Harfbuzz": [ "dominik.rottsches@intel.com" ],
        "HTML": [ "ojan@chromium.org" ],
        "Loader": [ "japhet@chromium.org" ],
        "MathML": [ "dbarton@mathscribe.com" ],
        "Media": [ "feature-media-reviews@chromium.org", "eric.carlson@apple.com" ],
        "MediaStream": [ "tommyw@google.com", "hta@google.com" ],
        "NetworkInfo": [ "gyuyoung.kim@samsung.com" ],
        "OpenGL" : [ "noam@webkit.org", "dino@apple.com" ],
        "QtBuildSystem" : [ "vestbo@webkit.org", "abecsi@webkit.org" ],
        "QtGraphics" : [ "noam@webkit.org" ],
        "QtWebKit2PlatformSpecific": [ "alexis@webkit.org", "cmarcelo@webkit.org", "abecsi@webkit.org" ],
        "QtWebKit2PublicAPI": [ "alexis@webkit.org", "cmarcelo@webkit.org", "abecsi@webkit.org" ],
        "Rendering": [ "eric@webkit.org", "ojan@chromium.org" ],
        "SVG": ["schenney@chromium.org", "pdr@google.com", "fmalita@chromium.org", "dominik.rottsches@intel.com" ],
        "SVNScripts": [ "dbates@webkit.org" ],
        "ScrollingCoordinator": [ "andersca@apple.com", "jamesr@chromium.org", "tonikitoo@webkit.org" ],
        "SecurityCritical": [ "abarth@webkit.org" ],
        "SkiaGraphics": [ "senorblanco@chromium.org" ],
        "Selectors": [ "allan.jensen@digia.com" ],
        "SoupNetwork": [ "rakuco@webkit.org", "gns@gnome.org", "mrobinson@webkit.org", "danw@gnome.org" ],
        "StyleChecker": [ "levin@chromium.org", ],
        "TestFailures": [ "abarth@webkit.org", "dglazkov@chromium.org", "ojan@chromium.org" ],
        "TextureMapper" : [ "noam@webkit.org" ],
        "ThreadingFiles|ThreadingUsage": [ "levin+threading@chromium.org", ],
        "TouchAdjustment" : [ "allan.jensen@digia.com" ],
        "V8Bindings|BindingsScripts": [ "abarth@webkit.org", "japhet@chromium.org", "haraken@chromium.org" ],
        "WTF": [ "benjamin@webkit.org", "ojan@chromium.org"],
        "WatchListScript": [ "levin+watchlist@chromium.org", ],
        "WebGL": [ "dino@apple.com" ],
        "WebIDL": [ "abarth@webkit.org", "ojan@chromium.org" ],
        "WebInspectorAPI": [ "timothy@apple.com", "joepeck@webkit.org" ],
        "WebKitGTKTranslations": [ "gns@gnome.org", "mrobinson@webkit.org" ],
        "WebSocket": [ "yutak@chromium.org" ],
        "XSS": [ "dbates@webkit.org", "ojan@chromium.org" ],
        "webkitperl": [ "dbates@webkit.org" ],
        "webkitpy": [ "abarth@webkit.org", "dpranke@chromium.org" ],
    },
    "MESSAGE_RULES": {
        "ChromiumPublicApi": [ "Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, "
                               "fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before "
                               "submitting, as this patch contains changes to the Chromium public API. "
                               "See also https://trac.webkit.org/wiki/ChromiumWebKitAPI." ],
        "AppleMacPublicApi": [ "Please wait for approval from timothy@apple.com (or another member "
                               "of the Apple Safari Team) before submitting "
                               "because this patch contains changes to the Apple Mac "
                               "WebKit.framework public API.", ],
        "GtkWebKit2PublicAPI": [ "Thanks for the patch. If this patch contains new public API "
                                 "please make sure it follows the guidelines for new WebKit2 GTK+ API. "
                                 "See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API", ],
    },
}
