diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index afde174..9e8c35b 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,17 @@
+2019-10-16  Pablo Saavedra  <psaavedra@igalia.com>
+
+        [Tools] Add a driver for cog for benchmark_runner.py
+        https://bugs.webkit.org/show_bug.cgi?id=202995
+
+        Reviewed by Žan Doberšek.
+
+        * Scripts/webkitpy/benchmark_runner/browser_driver/linux_cog_driver.py: Added.
+        (CogBrowserDriver):
+        (CogBrowserDriver.launch_url):
+        (CogBrowserDriver.launch_driver):
+        (CogFdoBrowserDriver):
+        (CogFdoBrowserDriver.launch_url):
+
 2019-10-16  Youenn Fablet  <youenn@apple.com>
 
         WebAudioSourceProviderAVFObjC::provideInput should set its WebAudioBufferList parameters correctly
diff --git a/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_cog_driver.py b/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_cog_driver.py
new file mode 100644
index 0000000..b90aa44
--- /dev/null
+++ b/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_cog_driver.py
@@ -0,0 +1,55 @@
+# Copyright (C) 2019 Igalia S.L. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from linux_browser_driver import LinuxBrowserDriver
+
+
+class CogBrowserDriver(LinuxBrowserDriver):
+    browser_name = 'cog'
+    process_search_list = ['cog']
+
+    def launch_url(self, url, options, browser_build_path, browser_path):
+        self._browser_arguments = [url]
+        super(CogBrowserDriver, self).launch_url(url, options,
+                                                 browser_build_path,
+                                                 browser_path)
+
+    def launch_driver(self, url, options, browser_build_path):
+        raise ValueError("Browser {browser} is not available with webdriver".format(browser=self.browser_name))
+
+
+class CogFdoBrowserDriver(LinuxBrowserDriver):
+    browser_name = 'cog-fdo'
+    process_search_list = ['cog']
+
+    def launch_url(self, url, options, browser_build_path, browser_path):
+        self._browser_arguments = ['--platform=fdo', url]
+        super(CogFdoBrowserDriver, self).launch_url(url, options,
+                                                    browser_build_path,
+                                                    browser_path)
+
+    def launch_driver(self, url, options, browser_build_path):
+        raise ValueError("Browser {browser} is not available with webdriver".format(browser=self.browser_name))
