#  -*- 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": {
        "ChromiumDumpRenderTree": {
            "filename": r"Tools/DumpRenderTree/chromium/",
        },
        "ChromiumGraphics": {
            "filename": r"Source/WebCore/platform/graphics/chromium/",
        },
        "ChromiumPublicApi": {
            "filename": r"Source/WebKit/chromium/public/"
        },
        "Forms": {
            "filename": r"Source/WebCore/html/HTML(FieldSet|Form|FormControl|Input|Label"
                        r"|OptGroup|Option|Select|TextArea|TextFormControl)Element\."
                        r"|Source/WebCore/html/\w*InputType\."
                        r"|Source/WebCore/rendering/Render(ListBox|MenuList|Slider|TextControl"
                        r"|TextControlMultiLine|TextControlSingleLine)\."
        },
        "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/",
        },
        "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",
        },
        "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/",
        },
        "StyleChecker": {
            "filename": r"Tools/Scripts/webkitpy/style/",
        },
        "GtkWebKit2PublicAPI": {
            "filename": r"Source/WebKit2/UIProcess/API/gtk/",
        },
        "QtWebKit2PublicAPI": {
            "filename": r"Source/WebKit2/UIProcess/API/qt/"
                        r"|Source/WebKit2/UIProcess/API/cpp/qt/"
                        r"|Source/WebKit2/UIProcess/API/C/qt/",
        },
        "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/",
        },
    },
    "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.
        "ChromiumDumpRenderTree": [ "tkent@chromium.org", ],
        "ChromiumGraphics": [ "jamesr@chromium.org", ],
        "ChromiumPublicApi": [ "fishd@chromium.org", ],
        "Forms": [ "tkent@chromium.org", ],
        "GStreamerGraphics": [ "pnormand@igalia.com", ],
        "WebIDL": [ "abarth@webkit.org", "ojan@chromium.org" ],
        "StyleChecker": [ "levin@chromium.org", ],
        "ThreadingFiles|ThreadingUsage": [ "levin+threading@chromium.org", ],
        "WatchListScript": [ "levin+watchlist@chromium.org", ],
        "V8Bindings|BindingsScripts": [ "abarth@webkit.org", "japhet@chromium.org" ],
        "FrameLoader": [ "abarth@webkit.org", "japhet@chromium.org" ],
        "Loader": [ "japhet@chromium.org" ],
        "SecurityCritical": [ "abarth@webkit.org" ],
        "webkitpy": [ "abarth@webkit.org", "ojan@chromium.org" ],
        "TestFailures": [ "abarth@webkit.org", "dglazkov@chromium.org" ],
        "GtkWebKit2PublicAPI": [ "cgarcia@igalia.com", ],
        "QtWebKit2PublicAPI": [ "zoltan@webkit.org", ],
        "QtWebKit2PlatformSpecific": [ "zoltan@webkit.org", ],
        "CSS": [ "macpherson@chromium.org", ],
    },
    "MESSAGE_RULES": {
        "ChromiumPublicApi": [ "Please wait for approval from fishd@chromium.org before submitting "
                               "because this patch contains changes to the Chromium 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", ],
    },
}
