)]}'
{
  "log": [
    {
      "commit": "155d52155b67d1563d0a55f654683d98832d0860",
      "tree": "a8a312d22ca34244a27523aced9393c74ef764dc",
      "parents": [
        "c2d407a7dc4ea0f402037cac548b47e95bf426a1"
      ],
      "author": {
        "name": "Matt Sarett",
        "email": "msarett@google.com",
        "time": "Tue Apr 25 17:32:34 2017 -0400"
      },
      "committer": {
        "name": "Matt Sarett",
        "email": "msarett@google.com",
        "time": "Wed Apr 26 16:17:46 2017 -0400"
      },
      "message": "Remove uses of SkBitmap::copyTo\n\nThis API is being deleted:\nskbug.com/6464\n\nTest: Refactor\n\nChange-Id: Id78653ca45d6bfee2e4f9c9c24c2414b888f0df5\n"
    },
    {
      "commit": "6d09d547b06b86b337e8e16c2585b3882a5bb1dc",
      "tree": "0c81514e6726b36c90433e9d25eeb861702615f9",
      "parents": [
        "c4c4a1e76e4de30a43c3396d3e0b55209666346d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 29 14:51:31 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 29 14:51:31 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: Ic550902559b0800bdcfc0b1d301313a909434eed\n"
    },
    {
      "commit": "4a9c3891d4f890109e02bc83fecf9bcdf56a9395",
      "tree": "d0ad820a4e7b143df8d71708a7790e59b0467189",
      "parents": [
        "904a1045ced36e844605b9764c3cb184976ea0a9"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Mon Jul 07 15:44:40 2014 -0400"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Mon Jul 07 15:47:55 2014 -0400"
      },
      "message": "kNative_8888_SkColorType is now kN32_SkColorType\n\nChange-Id: I13421a21de611203c62c1c1c36570a8cc803907b\n"
    },
    {
      "commit": "cc11f15f76a62ded3e403cb2bc818c6aa5bf261c",
      "tree": "1df94766a0343820a8b542d3a79705a33d9fcf59",
      "parents": [
        "35dec44394358bac2cdf31d5e8377687a1723476"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Mon Mar 31 16:52:13 2014 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Apr 04 14:42:39 2014 -0400"
      },
      "message": "Update to call new Skia APIs.\n\nI816129d49c0118453222916f3c818eccac33663d merges a new version of\nSkia that updates various APIs. Call the new ones.\n\nSkBitmap::copyTo now takes an SkColorType instead of an\nSkBitmap::Config, so do the conversion with\nSkBitmapConfigToColorType or use the enum when it makes sense.\n\nCall SkImageDecoder::decodeSubset instead of (deprecated)\nSkImageDecoder::decodeRegion.\n\nOverride SkCanvas::ClipVisitor::clipRRect in ClipCopier.\n\nIn Canvas::clip calls, call SkCanvas::isClipEmpty(), which was\npreviously called inside the clip call, to determine the return value.\n\nFor various SkPaint effects, call the new factories (as the constructors\nhave been made protected).\n\nImplement SkJavaOutputStream::bytesWritten(), overriding a new pure\nvirtual function on SkWStream.\n\nUpdate Matrix calls to always return true (since SkMatrix calls no\nlonger return a value).\n\nDepends on I816129d49c0118453222916f3c818eccac33663d (skia).\n\nChange-Id: I5cdcea827ebff587df0bbddc0965e3e0fbf48002\n"
    },
    {
      "commit": "9158825f9c41869689d6b1786d7c7aa8bdd524ce",
      "tree": "f41944461539f0c70030668b4558296469c307d3",
      "parents": [
        "30d032928a294fbb6f385e9d0367a75b7bf2649b"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Nov 22 08:25:26 2013 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Dec 19 15:25:37 2013 -0800"
      },
      "message": "Move some system services to separate directories\n\nRefactored the directory structure so that services can be optionally\nexcluded. This is step 1. Will be followed by another change that makes\nit possible to remove services from the build.\n\nChange-Id: Ideacedfd34b5e213217ad3ff4ebb21c4a8e73f85\n"
    },
    {
      "commit": "8335f1ccccedb6655d96d9d5b697a7f0938235dd",
      "tree": "30a7f8b3e646157365dd51222665a68753fa25e3",
      "parents": [
        "57235fc65b5920f4867e66c8263efab49e92a21b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    },
    {
      "commit": "2352b978a3c94cd88f41d0d908f961333fdac1e9",
      "tree": "24f8f19e9b2895cc2c3489bf2dd7a09aaf5834db",
      "parents": [
        "f76dc56c33ba66138af70d72803cf55f881c3717"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 12 22:39:53 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 19 15:35:51 2011 -0700"
      },
      "message": "Initial checkin of spot presentation for touchpad gestures.\n\nAdded a new PointerIcon API (hidden for now) for loading\npointer icons.\n\nFixed a starvation problem in the native Looper\u0027s sendMessage\nimplementation which caused new messages to be posted ahead\nof old messages sent with sendMessageDelayed.\n\nRedesigned the touch pad gestures to be defined in terms of\nmore fluid finger / spot movements.  The objective is to reinforce\nthe natural mapping between fingers and spots which means there\nmust not be any discontinuities in spot motion relative to\nthe fingers.\n\nRemoved the SpotController stub and folded its responsibilities\ninto PointerController.\n\nChange-Id: I5126b1e69d95252fda7f2a684c9287e239a57163\n"
    },
    {
      "commit": "5541de9ea3513a12d1ac2ad07e7e04a3aa7741a0",
      "tree": "3ac3cd85bf588df25aed0a0df29e70629a096547",
      "parents": [
        "5008e92d1fd573d926cd55c39ca723a6fbdf7c4b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 11 11:54:25 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 11 14:08:29 2011 -0700"
      },
      "message": "Add a sprite controller.\n\nRefactored PointerController to extract the surface management\ncode to a new component called a SpriteController so that it can\nbe used to move finger tracking spots around the screen as well.\nThe SpriteController is designed to fully decouple the client from\nany latency introduced by surface transactions and drawing.\nAll sprite updates are performed asynchronously on the Looper using\na copy of the sprite state.\n\nAdded a stub SpotController implementation for touch pad UX.\nIt will be implemented in a subsequent patch.\n\nFixed a little bug in pointer orientation changes when entering\nDISPLAY_ORIENTATION_90 the x offset was clobbered.\n\nChange-Id: Ib25d162d577c9b354cb74d5d761c3c9f9f438d42\n"
    }
  ]
}
