)]}'
{
  "log": [
    {
      "commit": "e85da2bad5b80f4e2269a64255cbaf8c11efce61",
      "tree": "fc3d4f23bc757c11b846eac34aa81a8bec1be2d0",
      "parents": [
        "825c2a006ed3fd5f33c4fe8ecf3e682bebd97817"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Thu Jun 25 17:26:10 2015 -0700"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Tue Jun 30 00:27:14 2015 +0000"
      },
      "message": "Add accessibility event for assist disclosure\n\nBug: 21568059\nChange-Id: Ib51d4236fcc87acd54cb5d191197b9b2c6cc54ea\n"
    },
    {
      "commit": "b3876474399ae22ccfc8f04d7f9ab577517db370",
      "tree": "0a821dfc7ab49470e85b00d0bc99a7f62a75db4c",
      "parents": [
        "b7c3e931cd2ef332f05a2bb78e7036d53aeab18c",
        "386a824384a0d5795a38d10d1d2c18e4e50f8c30"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jun 04 02:20:36 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 04 02:21:09 2015 +0000"
      },
      "message": "Merge \"Make node retrieval methods in AccessibilityManagerService use separate Region instances to make them thread safe.\" into mnc-dev"
    },
    {
      "commit": "386a824384a0d5795a38d10d1d2c18e4e50f8c30",
      "tree": "ec78c084bd26b80ba1d4b3c4d13c6fdf8efb505d",
      "parents": [
        "db2911321b1cb0870d10baab370c93da13a91067"
      ],
      "author": {
        "name": "Nirmal Patel",
        "email": "nirmalpatel@google.com",
        "time": "Tue Jun 02 18:11:32 2015 -0700"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jun 03 19:18:00 2015 -0700"
      },
      "message": "Make node retrieval methods in AccessibilityManagerService use separate Region instances to make them thread safe.\n\nb/21087793\n\nChange-Id: Ice690e3d7494788fb9e1e234a54f14831bd4e0d3\n(cherry picked from commit ebd8eb4610d6bb9322a374f8965a78ba1c39ee63)\n"
    },
    {
      "commit": "942bc58518a82bc3dbeffe4d64f9a5d2d2d8cf43",
      "tree": "b918ecc26a1fb1cfe730dbe6e0ee28fc0fcfb92f",
      "parents": [
        "c5ff0020a2467e0b7aed590d790b5a1b4b082f56"
      ],
      "author": {
        "name": "Doris Liu",
        "email": "tianliu@google.com",
        "time": "Mon Jun 01 13:42:04 2015 -0700"
      },
      "committer": {
        "name": "Doris Liu",
        "email": "tianliu@google.com",
        "time": "Tue Jun 02 15:01:48 2015 -0700"
      },
      "message": "Fix calls to Rect.intersect(Rect)\n\nThis CL checks for the return value for Rect.intersect(Rect) for whether\nthere is actually an intersection before taking the calling rect as the\nintersection. In the case of no intersection (Rect.intersect(Rect) returns\nfalse), the calling rect would not have been changed, so here in this CL\nit will be manually set empty.\n\nBug: 7368679\nChange-Id: I7494c1a1649eca09e34412f0a59b795e8b3a82aa\n"
    },
    {
      "commit": "d69e4c1460017062e7c36be55801cb434ad19d97",
      "tree": "fdb11d94a6a8434e7c7667a8496288b599ef81b7",
      "parents": [
        "9ac2718e7dcf274ad41fbb374bedabadc558634b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 24 09:54:54 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 29 17:04:50 2015 -0700"
      },
      "message": "Update use of procstate for services.\n\nNow that we have a separate foreground service proc state\n(above a sleeping top app), update various system services\nto put their bindings into this state when appropriate.\n\nThere are two new bind flags for this -- one that just always\nmakes it a foreground service, another that only does it when\nthe device is awake (useful for things like the wallpaper).\n\nAnd with all of that, tweak network policy manager to only\ninclude apps that are at least foreground service state when\nin power save and device idle modes.  This will allow us to\nfurther reduce the set of apps that have network access\n(in particular not giving access to the current top app when\nthe screen is off), hopefully leading to even better battery\nlife.\n\nChange-Id: I91d85a5c5ed64e856149e9a5d94a634a7925ec7f\n"
    },
    {
      "commit": "6437518061fc8718590e0272ed17ea64710d2299",
      "tree": "d34dde8dcf77f510e99dd2191860ecc068cdddb9",
      "parents": [
        "e658285baf86a223ad369851d1fc5ebacad7b408"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Apr 28 17:30:04 2015 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Apr 28 17:30:04 2015 -0700"
      },
      "message": "Adjust display inversion matrix to account for luminance\n\nBug: 20346301\nChange-Id: I10633705f2bfddbdeec063f9489a4f8679b9e8ee\n"
    },
    {
      "commit": "0a4dc2258fa8216920e1a0b83cbf7d3729386e2f",
      "tree": "3079394c0d6f96d0e2c74be79c44c0921cf28c34",
      "parents": [
        "317918e206b89f4a49bfa35af57607764f322347"
      ],
      "author": {
        "name": "Wale Ogunwale",
        "email": "ogunwale@google.com",
        "time": "Tue Apr 14 12:58:42 2015 -0700"
      },
      "committer": {
        "name": "Wale Ogunwale",
        "email": "ogunwale@google.com",
        "time": "Tue Apr 14 21:14:00 2015 -0700"
      },
      "message": "Added TYPE_APPLICATION_ABOVE_SUB_PANEL window type.\n\nTYPE_APPLICATION_ABOVE_SUB_PANEL will be displayed on top of their\nattached window and any TYPE_APPLICATION_SUB_PANEL panels.\n\nBug: 20135562\nChange-Id: I711de3c19c01432c44de205bf09934a8b23b53fd\n"
    },
    {
      "commit": "2d4aadca9487d76cb7220bdba90afa53119664ea",
      "tree": "c332c59f9cb2263aef59f1216995de0eba196afa",
      "parents": [
        "6597e3435f8abfedbb9a4f1bfb10cc17ea7f38bf"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Mar 16 16:55:14 2015 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Mar 16 17:39:07 2015 -0700"
      },
      "message": "Merge restored accessibility enable state, don\u0027t overwrite\n\nWe do not want to accidentally disable the user\u0027s currently-enabled\naccessibility service(s); presumably they turned them on during\nsetup for a reason.  We now merge the prior + current states rather\nthan simply replacing the current state with the former.\n\nBug 19427367\n\nChange-Id: I96eb47df57318c88066c5da6862f23f656639148\n"
    },
    {
      "commit": "90a855e9e6f4f76f7fe729227298ebc318748283",
      "tree": "12ab5d0ac1f10c984e432a6555f02f7612a84047",
      "parents": [
        "e94aefcaa30ea1109c30e15212bea717c87a94cd",
        "4a0e02377ca89d6e606662dc4b96ca87bcb53055"
      ],
      "author": {
        "name": "Casey Burkhardt",
        "email": "caseyburkhardt@google.com",
        "time": "Wed Feb 18 18:40:20 2015 -0800"
      },
      "committer": {
        "name": "Casey Burkhardt",
        "email": "caseyburkhardt@google.com",
        "time": "Wed Feb 18 18:40:20 2015 -0800"
      },
      "message": "Resolved conflict for merge of 4a0e0237 to master\n\nChange-Id: I4a567f650103d1226c49a09f6b2c842a0f1ed6f2\n"
    },
    {
      "commit": "4a0e02377ca89d6e606662dc4b96ca87bcb53055",
      "tree": "e75abd773a39e8b23332ac08724352bb410d3a47",
      "parents": [
        "b456104d9f8ff0dba77f80f7e5e23753d58716a2",
        "bdbd4736351231aac4da720ff7326ea2791e0b00"
      ],
      "author": {
        "name": "Casey Burkhardt",
        "email": "caseyburkhardt@google.com",
        "time": "Thu Feb 19 01:06:51 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 19 01:06:51 2015 +0000"
      },
      "message": "am bdbd4736: Merge \"Refinements to magnification for improved wearable support.\" into lmp-mr1-modular-dev\n\n* commit \u0027bdbd4736351231aac4da720ff7326ea2791e0b00\u0027:\n  Refinements to magnification for improved wearable support.\n"
    },
    {
      "commit": "0944984c36934c6b5431383d1b6a719b64338074",
      "tree": "243bcf5cccba733be02eff717dc4a30c0a7b3a27",
      "parents": [
        "8bd345f90d27d88a7929b874efd6fa57c0c38146"
      ],
      "author": {
        "name": "Casey Burkhardt",
        "email": "caseyburkhardt@google.com",
        "time": "Wed Feb 18 12:18:15 2015 -0800"
      },
      "committer": {
        "name": "Casey Burkhardt",
        "email": "caseyburkhardt@google.com",
        "time": "Wed Feb 18 12:24:45 2015 -0800"
      },
      "message": "Refinements to magnification for improved wearable support.\n\nThis change refactors ScreenMagnifier to use resources for its triple-tap\nadjustment and scale threshold values.  New values more appropriate for\nwearable form factors are supplied.  This also fixes a bug in the triple-\ntap detection logic where the incorrect ViewConfiguration value for the\ntap threshold was used, prematurely disqualifying some touch events as\npotential taps.\n\nChange-Id: If47e556aadb5beb1bad24644122560c6fbe33bad\n"
    },
    {
      "commit": "7e760ee59d77f0e8cbdd4c64c1d4bf0b89113878",
      "tree": "97d0199f9b75d138fc194cae6c49823ca24cf379",
      "parents": [
        "afc870e484a70cfcf154381ce752758a78a809ea",
        "f8acd7a961f3a36712519d0f925f86f3da8d0b7c"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 03 07:31:28 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 03 07:31:28 2015 +0000"
      },
      "message": "Fix broken activation of the selected view in accessibility mode. automerge: ded133c automerge: b6b526e\nautomerge: f8acd7a\n\n* commit \u0027f8acd7a961f3a36712519d0f925f86f3da8d0b7c\u0027:\n  Fix broken activation of the selected view in accessibility mode.\n"
    },
    {
      "commit": "f8acd7a961f3a36712519d0f925f86f3da8d0b7c",
      "tree": "6fb37306627add6033dd0c75049a8b94d0eeac80",
      "parents": [
        "712e38eaba012904a515dc84d1edda4dab563dcc",
        "b6b526eaafdcc39e9d55a82f61f1e03c4a3487c3"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 03 07:27:33 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 03 07:27:33 2015 +0000"
      },
      "message": "Fix broken activation of the selected view in accessibility mode. automerge: ded133c\nautomerge: b6b526e\n\n* commit \u0027b6b526eaafdcc39e9d55a82f61f1e03c4a3487c3\u0027:\n  Fix broken activation of the selected view in accessibility mode.\n"
    },
    {
      "commit": "ded133c446fa9d0d23e6bde19a66fb2ce3980491",
      "tree": "41f26af8f4fce5f667a3c167ff6ddfae503b9663",
      "parents": [
        "175ddbcf2ed71fdcd44a9b64cdc5d479df496a4d"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Jan 30 20:28:41 2015 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 02 23:17:17 2015 +0000"
      },
      "message": "Fix broken activation of the selected view in accessibility mode.\n\nWe were using an approximation to determine where to send a pair of down\nand up events to click on the view that has accessibility focus. We were\ndoing reverse computation to figuring out which portion of the view is\nnot covered by interactive views and get a point in this region. However,\ndetermining whether a view is interactive is not feasible in general since\nfor example may override onTouchEvent. This results in views not being\nactivated or which is worse wrong views being activated.\n\nThis change swithes to a new approach to activate views in accessibility\nmode which is guaranteed to always work except the very rare case of a\nview that overrides dispatchTouchEvent (which developers shouldn\u0027t be\ndoing). The new approach is to flag the down and up events pair sent\nby the touch explorer as targeting the accessibility focused view. Such\nevents are dispatched such that views predecessors of the accessibility\nfocus do not handle them guaranteeing that these events reach the accessibiliy\nfocused view. Once the accessibiliy focused view gets such an event it clears\nthe flag and the event is dispatched following the normal event dispatch\nsemantics.\n\nThe new approach is semantically equivalent to requesting the view to perform\na click accessiblitiy action but is more generic as it is not affected by\nviews not implementing click action support correctly.\n\nbug:18986806\nbug:18889611\n\nChange-Id: Id4b7b886c9fd34f7eb11e606636d8e3bab122869\n"
    },
    {
      "commit": "8a1d65b76adaa07fd6b16f205757d663e0fbf486",
      "tree": "02e13f0a2590617c7d8d43fd8d2cd3d50f949bdc",
      "parents": [
        "166aa68630c04787caf88fc6b9e369efe7543fc6",
        "cd2ed4e64c501a5dbf73941a4a1f1e4bc639ebf3"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Jan 23 23:35:42 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 23 23:35:42 2015 +0000"
      },
      "message": "Accessibility: Sometimes cannot interact with nav bar items. automerge: 10a053e automerge: db1983b\nautomerge: cd2ed4e\n\n* commit \u0027cd2ed4e64c501a5dbf73941a4a1f1e4bc639ebf3\u0027:\n  Accessibility: Sometimes cannot interact with nav bar items.\n"
    },
    {
      "commit": "cd2ed4e64c501a5dbf73941a4a1f1e4bc639ebf3",
      "tree": "9d4544829834c96ed3a899e89b4f49d0eb3898c3",
      "parents": [
        "9027d7355e8e804307902fb5ec88cf54e23cdcb4",
        "db1983b3f43e86acbf188961f53af794cce05219"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Jan 23 23:31:38 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 23 23:31:38 2015 +0000"
      },
      "message": "Accessibility: Sometimes cannot interact with nav bar items. automerge: 10a053e\nautomerge: db1983b\n\n* commit \u0027db1983b3f43e86acbf188961f53af794cce05219\u0027:\n  Accessibility: Sometimes cannot interact with nav bar items.\n"
    },
    {
      "commit": "10a053e474e2a566b49a1e4c9e2ec4c8cc0013bd",
      "tree": "6b104a4ca7ece00d6d9d9f053caeac1f26c4987f",
      "parents": [
        "42a13865a4527aaf907a6ced96f726b49b2cbbed"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Jan 23 14:40:52 2015 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Jan 23 15:05:20 2015 -0800"
      },
      "message": "Accessibility: Sometimes cannot interact with nav bar items.\n\nIf there is a window with the accessibility focus we want to click\non the accessibility focused view in this window. The logic to\ncompute the bounds of the window was using the wrong window id,\nhence getting an incorrect result. As a consequence in some cases\nthe user could not click on accessiiblity focused controls in the\nnav bar.\n\nbug:18889611\n\nChange-Id: I89aee3ae2ffe27fe29819049c287a7155154c65b\n"
    },
    {
      "commit": "e5aa1f52589a64367aadc9a83b094c2513491e9c",
      "tree": "9e7a760517be82e15923bce8c667141578edff7b",
      "parents": [
        "235312d64b704315d37e99c133ffa817c47dfc14"
      ],
      "author": {
        "name": "Jinsong Mu",
        "email": "jinsong@google.com",
        "time": "Wed Jan 07 14:00:50 2015 -0800"
      },
      "committer": {
        "name": "Jinsong Mu",
        "email": "jinsong@google.com",
        "time": "Wed Jan 07 14:00:50 2015 -0800"
      },
      "message": "Make talkback or other accessibility services  updateable from playstore\nonly when it\u0027s been enabled. The idea is to set accessibility services package\nstatus to disabled_until_used by default. Change the status to enabled once user\nturn the service on.\n\nIt is first part of CL in framework, that returns installed accessibilityServices\neven they been set disabled_until_used\n\nSecond part of CL will be in Settings, where we read/write package status\nbased on the service has been turn on or off.\n\nThe similiar logic has been used for preventing never used IME from auto updated\nb/18205549\n\nChange-Id: I1a9cba0221e3de0499ba5ac91ca382696bcb7043\n"
    },
    {
      "commit": "9b3ab29ffa6b3f67b5ab7c06338a2c76db59e176",
      "tree": "16800eea612b7de3c05c0cb35038928dfe35dbd2",
      "parents": [
        "1301446c01182b41c3f922121d21ed9b383cc4df",
        "26c8895465bbc94efb0cc96460e5eabe88382698"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Dec 12 21:02:30 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 12 21:02:30 2014 +0000"
      },
      "message": "am 26c88954: am 14e3351a: Merge \"Fix a NPE in AccessiiblityManagerService.\" into lmp-mr1-dev\n\n* commit \u002726c8895465bbc94efb0cc96460e5eabe88382698\u0027:\n  Fix a NPE in AccessiiblityManagerService.\n"
    },
    {
      "commit": "14e3351a1eae2b4fc8a12c9a4586f8ea7b87442c",
      "tree": "e87da1b4395e903f6c855e43f1b3f97cf950cb69",
      "parents": [
        "7486bc1f5a8156e9b586ebb9c32ced218e668652",
        "09687064f4cf681d2aa299c393e32f22fc013c96"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Dec 12 20:48:59 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 12 20:49:01 2014 +0000"
      },
      "message": "Merge \"Fix a NPE in AccessiiblityManagerService.\" into lmp-mr1-dev"
    },
    {
      "commit": "09687064f4cf681d2aa299c393e32f22fc013c96",
      "tree": "d5f2e6e939f1fdbb1ca8c2f1c29b673ba5df4ea5",
      "parents": [
        "8b33cf4d34a9ea75e1121ee2f1d829b21f3cb5d6"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Dec 11 22:59:08 2014 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Dec 11 22:59:12 2014 -0800"
      },
      "message": "Fix a NPE in AccessiiblityManagerService.\n\nIt is possible that the accessibility windows list is null which\nis treated as if there is no window information. The getWindows\nmethod was accessing properties of the windows filed witgout a\nnull check.\n\nbug:18522998\n\nChange-Id: Ieefe678d3da3d6e8f96c0e4bedac0c55975621fa\n"
    },
    {
      "commit": "a3bc48c863f69bc048cafbae1e8ff53d53ac6b8e",
      "tree": "3e171bdae890038d6ad4d2932eda5695e5e36133",
      "parents": [
        "1032dac1f80cb46b796ab4fe31eb1139cabdd8c9",
        "a706c9079a60531d79a3f32f263c37f386229564"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Dec 10 19:43:33 2014 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 10 19:43:33 2014 +0000"
      },
      "message": "am e39fc96c: Merge \"Ignore accessibility overlay when computing window\\\u0027s interactive region.\" into lmp-mr1-dev\nautomerge: a706c90\n\n* commit \u0027a706c9079a60531d79a3f32f263c37f386229564\u0027:\n  Ignore accessibility overlay when computing window\u0027s interactive region.\n"
    },
    {
      "commit": "12b7328c0b7f83a233d9387eaa66d1a0ed403724",
      "tree": "2051ae34e32c9fba38a5d0585d20ef4d713f6fe8",
      "parents": [
        "8b33cf4d34a9ea75e1121ee2f1d829b21f3cb5d6"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Dec 09 12:27:00 2014 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Dec 09 12:27:04 2014 -0800"
      },
      "message": "Ignore accessibility overlay when computing window\u0027s interactive region.\n\nIf an accessibility service opts-in for the new window introspection APIs\nwhen calling into a window for accessibility node infos we compute the\nwindow\u0027s interactive region, i.e. the portion that is touchable and not\ncovered by other touchable windows, in roder to deterine whether these\nnodes are visible, i.e. the user can interact with them. There was a bug\nin the interactive region computation what we were not ignoring accessibility\noverlay windows which are intended to not change what an accessibility\nservice can \"see\" and are put by such a service.\n\nbug:18652374\n\nChange-Id: I24ce54069087af9bc308e0c6a7b2aa6b952a6136\n"
    },
    {
      "commit": "f477aeb367f05a64a03ed09efc9e0a9d6f9a6ec2",
      "tree": "25454b318857b12c549c7315626730f047800ee6",
      "parents": [
        "967da505b2cb96ed85161fd940dbecb467bfe38c",
        "ed068f7c3047b3775647a6023c6960a4fc535144"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Dec 08 19:12:22 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 08 19:12:22 2014 +0000"
      },
      "message": "am ed068f7c: am 3a0d878a: Ensure all events from a showing window are dispatched.\n\n* commit \u0027ed068f7c3047b3775647a6023c6960a4fc535144\u0027:\n  Ensure all events from a showing window are dispatched.\n"
    },
    {
      "commit": "3a0d878ab56475276c61d574af7651820a5cea5a",
      "tree": "52c7a0e7d8a075102a5797fcd6b000bd78971ed6",
      "parents": [
        "bcaa315d488c18deb1ab4c6169dc4b4236982990"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Dec 04 12:50:11 2014 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Dec 05 00:37:38 2014 +0000"
      },
      "message": "Ensure all events from a showing window are dispatched.\n\nAccessibility services may opt-in to introspect the interactive\nwindows on the screen. If window introspection is enabled there\nis a case where some events from a showing window are received\nbefore the updated window state from the window manager. Now the\nwindow manager sends over the windows before notifying the app\nfor the focus change.\n\nbug:18625996\n\nChange-Id: Ic481e01efbe12dc92f090f799feeb236672fc7b3"
    },
    {
      "commit": "eed63916a184b05fa8572c9a8151745d05777740",
      "tree": "b07e15de03431bb24fffd41c405bb8dbb8024dcd",
      "parents": [
        "532f0a29548c1ebc9467fe8960626981d24fd26f",
        "89e7ffedadd20a3091e72b42f86c500452df193c"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 24 02:04:11 2014 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 24 02:04:11 2014 +0000"
      },
      "message": "am bd6fabe2: Merge \"APIs for an accessibility service to put interaction tracking overlays.\" into lmp-mr1-dev\nautomerge: 89e7ffe\n\n* commit \u002789e7ffedadd20a3091e72b42f86c500452df193c\u0027:\n  APIs for an accessibility service to put interaction tracking overlays.\n"
    },
    {
      "commit": "3a5c721072c60c7ed9c8a95d0a65d0e3cb4eb9bb",
      "tree": "764dfd933c0a80c42fd4214f375c456e6370e548",
      "parents": [
        "d00e68c3b6a4c727bd59a7e7c4524fb3fdd193f0"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Oct 14 09:54:26 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Oct 21 14:45:53 2014 -0700"
      },
      "message": "APIs for an accessibility service to put interaction tracking overlays.\n\nAn accessibility service may register to observe the interactive windows\non the primary display. These windows are the one that has input focus and\nones a sighted user can touch. It is sometimes beneficial for an\naccessibility service to overlay a window to intercept user interaction\nand based on that introspect and perform an action on the windows that\nare on the screen. This is problematic as overlaying a full screen window\nthat is touchable prevents the accessibility service to introspect the\ncontent under this window.\n\nThis change adds a special type of window that only an accessibility service\ncan place which does not affect what an accessibility service can \"see\" on\nthe screen. Hence, even putting such a window full screen the service will\nbe able to interact with the other interactive windows it covers.\n\nChange-Id: I053ccc3a5c6360a98dc40bdb172b54dab35d8b31\n"
    },
    {
      "commit": "4e2c29887616596e922e2b5fc5ac4929b3654f6c",
      "tree": "bb8192e8f646d390711dccbec5baeef8464b069d",
      "parents": [
        "1f2ad9eb7417045c0a08b49a3bdf48600627c57e",
        "2f6fd874510cd333f7fc0b08e146d5d069fa2013"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Oct 20 13:15:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 20 13:15:40 2014 +0000"
      },
      "message": "am 2f6fd874: am 5f978bfa: Merge \"Retire RecentApplicationsDialog\" into lmp-mr1-dev\n\n* commit \u00272f6fd874510cd333f7fc0b08e146d5d069fa2013\u0027:\n  Retire RecentApplicationsDialog\n"
    },
    {
      "commit": "5f978bfa0949d58a187dec0fe9ee6b341cb97c1f",
      "tree": "52da3cd6598228d8c0eb2d9630816c9fbabbd820",
      "parents": [
        "0608b9328b1c2f804ffb2d4165c34383d34bde2a",
        "9a64513c7fccc2a9cf331a384906a7669b29b3f4"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Oct 20 13:04:07 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 20 13:04:09 2014 +0000"
      },
      "message": "Merge \"Retire RecentApplicationsDialog\" into lmp-mr1-dev"
    },
    {
      "commit": "a64eb6ecf0bf9dc36f471ca51cd6589e206000a5",
      "tree": "2250e723893d46439e00499a5ef463c5dbf6d8db",
      "parents": [
        "8596960eb5e072f5514f8863bfd09aac7a43611b",
        "f08b7ce9e9888fc77bfe8d4af70500a7530aedcb"
      ],
      "author": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Sat Oct 18 00:13:01 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Oct 18 00:13:01 2014 +0000"
      },
      "message": "am f08b7ce9: am f247b908: am 4183a2fc: am 5d604181: Merge \"Let TYPE_ANNOUNCEMENT be sent from any window\" into lmp-dev\n\n* commit \u0027f08b7ce9e9888fc77bfe8d4af70500a7530aedcb\u0027:\n  Let TYPE_ANNOUNCEMENT be sent from any window\n"
    },
    {
      "commit": "5d6041813283086c5a290ad6ca07e05b1a6ffc14",
      "tree": "655968ffa1413a5ca6739be7b86ef5f72906d184",
      "parents": [
        "c6c843fbe8fb8d9bdd012a472e22970ee89b9d24",
        "ba3787d849610a7c71fc6f0d9468855c3d369807"
      ],
      "author": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Fri Oct 17 23:54:00 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 17 23:54:01 2014 +0000"
      },
      "message": "Merge \"Let TYPE_ANNOUNCEMENT be sent from any window\" into lmp-dev"
    },
    {
      "commit": "f43465452bb782166a4cb96dbfede9e7514787ba",
      "tree": "b484de45847e28cca1e42ae0a22269c9ddee4559",
      "parents": [
        "10db7553ec036557032c98cdcd334b55fa1bec10",
        "0ee9f36140530cf8ee60613f4f057c2ec95fe498"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 17 23:19:57 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 17 23:19:57 2014 +0000"
      },
      "message": "am 0ee9f361: am 0b5af04a: am ebb38bcc: am cd2b54e6: Merge \"Accessibility no longer overrides strong encryption.\" into lmp-dev\n\n* commit \u00270ee9f36140530cf8ee60613f4f057c2ec95fe498\u0027:\n  Accessibility no longer overrides strong encryption.\n"
    },
    {
      "commit": "a6711ff6f09cc25c693cbb50452e3f807c6122f5",
      "tree": "71180a936d4e6547d1503be40334f4bb7b29a134",
      "parents": [
        "a865bb5df834194dee339db615c17d7c7b63aaa3"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 17 11:38:06 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 17 14:33:11 2014 -0700"
      },
      "message": "Accessibility no longer overrides strong encryption.\n\nUpdating the accessibility layer behavior to reflect the new\nmodel where accessibility no longer overrides strong encryption.\nNow enabling an accessibility service lowers the encryption\nlevel but the user can bump it up in settings if desired.\n\nbug:17881324\n\nChange-Id: Ic60d760c267d3f934040a42e1963b179bd8b9f5f\n"
    },
    {
      "commit": "ba3787d849610a7c71fc6f0d9468855c3d369807",
      "tree": "b62fddf8341455c92c9d5fb74f209125d69b69d9",
      "parents": [
        "040d89bb0a4563d93073b7a27b3f201ce11dcf58"
      ],
      "author": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Fri Oct 17 14:13:07 2014 -0700"
      },
      "committer": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Fri Oct 17 14:13:07 2014 -0700"
      },
      "message": "Let TYPE_ANNOUNCEMENT be sent from any window\n\nPart of fix for bug 17905712\n\nChange-Id: I4e4b09f6b6342a27744e42984d483ef8de18fbff\n"
    },
    {
      "commit": "eec22a1c243b88ef4ee10c41be4cab6b54661ef4",
      "tree": "e83a8500ef6097ecaba6d89ff052bea8a1151f82",
      "parents": [
        "9b1ffd36a11628a6f0e81a1b4a4e658c8d32e8cd",
        "216d08ffd548d056101af14af4634f4d796cec51"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Oct 16 19:56:04 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 16 19:56:04 2014 +0000"
      },
      "message": "am 216d08ff: am 0ee1d87c: am 515f14d4: am b22552c3: Merge \"Send accessibility events with no window.\" into lmp-dev\n\n* commit \u0027216d08ffd548d056101af14af4634f4d796cec51\u0027:\n  Send accessibility events with no window.\n"
    },
    {
      "commit": "d5b0842a1ddbfc2ea5335854fe2834b6e9b965de",
      "tree": "9c1c123b2f2e782d89b9f5c6d57064c97457740c",
      "parents": [
        "70807ab128c544b972f3710e53eeedd0d40dce2a"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Oct 16 09:18:34 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Oct 16 17:31:52 2014 +0000"
      },
      "message": "Send accessibility events with no window.\n\nAn app can send an accessibility event by calling the send methods\non view or directly asking the accessibility manager to do that.\nWhile the recommened way to send such events is calling the methods\non view a legacy app or app whose developer did not read the docs\ncarefully may be calling the accessibility manager APIs directly.\nIn such a case the event does not have assigned window id and does\nnot get send. Since events fired by using the accessibility manager\ndirectly lack context to determine whether thier source is important\nfor accessibility we assume they come from an important view to\navoid breaking backwards compatibility.\n\nbug:18001711\n\nChange-Id: Ie1c298fa5a0670cbeaedfcd64f820961c296b6ca\n"
    },
    {
      "commit": "9a64513c7fccc2a9cf331a384906a7669b29b3f4",
      "tree": "288ddb7ba1c43a4fd87644bdc640a1c6385cf0a6",
      "parents": [
        "6bf67ef1ce029ad0932df647598c6fbfae375885"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Oct 08 02:59:56 2014 +0200"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Oct 08 02:59:56 2014 +0200"
      },
      "message": "Retire RecentApplicationsDialog\n\nBug: 5162991\nChange-Id: I429da977502f33e2091496f3a075b2c507a88e1f\n"
    },
    {
      "commit": "848a1df1590bb3bf646a993c92e0423646bce349",
      "tree": "0f46bb13c1931bf44a33ef97b88bbb1fee66c182",
      "parents": [
        "bd998385f0f0379ffab30d0bc70c3007f5664f24",
        "a8df007dd468730fb581e135d46e0ddead9106fb"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Sat Oct 04 15:45:44 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Oct 04 15:45:44 2014 +0000"
      },
      "message": "am a8df007d: am 423bf3d0: am cf0e4706: am 8ff6d70d: Merge \"Clear identity before calling into the mount service.\" into lmp-dev\n\n* commit \u0027a8df007dd468730fb581e135d46e0ddead9106fb\u0027:\n  Clear identity before calling into the mount service.\n"
    },
    {
      "commit": "bd998385f0f0379ffab30d0bc70c3007f5664f24",
      "tree": "1596bac11a186c4154e3c09bbced0c84da4cefa0",
      "parents": [
        "542cc240b5bd68a728067f65cd8bc4d8f6473b83",
        "a12d48567478265bc360f2c29cc194d8830c099f"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Sat Oct 04 15:45:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Oct 04 15:45:40 2014 +0000"
      },
      "message": "am a12d4856: am 3eddddb5: am c3493f94: am 88676e0b: Merge \"TouchExploer computes incorrectly the click location.\" into lmp-dev\n\n* commit \u0027a12d48567478265bc360f2c29cc194d8830c099f\u0027:\n  TouchExploer computes incorrectly the click location.\n"
    },
    {
      "commit": "8ff6d70d44626cd515f517962378d89ab3954979",
      "tree": "d777a496f82ceca1af6bbf4f10b19091a7d886aa",
      "parents": [
        "88676e0bb1b31cafca83a6bcf5ef20cc23f163ec",
        "9f70a4cc6dbdd7b509527cef892e8af3c8b09702"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 03 23:36:16 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 03 23:36:17 2014 +0000"
      },
      "message": "Merge \"Clear identity before calling into the mount service.\" into lmp-dev"
    },
    {
      "commit": "9f70a4cc6dbdd7b509527cef892e8af3c8b09702",
      "tree": "fe89642caef4a032c9e11b2932e9b86974336c71",
      "parents": [
        "900e3b5fc5bb4bf4947f63c0fed0757dfb7effa6"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 03 16:32:23 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 03 16:32:26 2014 -0700"
      },
      "message": "Clear identity before calling into the mount service.\n\nbug:17787265\n\nChange-Id: I4b9268d101e9ccfc30876fbf54bf28bb41fb4be6\n"
    },
    {
      "commit": "47b9c1524fe20b9ae2b210acdcad64f764df68e0",
      "tree": "10dc7643a7730a87af1445ff149fd3d1371e73fe",
      "parents": [
        "900e3b5fc5bb4bf4947f63c0fed0757dfb7effa6"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 03 15:40:05 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 03 16:17:26 2014 -0700"
      },
      "message": "TouchExploer computes incorrectly the click location.\n\nIf there is accessibilty focus and the user touch explores\nlocation that does not change accessibility focus that is\nnot in the app window, e.g. system bar, double tap does not\nclick on the system UI affordance.\n\nbug:17588024\n\nChange-Id: I6c8c0f65b208ae1d3f31d7f06b0721dc223ec19f\n"
    },
    {
      "commit": "04c4b5ea9f5aecfdb4b68025ae8c9e34e12c70dc",
      "tree": "aef273d1c0412d5f3f8ca3873a1b601e25620d14",
      "parents": [
        "fe54f8a4962d1b6366f98c24155432a9a45fd6b8",
        "e53a3188365550d17422e534f6aec80249dbc447"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 03 21:52:51 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 03 21:52:51 2014 +0000"
      },
      "message": "am e53a3188: am 9ae2bca4: am 31deb67d: am 76716c5a: Revert \"TouchExplorer computes incorrectly the click location.\"\n\n* commit \u0027e53a3188365550d17422e534f6aec80249dbc447\u0027:\n  Revert \"TouchExplorer computes incorrectly the click location.\"\n"
    },
    {
      "commit": "76716c5a180aa471c6973ca7aa03c7f2da677823",
      "tree": "b030fcfb819bd3a0c519c673eb852cd13ec8e61b",
      "parents": [
        "c74a2b343507546dd5b0a6be5afce42eb8b16a0d"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 03 20:34:37 2014 +0000"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 03 20:37:10 2014 +0000"
      },
      "message": "Revert \"TouchExplorer computes incorrectly the click location.\"\n\nThis reverts commit 851a5059a47cbf76e530c9d050a677cb6e3f8657 as\nit creates a regression. Let us revert this and correctly fix the\nissue the original change was trying to address.\n\nbug:17789608\n\nChange-Id: I8abb1a61d5310430e839e4ef60e7ca5cc0cbdd80"
    },
    {
      "commit": "893a15d1e49203374006a20d1b0148e99534362e",
      "tree": "75726c1ebf5e1ae7fd4ecefa278239ca3319ee1b",
      "parents": [
        "ef2bc5ccd4aa7a5f5683ac4fa6ece8eddec9ef3a",
        "0671790c2895865ff0cc7780027427d1a9b95667"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Oct 02 13:37:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 02 13:37:37 2014 +0000"
      },
      "message": "am 0671790c: am c088ecc3: am 304a3528: am d35b072d: Merge \"Fix accessiblity introspection from the shell user regression.\" into lmp-dev\n\n* commit \u00270671790c2895865ff0cc7780027427d1a9b95667\u0027:\n  Fix accessiblity introspection from the shell user regression.\n"
    },
    {
      "commit": "c2a0b4482d7144e8382346ea4c22c7b89368fec0",
      "tree": "f0ec3fbeee8dde1d56ad85c59d858ec093d5eb9d",
      "parents": [
        "f08384c763d2e57c05e0be4325c267d12fc516d4",
        "ee665151a4c6359cbfbb9a6795aa9097c4622083"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Oct 02 14:32:37 2014 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Oct 02 14:32:37 2014 +0100"
      },
      "message": "resolved conflicts for merge of ee665151 to lmp-mr1-dev-plus-aosp\n\nChange-Id: I2588c65b7a9fa43f968151a206924a804f0595a7\n"
    },
    {
      "commit": "d35b072dca42d249c219c886322c122739b086d7",
      "tree": "25dae4999e3f26cad436a3ef33e9e757898d753d",
      "parents": [
        "144508d5da4dec37183617ec259ab83d2db4f012",
        "ceac51deddb873956c647d1b2dc7b2cc251d404b"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Oct 01 23:24:46 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 01 23:24:47 2014 +0000"
      },
      "message": "Merge \"Fix accessiblity introspection from the shell user regression.\" into lmp-dev"
    },
    {
      "commit": "ceac51deddb873956c647d1b2dc7b2cc251d404b",
      "tree": "5538b44cdcd0bca766bc998db24b8d23b4ce57cd",
      "parents": [
        "d1462247e05dab10d20372249e9a3ef7ef93fc2e"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Oct 01 12:50:58 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Oct 01 15:07:27 2014 -0700"
      },
      "message": "Fix accessiblity introspection from the shell user regression.\n\nAccessibility introspection APIs are meant to query only the state of\nthe current user. There are command line tools that run as the shell\nuser and want to be able to intropspect the screen. When resolving\nthe calling user we were using the calling user id instead of the\nspecial constant for the current user.\n\nNow when resolving the calling user for intrspection we are using\nthe current user constant and consequentially only the current\nuser or a profile of the current user or the root or the shell or\nthe system or an app with cross user permission can introspect the\nscreen.\n\nbug:17674631\n\nChange-Id: I36d1d7b65441d04c3b4204123c4b6d036ff032c0\n"
    },
    {
      "commit": "6b491b64ba7200a85199452b6a7f99c777105f22",
      "tree": "971efb30ef29dd686bd78d0adfeecbe59bc0fdac",
      "parents": [
        "86ef70eb08b83fc41d0c8e124315d9ee9fea0ee4",
        "419036b560e79c11705e376ad171688ac496bb7d"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Sep 30 23:33:55 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 30 23:33:56 2014 +0000"
      },
      "message": "Merge \"Invalid accessibility state if UI test process crashes in a bad time.\" into lmp-dev"
    },
    {
      "commit": "419036b560e79c11705e376ad171688ac496bb7d",
      "tree": "616deda190d4c1db228b0fd9b2e734e5417aee8e",
      "parents": [
        "d1462247e05dab10d20372249e9a3ef7ef93fc2e"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Sep 30 16:03:20 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Sep 30 16:04:50 2014 -0700"
      },
      "message": "Invalid accessibility state if UI test process crashes in a bad time.\n\nWe allow a fake accessibility service to connect to the system for UI\nautomation. If the process hosting the fake service dies right after\nregistering it, the accessibility layer ends up in a bad state and\nsubsequent attempts to connect UI automation service fail.\n\nbug:17725904\n\nChange-Id: Idad288eab41bbdd486d95e1e5803220640653fb7\n"
    },
    {
      "commit": "16e4a1aade2b73edfdaa42aa86a3893fd039fc62",
      "tree": "fc9268f13eaef47ad104e834c56ff172b9f27612",
      "parents": [
        "d1462247e05dab10d20372249e9a3ef7ef93fc2e"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Sep 29 18:16:20 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Sep 30 13:00:11 2014 -0700"
      },
      "message": "Use default encryption password if an accessibility service is enabled.\n\nWhen device is encrypted the user has to authenticate in order to decrypt\nthe data partition which is required for running accessibility services\nand Text-To-Speech. In order to address this issue we are falling back\nto use the default password if there is an enabled accessibility service\nand the user has secure lock. This will enable the user to authenticate\nwhen accessibility layer is completely functional.\n\nbug:17671790\n\nChange-Id: Iafffe7bcd234008cf91ffb5011b21b803dca227a\n"
    },
    {
      "commit": "54b0a05b00226c2c9064a61297857ae7d15fc4ed",
      "tree": "8eb2325a9721d2c2036ff009ab3af60e5f659b38",
      "parents": [
        "a7b1595c2590574d0e4ac0f0932c25206ca909ef",
        "3f92ffc369c31c98620e22b66366adb93c60a5f8"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Sep 26 01:28:35 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 26 01:28:36 2014 +0000"
      },
      "message": "Merge \"Invalid active window if temporary disabling accessibility for test tools.\" into lmp-dev"
    },
    {
      "commit": "3f92ffc369c31c98620e22b66366adb93c60a5f8",
      "tree": "e6779a0e9970fb076485725036d67e45cad61707",
      "parents": [
        "dd81183bbea34109e1ae2d75667fe4784be6132f"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 25 16:48:53 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 25 16:57:11 2014 -0700"
      },
      "message": "Invalid active window if temporary disabling accessibility for test tools.\n\nIf accessibility is enabled and a test tool based on the accessibility APIs\nconnects to the system we suspend the current accessibility services while\nthe tool is running (to avoid inteference as the tool is such a service) and\nafter the tool disconnects we restore the accessibility state. The issue is\nthat when clearing the accessibility state we were also wrongly clearing the\nactive window. We are now careful to not clear the active window in such a\ncase.\n\nIt is also possible that the active window was never initilaized before the\ntool is run so now it is lazily loaded such that if we do not know which one\nit is, we get the one the has input focus. The definition of an active window\nis the one that has input focus or the user is touching.\n\nbug:17663432\n\nChange-Id: I8868866a5126c590d3bddad099ababb97978227a\n"
    },
    {
      "commit": "471157821f7b0933c55081ef4625c78f8e798de7",
      "tree": "5b19d9104208339f6733a36955e4693fef0f297e",
      "parents": [
        "43d5d896781d1481e01f3d658dc6dbae5bc03b74",
        "dd81183bbea34109e1ae2d75667fe4784be6132f"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 25 23:27:00 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 25 23:27:01 2014 +0000"
      },
      "message": "Merge \"Accessibility in bad state after using SDK tool uiautomatorviewer.\" into lmp-dev"
    },
    {
      "commit": "dd81183bbea34109e1ae2d75667fe4784be6132f",
      "tree": "7641de63e0bb4cfaa627d58a5bc513402134eda1",
      "parents": [
        "91807556a812d6c46c654869fc699c454eb657d1"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 25 15:56:28 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 25 15:56:31 2014 -0700"
      },
      "message": "Accessibility in bad state after using SDK tool uiautomatorviewer.\n\nThe UiAutormator tool is a part of the SDK. If it is run while\naccessibility is enabled it stops all accessibility services\nas it is an accessibility service itself to avoid interference\nand when done restores back the accessibility state. The issue\nwas that the accessibility state is not restored leaving the\ndevice in a bad state.\n\nbug:17662770\n\nChange-Id: I3c4f46fa05c76b874eeffdeb867ef433c3fedf2e\n"
    },
    {
      "commit": "8aeb0912945ae103223b76d81579073e51579efe",
      "tree": "10ce4b50c91a1f6073f6e9c7f53e5b36bd19ad5a",
      "parents": [
        "d23bfa9d42c477970189a96d4562d627d609e604"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Sep 24 17:55:49 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Sep 24 17:55:53 2014 -0700"
      },
      "message": "Accessibility events may be fired even if no services observe them.\n\nIf all accessibility services are disabled we turn off event firing\nto avoid a lot of work for nothing. The logic to do that had a flaw\nand was not turning event firing off in every case it should. We were\ntuning event firing if it is on and no service is enabled but it\nis possible that a package on the system image is disabled so the\nservice is enabled just not bound. Arguably we can remove the\nserivice from the enabled list but it is technically on the device.\nNote that we correctly handle the case of a package being removed.\n\nbug:17332506\n\nChange-Id: I6d6d9cb9cc271116a3d22ed9fd8d7f533dec9a0b\n"
    },
    {
      "commit": "8d412fe18b9ce8cf71ce57c380e7f312e4667667",
      "tree": "a053f2cbc0f3f23b8e8a0008047c735c12e8f8ed",
      "parents": [
        "ddc5e5f1c60f5fc491c9299a0afd280f8fdc252b"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Sep 19 15:37:02 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Sep 19 16:54:20 2014 -0700"
      },
      "message": "TouchExploer computes incorectly the click location.\n\nIf there is accessibilty focus and the user touch explores\nlocation that does not change accessibility focus that is\nnot in the app window, e.g. system bar, double tap does not\nclick on the system UI affordance. This is due to obsolete\nlogic from the time where accessibility focus was only in\nthe active window at the time of double clicking.\n\nbug:17588024\n\nChange-Id: Ib780103e873d8a2afd3b35de3227d54116f1a1b0\n"
    },
    {
      "commit": "4c6a4ce03bb5b20103a656948a1932f2894e7f56",
      "tree": "0e53c28e44be84e06597242878f12de2fc188c33",
      "parents": [
        "0cf001db60bd97bca26049d76723c5d99d4c5cac"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Sep 17 17:17:50 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 18 01:40:27 2014 +0000"
      },
      "message": "Some accessibility events wrongly filtered out (regression).\n\nWe added new APIs to allow accessibility services to query all\nwindows a user can touch. Sometimes the window state change\nevent arrives before the window manager sent over the new window\nstate which leads to a case that the app gets the event and\nasks for the window and the window is not there. To address this\nif we do not have the window, we hold on to the event and\nfire it as soon as the window arrives. This logic is correct\nexcept we were wrongly expecting that the window should have\ninput focus.\n\nbug:17464645\n\nChange-Id: I1ef50ebddeb4416a6c0776b096bb16aee703700c\n"
    },
    {
      "commit": "7498efdc5e163d6b4a11db941c7d13c169d37284",
      "tree": "2d94b4e0fe85ea98a438ecca6184d878ee5e61bd",
      "parents": [
        "df11867be3f60b6bd5e24afca7820c29a28c85c7"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Sep 03 21:33:00 2014 -0700"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Sun Sep 07 23:36:20 2014 -0700"
      },
      "message": "Clicking on partially coverd views by other views or windows.\n\nIn touch exploration mode an accessibility service can move\naccessibility focus in response to user gestures. In this case\nwhen the user double-taps the system is sending down and up\nevents at the center of the acessibility focused view. This\nworks fine until the clicked view\u0027s center is covered by another\nclickable view. In such a scenario the user thinks he is clicking\non one view but the click is handled by another. Terrible.\n\nThis change solves the problem of clicking on the wrong view\nand also solves the problem of clicking on the wrong window.\nThe key idea is that when the system detects a double tap or\na double tap and hold it asks the accessibility focused node\n(if such) to compute a point at which a click can be performed.\nIn respinse to that the node is asking the source view to\ncompute this.\n\nIf a view is partially covered by siblings or siblings of\npredecessors that are clickable, the click point will be\nproperly computed to ensure the click occurs on the desired\nview. The click point is also bounded in the interactive\npart of the host window.\n\nThe current approach has rare edge cases that may produce false\npositives or false negatives. For example, a portion of the\nview may be covered by an interactive descendant of a\npredecessor, which we do not compute (we check only siblings of\npredecessors). Also a view may be handling raw touch events\ninstead of registering click listeners, which we cannot compute.\nDespite these limitations this approach will work most of the\ntime and it is a huge improvement over just blindly sending\nthe down and up events in the center of the view.\n\nNote that the additional computational complexity is incurred\nonly when the user wants to click on the accessibility focused\nview which is very a rare event and this is a good tradeoff.\n\nbug:15696993\n\nChange-Id: I85927a77d6c24f7550b0d5f9f762722a8230830f\n"
    },
    {
      "commit": "d2b3e034d157104a0fe4542193a7694f9034efce",
      "tree": "64622d627ebdaaabcd85369a3dd1900a52253ded",
      "parents": [
        "18aa9f65fd27aa3d5322dd669b52c8cc1c4d9b5a"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Sep 04 13:18:44 2014 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Sep 04 13:18:44 2014 -0700"
      },
      "message": "Don\u0027t switch to touch exploring state on pointer up\n\nBUG: 17388688\nChange-Id: I146aa2290acf0a587eaccafa5a208ee1cbd84aa5\n"
    },
    {
      "commit": "9bf08c7bc1844ec8130b47d0ec3783f374b21c46",
      "tree": "db4294dfe3e4d0fa0d4db02a736a48c7af1d7921",
      "parents": [
        "baa5bccb19ee7369608e6557380dab81379f4cd7"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Sep 03 16:28:43 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Sep 03 16:29:35 2014 -0700"
      },
      "message": "Clear binder identity when sending window change accessibility events.\n\nWe get calls for window changes from the window manager and\nas a result send accessibility events for these changes. It\nis possible that the call for a windows change from the window\nmanager comes as a result of an unprivileged client calling\ninto the window manager. However, the event sending code\nis performing security checks.\n\nbug:17364244\n\nChange-Id: Ief016f9dafd13ac35418676817848b3ea3ed4d66\n"
    },
    {
      "commit": "9ae9ed24aa252acbc2e6288068b991dd5291967b",
      "tree": "11278c245609dfca5a3912853366bfa3e263a894",
      "parents": [
        "1611c21dfdf102fa4eadd3cab4c7bd5fda061826"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Sep 02 16:36:35 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Sep 02 16:46:23 2014 -0700"
      },
      "message": "Fix AccessibilityNode\u0027s isVisibleToUser behavior.\n\nThe isVisibleToUser property of an AccessibilityNodeInfo specifies\nwhether the user can see the source view. It is used by accessibility\nservices to figure out whether to focus on a view. This property\nwas giving a wrong value if the view is covered by another window\nsuch as the keyboard. As a result the user hears one thing but when\ndouble taps interacts with the overlaid window which is another thing.\n\nbug:15938254\n\nChange-Id: Ib9feb20ea422a24a512c47ed1234961ae0386a7f\n"
    },
    {
      "commit": "dc6d1a9cc3a23c26c786a732e729fdd418b57d29",
      "tree": "63fd11756426b65372a6c5123f9413480245b096",
      "parents": [
        "6a6a8f00946f963191612f64238bd706c2188dd8"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Aug 28 18:40:57 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Aug 28 18:45:50 2014 -0700"
      },
      "message": "Fix the global gesture to enable accessibility.\n\n1. There was a bug in the touch explorer which was crashing almost\n   every time after accessibility was enabled via the gesture. The\n   problem was that in dragging state when a finger goes up we were\n   not transitioning to touch exploring state.\n\n2. The global actions dialog was not going away after enabling\n   accessibility while it should as the user brought it up to\n   turn accessibility on rather to interact with global actions.\n\nbug:15254250\n\nChange-Id: Iaa45f758e09566822775b53e87d2980138e85ef9\n"
    },
    {
      "commit": "04cab1bcc46b05cbb72632c53ad83943f705b494",
      "tree": "d061e238253fdf9f6b4e6cbcecb7e7459da6f4be",
      "parents": [
        "4b4d7efe522b01237b842c23a1d92559fe412a6e"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 25 18:35:57 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Aug 26 10:06:22 2014 -0700"
      },
      "message": "Fix accessiblity CTS tests (framework).\n\n1. An external contribution changed the ordering of views for\n   accessibility. While it attempted to fix a platform issue\n   for a comparator breaking transitivity, it changed the way\n   we order views and results in very unnatural accessibility\n   traversal order. It also broke CTS tets. This change tweaks\n   the comparator which fixes the tests and improves traversal\n   order.\n\n2. If there is at least one accessibility service which cares\n   about windows we register a callback in the window manager\n   for window change notifications. We are updating the window\n   list on this callback. There was a case where if the service\n   requests window updates and immediately asks for the windows\n   it gets none as we have not received a callback from the\n   window manager yet. Now this call returns after we get the\n   callback in a timed fashion. This is consistent with how the\n   other introspection APIs work.\n\n3. Window info objects are cached in the accessibility service\n   process. When putting them in the cache a cloning call was\n   missing resulting in some cases of clobbering windows given\n   to the client. For example, we get some windows, cache them,\n   and return these windows to the client. Now a call to clear\n   the cache arrives while the user processes the windows and\n   the client windows get clobbered.\n\n4. Added API for checking if a window has accessiblity focus\n   to be consistent to the API we have to check whether this\n   window has input focus.\n\n5. Removed some obsolete code.\n\nbug:16402352\n\nChange-Id: Ided6da4a82cc0fc703008c58a2dff0119a3ff317\n"
    },
    {
      "commit": "8864415e2a29daf504b52afe911eb5c5a8b03fc0",
      "tree": "84a7791ac0eb8383aaf7dba01b59007e27d23b60",
      "parents": [
        "1bfd0f463e279e3ac3f133c5e0ad11ccfd73eed5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 22 03:42:47 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 22 03:52:01 2014 -0700"
      },
      "message": "Fix matrix multiply in accessiblity display adjustments.\n\nFixed a bug caused by a missing temporary when swapping two\nmatrices.  This could produce undefined results in the case where\nboth display inversion and the greyscale daltonizer were enabled\nsimultaneously.\n\nTightened up the code a little to make this kind of error\nless likely by removing redundant state.\n\nRemoved the native prefix on some methods since they are not\nnative at all.\n\nChange-Id: I716ffc8fbe76a304c60d45870074340c0121059f\n"
    },
    {
      "commit": "a4725efd0bfa52cbddf6ca587d37fc4ebcbfaf72",
      "tree": "945ec8ab8824db8e458485b213a32a54d2e71a08",
      "parents": [
        "0dcebb924619c240b9e820d145c8babc8d464b46"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jul 24 14:17:05 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Jul 25 01:17:02 2014 +0000"
      },
      "message": "Improve the window query API performamce.\n\nWe are caching the window data in the accessibility service process.\nWhen windows change we were sending the dalta of the windows the\nservice knows about. To make this work when the app asked for all\nwindows we had to call into the system as new windows may have\nappeared. This was slow.\n\nNow we are telling the service some windows change and if it gets\nthe windows we cache them. We call into the system only on a cache\nmiss and evict all windows from the cache on window change event.\nWe do not evict the nodes of the window as the former may have\njust moved. If views in a window change they fire accessibility\nevents that trigger the correct eviction.\n\nChange-Id: I586a72a2497b0d44a75288fa758e7e88817f3300\n"
    },
    {
      "commit": "cce47eb580d666ead1f6095d1e3b65233592bbaa",
      "tree": "bf41e1016cd8e311d44eeb0ecc9fecb11c3c2d39",
      "parents": [
        "5028fb035794c207698e52b276c54de109dd5022"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jul 16 15:12:15 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jul 16 18:25:23 2014 -0700"
      },
      "message": "Add accessibility text contrast setting\n\nb/14624452\n\nAdds a feature which draws all text (in the HW accelerated standard\npath) in a high contrast mode. Text is drawn at full alpha, and either\nwhite or black (depending on its original color) with a starkly\ncontrasted outline beneath it.\n\nChange-Id: I943f624b6367de35367cced3b2a8298f2bc62377\n"
    },
    {
      "commit": "e34560b21989eea54a139a0586d156ba573cc2ea",
      "tree": "d35e6998089afbd5492f23833cedc0c261c74c1e",
      "parents": [
        "2db72ad45b0c4d91f0d009c6d98eb7fb5231e1d9"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Jul 10 14:50:06 2014 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Jul 10 14:54:26 2014 -0700"
      },
      "message": "Add accessibility action to open power long-press dialog\n\nAlso fixes an infinite recursion bug in the WindowManagerService\nimplementation of WindowManagerInternal.\n\nBUG: 16129909\nChange-Id: I4f9d32f4e6c3ad460652c5e5271540fa5032a1f5\n"
    },
    {
      "commit": "83526c181e1dd1cf77c25ee1f47079037dec5ddd",
      "tree": "3a5dfeaa7547d359d0fe4457824449790ed76d74",
      "parents": [
        "16b414f46f04ba868856f7b8e65b3bdf084218f6"
      ],
      "author": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Wed Jun 18 18:33:34 2014 -0700"
      },
      "committer": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Wed Jun 18 18:33:34 2014 -0700"
      },
      "message": "Always call super when not sending the key event anywhere else\n\nFix for bug 13171440\n\nChange-Id: I1601e749f0114a6faebcdaeb5ac8993d668b54a8\n"
    },
    {
      "commit": "f7174e87b6007000777b0124de9cef70d8618788",
      "tree": "47d9f60bdc9b0d72d7c247d24e84527143847998",
      "parents": [
        "02a9c359a1a6e1175cdd2d560f97be9cdb816a0e"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jun 12 11:29:35 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jun 12 12:11:39 2014 -0700"
      },
      "message": "Fix backwards compatibility for introspected windows.\n\n1. The APIs for introspecting interactive windows were reporting only\n   the touchable windows but were missing the focused window. The user\n   can interact with the latter by typing, hence it should always be\n   reported. Also this was breaking backwards compatibility as if the\n   focused window is covered by a modal one, the focused window was not\n   reporeted and this was putting the active window in a bad state as\n   the latter is either the focused window or the one the user is touching.\n\n2. Window change events are too frequent as on window transition things\n   are chanign a lot. Now we are trottling the windows changed events\n   at the standard recurring accessibility event interval.\n\n3. Fixed a wrong flag comparison and removed some unneded code.\n\nbuy:15434666\nbug:15432989\n\nChange-Id: I825b33067e8cbf26396a4d38642bde4907b6427a\n"
    },
    {
      "commit": "4604abc97d7dd757bb76ff9b7fcf343dc4a15212",
      "tree": "e6dcea83ff38bc8b2afde5a1eef06b747cb88afd",
      "parents": [
        "006812acd20337b646454c3415172ebd369d2a04"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jun 10 18:59:30 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jun 12 08:26:21 2014 -0700"
      },
      "message": "Moving and resizing windows not reported propely for accessibility.\n\nWhen the position and size of a window changes we have to report that\nto the accessibility layer if the window introspection is enabled.\n\nbug:15569915\n\nChange-Id: I3f869e0a582592bfa5f3743d5c2133ee8cb39b34\n"
    },
    {
      "commit": "5c4cd189f298b3ddb9a5e8afc5f68546a9f96726",
      "tree": "7fe9ec74297c2a842a08a51964683a03b54e1c67",
      "parents": [
        "1c7c2a0dfa4c3f42243a2ef7bbdab43c60230d2f"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed May 21 14:53:16 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed May 21 14:53:25 2014 -0700"
      },
      "message": "Fixing bugs due to the new custom accessibility action APIs.\n\n1. AccessibiltiyAction was incorectly throwing an exception when\n   a custom action was constructed.\n\n2. AccessibilityManagerService should no longer enforce only standard\n   actions as we allow custom ones too.\n\nbug:15110963\n\nChange-Id: Iea57e0a6449b87bd8d103c55ca255e80705f2565\n"
    },
    {
      "commit": "e08340645d2539ab13900b5f835b84bcfe8b99e0",
      "tree": "b49994d8efa3210add9f92d501d675bbbdf30a5d",
      "parents": [
        "cfd9d7eec23159c06faccf62d12d9a117a3067ef"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Mon May 12 15:26:45 2014 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Mon May 12 15:26:45 2014 -0700"
      },
      "message": "Simplify accessibility display adjustments\n\nMakes the inversion bit public so apps can be smarter about rendering\nimages non-inverted (if they are so inclined).\n\nBUG: 14680114\nChange-Id: I8ca2b2517af2ffc13446d7e0b4e859c1171e2d0e\n"
    },
    {
      "commit": "0425d7f56b5c14484777357075b285d59996e6e9",
      "tree": "845550da75475f4ac6a62cdd57073d0dff7d8f7f",
      "parents": [
        "dab404938368fc5bb0a3d9b91135890ab31d0b0c"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu May 08 14:13:35 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri May 09 08:58:39 2014 -0700"
      },
      "message": "Teach accessibility manager services about user profiles.\n\nFor user profiles the accessibility layer will use the accessibility\nstate of the their owner. A profile cannot have its own plugins or\nsettings. The rationale behind this is that if a user with impaired\nvision is using the device with different profiles linked to his\nmain one, then he/she should be able to interact with the device no\nmatter what profile the app is being run with. Hence, The behavior\nof the accessibility features should be consistent across apps run\nwith different profile.\n\nbug:14564491\n\nChange-Id: Id19ce81e1a2dfa48015c7ab3053d66c058be3e46\n"
    },
    {
      "commit": "02b9b981eae877a4624c1820f96298d88a5ced60",
      "tree": "f3c9e6eb3e5fc4103171cfa0167781b34377e123",
      "parents": [
        "57d2fd46bc67812c736e52c64813a9e14a4de66f",
        "0f7ed1f4776844f3ee8d3ce9d903f62cace66a06"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 11 18:24:38 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 11 18:24:38 2014 +0000"
      },
      "message": "am 0f7ed1f4: Merge \"Adding system support for a single accessibility focus.\"\n\n* commit \u00270f7ed1f4776844f3ee8d3ce9d903f62cace66a06\u0027:\n  Adding system support for a single accessibility focus.\n"
    },
    {
      "commit": "1e0d4af9986c8c2a658769a63bf8b385d25e0435",
      "tree": "2aee6d0a5fab5ccf8ccc36fbbb02bccd77fc312b",
      "parents": [
        "c095ca1cb8877121f768b5b6940e4025e810d4ba"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 10 17:41:29 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 11 11:21:48 2014 -0700"
      },
      "message": "Adding system support for a single accessibility focus.\n\nNow that we have APIs to query all interactive windows and allow\nan accessibility service to put accessibility focus in each of\nthem we have to guarantee that there is a single accessibility\nfocus. This is required for correct operation of the touch\nexplorer as on double tap in clicks in the center of the focused\narea, hence having more that one focus is an issue. Also the\nsystem is maintaining a single input focus so now accessibility\nfocus behaves consistently with that.\n\nbug:13965563\n\nChange-Id: I0b5c26dadfabbf80dbed8dc4602073aa575ac179\n"
    },
    {
      "commit": "dd137a85d3e0295989b5b9d1f67ff32027be867d",
      "tree": "328650a01c60ee36afa5e7daa119b1ca7d5d216f",
      "parents": [
        "0c5c18a2be161d3d3f778c348b6830161c637f81",
        "6be2f95202237b7284542e692273d13a5bd26913"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 10 12:48:07 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 10 12:48:07 2014 -0700"
      },
      "message": "resolved conflicts for merge of 6be2f952 to master-lockscreen-dev\n\nConflicts:\n\tcore/java/android/view/IWindowManager.aidl\n\ttools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java\n\nChange-Id: Idcbc581294cc52b53eabefd61e5c20cbcea611db\n"
    },
    {
      "commit": "6be2f95202237b7284542e692273d13a5bd26913",
      "tree": "42a2dae8ac52754848593b62b950f96761723240",
      "parents": [
        "2bb8dde44be10212ec453d435aaad27177714f5e",
        "1376d600d8e0eefdbc0aa11d398cf7517fc77129"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 10 19:32:59 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 10 19:32:59 2014 +0000"
      },
      "message": "Merge \"Adding render stats APIs to UiAutomation (framework).\""
    },
    {
      "commit": "6360d29cd78839539aafed961a0b96dc7ba3c317",
      "tree": "35793956aeacae383069847a6599c3a0e5ed9797",
      "parents": [
        "615c946448d9afb08a0cce0eeabc4a9d775f402e",
        "bc1a8f42d9eb5f1d91c872904a9a283781291fcb"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 09 23:51:12 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 23:51:12 2014 +0000"
      },
      "message": "am bc1a8f42: Merge \"Active window not correctly computed.\"\n\n* commit \u0027bc1a8f42d9eb5f1d91c872904a9a283781291fcb\u0027:\n  Active window not correctly computed.\n"
    },
    {
      "commit": "48eacec53e3f877712c2cf66676f453ddf6b90fb",
      "tree": "a6d96d62f122dd206fbc00035a6e7a0f41cd9d42",
      "parents": [
        "3c86a27d3e9044d04d0f176e59a1ebbcd774a54c"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 09 16:45:46 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 09 16:45:49 2014 -0700"
      },
      "message": "Active window not correctly computed.\n\nThe accessibility manager service was not handling the focused\nwindow properly which as a result was breaking the active window\ntracking.\n\nbug:13788022\n\nChange-Id: Iaa3fadfbf7b9545f5151e3603beeda2662fe7618\n"
    },
    {
      "commit": "1376d600d8e0eefdbc0aa11d398cf7517fc77129",
      "tree": "f5a4a7e7a66943dec172cfb10a1868dc8a8c8df4",
      "parents": [
        "ed3db02c051f52f9ad3770e3c6b5b90c71a04fb1"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Mar 13 11:17:26 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Apr 07 17:01:42 2014 -0700"
      },
      "message": "Adding render stats APIs to UiAutomation (framework).\n\nbug:12927198\n\nChange-Id: Iae21481c75ae58dcdab3731bf5f1e2844e29d434\n"
    },
    {
      "commit": "380ecb81db52a9d0197ca969951d07b91c20d2b9",
      "tree": "753915d98f530e97095dc9f3c95dba67d3fadfb5",
      "parents": [
        "ca4761661a41fc0750a2bc5e7c90481216e626c3"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Fri Mar 14 17:25:20 2014 +0100"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Fri Mar 28 22:35:03 2014 +0100"
      },
      "message": "Make Keyguard a library and make StatusBar the new Keyguard.\n\nThis change achieves a couple of things:\n- Let Keyguard be a library, so we can use it in SystemUI.\n- Introduce FLAG_KEYGUARD for windows and deprecate TYPE_KEYGUARD. Make\nall the TYPE_KEYGUARD behaviour dependant on the flag.\n- Implement a new KeyguardService in SystemUI, and bind that service\nfrom PhoneWindowManager.\n- Introduce BaseStatusBar.setKeyguardState and inflate\nKeyguardSimpleHostView there and use FLAG_KEYGUARD for the window, such\nthat the status bar window essentially gets the Keyguard.\n\nBug: 13635952\nChange-Id: I059d80d8b9b9818a778ab685f4672ea2694def63\n"
    },
    {
      "commit": "cbcc9695f0a701d620f48de75eaee05c4fef6f22",
      "tree": "f9eaa32f9a572982578450a7e542a8b7acc4ee6e",
      "parents": [
        "9ae0c8ffba5ab50fb02d319a00e56fe42960cb4a"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Mar 25 17:26:04 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Mar 25 17:27:37 2014 -0700"
      },
      "message": "Wrong constant used for undefined accessibility window id.\n\nChange-Id: I8b14db034a42a7ffd211a46fa3fee7bf2a6eac8f\n"
    },
    {
      "commit": "8e3feb15c5aec2c72b0ef120a1da325e1e8f0dda",
      "tree": "424ee490ecedaed22da440cbaf4eb34411649bac",
      "parents": [
        "17cb58137949420e83d29aeec4f933c35565027c"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 24 13:46:47 2014 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Mar 20 16:52:59 2014 +0000"
      },
      "message": "Added accessibility APIs for introspecting interactive windows.\n\n1. The old introspection model was allowing querying only the active window\n   which is the one the user is touching or the focused one if no window is\n   touched. This was limiting as auto completion drop downs were not inspectable,\n   there was not way to know when the IME toggles, non-focusable windows were\n   not inspectable if the user taps them as until a screen-reader starts\n   introspecting the users finger is up, accessibility focus was limited to\n   only one window and the user couldn\u0027t use gestures to visit the whole UI,\n   and other things I can\u0027t remember right now.\n\n   The new APIs allow getting all interactive windows, i.e. ones that a\n   sighted user can interact with. This prevents an accessibility service\n   from interacting with content a sighter user cannot. The list of windows\n   can be obtained from an accessibility service or the host window from an\n   accessibility node info. Introspecting windows obey the same rules for\n   introspecting node, i.e. the service has to declare this capability\n   in its manifest.\n\n   When some windows change accessibility services receive a new type\n   of event. Initially the types of windows is very limited. We provide\n   the bounds in screen, layer, and some other properties which are\n   enough for a client to determined the spacial and hierarchical\n   relationship of the windows.\n\n2. Update the documentation in AccessibilityService for newer event types.\n\n3. LongArray was not removing elements properly.\n\n4. Composite accessibility node ids were not properly constructed as they\n   are composed of two ints, each taking 32 bits. However, the values for\n   undefined were -1 so composing a 64 long from -1, -1 prevents from getting\n   back these values when unpacking.\n\n5. Some apps were generating inconsistent AccessibilityNodeInfo tree. Added\n   a check that enforces such trees to be well formed on dev builds.\n\n6. Removed an necessary code for piping the touch exploration state to\n   the policy as it should just use the AccessibilityManager from context.\n\n7. When view\u0027s visibility changed it was not firing an event to notify\n   clients it disappeared/appeared. Also ViewGroup was sending accessibility\n   events for changes if the view is included for accessibility but this is\n   wrong as there may be a service that want all nodes, hence events from them.\n   The accessibility manager service takes care of delivering events from\n   not important for accessibility nodes only to services that want such.\n\n8. Several places were asking for prefetching of sibling but not predecessor\n   nodes which resulted in prefetching of unconnected subtrees.\n\n9. The local AccessibilityManager implementation was relying on the backing\n   service being ready when it is created but it can be fetched from a context\n   before that. If that happens the local manager was in a broken state forever.\n   Now it is more robust and starts working properly once the backing service\n   is up. Several places were lacking locking.\n\nbug:13331285\n\nChange-Id: Ie51166d4875d5f3def8d29d77973da4b9251f5c8\n"
    },
    {
      "commit": "4cd353c038ec3c21f25c12897992e5e9826fe824",
      "tree": "6738ef0e78f1ad39481b6df073e42d70047da5b1",
      "parents": [
        "1a405db22a2ade6b745f3e1cf93ba0c54b048d95"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Wed Feb 12 19:54:30 2014 -0800"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Feb 20 20:05:34 2014 -0800"
      },
      "message": "add new accessibility action for EditText to set text content\n\nBug: 12872344\nChange-Id: I85a3805ab0c34b96a7d4228f2382c8ff664e36e8\n"
    },
    {
      "commit": "9f97de13359662c2709eed227b3fab2ce7d5dabc",
      "tree": "7eb16083cd5fd9d30999dfdead280311084c3e5a",
      "parents": [
        "2b1252ddd2650cb38918cb85d2a3711b2cfa8db5",
        "a5a93f559d337ad5b79716b05ea43707eb779dc8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 06 20:25:51 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 06 20:25:51 2014 +0000"
      },
      "message": "am a5a93f55: am 7f416631: Merge \"Check feature bits before loading optional services\" into klp-modular-dev\n\n* commit \u0027a5a93f559d337ad5b79716b05ea43707eb779dc8\u0027:\n  Check feature bits before loading optional services\n"
    },
    {
      "commit": "898c13df7b9b12ff10062f3542593e12fbe0c119",
      "tree": "323bc4d7da06b48af2079f44c5f8d346d265e956",
      "parents": [
        "df88d73092c62a1a3cd2b2056ca63ae2e70cc238"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 28 15:34:50 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 05 19:26:40 2014 +0000"
      },
      "message": "Check feature bits before loading optional services\n\nAt startup, we check with PackageManager whether a system service is\navailable before attempting to load it. A system service is available\nif its associated feature (similar to hardware features) is present.\nThis does not remove unavailable services from the compiled jar.\n\nChange-Id: I13571805083aa4e65519a74acb52efd17b9fb3d7"
    },
    {
      "commit": "1f4bf364b2a4eecfae7c3243396ad6a5c43843a9",
      "tree": "19118b2b81d28f5469c82c498770416efebaf02c",
      "parents": [
        "49782e46c0eb85a25ae2abcf80880c48dbab5aea",
        "19c662b3df3b35756a92282bb6cc767e6407cb8a"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Dec 19 23:32:03 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 19 23:32:03 2013 +0000"
      },
      "message": "Merge \"Move files to new directory structure of framework services\""
    },
    {
      "commit": "49782e46c0eb85a25ae2abcf80880c48dbab5aea",
      "tree": "9fab2a40c41004d78b7001dc766d85f61d24f582",
      "parents": [
        "4dace6f66d498c2d119adf265776aa83b28452af",
        "9158825f9c41869689d6b1786d7c7aa8bdd524ce"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Dec 19 23:30:35 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 19 23:30:35 2013 +0000"
      },
      "message": "am 9158825f: Move some system services to separate directories\n\n* commit \u00279158825f9c41869689d6b1786d7c7aa8bdd524ce\u0027:\n  Move some system services to separate directories\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": "19c662b3df3b35756a92282bb6cc767e6407cb8a",
      "tree": "94782f00c0050be00cedb530fd1869138bbb06de",
      "parents": [
        "8d9802d98e600a5341dc850a7c0183a69a5dafef"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Dec 19 15:20:43 2013 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Dec 19 15:20:43 2013 -0800"
      },
      "message": "Move files to new directory structure of framework services\n\nChange-Id: I6239d90fa0b813e37878f8fc31caf7a2d70fa3ba\n"
    }
  ]
}
