)]}'
{
  "log": [
    {
      "commit": "6256d99b285baa672cec1d0eeff65c43b1412c35",
      "tree": "4694e08d39f89483da0e5f6b17a7200e5d87ccfb",
      "parents": [
        "22f73e678c2b807595337bb595553cef456623d6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 20 18:28:13 2021 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 02 10:20:32 2021 -0700"
      },
      "message": "Add test for ConnectionState to_string.\n\nTest: treehugger\nChange-Id: I0d9fa8195075b8586348622ce6a68a71d024193e\n"
    },
    {
      "commit": "65d18e2c1cc48b585811954892311b28a4c3d188",
      "tree": "eecf14e167f3453cf7135215faeaffa2b7e4d868",
      "parents": [
        "b085177e9cd07a8b050cb7615e068327912b95ff"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 22 20:57:26 2020 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 27 14:38:28 2020 -0700"
      },
      "message": "adbd: avoid compiling more code in the daemon.\n\nStrip out more code that has no meaning on device, to \"improve\"\ncoverage.\n\nTest: test_device.py over TCP\nChange-Id: Id8d9fa6cc6c6c30773f67303bcc89e6d60824700\n"
    },
    {
      "commit": "816c2d2442ef84611c27c0dabd642f78124f56ca",
      "tree": "b1282ff03d215ae78ab86e8189e78e16fc7b6124",
      "parents": [
        "11bf0307ab15fc077f44033b53b68caed472f71e"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Mar 26 18:19:28 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Apr 09 22:26:48 2020 -0700"
      },
      "message": "[adb] Don\u0027t copy features set on each get()\n\nThe features are already cached in a static and don\u0027t change.\nLet\u0027s return the cached set instead of copying it every time.\n\nBug: 150183149\nTest: manual\nChange-Id: Ifdca852cc3b32e09e50ea4771f7878987c46cce8\n"
    },
    {
      "commit": "b51193a16a5be0da7f86c9b190825687e35ff345",
      "tree": "4fbf256ce42a18d7533a38ca4371bd871ed0c0a0",
      "parents": [
        "8c1cb8779b968e4ab948a4e96e4b474eb8e0dee8"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 28 13:50:37 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Jul 08 14:37:27 2019 -0700"
      },
      "message": "adb: move fdevent to its own folder.\n\nPreparatory refactoring for platform-specific implementations.\n\nTest: mma\nChange-Id: I0f600122ac89241788c5f3300f362fd9ef02ddcd\n"
    },
    {
      "commit": "a9655ad144351e7a3593a44a955309a2708bfc5d",
      "tree": "1bfc22172dd7e97f5dd30417db913ccdf7329eb4",
      "parents": [
        "2b8b5059abd1ffacf7520e952b806bf667c73b21"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 19 15:24:53 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 19 15:38:10 2018 -0700"
      },
      "message": "adb: set main thread in transport tests.\n\nPreviously, we were relying on tests run previously to set the main\nthread ID, which fails when the tests are sharded.\n\nTest: for i in `seq 0 4`; do GTEST_SHARD_INDEX\u003d$i GTEST_TOTAL_SHARDS\u003d5 /data/nativetest64/adbd_test/adbd_test; done\nChange-Id: I15ce70b4598b6ffcf3f5467d16c917f23f668daf\n"
    },
    {
      "commit": "b4edbdf7ebd9fd848aafbd30819eee80cc018573",
      "tree": "8636f73914d82f4274bbf2af1542f1ff0fa875bf",
      "parents": [
        "ce7a284729ae844c77ace2a45376c1a62d09ea1d"
      ],
      "author": {
        "name": "Luis Hector Chavez",
        "email": "lhchavez@google.com",
        "time": "Wed Jul 18 21:18:27 2018 -0700"
      },
      "committer": {
        "name": "Luis Hector Chavez",
        "email": "lhchavez@google.com",
        "time": "Thu Jul 19 09:41:40 2018 -0700"
      },
      "message": "adb: Remove most C-style allocations\n\nThis change gets rid of most malloc/calloc/free calls. The future is\nnow!\n\nBug: None\nTest: test_device.py\nChange-Id: Iccfe3bd4fe45a0319bd9f23b8cbff4c7070c9f4d\n"
    },
    {
      "commit": "395b86a8a087416969f76b62915cccab2e5b5f7d",
      "tree": "1aa553bbe4387160c803e2991f56413a07f61d98",
      "parents": [
        "30c4266dba6be6e5833f3d0073cc9408349c1e9a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Sun Jan 28 20:32:46 2018 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 30 15:22:41 2018 -0800"
      },
      "message": "adb: extract atransport\u0027s connection interface.\n\nAs step one of refactoring atransport to separate out protocol handling\nfrom its underlying connection, extract atransport\u0027s existing\nhand-rolled connection vtable out to its own abstract interface.\n\nThis should not change behavior except in one case: emulators are\nnow treated as TCP devices for the purposes of `adb disconnect`.\n\nTest: python test_device.py, with walleye over USB + TCP\nTest: manually connecting and disconnecting devices/emulators\nChange-Id: I877b8027e567cc6a7461749432b49f6cb2c2f0d7\n"
    },
    {
      "commit": "3cf1b36e2f914ce7c6f233e5ff3f1f6614940c80",
      "tree": "b75acfe89e71a396a07c247f5ea44e476ffcf8d4",
      "parents": [
        "3187510b17f7eeeb67286a4a842abd503906bb5c"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 10 16:01:01 2017 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Apr 20 10:14:59 2017 -0700"
      },
      "message": "adb: fix two device offline problems.\n\nWhen device goes offline, user usually has to manually replug the\nusb device. This patch tries to solve two offline situations, all\nbecause when adb on host is killed, the adbd on device is not notified.\n\n1. When adb server is killed while pushing a large file to device,\nthe device is still reading the unfinished large message. So the\ndevice thinks of the CNXN message as part of the previous unfinished\nmessage, so it doesn\u0027t reply and the device is in offline state.\n\nThe solution is to add a write_msg_lock in atransport struct. And it\nkicks the transport only after sending a whole message. By kicking\nall transports before exit, we ensure that we don\u0027t write part of\na message to any device. So next time we start adb server, the device\nshould be waiting for a new message.\n\n2. When adb server is killed while pulling a large file from device,\nthe device is still trying to send the unfinished large message. So\nadb on host usually reads data with EOVERFLOW error. This is because\nadb on host is reading less than one packet sent from device.\n\nThe solution is to use buffered read on host. The max packet size\nof bulk transactions in USB 3.0 is 1024 bytes. By preparing an at least\n1024 bytes buffer when reading, EOVERFLOW no longer occurs. And teach\nadb host to ignore wrong messages.\n\nTo be safe, this patch doesn\u0027t change any logic on device.\n\nBug: http://b/32952319\nTest: run python -m unittest -q test_device.DeviceOfflineTest\nTest: on linux/mac/windows with bullhead, ryu.\nChange-Id: Ib149d30028a62a6f03857b8a95ab5a1d6e9b9c4e\n"
    },
    {
      "commit": "e7daf5751162830000425c0e7de13a90809f1988",
      "tree": "f21497070656cfc371214565b607eae4ea5e7d52",
      "parents": [
        "007036c0c78dacdf00cff08fe79568f1409d61fc"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 21 12:37:10 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 21 17:22:22 2016 -0700"
      },
      "message": "adb: kill adb_mutex_t, adb_cond_t.\n\nNow that we have support for std::mutex and std::condition_variable on\nWindows, remove our mutex compatibility layer in favor of the C++ one.\n\nBug: http://b/31653591\nTest: mma \u0026\u0026 $ANDROID_HOST_OUT/nativetest64/adb_test/adb_test \u0026\u0026 \\\n      python test_adb.py \u0026\u0026 python test_device.py\n      (also on Windows)\n\nChange-Id: I5b7ed9c45cc2a32edcf4e77b56dc28e441f15f34\n"
    },
    {
      "commit": "f2a9f9b01d516e08b01debf322971e8da9910bbe",
      "tree": "2574a09598c2467301d7ee192ace42e1a2a34a60",
      "parents": [
        "54ee6d12e6a56ccf0c083a7e77454e2bc40eaed2"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Apr 18 11:22:34 2016 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Apr 18 11:22:34 2016 -0700"
      },
      "message": "Fix kick_transport test.\n\nFix broken kick_transport test, and make it not access atransport\ninternal variables.\n\nBug: 25935458\nChange-Id: I91b4d32a222b2f369f801bbe3903acac9c8ea4f7\n"
    },
    {
      "commit": "c929c6f3d90517cded78b65d0ee97d2fa2bf3572",
      "tree": "135f4a05ee5764b01bd22a0b00a4eeeb963d71b0",
      "parents": [
        "edab9d1519aa3a68f567e2033f783e8bda4719ce"
      ],
      "author": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Tue Mar 01 08:58:26 2016 -0800"
      },
      "committer": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Wed Mar 02 12:54:58 2016 -0800"
      },
      "message": "adb: relax serial matching rules.\n\nCurrently targeting a device by serial requires matching the serial\nnumber exactly. This CL relaxes the matching rules for local transports\nto ignore protocol prefixes and make the port optional:\n  [tcp:|udp:]\u003chostname\u003e[:port]\n\nThe purpose of this is to allow a user to set ANDROID_SERIAL to\nsomething like \"tcp:100.100.100.100\" and have it work for both fastboot\nand adb (assuming the device comes up at 100.100.100.100 in both\nmodes).\n\nThis CL also adds some unit tests for the modified functions to make\nsure they work as expected.\n\nBug: 27340240\nChange-Id: I006e0c70c84331ab44d05d0a0f462d06592eb879\n"
    },
    {
      "commit": "7a8c7cba77f7e4df1dceae41d24ca1e48a50b96c",
      "tree": "27916ceb8c4aaa16098115601e570c31f4f56af3",
      "parents": [
        "ca9fe420bcdad390204cab32dc81b1e0444f7ffe"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Feb 23 18:05:57 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 24 17:56:12 2016 -0800"
      },
      "message": "adb: fix leak of framework_fd.\n\nMove the fdevent for the framework authentication connection out of\natransport into its own static variable in adb_auth_client, since its\nlifetime is completely unrelated to that of the USB connection.\n\nBug: http://b/27297963\nChange-Id: Ie6180d0b59d133120c5755e239e76ab33ed3cc1d\n"
    },
    {
      "commit": "3d9072bfe6e85b479575bd9600c6b5c04e5499c9",
      "tree": "a6083574db28238bf6bd6502308ac1e5dc570eee",
      "parents": [
        "19bec5b329fe202795688bfb76d77f4560adf2c6"
      ],
      "author": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Fri Sep 25 13:04:21 2015 -0700"
      },
      "committer": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Fri Sep 25 13:10:17 2015 -0700"
      },
      "message": "adb: fix adbd feature parsing for no features.\n\nPreviously the transport features list was only overwritten if a\nnew feature list was found. However, adbd can reuse the same atransport\nobject even if the adb server is killed and restarted, so the feature\nlist was not cleared properly if the newly started adb server didn\u0027t\nprovide one.\n\nThis CL fixes the bug by clearing the transport features list whenever\na connection banner is parsed.\n\nBug: http://b/24405971\nChange-Id: Ia6ee6c9a46a621534681f6d4d7df77156b885eb9\n"
    },
    {
      "commit": "a07dbad65fd9f2644876b6a0448bad66a5a29387",
      "tree": "a54f3408c9166dbe9b73b51e16f7b021405bc717",
      "parents": [
        "b3db0b3fcde060299eb88b6a911f19b3922a0851"
      ],
      "author": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Tue Sep 22 10:43:08 2015 -0700"
      },
      "committer": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Tue Sep 22 12:50:11 2015 -0700"
      },
      "message": "adb: add -Tt options to `adb shell`.\n\nAdds -T (no PTY) and -t (force PTY) options to `adb shell` to mimic\nssh options. Small cleanup to send an entire FeatureSet to the adb\nclient at once to avoid multiple round-trips when querying multiple\nfeatures.\n\nKnown issue: humans using `adb shell -T` to start a non-PTY interactive\nsession may experience problems since neither side will have PTY\nfeatures like echoing or newline translation. This is probably OK for\nnow as the -Tt options are primarily useful for scripting.\n\nBug: http://b/23825231\nChange-Id: I4d0df300db0abd1f7410bab59dd4d5b991babda7\n"
    },
    {
      "commit": "2d4c198cb4f1227e0352df1201aa626909e44aa8",
      "tree": "d87171479bbf4f2ed1aa0e738ed9fdb54b89e66e",
      "parents": [
        "81aa502a8d5adb680b565068d7a87e04817b376c"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Aug 28 15:09:44 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Aug 28 16:36:00 2015 -0700"
      },
      "message": "adb: clean up transport disconnect operations.\n\nMove operations from global functions into member functions.\nAdd unit test.\n\nChange-Id: Id4543d8e78541eb08c8e629f180c605c699737ec\n"
    },
    {
      "commit": "be8e54b58cb35f4b58cbf6dc04db3796e630050a",
      "tree": "8ed5592ef97fc60f85e748ec09b9666db476ef71",
      "parents": [
        "6d6cb544023baae04e60238bdde567976781955d"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 18 13:06:53 2015 -0700"
      },
      "committer": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Fri Aug 14 08:24:37 2015 -0700"
      },
      "message": "Add feature list to connection banner.\n\nThis allows us to test for features explicitly rather than relying on\nthe protocol version number, allowing us to fall back gracefully if a\nfeature is not supported.\n\nThis will be needed for the upcoming shell upgrades for stdout/stderr\nseparation and exit code reporting.\n\nChange-Id: Ibb1d8ad2611f7209901ee76d51346b453e9c5873\n"
    },
    {
      "commit": "c9ddd81c5649d5a4c2349691cb358d636c3cbb20",
      "tree": "ee52e2181e83ff1eb96e79c70414b7b5a08c8614",
      "parents": [
        "62b9d667def517b8bfb712c2fe818b57c05811e9"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Sun May 24 15:36:28 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 03 12:44:43 2015 -0700"
      },
      "message": "adb_test/libbase_test: win32: get some tests working\n\nadb_test:\n\n* Fix adb_utils directory_exists test for Windows. The test actually\nfails because directory_exists() is not aware of junctions or symlinks,\nbut I\u0027m not really sure if that is a bad thing (since these are rare on\nWindows to begin with).\n\n* Fix crash during transport tests due to mutex not being initialized.\n\n* io tests fail for various reasons (see adb_io_test.cpp for more info).\n\nlibbase_test:\n\n* Get it building on Win32 by implementing mkstemp() and mkdtemp().\n\n* Run StringPrintf %z test on Windows because it passes because we build\nwith __USE_MINGW_ANSI_STDIO which implements %z.\n\n* I didn\u0027t fixup the logging tests: some logging tests fail because when\nabort() is called on Windows, by default it pops up UI asking whether a\ncrash dump should be sent to Microsoft. To some degree this makes sense,\nas I think LOG(FATAL) does crash dumping in Chromium. This should be\nrevisited in the future.\n\nChange-Id: Iaa2433e5294ff162e0b2aa9fe6e4ec09a6893f7a\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "ecce503aa0bfb68469e4c8aef695813ba879e6de",
      "tree": "44e69daadd7a29502b54eac48eabfc36332523b9",
      "parents": [
        "9ca39e3b3771099dc41dd37968c56a2d15c3a4fc"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 18 16:46:31 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 21 15:49:05 2015 -0700"
      },
      "message": "Make atransport be a real class.\n\nUsing non-POD types in atransport means we\u0027ll need to start treating\nit as a real class (specifically with regards to new/delete rather\nthan malloc/free).\n\nI\u0027ve also cleaned up the home grown linked lists for transport_list\nand pending_list to just be std::lists. We might want to refactor that\nagain to be an std::unordered_map keyed on serial, since that seems to\nbe a common way to search it.\n\nChange-Id: I7f5e23cdc47944a9278099723ca029585fe52105\n"
    },
    {
      "commit": "4895c52db5ead27a2d9ffc4c3f97dbad269e795a",
      "tree": "ea73418ffdd600f42834f77c0b1bac50ace945e6",
      "parents": [
        "bd3d448fe4532bbeeda358dba36958246dcaee36"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Feb 20 17:24:58 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Feb 25 10:57:26 2015 -0800"
      },
      "message": "Add some basic tests to adb.\n\nChange-Id: I946b5b1e5650540db3b4f75892214c4218b3baf3\n"
    }
  ]
}
