)]}'
{
  "log": [
    {
      "commit": "284690c2a68ca1d4fc766807e00b354afd695897",
      "tree": "d4fdc040348c74f7a2607b758d1044f314d582af",
      "parents": [
        "4a177cf54cd46b2f1200014efe800fc16bf9314f"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Wed May 28 00:16:29 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 28 00:16:29 2025"
      },
      "message": "Add owners (#45)\n\n* Add dependencies to publish.yml\n\n* Update authors in setup.py to current maintainers"
    },
    {
      "commit": "4a177cf54cd46b2f1200014efe800fc16bf9314f",
      "tree": "a00b9939602fc4a96d84f83ef1917a20309d6745",
      "parents": [
        "139224e0d71db84fe1922601cb92ec8c8f3885ba"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Mon May 27 04:08:49 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 27 04:08:49 2024"
      },
      "message": "Exclude python 3.7 from macOS testing (#46) (#47)\n\n* Add dependencies to publish.yml\r\n\r\n* Exclude python 3.7 from macOS testing (#46)"
    },
    {
      "commit": "139224e0d71db84fe1922601cb92ec8c8f3885ba",
      "tree": "09936fb60e012e6e2875ae83ec40b02c16458be0",
      "parents": [
        "4514f3998b4d490cff6d28a0f16ff0b7aaab6ff5"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Fri Apr 12 12:41:46 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 12 12:41:46 2024"
      },
      "message": "Update setup.py version number (#30) (#43)\n\nUpdate the version to v4.0.2 (#30)"
    },
    {
      "commit": "4514f3998b4d490cff6d28a0f16ff0b7aaab6ff5",
      "tree": "b21e6a9488d82502ef03c809e174d658eeb145d1",
      "parents": [
        "bd7a7d2f18e95b279752d3bf44b9f34364393f3c"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Fri Apr 12 12:16:21 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 12 12:16:21 2024"
      },
      "message": "Add dependencies to publish.yml (#42)\n\n"
    },
    {
      "commit": "bd7a7d2f18e95b279752d3bf44b9f34364393f3c",
      "tree": "1cb11a6d6e008c55e89d83b16954f9719f374000",
      "parents": [
        "9cafd4d39677cd5fc7c839b69380597cb74e21a8"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Fri Apr 12 12:01:51 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 12 12:01:51 2024"
      },
      "message": "Specifiy release event to publish to PyPi (#30) (#41)\n\nThis patch adds a trigger event to publish.yml and specifies the release\r\nevent to when we will publish to PyPi."
    },
    {
      "commit": "9cafd4d39677cd5fc7c839b69380597cb74e21a8",
      "tree": "3bc0054e5dcf60c94264d3a69502aa17f7dcc303",
      "parents": [
        "3a1011f8ac40c9df81cec39563c93addb8d9436e"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Fri Apr 12 10:55:52 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 12 10:55:52 2024"
      },
      "message": "Add publish.yml to publish to PyPi (#30) (#40)\n\n* Add publish.yml to publish to PyPi (#30)\r\n\r\nThis patch adds publish.yml to enable the workflow to publish to PyPi.\r\n---------\r\n\r\nCo-authored-by: Keita Suzuki \u003csuzukikeita@chromium.org\u003e"
    },
    {
      "commit": "3a1011f8ac40c9df81cec39563c93addb8d9436e",
      "tree": "4526197c1bd8522a1f4319c2e56698390f1eabf5",
      "parents": [
        "ffb629f1d1fe980701b52909c46c6ba561bc203d"
      ],
      "author": {
        "name": "bashi",
        "email": "bashi@chromium.org",
        "time": "Tue Jan 30 05:46:25 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 30 05:46:25 2024"
      },
      "message": "Create python-package.yml (#37)\n\n* Create python-package.yml\r\n* Remove .travis.yml\r\n"
    },
    {
      "commit": "ffb629f1d1fe980701b52909c46c6ba561bc203d",
      "tree": "a44bf6869a7385e304f507b8ce8b0909090af4af",
      "parents": [
        "ebd0a81e9c9814f364d19edefc54c3f89c77d50b"
      ],
      "author": {
        "name": "Henrik Skupin",
        "email": "mail@hskupin.info",
        "time": "Fri Jan 12 09:19:13 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 12 09:19:13 2024"
      },
      "message": "Release version 4.0.0 (#34)\n\n"
    },
    {
      "commit": "ebd0a81e9c9814f364d19edefc54c3f89c77d50b",
      "tree": "e690bdfdb50bbb0a3a0627c9d21d77848061de15",
      "parents": [
        "50602a14f1b6da17e0b619833a13addc6ea78bc2"
      ],
      "author": {
        "name": "Henrik Skupin",
        "email": "mail@hskupin.info",
        "time": "Tue Nov 21 08:26:01 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 21 08:26:01 2023"
      },
      "message": "Rename module mod_pywebsocket to pywebsocket3 (#33)\n\n* Rename module mod_pywebsocket to pywebsocket3\r\n* Fix test test_unmasked_frame."
    },
    {
      "commit": "50602a14f1b6da17e0b619833a13addc6ea78bc2",
      "tree": "f72d4b128a502d7fe021cb2d62ae91045ce8705d",
      "parents": [
        "316f5419f8536b992c6fd5a5666a7fa8cd86bfa2"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Fri Aug 20 07:16:08 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 20 07:16:08 2021"
      },
      "message": "Support handler-encoding-ignorant embedders (#32)\n\nAllow for embedders that don\u0027t provide the new handler_encoding option\r\ninside the options object by using getattr() and falling back to None."
    },
    {
      "commit": "316f5419f8536b992c6fd5a5666a7fa8cd86bfa2",
      "tree": "8c4b2b07bed8bdb5e016310766129cc132bb3cb2",
      "parents": [
        "265579a969e1aec2a6457db7674a9e31fbb7d564"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Fri Aug 20 04:57:45 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 20 04:57:45 2021"
      },
      "message": "Support --handler-encoding option (#31)\n\nPermit overriding the locale encoding when reading handler files by\r\nspecifying a --handler-encoding command-line option.\r\n\r\nUpdate version number to 3.0.2"
    },
    {
      "commit": "265579a969e1aec2a6457db7674a9e31fbb7d564",
      "tree": "2956127061e2cb46a24c8d1750ffbbca12b6b7eb",
      "parents": [
        "cdb83e315246f7ffd5f4065d7595d758931a6227"
      ],
      "author": {
        "name": "arenevier",
        "email": "arenevier@fb.com",
        "time": "Fri Apr 23 01:42:27 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 23 01:42:27 2021"
      },
      "message": "Expose base.py as a public api. (#28)\n\nExtract methods that can be used to implement Websocket over HTTP/2\r\n\r\nThe implementation of HTTP/2 handshake is quite similar to HTTP/1 with a\r\nfew differences:\r\n- headers are lower case in HTTP/2\r\n- not exactly the same headers must be validated\r\n- We don\u0027t handle Sec-WebSocket-Accept for HTTP/2\r\n- the response is different\r\n\r\nSo we can implement the handshake in a base class that will delegate\r\nsome operations to the parent class.\r\n\r\nWe make _base.py public by renaming it to base.py"
    },
    {
      "commit": "cdb83e315246f7ffd5f4065d7595d758931a6227",
      "tree": "65b72b2f428a53314a3be1ea855e81c2a1d2c16a",
      "parents": [
        "9db3d29db4f3e3efb1722c0210bc88500ab00611"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Thu Apr 01 11:38:42 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 01 11:38:42 2021"
      },
      "message": "Add missing r to regular expression (#27)\n\nA regular expression using \"\\S\" was missing the \"r\" to indicate that it\r\nwas a raw string, causing a warning in Python 3. Add the missing \"r\".\r\n\r\nFixes #26."
    },
    {
      "commit": "9db3d29db4f3e3efb1722c0210bc88500ab00611",
      "tree": "301d0bfc6f04f6092a943ae77b204ecb6b73d33d",
      "parents": [
        "c6aea56f8bfcfccddf9653fd860a3484d9578054"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Tue Mar 02 07:01:02 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 02 07:01:02 2021"
      },
      "message": "Bump version number to reflect functional changes (#25)\n\nChange version number to 3.0.1."
    },
    {
      "commit": "c6aea56f8bfcfccddf9653fd860a3484d9578054",
      "tree": "35bc3b3e54fecc7a1e5856340b0371af2d8c4aaf",
      "parents": [
        "353b4aaf8a3203bffd55d0598f5388f479e71526"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Tue Mar 02 04:53:51 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 02 04:53:51 2021"
      },
      "message": "Stop wrapping os.popen3 (#24)\n\nCGIHTTPRequestHandler no longer uses os.popen3 in Python 2.7, which is\r\nthe oldest version we support. Stop attempting to wrap it. This enables\r\npywebsocket to work with the --cgi-paths command-line option on Python\r\n3.\r\n\r\nThis means that selecting the interpreter via a \"#!\" line at the start\r\nof the file is explicitly no longer supported on win32, whereas\r\npreviously it was supposed to work but didn\u0027t.\r\n\r\nHowever, the \"#!\" line is still used to identify executable scripts,\r\neven on win32.\r\n\r\nAlso add a unit test for cgi script execution, and an example script\r\nwhich is used by the test.\r\n\r\nFixes #17"
    },
    {
      "commit": "353b4aaf8a3203bffd55d0598f5388f479e71526",
      "tree": "f5766516e6ff1834603eeff76cb382d19088c9f8",
      "parents": [
        "9ae2b3c90bb60a487d7f5789ed5693ce0e2b4225"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Tue Mar 02 02:35:23 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 02 02:35:23 2021"
      },
      "message": "Give up expecting echo_client to be unicode safe (#23)\n\nThe example echo_client.py output in UTF-8 in Python 2 and the locale\r\nencoding in Python 3. test_example_echo_client expected output to be\r\nUTF-8. It\u0027s common (usual?) on Windows for the DOS codepage to be\r\nnon-UTF-8, so this caused the test to fail.\r\n\r\nChange it to use the locale encoding everywhere. This means that we\r\naren\u0027t guaranteed to be able to output arbitrary unicode, so stop\r\ntesting for it.\r\n\r\nOnly test ASCII characters."
    },
    {
      "commit": "9ae2b3c90bb60a487d7f5789ed5693ce0e2b4225",
      "tree": "7cd28d53c9940ecaad0259542c755799213c9837",
      "parents": [
        "e894c1b2ada602f3fb9c720289d17bf2591500e7"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Mon Mar 01 11:43:14 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 01 11:43:14 2021"
      },
      "message": "Make tests work with python 2 on Windows (#20)\n\nPython 2 on Windows doesn\u0027t support the close_fds argument to\r\nPopen. Stop passing that argument on Windows."
    },
    {
      "commit": "e894c1b2ada602f3fb9c720289d17bf2591500e7",
      "tree": "3dd07bd1762e8bcfa62f985e05a4c841ed4c2a41",
      "parents": [
        "f76e23c0945bc8826912ce6046838755508ce03b"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Mon Mar 01 11:28:23 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 01 11:28:23 2021"
      },
      "message": "Update the URL in setup.py (#19)\n\n"
    },
    {
      "commit": "f76e23c0945bc8826912ce6046838755508ce03b",
      "tree": "7d42be816f22c4e647820ed23f0d5edbd379c0e3",
      "parents": [
        "3ab411d97fee2d320659f21ab4aba4db589c8e9c"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Mon Mar 01 11:27:39 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 01 11:27:39 2021"
      },
      "message": "Fix incorrect use of \"is\" for integer comparison (#21)\n\n"
    },
    {
      "commit": "3ab411d97fee2d320659f21ab4aba4db589c8e9c",
      "tree": "861f43b6d7011138eab943c80f95777bf6316ff3",
      "parents": [
        "d1958b2ca7fc67ce61ed4f57c12f1452dd96217b"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Mon Mar 01 11:08:56 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 01 11:08:56 2021"
      },
      "message": "Fix version comparisons (#22)\n\nString comparisons don\u0027t work properly for Python versions because for\r\nexample \"3.10.0\" \u003c \"3.8.0\". Use sys.hexversion instead."
    },
    {
      "commit": "d1958b2ca7fc67ce61ed4f57c12f1452dd96217b",
      "tree": "641a67e13225b87cd69bff91dadb95425771f77b",
      "parents": [
        "49ae4cba89a81ddc55a29d7365f2f18434b0ea9f"
      ],
      "author": {
        "name": "ziransun",
        "email": "zsun@igalia.com",
        "time": "Thu Nov 19 11:47:24 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 19 11:47:24 2020"
      },
      "message": "Sphinx fix: add indention for a sentence that continues in a new line. (#16)\n\n"
    },
    {
      "commit": "49ae4cba89a81ddc55a29d7365f2f18434b0ea9f",
      "tree": "7f35c8e16d7fc83bf6a6ca7dd4489a7d536e005d",
      "parents": [
        "115f9a6f7c4c39f7550f55cb7a659ed180c2ec52"
      ],
      "author": {
        "name": "Robert Ma",
        "email": "bob1211@gmail.com",
        "time": "Mon Aug 24 15:47:10 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 15:47:10 2020"
      },
      "message": "Fix Sphinx errors\n\nIn order to use Sphinx to build PyDocs for this project, fix some\r\nreST parsing errors."
    },
    {
      "commit": "115f9a6f7c4c39f7550f55cb7a659ed180c2ec52",
      "tree": "f668a5a95a2a35b3c19e20b5c09f191faef80b24",
      "parents": [
        "b1ef45f362fed5b3a05c4c983d6b0b8f57e4f1a2"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Sat Aug 15 03:45:01 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 15 03:45:01 2020"
      },
      "message": "Add .gitignore file\n\nIgnore some files which should not be included in the repository."
    },
    {
      "commit": "b1ef45f362fed5b3a05c4c983d6b0b8f57e4f1a2",
      "tree": "1de89b15be7158d9230b6ad354edbc65f55457fb",
      "parents": [
        "faf478a0453ceae78f2a3bc11c6c21e13362628f"
      ],
      "author": {
        "name": "Philip Jägenstedt",
        "email": "philip@foolip.org",
        "time": "Fri Aug 14 20:49:15 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 20:49:15 2020"
      },
      "message": "Simplify some uses of os.path.split\n\nSpun off from https://github.com/web-platform-tests/wpt/pull/25008."
    },
    {
      "commit": "faf478a0453ceae78f2a3bc11c6c21e13362628f",
      "tree": "44e3fa160337b1ff9c5822fff7c4fd6b1157caa1",
      "parents": [
        "3ae555c3fa06869de97108ba59be2e3e63a8bc80"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Wed Feb 26 06:55:32 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 26 06:55:32 2020"
      },
      "message": "Add UnitTests for standalone server\n\nThis commit adds Unit Test to test_endtoend to achieve higher coverage.\r\nThis also fixes a minor bug found in the request_handler.\r\n\r\nChange-Id: I4912bb62fdad128f3bb9af557fbd60d18b31fa3b"
    },
    {
      "commit": "3ae555c3fa06869de97108ba59be2e3e63a8bc80",
      "tree": "c6f950d2a1f1410d2e943f071dc528be700c4a5e",
      "parents": [
        "e0d3b5a5195705907f32a564729e00dc8ec82e72"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Wed Feb 26 06:54:28 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 26 06:54:28 2020"
      },
      "message": "Update optparse to argparse\n\noptparse has been deprecated since python 2.7. Since pywebsocket3\r\nonly support versions 2.7+, replace optparse to argparse.\r\n\r\nChange-Id: I5a602bd0194f70d7cfe570c89b39de8c63ac13e4"
    },
    {
      "commit": "e0d3b5a5195705907f32a564729e00dc8ec82e72",
      "tree": "5db7ce1f6fe27e8b19aba1005c7bfd0625fda66c",
      "parents": [
        "89c9228434100e4dabb19f61d0d4f55625940638"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Tue Feb 18 06:33:23 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 18 06:33:23 2020"
      },
      "message": "Update license year in websocket_server.py (#5)\n\nChange-Id: If14d3065ad22709e0d3f3b34f51086c3174402c1"
    },
    {
      "commit": "89c9228434100e4dabb19f61d0d4f55625940638",
      "tree": "0dbfe4324765f052feaa12fcedc5ad965aa2414d",
      "parents": [
        "cadaccedf8e30773e4d47d3f68aa56a1377c11a0"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "36944670+quasi-mod@users.noreply.github.com",
        "time": "Thu Feb 13 09:09:11 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 13 09:09:11 2020"
      },
      "message": "Update travis.yml to be usable\n\nThis commit fixes the existing travis.yml to test on python 2 and python\r\n3. This also fixes an assertion error on certain python versions, and\r\nformats some of the python files using yapf.\r\n\r\nChange-Id: I3682aa45240abdba1045280b15c164c94b3950bf"
    },
    {
      "commit": "cadaccedf8e30773e4d47d3f68aa56a1377c11a0",
      "tree": "b20f5444f9214d24f213fc21a6a2d2d186eb1300",
      "parents": [
        "77233ae99b7ad34f0a87841bc3ce480b83bf0d38"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Fri Feb 07 07:55:36 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Mon Feb 10 09:12:15 2020"
      },
      "message": "Add hybi.compute_accept_from_unicode()\n\nThe current implementation of compute_accept only allows bytes strings\nas its argument. However, when computing accept keys from handshake\nheaders, there is a need to encode unicode strings to bytes strings and\npass it on to compute_accept. This commit provides\ncompute_accept_from_unicode which does the encoding before passing it on\nthe compute_accept so that websocket handlers do not need to encode\neverytime.\n\nThis commit also modifies compute_accept by removing binary_accept from\nreturn which was only used in logging.\n\nChange-Id: Ideb50bbfdc25bc85de53be8fea4f0fd3a2834683\n"
    },
    {
      "commit": "77233ae99b7ad34f0a87841bc3ce480b83bf0d38",
      "tree": "f44e142a9696e4a0bd076a2714d53566e8a49afc",
      "parents": [
        "17dca409d05612bceeb486f48b8263c71b5906da"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Feb 04 03:55:08 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Mon Feb 10 08:40:05 2020"
      },
      "message": "Refactor standalone server into modules\n\nSplit standalone.py into modules for easier maintenance.\n\nChange-Id: Iff2f30758628800a0d177396d8c23821a39d1335\n"
    },
    {
      "commit": "17dca409d05612bceeb486f48b8263c71b5906da",
      "tree": "f2f6cc3b70fc6a322d04fb4986f4634dc8a39741",
      "parents": [
        "68e5c07a571918253034648236479f391620240e"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Mon Feb 03 08:04:58 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Wed Feb 05 09:46:34 2020"
      },
      "message": "Drop support for pyOpenSSL\n\nThis commit drops support for pyOpenSSL, which was introduced for\neariler versions of python. Pywebsocket does not support them\nanymore, so we drop support for pyOpenSSL as well.\n\nChange-Id: I13a6750347781c99e4df99e24d180d856011c011\n"
    },
    {
      "commit": "68e5c07a571918253034648236479f391620240e",
      "tree": "3b25d135d7bfdbc535e39eb76848c321c1d5bf75",
      "parents": [
        "d968ae8d27f8dcee38436c66366cba74dae3c836"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 30 08:20:37 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Feb 04 09:28:05 2020"
      },
      "message": "Format entire module with yapf\n\nThis commit formats all python files using yapf.\n\nChange-Id: I93a76162eba3ae1cff7704dd29ec394051f82ebf\n"
    },
    {
      "commit": "d968ae8d27f8dcee38436c66366cba74dae3c836",
      "tree": "ffda2a4633fba3743051951e1aa45a3853ec87cb",
      "parents": [
        "44660b68dc77ec1f86a9618a220dcd19cf0795c0"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 30 08:53:47 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Mon Feb 03 01:44:47 2020"
      },
      "message": "Update contributing and licensing\n\nChange-Id: If0f581ebfcd98313a445c344509018dbff9d946f\n"
    },
    {
      "commit": "44660b68dc77ec1f86a9618a220dcd19cf0795c0",
      "tree": "d1ffa0fa1205ef553c3c6290eac443b4f4f3d7f4",
      "parents": [
        "58a0a8db7df4938448cb5c652c42f589570e941d"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 21 08:40:53 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 30 07:54:33 2020"
      },
      "message": "Modify examples to support python 3\n\nThis commit modifies examples to support python 3.\n\nChange-Id: I6fa427b2b23f9a8a769cf9e23f1e7050ee257d5b\n"
    },
    {
      "commit": "58a0a8db7df4938448cb5c652c42f589570e941d",
      "tree": "22a0a323e8715ac13314afe85ca1df2532313cd4",
      "parents": [
        "00f830725fb3c7710a24ae66c4b23c49dbdbeed5"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Mon Jan 27 06:20:21 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 30 07:52:28 2020"
      },
      "message": "Change deprecated methods to new methods\n\nThis commit modifies UnitTest methods that have been deprecated to new\nmethods.\n\nIn addition, this commit fixes a test in http_header_util which\ntests invalid ports.\n\nChange-Id: I5c0393f2f9305fe9d44442e01cf1dea31e250923\n"
    },
    {
      "commit": "00f830725fb3c7710a24ae66c4b23c49dbdbeed5",
      "tree": "1f48a1ea76ba66ae54829821bf89f0032db68856",
      "parents": [
        "8a33fb787190d9c9297233fc5e25933d1f38183d"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 28 09:09:09 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 30 07:50:52 2020"
      },
      "message": "Remove legacy codes for python 2.6\u003c\n\nThis commit removes legacy codes used to support python 2.6 and earlier\nversions.\n\nChange-Id: I019466b9f8a499c25ced40fff6f49187d0bffeae\n"
    },
    {
      "commit": "8a33fb787190d9c9297233fc5e25933d1f38183d",
      "tree": "a01789c48d88e710d8434099aa6c6b67c7474c09",
      "parents": [
        "30a2f744e9c81e0560bc019f1cde7137902b95ea"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Mon Jan 27 05:26:58 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 30 07:00:32 2020"
      },
      "message": "Change mask code to not use deprecated method.\n\nThe current RepeatedXorMasker.mask() method uses deprecated method\narray.fromstring(). Modernize this by use bytearray. In addition,\ncurrent implementation accepts both text string and byte string. Change\nthis to only accept byte string. This also fixes tests that use masks to\nexplicitly use bytes strings.\n\nThis commit also fixes some file discriptors that were left open to\nclose after use.\n\nChange-Id: I561bf789511033d7fed5568015e6d56a74c8054d\n"
    },
    {
      "commit": "30a2f744e9c81e0560bc019f1cde7137902b95ea",
      "tree": "b1494fe88d69a42590abc1a1994468377509f329",
      "parents": [
        "77ec0abf3ac70f61db65a841737e5081e70ee0f8"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 21 06:30:02 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 30 07:00:23 2020"
      },
      "message": "Modify main module to support python3\n\nThis commit updates main module codes to support python 3 syntax.\nIn addition, this commit marks strings that should be byte strings to\nbyte literals to avoid mixed up usage.\n\nThis also fixes the Stream.send_ping() method, since it can take\nboth unicode string and byte strings, but does not convert unicode\nstring to bytes when sending. Fix this by adding binary flag and adding\nencoding when binary flag is off.\n\nThis commit also drops support for python versions \u003c2.6.\n\nChange-Id: Ic2b89c3beb0d88343167b85ac5170de950c7e17b\n"
    },
    {
      "commit": "77ec0abf3ac70f61db65a841737e5081e70ee0f8",
      "tree": "5201d6d5f706e70b5163c845d1d884206601cb8b",
      "parents": [
        "549b4abd56605c540d99d14d208815c736348d8c"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Mon Jan 27 07:29:08 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Wed Jan 29 02:22:17 2020"
      },
      "message": "Close standalone server after using it for end-to-end tests\n\nThis patch closes the standalone server after being used at the tests in\ntest_endtoend.\n\nChange-Id: Iac45d2c80e48e76ad735f7697efa8b6c5f4595d4\n"
    },
    {
      "commit": "549b4abd56605c540d99d14d208815c736348d8c",
      "tree": "f02ec41eab2c1e53f4c635abb0d858893307dab5",
      "parents": [
        "10da28a8f5cd98d4e30d5cb8445c07405f30d9c3"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 23 01:45:48 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 28 04:22:47 2020"
      },
      "message": "Update test handlers and handshakes\n\nThis commit fixes mixed up usage of byte/string in test handlers.\nThis also fixes handshake related codes to use unicode strings\nto compare. In addition, this commit differentiates text strings\nto bytes strings for python 2/3 compatibility.\n\nChange-Id: I35b5536b2a0c355ab8720b988a735c77cebddc7b\n"
    },
    {
      "commit": "10da28a8f5cd98d4e30d5cb8445c07405f30d9c3",
      "tree": "49ad7ac3aa7c2739e78cd6c9ea015426cb64c5a1",
      "parents": [
        "c67e42cdf5a60e7d5adb43a39ce7b6c152d70c90"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 21 08:40:53 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Mon Jan 27 02:17:50 2020"
      },
      "message": "Fix tests that implicitly use byte strings.\n\nThis fixes Type Errors caused by implicit use of byte strings\nsuch as concatenation or convertion to integer. In addition,\nthis changes access method to a byte character in a byte string by\nusing six module\u0027s iterbytes.\n\nChange-Id: I244d85f417a0931ebfa29070abde5eddfd8894bf\n"
    },
    {
      "commit": "c67e42cdf5a60e7d5adb43a39ce7b6c152d70c90",
      "tree": "668e6843b3d62bf483784fcd70f732d330081571",
      "parents": [
        "699d72e03ae6b34194c67fbe3cd2909fa334d514"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Mon Jan 20 09:16:22 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 23 09:08:07 2020"
      },
      "message": "Modify tests to python 3 compatible.\n\nThis commit changes test source code to use python six\nmodule, and also fixes some of the major string/byte\nmixed concatenation, which will lead to TypeError in\npython 3.\n\nChange-Id: I97b1d2d1c834c61d35b8f9cfe5002e12cd83c715\n"
    },
    {
      "commit": "699d72e03ae6b34194c67fbe3cd2909fa334d514",
      "tree": "1a676e8e9e2426134a90eca9bb8f0ace60d75513",
      "parents": [
        "67d30050f8eea516fd39d6b54e56ef7f5f581b78"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Wed Jan 15 02:12:36 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 23 06:49:20 2020"
      },
      "message": "Merge StreamBase Class to Stream Class.\n\nSince the Stream Class is the only class that inherits StreamBase Class, merge\nthem and make it a single class. This also renames the _stream_base.py to\n_stream_exceptions.py since it only contains custom exceptions.\n\nChange-Id: Ie0272762c629444247c99bc5b1723f3b64018d25\n"
    },
    {
      "commit": "67d30050f8eea516fd39d6b54e56ef7f5f581b78",
      "tree": "01b252f3be281da0a53b7c0ec638b9cd73010fde",
      "parents": [
        "384119e932185607033977f0071ae8b4cd37cd10"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 21 01:27:21 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 21 04:45:09 2020"
      },
      "message": "Modify setup.py to add dependencies to the python six module.\n\nThis also modifies setup.py and __init__.py descriptions.\n\nChange-Id: Ibf2b2778e49c7e8afddbe97e8180154718b33753\n"
    },
    {
      "commit": "384119e932185607033977f0071ae8b4cd37cd10",
      "tree": "cb60cec60c6681e5941705194e6e8a41ccb23e23",
      "parents": [
        "4a8cc084ff32095d57da960c97a3ea33981c162e"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 14 07:44:40 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 14 07:44:40 2020"
      },
      "message": "Remove obosolete files and update document.\n\nChange-Id: I088ff5ac2a14d6ff67515ebd4e94ddee756bf61b\n"
    },
    {
      "commit": "4a8cc084ff32095d57da960c97a3ea33981c162e",
      "tree": "1734847640dd031120aeaa0e691f0ef7c5d0d711",
      "parents": [
        "bac2b4769ffe1b32d14baa9657cef1d48e33ef6c"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 14 01:28:12 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 14 07:06:00 2020"
      },
      "message": "Fix broken tests do to the misuse of zlib package.\n\nChange-Id: I84a1b59a4c04b6f465f10e944a83235c41d00cb3\n"
    },
    {
      "commit": "bac2b4769ffe1b32d14baa9657cef1d48e33ef6c",
      "tree": "b0f98391a5933ea8fcb0ae27985e4c9def2252d4",
      "parents": [
        "76a990f60de26391336c13ada3c7cc4282a325cb"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 14 03:20:30 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 14 07:04:05 2020"
      },
      "message": "Fix broken test that misuses urlparse library.\n\nThe behavior of urlparse (urllib.parse in python3) differs in\npython2 and python 3. Current assumption only works with python3,\nwhich leads to failure of test in python2.\n\nFix this by switching assumptions depending on python versions.\n\nThis also fixes a missing _handshake instance variable in EchoClient\nclass.\n\nChange-Id: I6898c933457cdc5713148a4c880042594cc3c938\n"
    },
    {
      "commit": "76a990f60de26391336c13ada3c7cc4282a325cb",
      "tree": "5f4632232ce08e893919aed48f816f6a1a8738c8",
      "parents": [
        "3f13224c2c6ff9ad8f8c55b72a41507a7a96963f"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Fri Jan 10 09:57:57 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 14 05:04:10 2020"
      },
      "message": "Remove deflate-frame-extension.\n\nAlso remove obsolete functions and tests related to extensions.\n\nChange-Id: I834f38188416ddf4037c82ad74f2158515400a5c\n"
    },
    {
      "commit": "3f13224c2c6ff9ad8f8c55b72a41507a7a96963f",
      "tree": "620832cca7d557ec1538417cb377fa13c815a38b",
      "parents": [
        "2d8512ce8ac2533c9650cc6aa8b7592976aae587"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 09 07:27:59 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Fri Jan 10 09:35:55 2020"
      },
      "message": "Remove extensions for x-webkit-deflate-frame.\n\nChange-Id: I2ce3f14a133e05add98fdb7f647467d1bfb28a39\n"
    },
    {
      "commit": "2d8512ce8ac2533c9650cc6aa8b7592976aae587",
      "tree": "cb736cf650b1f1c1a1e705a6086721386b4eea9f",
      "parents": [
        "b82d3647624d38a1c5904a60ee04fec311059a73"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 09 08:39:34 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Fri Jan 10 07:53:43 2020"
      },
      "message": "Drop support for Hixie75 and Hybi8.\n\nRemove handshakes related to these versions, as well as\nstream classes. This also fixes test cases that use old protocol\nversions, and also removes some test cases that are specific to\nthe old protocol versions.\n\nChange-Id: Iea295746251b95c8ec14690ae65471864cf2d348\n"
    },
    {
      "commit": "b82d3647624d38a1c5904a60ee04fec311059a73",
      "tree": "8ad317fe7365474a4790e2bb1251f35961c8efaa",
      "parents": [
        "29d22d11c032091bc13a2afc60aa16889515733e"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 09 04:03:28 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 09 09:55:07 2020"
      },
      "message": "Remove Apache Specific Extensions to drop support.\n\nThis commit will drop support for apache extensions.\n\nChange-Id: I38b40796a9965aa41934a515f7d0ba58d0995f17\n"
    },
    {
      "commit": "29d22d11c032091bc13a2afc60aa16889515733e",
      "tree": "731f1fadeb8e2b078d33adf9943d405803dc9518",
      "parents": [
        "fe9c61c900e64f854bdfc3f68e96ed39117d1b4f"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Wed Jan 08 09:51:55 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 09 05:48:51 2020"
      },
      "message": "Remove multiplexing related files.\n\nAlso remove and modify tests that test mutiplexing feature.\n\nChange-Id: I5c3e60fed58558104c4dcbfb1a509ce29b52cd7c\n"
    },
    {
      "commit": "fe9c61c900e64f854bdfc3f68e96ed39117d1b4f",
      "tree": "0dc5d593fd26dc16fcbfd27b3422ad56b16a00fe",
      "parents": [
        "656214e8993d18cb230f1260b718769bfed6341b"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Wed Jan 08 09:03:49 2020"
      },
      "committer": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Thu Jan 09 05:47:02 2020"
      },
      "message": "Remove XHR benchmark handler and the related examples.\n\nRemove XHR benchmark handler suuport from standalone.py.\nAlso remove fetch benchmark related examples.\n\nChange-Id: I6503f1c9af96287bed6bbe0824ac5cf73a7b6201\n"
    },
    {
      "commit": "656214e8993d18cb230f1260b718769bfed6341b",
      "tree": "482c51ac538b42387d77ffd1d34fca92b93f5bdd",
      "parents": [
        "b79b28f2278aa3c5e94f841fc9bc501274312293"
      ],
      "author": {
        "name": "Keita Suzuki",
        "email": "suzukikeita@google.com",
        "time": "Tue Jan 07 08:09:20 2020"
      },
      "committer": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Thu Jan 09 02:37:58 2020"
      },
      "message": "Update the README.md to pywebsocket3.\n\nAlso merge README to README.md.\n\nChange-Id: Ie1f30d8f8ee315b4f481e76c9d71c599894214e3\n"
    },
    {
      "commit": "b79b28f2278aa3c5e94f841fc9bc501274312293",
      "tree": "0861e514a4fcc2e7a18e0a2166252e9996bcad97",
      "parents": [
        "2d7b73c3acbd0f41dcab487ae5c97c6feae06ce2"
      ],
      "author": {
        "name": "John Vandenberg",
        "email": "jayvdb@gmail.com",
        "time": "Fri Mar 29 12:50:51 2019"
      },
      "committer": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Fri Mar 29 12:50:51 2019"
      },
      "message": "Add .travis.yml (#155)\n\n"
    },
    {
      "commit": "2d7b73c3acbd0f41dcab487ae5c97c6feae06ce2",
      "tree": "731f71245e9b62268e29a3fa1fe0e81f0e67ac2d",
      "parents": [
        "0f74d91dacadd7658048ecc750abf7290b7e29e4",
        "4f10526e90c3fe94ee2680ebee41928a8a8ae15f"
      ],
      "author": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Tue Dec 15 07:06:03 2015"
      },
      "committer": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Tue Dec 15 07:06:03 2015"
      },
      "message": "Merge pull request #147 from hiroshige-g/iframe\n\nUse iframe for Chromium perf tests to remove --disable-web-security"
    },
    {
      "commit": "0f74d91dacadd7658048ecc750abf7290b7e29e4",
      "tree": "01b7723888287ef8e2f6275e44fa443062cd8156",
      "parents": [
        "de2aff455f906dc022fcc9c8727bd71a841accdc",
        "e738dec947f008490d87a340dfa3bbd3d5f49aba"
      ],
      "author": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Tue Dec 15 05:15:37 2015"
      },
      "committer": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Tue Dec 15 05:15:37 2015"
      },
      "message": "Merge pull request #144 from google/mintotal\n\nWarn that minimum total doesn\u0027t have any effect on xhr_benchmark.html"
    },
    {
      "commit": "de2aff455f906dc022fcc9c8727bd71a841accdc",
      "tree": "5a4fdc215236745c7599497edb32fdda622df9c5",
      "parents": [
        "fe816aa38162e54dcb06236f887e30b074c6440a",
        "7e824d9b1c78544300f17e857f6babe52038e7ce"
      ],
      "author": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Tue Dec 15 05:12:59 2015"
      },
      "committer": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Tue Dec 15 05:12:59 2015"
      },
      "message": "Merge pull request #148 from google/noteupdate\n\nAdd a note about NaN on the stddev column"
    },
    {
      "commit": "7e824d9b1c78544300f17e857f6babe52038e7ce",
      "tree": "5a4fdc215236745c7599497edb32fdda622df9c5",
      "parents": [
        "fe816aa38162e54dcb06236f887e30b074c6440a"
      ],
      "author": {
        "name": "Takeshi Yoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Dec 15 05:06:36 2015"
      },
      "committer": {
        "name": "Takeshi Yoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Dec 15 05:06:36 2015"
      },
      "message": "Add a note about NaN on the stddev column\n"
    },
    {
      "commit": "e738dec947f008490d87a340dfa3bbd3d5f49aba",
      "tree": "2a20d9d6fb7eedb7ba41889d5ab091e855584a59",
      "parents": [
        "fe816aa38162e54dcb06236f887e30b074c6440a"
      ],
      "author": {
        "name": "Takeshi Yoshino",
        "email": "tyoshino@chromium.org",
        "time": "Fri Dec 04 07:00:28 2015"
      },
      "committer": {
        "name": "Takeshi Yoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Dec 15 04:56:05 2015"
      },
      "message": "Remove code for mintotal from xhr_benchmark.html and fetch_benchmark.html\n"
    },
    {
      "commit": "4f10526e90c3fe94ee2680ebee41928a8a8ae15f",
      "tree": "185d4419733b5c2e01c16e25659637fe29537dc3",
      "parents": [
        "fe816aa38162e54dcb06236f887e30b074c6440a"
      ],
      "author": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Mon Dec 14 08:50:18 2015"
      },
      "committer": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Mon Dec 14 08:57:22 2015"
      },
      "message": "Use iframe for Chromium performance tests to remove --disable-web-security\n\nPreviously:\n(a) util_performance_test.js in Blink runs performance tests using\n(b) pywebsocket\u0027s scripts,\nbut this required --disable-web-security for cross-origin workers\nbecause (a) and (b) have different origins.\n\nWe change this so that:\n(a) util_performance_test.js creates\n(c) \u003ciframe\u003e with src\u003dpywebsocket\u0027s example/*_iframe.html that runs\n    the performance tests on the iframe using\n(b) pywebsocket\u0027s scripts.\nBecause (b) and (c) have the same origin (but (a) has a different origin),\nTests are run in the same-origin while we have an cross-origin iframe.\n\nThis CL adds pywebsocket-side iframe HTML/JavaScript files for (b) and (c).\n\n[1] pywebsocket-side: This CL.\n[2] Chromium-side: https://codereview.chromium.org/1521943002/\n\nBUG\u003dhttps://code.google.com/p/chromium/issues/detail?id\u003d567533\n"
    },
    {
      "commit": "fe816aa38162e54dcb06236f887e30b074c6440a",
      "tree": "d13c15c52a1913dcbd743ce751fc91dff0af8817",
      "parents": [
        "9882bb17499de03238949b56f2a086cf7d654a7c",
        "ed8233f0a4d9ee15fe6ed1776083d136ab87c41a"
      ],
      "author": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Mon Dec 14 08:47:03 2015"
      },
      "committer": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Mon Dec 14 08:47:03 2015"
      },
      "message": "Merge pull request #146 from ricea/non-integer-multipliers\n\nSupport non-integer multpliers in benchmark."
    },
    {
      "commit": "ed8233f0a4d9ee15fe6ed1776083d136ab87c41a",
      "tree": "d13c15c52a1913dcbd743ce751fc91dff0af8817",
      "parents": [
        "b692883ca165f35dc10e081d9d863f2eb2175e5a"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Mon Dec 14 08:22:28 2015"
      },
      "committer": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Mon Dec 14 08:22:28 2015"
      },
      "message": "Update fetch_benchmark and xhr_benchmark also.\n\nAnd add notifyAbort() when failing due to a multiplier \u003c\u003d 1.\n"
    },
    {
      "commit": "b692883ca165f35dc10e081d9d863f2eb2175e5a",
      "tree": "f4cee2bdf81886753aeb2ccd3a2b35eb4deca432",
      "parents": [
        "9882bb17499de03238949b56f2a086cf7d654a7c"
      ],
      "author": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Fri Dec 11 08:38:42 2015"
      },
      "committer": {
        "name": "Adam Rice",
        "email": "ricea@chromium.org",
        "time": "Fri Dec 11 09:33:45 2015"
      },
      "message": "Support non-integer multpliers in benchmark.\n\nAlso report an error for multipliers \u003c\u003d 1.\n"
    },
    {
      "commit": "9882bb17499de03238949b56f2a086cf7d654a7c",
      "tree": "d1f43ea8e8c0c1e63c3ba29c15c9c705b1fc232e",
      "parents": [
        "09d842794c14ca064f8a4223b313ac2c84bd33c8"
      ],
      "author": {
        "name": "dylan d",
        "email": "eris.has.a.dad@gmail.com",
        "time": "Sat Nov 14 23:56:14 2015"
      },
      "committer": {
        "name": "Takeshi Yoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Nov 24 09:04:56 2015"
      },
      "message": "PEP-8/0257 cleanup\n"
    },
    {
      "commit": "09d842794c14ca064f8a4223b313ac2c84bd33c8",
      "tree": "90028ccb0712f88f2712b41320d605488778f34a",
      "parents": [
        "a79008b69d03688723be27d89e30cc62b417507f",
        "c00ffdaa59778890c17860e3aa70dfd15e585a88"
      ],
      "author": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Mon Sep 07 07:23:02 2015"
      },
      "committer": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Mon Sep 07 07:23:02 2015"
      },
      "message": "Merge pull request #140 from hiroshige-g/license\n\nPlace LICENSE and CONTRIBUTING at the root directory"
    },
    {
      "commit": "a79008b69d03688723be27d89e30cc62b417507f",
      "tree": "6373706fd980bbe77d00a5b4eab35603d3da3b84",
      "parents": [
        "76b3a63919d70ca6b4664a98b29967e44254a210",
        "78e3bdc27aa204f974f7d960616f716a8dbf7c4b"
      ],
      "author": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Fri Sep 04 09:12:51 2015"
      },
      "committer": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Fri Sep 04 09:12:51 2015"
      },
      "message": "Merge pull request #141 from hiroshige-g/readme\n\nUpdate README.md to redirect to Wiki."
    },
    {
      "commit": "78e3bdc27aa204f974f7d960616f716a8dbf7c4b",
      "tree": "6373706fd980bbe77d00a5b4eab35603d3da3b84",
      "parents": [
        "8d3d6e65e208fa1ff80798ca5f70a4f0210cabcf"
      ],
      "author": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 02 07:11:53 2015"
      },
      "committer": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 02 07:11:53 2015"
      },
      "message": "Update README.md to short description + redirect to Wiki.\n"
    },
    {
      "commit": "8d3d6e65e208fa1ff80798ca5f70a4f0210cabcf",
      "tree": "91bd88aa57d2aba5bea241a7859618d723ab41e4",
      "parents": [
        "76b3a63919d70ca6b4664a98b29967e44254a210"
      ],
      "author": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Tue Sep 01 11:31:02 2015"
      },
      "committer": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Tue Sep 01 11:31:02 2015"
      },
      "message": "Update README.md to redirect to Wiki.\n"
    },
    {
      "commit": "c00ffdaa59778890c17860e3aa70dfd15e585a88",
      "tree": "b4a558f0e8c6da722e29e7dcd2cf0e8762511748",
      "parents": [
        "76b3a63919d70ca6b4664a98b29967e44254a210"
      ],
      "author": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Mon Aug 31 12:37:10 2015"
      },
      "committer": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Mon Aug 31 12:37:10 2015"
      },
      "message": "Place LICENSE and CONTRIBUTING at the root directory\n"
    },
    {
      "commit": "76b3a63919d70ca6b4664a98b29967e44254a210",
      "tree": "ab708c28bcb0dbacf2d6a65e35ed9b0a8b90e4d2",
      "parents": [
        "c4c4c51a18504efff7577662ea59243c8c2a88ac",
        "5e3cd59ecc54295c02557e2f3404c6e8e77e3005"
      ],
      "author": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Mon Aug 31 10:27:15 2015"
      },
      "committer": {
        "name": "hiroshige-g",
        "email": "hiroshige@google.com",
        "time": "Mon Aug 31 10:27:15 2015"
      },
      "message": "Merge pull request #139 from hiroshige-g/mv\n\nMove files from /src/ to /. Fixes #138."
    },
    {
      "commit": "5e3cd59ecc54295c02557e2f3404c6e8e77e3005",
      "tree": "ab708c28bcb0dbacf2d6a65e35ed9b0a8b90e4d2",
      "parents": [
        "c4c4c51a18504efff7577662ea59243c8c2a88ac"
      ],
      "author": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Mon Aug 31 09:48:08 2015"
      },
      "committer": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Mon Aug 31 09:48:08 2015"
      },
      "message": "Move files from /src/ to /. Fixes #138.\n"
    },
    {
      "commit": "c4c4c51a18504efff7577662ea59243c8c2a88ac",
      "tree": "e559ee67cae9218ee7423c23d91afaf9ae092a2e",
      "parents": [
        "5137aa5c14a4e80d0e205a1fdc2bcacc6a60a2cb"
      ],
      "author": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Thu Aug 20 11:25:48 2015"
      },
      "committer": {
        "name": "Hiroshige Hayashizaki",
        "email": "hiroshige@chromium.org",
        "time": "Thu Aug 20 11:25:48 2015"
      },
      "message": "../finishGoogleCodeGitHubWikiMigration/finishGoogleCodeGitHubWikiMigration: Moved ProjectHome.md from wiki branch to README.md in master branch.\n"
    },
    {
      "commit": "5137aa5c14a4e80d0e205a1fdc2bcacc6a60a2cb",
      "tree": "7598f9ed1f1a2eb50435b2823a6e9904ff5c76fe",
      "parents": [
        "51ca3102748e685decd3dc1b7d68a612b15e5ace"
      ],
      "author": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Wed Aug 19 10:55:39 2015"
      },
      "committer": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Wed Aug 19 10:55:39 2015"
      },
      "message": "Remove draft8 option from PerMessageDeflateExtensionProcessor\n\nRelease note: Remove draft8 option from PerMessageDeflateExtensionProcessor\n\nBUG\u003dhttps://code.google.com/p/pywebsocket/issues/detail?id\u003d133\nR\u003dhiroshige@chromium.org\n\nReview URL: https://codereview.appspot.com/174680044"
    },
    {
      "commit": "51ca3102748e685decd3dc1b7d68a612b15e5ace",
      "tree": "e8280499593d07abde14ca14986cd7e126070ab9",
      "parents": [
        "ff93bef712e60817ef20e35b633585cd73a567b6"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Aug 19 09:56:57 2015"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Aug 19 09:56:57 2015"
      },
      "message": "[benchmark] Add Fetch API performance tests.\n\n- Introduces initWorker() and doAction(), and move common code to util.js.\n- Changes verifyBlob\u0027s doneCallback arguments to match with fetch()\u0027s promises.\n- Adds \u0027Access-Control-Allow-Origin: *\u0027 header to XHR/fetch responses because cross-origin fetch() without such headers is not allowed even with --disable-web-security.\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/226870043"
    },
    {
      "commit": "ff93bef712e60817ef20e35b633585cd73a567b6",
      "tree": "0f2ea87f8c92aefdb411c298b0c54d043b335a72",
      "parents": [
        "588d50484507fc2c0370204034af7cad78974929"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Jul 29 07:56:56 2015"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Jul 29 07:56:56 2015"
      },
      "message": "[benchmark] Add config for HTTP method and cache control config\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/177470044"
    },
    {
      "commit": "588d50484507fc2c0370204034af7cad78974929",
      "tree": "d01f509bb66081afc454334abc82160dbcb6f54c",
      "parents": [
        "286b871b1c732df20a8a4e8fea6a7bbd61c1ec8e"
      ],
      "author": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Nov 25 03:46:01 2014"
      },
      "committer": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Nov 25 03:46:01 2014"
      },
      "message": "Remove permessage-compress extension support\n\nRelease note: Remove permessage-compress extension support\n\nR\u003dyhirano@chromium.org\n\nReview URL: https://codereview.appspot.com/166260043"
    },
    {
      "commit": "286b871b1c732df20a8a4e8fea6a7bbd61c1ec8e",
      "tree": "58bce05c9700c433b8b8f03406e9d49608110856",
      "parents": [
        "6aa4ebb863ec0aabda6171e9994d2336e7d3aea9"
      ],
      "author": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Nov 25 03:43:55 2014"
      },
      "committer": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Nov 25 03:43:55 2014"
      },
      "message": "Update expectation for permessage-deflate compression result for empty payload\n\nIt seems newer zlib library omits unnecessary compressed block and just puts\nuncompressed block for empty input.\n\nRelease note: n/a\n\nR\u003dyhirano@chromium.org\n\nReview URL: https://codereview.appspot.com/179880043"
    },
    {
      "commit": "6aa4ebb863ec0aabda6171e9994d2336e7d3aea9",
      "tree": "800c3c6a44a5b018b5476f076bf7fabb990a4d39",
      "parents": [
        "d51867c2debf2e9b2fa7fc2412fe9e532bf83b4c"
      ],
      "author": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Nov 25 03:40:22 2014"
      },
      "committer": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Nov 25 03:40:22 2014"
      },
      "message": "Add comments about Stream.close_connection()\u0027s behavior\n\nRelease note: n/a\n\nR\u003dhiroshige@chromium.org\n\nReview URL: https://codereview.appspot.com/170050043"
    },
    {
      "commit": "d51867c2debf2e9b2fa7fc2412fe9e532bf83b4c",
      "tree": "f4708a2af7f7ac54cb38dd695ef299d09d897bd1",
      "parents": [
        "20b418b053531e2345463ad931cf3bf602936491"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Nov 12 06:57:37 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Nov 12 06:57:37 2014"
      },
      "message": "Call notifyAbort when error occurs\n\nnotifyAbort will be used to terminate the benchmark in performance tests.\nOtherwise, the benchmark stops working, causing timeout.\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/173940043"
    },
    {
      "commit": "20b418b053531e2345463ad931cf3bf602936491",
      "tree": "ac9f377f7429d4dcceeeb09d079707de217f544a",
      "parents": [
        "f0236e143cc8c43e9a8a2f7d972b882611f925a4"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Mon Nov 10 11:08:28 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Mon Nov 10 11:08:28 2014"
      },
      "message": "[benchmark] Check and warn if proxy is enabled\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/147450043"
    },
    {
      "commit": "f0236e143cc8c43e9a8a2f7d972b882611f925a4",
      "tree": "40eae16df8d0fee059c21de133266848f6b20ed9",
      "parents": [
        "e650db3f91884a823ec9a1be4c8fabd8c449fd0d"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Oct 24 04:26:56 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Oct 24 04:26:56 2014"
      },
      "message": "[xhr_event_logger] Show timestamps of events\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/162010043"
    },
    {
      "commit": "e650db3f91884a823ec9a1be4c8fabd8c449fd0d",
      "tree": "554edbbba0777e94ca333ee171debfe1780db7dc",
      "parents": [
        "a8ecd469c0a4c81f93a1ad9c35e9425dfcbba945"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Oct 23 08:16:00 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Oct 23 08:16:00 2014"
      },
      "message": "[benchmark] Do not call measureValue in warm-up iterations\n\nR\u003dricea@chromium.org\n\nReview URL: https://codereview.appspot.com/154680043"
    },
    {
      "commit": "a8ecd469c0a4c81f93a1ad9c35e9425dfcbba945",
      "tree": "0fad501f000decf9262844e5327f077413ad2fbe",
      "parents": [
        "704e9142a8035e5488d915e103285220bc39d5a6"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Oct 02 07:48:33 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Oct 02 07:48:33 2014"
      },
      "message": "Add warm-up iteration config\n\nThe first n iterations are excluded from the average\nwhere n is the number of warm-up iterations.\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/147190043"
    },
    {
      "commit": "704e9142a8035e5488d915e103285220bc39d5a6",
      "tree": "0d7281783cd409b9e57f0ac98ae6cd0270f73070",
      "parents": [
        "18a3ac529668185090305e2b5bb1db0150996e3c"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Sep 25 03:03:08 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Sep 25 03:03:08 2014"
      },
      "message": "[benchmark] Do not abort() when readyState is DONE in destroyAllXHRs\n\nThis is to supress DevTools error messages, because on Chrome calling abort()\nin an onreadystatechange handler in sync mode causes a NetworkError message,\neven if it is after transition to DONE state.\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/142550043"
    },
    {
      "commit": "18a3ac529668185090305e2b5bb1db0150996e3c",
      "tree": "a61797071384e55cd7d8abcdad2dcb6ccfbee505",
      "parents": [
        "91c7eebc6e5722ef3c21d6fd7b7b11a68a31c04e"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 24 05:35:26 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 24 05:35:26 2014"
      },
      "message": "[benchmark] Add XHR Async/Sync config\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/148740043"
    },
    {
      "commit": "91c7eebc6e5722ef3c21d6fd7b7b11a68a31c04e",
      "tree": "c69948d02e7afa04bc613071db9292b940637e6b",
      "parents": [
        "d0b7b3131dfc34a8a2bc5eccc0160a85d409f684"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Sep 18 04:19:37 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Sep 18 04:19:37 2014"
      },
      "message": "Clear timerID in the result reporting task\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/142960043"
    },
    {
      "commit": "d0b7b3131dfc34a8a2bc5eccc0160a85d409f684",
      "tree": "b50b183ded4e94ea38caf2cd75f259531b5316a0",
      "parents": [
        "349da646e3963a7f749654706fe0efa9f6a2e7d5"
      ],
      "author": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Wed Sep 17 03:54:30 2014"
      },
      "committer": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Wed Sep 17 03:54:30 2014"
      },
      "message": "When returning 401 response, WebSocketRequestHandler.parse_request must return False\n\nReturning False prevents the default handler from being run\n\nR\u003dricea@chromium.org\n\nReview URL: https://codereview.appspot.com/138370043"
    },
    {
      "commit": "349da646e3963a7f749654706fe0efa9f6a2e7d5",
      "tree": "55c66941683a8a5d12638d8139c70ec46e6cd020",
      "parents": [
        "e2891e5789f55103ec3f6916944309852164e901"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 12 06:54:30 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 12 06:54:30 2014"
      },
      "message": "Clear timers at stop() in benchmark.js (to be consistent with xhr_benchmark.js)\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/142950043"
    },
    {
      "commit": "e2891e5789f55103ec3f6916944309852164e901",
      "tree": "0ee90dd116eae4cf1ea313b530344ec5d71242b8",
      "parents": [
        "4726a4d0eacb42ac6aa0448cd5fd772402a0ba59"
      ],
      "author": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Fri Sep 12 05:59:31 2014"
      },
      "committer": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Fri Sep 12 05:59:31 2014"
      },
      "message": "[xhr_event_logger] Add an option to test sync XHR\n\nR\u003dhiroshige@chromium.org\n\nReview URL: https://codereview.appspot.com/139550043"
    },
    {
      "commit": "4726a4d0eacb42ac6aa0448cd5fd772402a0ba59",
      "tree": "35a1136573ed43c4fd6c51a476bc237555221a49",
      "parents": [
        "04416af64b04624ae9c9607c4f618bd40c2f7747"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 12 05:39:13 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 12 05:39:13 2014"
      },
      "message": "Clear event listeners by setting them to null, instead of function() {}.\n\nThis reduces the number of listeners shown in the Chrome DevTools timeline.\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/136530044"
    },
    {
      "commit": "04416af64b04624ae9c9607c4f618bd40c2f7747",
      "tree": "2913a1aae218dea48c865bfad23fa71d807c7b78",
      "parents": [
        "09324da4424cebedf25dfada08cc850dbfa86605"
      ],
      "author": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Fri Sep 12 04:32:20 2014"
      },
      "committer": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Fri Sep 12 04:32:20 2014"
      },
      "message": "Fix the filename of the utility definition file in xhr_event_logger.html.\n\nIt\u0027s been renamed to util_main.js\n\nR\u003dhiroshige@chromium.org\n\nReview URL: https://codereview.appspot.com/137500043"
    },
    {
      "commit": "09324da4424cebedf25dfada08cc850dbfa86605",
      "tree": "314ba0b2bc77adbe0e9dc16c0edf721a681e6917",
      "parents": [
        "5471e103ac4c1b84db5f0c1cad415b8643ffacde"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 10 21:31:00 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 10 21:31:00 2014"
      },
      "message": "Add config.measureValue callback\n\nconfig.measureValue is call with the elapsed time in milliseconds for every measurement.\nThis is intended to be used in Chromium Performance Test.\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/141390043"
    },
    {
      "commit": "5471e103ac4c1b84db5f0c1cad415b8643ffacde",
      "tree": "e707fbcf69d3290addfab88df47e10ceb8c72760",
      "parents": [
        "e55fd683f2a260b199faf305adbd4d902e237576"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 10 08:16:34 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 10 08:16:34 2014"
      },
      "message": "Refactoring: rename responseType to dataType in xhr_benchmark\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/137450043"
    },
    {
      "commit": "e55fd683f2a260b199faf305adbd4d902e237576",
      "tree": "102101685aa4cdbf686dc3ca201c7de065408033",
      "parents": [
        "875c955f5d81c797e2be7e90b40bafdb563e27cf"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 10 06:57:04 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Wed Sep 10 06:57:04 2014"
      },
      "message": "Add benchmark option to run on workers\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/135620043"
    },
    {
      "commit": "875c955f5d81c797e2be7e90b40bafdb563e27cf",
      "tree": "5d4ef97d0907b2e14f5e48785fac066131f7f619",
      "parents": [
        "f2da9da04acdcb0020f6011c899b391526160104"
      ],
      "author": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Sep 09 05:30:11 2014"
      },
      "committer": {
        "name": "tyoshino",
        "email": "tyoshino@chromium.org",
        "time": "Tue Sep 09 05:30:11 2014"
      },
      "message": "xhr_event_logger new features (upload event, dump ProgressEvent, response mode)\n\nR\u003dhiroshige@chromium.org\n\nReview URL: https://codereview.appspot.com/141740043"
    },
    {
      "commit": "f2da9da04acdcb0020f6011c899b391526160104",
      "tree": "bc68b7487ad7c9841cf97ccec4c8e4f5f9e4ae89",
      "parents": [
        "a8da02fa358adede9c111e28d8dd8f6a4907c3ac"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 05 07:41:09 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 05 07:41:09 2014"
      },
      "message": "Show user agent in summary box\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/134510043"
    },
    {
      "commit": "a8da02fa358adede9c111e28d8dd8f6a4907c3ac",
      "tree": "289e389f0bc8f88cdf9cec80fb3698bcbd260198",
      "parents": [
        "b6e177ee1d4c3282b92e4957f3b3ca30cbfef74e"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 05 07:19:18 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 05 07:19:18 2014"
      },
      "message": "Display config in summary box\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/138110043"
    },
    {
      "commit": "b6e177ee1d4c3282b92e4957f3b3ca30cbfef74e",
      "tree": "4e50c4fa1bd67b7e97679bb16e346dd8ab8a6f37",
      "parents": [
        "e288e67b5655ce3300ff9141300a34d308f150bd"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 05 06:01:50 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Fri Sep 05 06:01:50 2014"
      },
      "message": "Fix radio box handling of xhr_benchmark.html to work on IE\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/135480043"
    },
    {
      "commit": "e288e67b5655ce3300ff9141300a34d308f150bd",
      "tree": "bbacaa67df5c9c0796d38610ff7a3ab073e47bff",
      "parents": [
        "3f2de00b46660fdacd33de554c846623bfbba7e0"
      ],
      "author": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Sep 04 10:57:17 2014"
      },
      "committer": {
        "name": "hiroshige",
        "email": "hiroshige@chromium.org",
        "time": "Thu Sep 04 10:57:17 2014"
      },
      "message": "Replace variable name |runner| with |task|\n\nR\u003dtyoshino@chromium.org\n\nReview URL: https://codereview.appspot.com/133550043"
    }
  ],
  "next": "3f2de00b46660fdacd33de554c846623bfbba7e0"
}
