)]}'
{
  "log": [
    {
      "commit": "ab53289c593aad60eddbe1ffc73402ac1f92c112",
      "tree": "f88a68831c436cc696172f3b6ec095ef41fba61d",
      "parents": [
        "00de0e644dad9c70f0ed87e9028a14328b08b949"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Mar 08 14:19:49 2017 -0800"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Mar 15 07:31:09 2017 -0700"
      },
      "message": "Add API to mark apps that have an update available\n\nOstensibly for instant apps, we allow play to mark an app as having\nan update available. This will trigger instant app resolution even\nif the instant app is already installed on device.\n\nBug: 35143464\nTest: Manual; launch URI of installed instant app, see it runs w/o resolution. set bit. launch URI of installed instant app, see it runs resolution\nChange-Id: I511df2b2a3eab39377167c770255ccbe02d5dad2\n"
    },
    {
      "commit": "816c83bf037e2284a61ac8e918ff882d162d9321",
      "tree": "007df9d244b5ed887cd3535922aa658efacc31aa",
      "parents": [
        "b7e34d5508b41c421994eb70f96f56e5db7ede74"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Thu Mar 02 10:27:59 2017 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Tue Mar 07 15:28:03 2017 -0800"
      },
      "message": "Enforce visibleToInstantApps for receivers\n\nInstant apps can only send broadcasts to receivers that are declared in\nthe manifest with android:visibleToInstantApps\u003dtrue or if the app\nregisters a receiver at runtime using the new methods that take\nvisibleToInstantApps.\n\nBug:33350280\nTest: Manually sending broadcasts from Instant Apps only goes to\nreceivers with visibleToInstantApps set to true.\nTest: Receiving a broadcast from within the same app does not require\nvisibleToInstantApps to be set.\n\nChange-Id: I54d79a502ba9c5fd03ede3c09e08afc88fe2775f\n"
    },
    {
      "commit": "31a16551910492321a6f7c291eb33e1458f39f0a",
      "tree": "37af5f1436fffcded16d265c957f2ff173115c09",
      "parents": [
        "b26979f14eb04c4addd67e97dc81d6d8ccd79cc3"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Wed Mar 01 15:08:45 2017 -0800"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Wed Mar 01 16:36:48 2017 -0800"
      },
      "message": "Create PackageManager.isInstantApp API to query whether\na given package name is an instant app.\n\nTest: refactor existing codepaths retained\n\nChange-Id: I6253fe8cc398d6547566d11043bffd1c4ffaa74a\n"
    },
    {
      "commit": "0a4cf4b57f43905be8602737d3fcc9f40997e6a3",
      "tree": "57d355981a54f89f72c2129db3dea66c94ac43ff",
      "parents": [
        "b6ac8f7f09517c87f56eff53a9af423b73fce215",
        "9dcdc8f1879681a87b23656c7ff9ca3b51b6caaf"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 23 13:56:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 23 13:56:23 2017 +0000"
      },
      "message": "Merge \"Deprecate TestSuiteBuilder and related classes.\" am: a26000b8f5 am: fd61eb1e39\nam: 9dcdc8f187\n\nChange-Id: Icbc80cc054244f2660814bde4a9dc681b501024f\n"
    },
    {
      "commit": "fd61eb1e3926b6500275addb203dd0eb3892d5b9",
      "tree": "8c3933ab971c034b534d2a77875402bc2ab97de1",
      "parents": [
        "5da6f4fbd1b76b45e4701ec44f2d1f3a50761f16",
        "a26000b8f5c85705d56444e052eb1e775ad5a7e1"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 23 13:44:24 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 23 13:44:24 2017 +0000"
      },
      "message": "Merge \"Deprecate TestSuiteBuilder and related classes.\"\nam: a26000b8f5\n\nChange-Id: Ia9d491bd72f2a9f08838e298aaf4de5de28c7d4f\n"
    },
    {
      "commit": "3600f7b64553587a4829019fcfbd4916fc214ef0",
      "tree": "9286d4611fbca185063f5ab25d152df7b2d9b9d6",
      "parents": [
        "a1d548024dc1c8df6257c804225eb7ff8202c97b",
        "da4597769b5be791c3588581947650a013115877"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 22 15:31:55 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 22 15:31:55 2017 +0000"
      },
      "message": "Merge \"Remove conflicting package information for junit.runner and junit.textui\" am: f3f4775a35 am: 9b5522f8c4\nam: da4597769b\n\nChange-Id: Ibbcb838b9d41391b559a555111ebafce437a5679\n"
    },
    {
      "commit": "9b5522f8c4ab1c503d47e0305a5c6b4db45b9828",
      "tree": "d810cf6622348d6b00a1dd37e639c56e7b13c3ec",
      "parents": [
        "cb47118af13be8efb2d4344d045744f5320ec07d",
        "f3f4775a35d0ba972381e2bcc3c4af8d1fb1f857"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 22 15:24:27 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 22 15:24:27 2017 +0000"
      },
      "message": "Merge \"Remove conflicting package information for junit.runner and junit.textui\"\nam: f3f4775a35\n\nChange-Id: Ie0ca0b2b6b5f06e90f55996625f758521c9039cb\n"
    },
    {
      "commit": "253ad40649242edae625d95e2ae415a1bf27b9fc",
      "tree": "8f9222e7a95fb40f3fc3b587132128f13f4076a9",
      "parents": [
        "f3f4775a35d0ba972381e2bcc3c4af8d1fb1f857"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Feb 20 16:26:09 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 22 15:18:19 2017 +0000"
      },
      "message": "Deprecate TestSuiteBuilder and related classes.\n\nDeprecates com.android.internal.util.Predicate in favour of\njava.util.function.Predicate.\n\nDeprecates TestMethod and TestSuiteBuilder in favour of\nAndroid Test Support Library.\n\nBug: 35089332\nTest: make checkbuild\nChange-Id: Id8b2be55925d7ca09750fc9681817793517ceb5d\n"
    },
    {
      "commit": "f845fec30cc3a5e0c49d4365c5f9088121e94791",
      "tree": "00fe9698d56cb15f1c7d595453f658add97a38d4",
      "parents": [
        "ef69246260156120d2fb1a20ed527883c8b7c398"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 22 12:43:57 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 22 12:43:57 2017 +0000"
      },
      "message": "Remove conflicting package information for junit.runner and junit.textui\n\nRemoves package.html files and update package-info.java files to\nuse same wording as previous releases.\n\nBug: 35653948\nTest: make docs\nChange-Id: Idbede2eb4f57818f152834fad7e75dd181fe25d6\n"
    },
    {
      "commit": "96b98321635dac0334f50f9711313ceb981f8f1e",
      "tree": "a56196a79552e32a59df70fd9b33e735536632c3",
      "parents": [
        "cd1af32eda2172ac73396b6336e358a0c9711187",
        "61221290f5d2c1dd1ac223e049bf6d6c3a9d2838"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 17 21:09:24 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 21:09:28 2017 +0000"
      },
      "message": "Merge \"API for accessing preloaded files cache\""
    },
    {
      "commit": "61221290f5d2c1dd1ac223e049bf6d6c3a9d2838",
      "tree": "e88b424732503bbd83d90c3f03ab7eb5e506b723",
      "parents": [
        "a722a2ea38f65eda5e7cfaaff29465d396e6f1a3"
      ],
      "author": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Fri Sep 02 15:21:03 2016 -0700"
      },
      "committer": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Fri Feb 17 10:40:54 2017 -0800"
      },
      "message": "API for accessing preloaded files cache\n\nAdded @SystemAPI method Context.getPreloadsFileCache.\n\nBug: 31008665\nTest: manual\nChange-Id: Id61ab5e1b78d8bfbd40f61985406a8de4082b30f\n"
    },
    {
      "commit": "b047b8bd7e363081e91ba6cbc8d09cd355624584",
      "tree": "0b15ed46761aadf8ac9fa23c2791322b06757952",
      "parents": [
        "7d8875a178973ad4a2e0a5ed5492770f773a02e8"
      ],
      "author": {
        "name": "Andrii Kulian",
        "email": "akulian@google.com",
        "time": "Wed Feb 08 18:38:26 2017 -0800"
      },
      "committer": {
        "name": "Andrii Kulian",
        "email": "akulian@google.com",
        "time": "Thu Feb 16 17:33:59 2017 -0800"
      },
      "message": "Report move to display for activities that handle config changes\n\nWhen activity that is moved between displays handles all configuration\nchanges, it won\u0027t be restarted. This CL adds a callback to the client\nto notify it about display change. Usually it will be followed by\nonConfigurationChanged, except when configuration didn\u0027t actually change.\nWhen activity is recreated, it won\u0027t receive onMovedToDisplay.\n\nBug: 34862802\nTest: android.server.cts.ActivityManagerDisplayTests\nTest: #testOnMovedToDisplayCallback\nChange-Id: I9a9501cab788623ada15a31efb53e4b2378639fe\n"
    },
    {
      "commit": "9106c64bf3ca60d0b867fa1f2d78d3b19c9e4178",
      "tree": "cc366888fa7579b5d9d7d55095af9844fa198ba2",
      "parents": [
        "710a285110c9fbe4296a7afc9b2923d66f00806b"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Feb 08 14:16:53 2017 -0800"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Tue Feb 14 12:44:50 2017 -0800"
      },
      "message": "Add API to track package changes\n\nAfter any package install, removal or update, save the changed\npackage and update a global sequence number. At any point, apps\ncan query for the packages changed since a particular sequence\nnumber.\n\nIf a package is changed multiple times, it is only included once\nin the change list.\n\nBug: 33865505\nTest: Create sample app to query for changes and see which packages are changed after performing certain operations\nChange-Id: Ia4646035362b16a97110e05f3f909ce385b48428\n"
    },
    {
      "commit": "6cd440c574e8b035079c73fb852ef52cc8487d20",
      "tree": "d98dd051ba5f42eb36a731cb87bf40d278e037ec",
      "parents": [
        "5d99e14ca9c209fb90d6ad4e0aeea7f67a96aac1",
        "8faed4502409786dffed956d26bd790f8ad81075"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 09 20:02:25 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 09 20:02:25 2017 +0000"
      },
      "message": "Merge \"Partial Revert \"Replace com.android.internal.util.Predicate with java.util.function.Predicate\"\" am: 621ebe692f am: a2c92b0b88 am: c1a93884dc\nam: 8faed45024\n\nChange-Id: I9d047f2e7bd8dfb14bf7b1f8c82ce6721e105198\n"
    },
    {
      "commit": "c1a93884dce8339f13aadf8b4abeeb7c44626451",
      "tree": "2051f6ee32ef9ad22c167db3d28335a2d263d0e0",
      "parents": [
        "2b9ee48dae89b6eece95bc69ee1741ae04d754a2",
        "a2c92b0b88c6d77d41144926f610f821cfaec6bd"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 09 19:32:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 09 19:32:58 2017 +0000"
      },
      "message": "Merge \"Partial Revert \"Replace com.android.internal.util.Predicate with java.util.function.Predicate\"\" am: 621ebe692f\nam: a2c92b0b88\n\nChange-Id: I605588603280ff0b4ebc1088c6c1f1c933c1e657\n"
    },
    {
      "commit": "57e490cf8cf85932c11208c64bbd2b35315ffbc8",
      "tree": "38070ad246bd7003c680149a74683ab7c951a832",
      "parents": [
        "78a20be77acb6595ed112f2a2642ed569f6082b5"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 09 14:47:53 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 09 14:52:43 2017 +0000"
      },
      "message": "Partial Revert \"Replace com.android.internal.util.Predicate with java.util.function.Predicate\"\n\nThis partially reverts commit 3e5fbca0c57742f28f5c7e6bda6c3500b9471b47.\n\nBug: 35187548\nBug: 30188076\nBug: 35089332\nTest: make checkbuild\nChange-Id: I7ab4279aab604e3d56003b0a59867948aebabd28\n"
    },
    {
      "commit": "9250814fd2df286a25450fea1b493e77d152ae92",
      "tree": "91e8385148fcf22286d7bce0bca9dc9c99deaecd",
      "parents": [
        "e9799155c9596e7ec634709c5854aa53a8355f78",
        "9e99b9ee45ebf0fb0d8e617f8a12c28b890e2ef9"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 08 18:30:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 08 18:30:17 2017 +0000"
      },
      "message": "Merge \"Replace com.android.internal.util.Predicate with java.util.function.Predicate\" am: 78a20be77a\nam: 9e99b9ee45\n\nChange-Id: I289950cff0cdc6b5ad301936c7b55eadee5fd0f8\n"
    },
    {
      "commit": "ca4964ccbef5f2c85855fc14577c7c25d0e0588d",
      "tree": "943851d59bf0846528feca4893e94b423f228d91",
      "parents": [
        "80f42edfc7333d8a2a3d8fa529b85ed6763f8cc0"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Feb 07 15:04:10 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 08 11:55:39 2017 +0000"
      },
      "message": "Replace com.android.internal.util.Predicate with java.util.function.Predicate\n\nBug: 35089332\nBug: 30188076\nTest: make checkbuild\nChange-Id: I0a5b4bf520fc39b59d8d790b01e9cff0d54e6d21\n"
    },
    {
      "commit": "3e5fbca0c57742f28f5c7e6bda6c3500b9471b47",
      "tree": "5bee6ac83dc3cc0b8f9421a61b2108b994c587a9",
      "parents": [
        "97fca8c035c7daa9cb1058aa37f0d8fb3ec73f70"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Feb 07 15:04:10 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Feb 07 16:57:54 2017 +0000"
      },
      "message": "Replace com.android.internal.util.Predicate with java.util.function.Predicate\n\nBug: 35089332\nBug: 30188076\nTest: make checkbuild\nMerged-In: I0a5b4bf520fc39b59d8d790b01e9cff0d54e6d21\nChange-Id: I58e4e35e7b7315033d893748f7c79e1ba6732f39\n"
    },
    {
      "commit": "096d304ae3d85c1bfcda1a1d9cd4eb13d0815500",
      "tree": "3ebef505ad00306dc5b9f4385715de5f4721b1ce",
      "parents": [
        "9b07338cb2a1a459312d39e85a38edf92549d072"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jan 30 16:34:13 2017 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jan 30 17:52:14 2017 -0800"
      },
      "message": "Add instant cookie APIs\n\nThis change adds APIs for instant apps to store cookie data\nthat is presisted across instant installs and across the\nupgrade from an instant to a standard app. Standard apps\ncan use the cookie APIs but when they are uninstalled the\ncookie is also deleted. The cookies are kept longer than\nthe instant apps as they are much smaller - 16KB by default.\nWe can change the cookie size via a system setting i.e.\nafter we ship we can increase size if needed.\n\nWe also add internal APIs to surface information about\ninstalled and uninstalled instant apps which should be\nused for showing them in the UI. For this puporse we store\nthe icon, permissions, and label of uninstalled apps. If\nthe app is re-installed we drop this meta-data but keep\nthe cookie around. If we have cookie data stored and the\nsigning cert of the app changes when it gets re-intalled\nwe wipe the cookie.\n\nTest: CTS tests pass; hiddent APIs tested manually\n\nChange-Id: If145c0440cc61a5303e2cbb70228d235d36037a5\n"
    },
    {
      "commit": "7d0f5e8d401fce5bc7bda836d1dd89a31056cbcf",
      "tree": "6132ecdb9bfadc0027972186d71fecea2e176986",
      "parents": [
        "36d32c37a32fbfd19037086f275fafaa0b6a7dd7",
        "dd91db5515fa05235a2875244ad10ba742d11dff"
      ],
      "author": {
        "name": "Paul Navin",
        "email": "paulnavin@google.com",
        "time": "Fri Jan 27 17:03:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 27 17:03:38 2017 +0000"
      },
      "message": "Add hidden API for whether permission review mode is on. am: 7b89a7b1f7 am: 7c230c6f3c\nam: dd91db5515\n\nChange-Id: I936449f717e3c2919622181c9068ec8a48b452ad\n"
    },
    {
      "commit": "7c230c6f3c9f1ece465b83f3c03643b606f9d843",
      "tree": "72b840bfe16edbe2ff8efcd7b6205f9f940fe9e9",
      "parents": [
        "c620e64f614f81abfa4e925b34f4b7d12d4e9fbe",
        "7b89a7b1f7c208eaac19290b34c5f505a9fd5eba"
      ],
      "author": {
        "name": "Paul Navin",
        "email": "paulnavin@google.com",
        "time": "Fri Jan 27 16:55:03 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 27 16:55:03 2017 +0000"
      },
      "message": "Add hidden API for whether permission review mode is on.\nam: 7b89a7b1f7\n\nChange-Id: I925b6de9f79850dcc816a73357d1d589eeac6333\n"
    },
    {
      "commit": "7b89a7b1f7c208eaac19290b34c5f505a9fd5eba",
      "tree": "703b138a460c4f5f9a018d4d454e22ef0202e091",
      "parents": [
        "6cc3802e5004d2cea06edb0a0d75fb77086497a9"
      ],
      "author": {
        "name": "Paul Navin",
        "email": "paulnavin@google.com",
        "time": "Thu Jan 26 23:56:08 2017 +0000"
      },
      "committer": {
        "name": "Paul Navin",
        "email": "paulnavin@google.com",
        "time": "Fri Jan 27 03:42:32 2017 +0000"
      },
      "message": "Add hidden API for whether permission review mode is on.\n\nBUG: 34240393\nChange-Id: I68e55767a7da1d457a6cedd210aac9e339fb996c\n"
    },
    {
      "commit": "bcf3b70371a98878bcad088914a886df4217f555",
      "tree": "cb7413ab86c061649ad63d0db699522374e2b070",
      "parents": [
        "0e4bddb89629b621577da49f2c3a56b61a8796ad",
        "aef2513c7157a28236d097a81fe74d7ba6b710c9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 26 07:35:28 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 26 07:35:33 2017 +0000"
      },
      "message": "Merge \"Adding an api for apps to check whether they can install apps\""
    },
    {
      "commit": "aef2513c7157a28236d097a81fe74d7ba6b710c9",
      "tree": "f97967f689a45ae9e57590ceba7bb30e5c754eef",
      "parents": [
        "4bd54c70fa37909fdd7c764d9995c132e7cc137d"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Mon Jan 23 18:09:03 2017 -0800"
      },
      "committer": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Wed Jan 25 17:26:02 2017 -0800"
      },
      "message": "Adding an api for apps to check whether they can install apps\n\nSome apps may want to check whether they are trusted to install apps on\nthe device, so they can prompt the user to go to settings and mark them\nas trusted before they do an intensive operation like downloading an\napk.\n\nTest: cts-tradefed run cts -m CtsExternalSourcesTestCases\n\nBug: 31002700\nChange-Id: Icd9d04daa157e6733decba245ec251ce4acd4122\n"
    },
    {
      "commit": "4e8628157ad0c8c52e74b720eb0328086272ffda",
      "tree": "bdd92850181581f952cffe42fcd8d208ac22b96c",
      "parents": [
        "896c7f8937618a419777df5372b71753f397ff9c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 21 16:02:24 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 24 18:34:08 2017 -0800"
      },
      "message": "Add support for Split APK dependcies\n\nApps can now declare in their base APK AndroidManifest.xml\nthat they want to have their split APKs loaded in isolated\nContexts. This means code and resources from the split\nget loaded into their own ClassLoader and AssetManager.\n\n\u003cmanifest xmlns:android\u003d\"...\"\n          ...\n          android:isolatedSplits\u003d\"true\"\n          ...\n\nIn order to make this more useful, splits can declare dependencies\non other splits, which will all get pulled in to the Context\nand run as expected at runtime.\n\nA split declares its dependency on another split by using the\ntag \u003cuses-split\u003e in its AndroidManifest.xml:\n\n\u003cmanifest xmlns:android\u003d\"...\"\u003e\n    ...\n    \u003cuses-split android:name\u003d\"feature_split_1\" /\u003e\n    ...\n\nA split can have a single parent on which it depends on. This is\ndue to the limitation of having a single ClassLoader parent.\nAll splits depend on the base APK implicitly.\n\nPackageManager verifies that no cycles exist and that each dependency\nis present before allowing an installation to succeed.\n\nThe runtime will then load splits based on the dependencies.\n\nGiven the following APKs:\n\nbase \u003c-- split A \u003c-- split C\n  ^----- split B\n\nIf an Activity defined in split C is launched, then the base,\nsplit A, and split C will be loaded into the ClassLoader defined\nfor the Activity\u0027s Context. The AssetManager will similarly be loaded\nwith the resources of the splits.\n\nA split can be manually loaded by creating a Context for that split, defined\nby its name:\n\nContext.createContextForSplit(\"my_feature_split_1\");\n\nAll installed Activities, Services, Receivers, and Providers are accessible\nto other apps via Intent resolution. When they are instantiated, they are\ngiven the appropriate Context that satisfies any dependencies the split they\nwere defined in stipulated.\n\nTest: WIP (CTS tests to come)\nChange-Id: I8989712b241b7bc84381f2919d88455fcad62161\n"
    },
    {
      "commit": "6788212d17f54475ca9c3dd689a863e031db868f",
      "tree": "5965f1582fbb023e48f37bdedc6818c3f561b8a4",
      "parents": [
        "9a33bda0709f112d67635dbd72cb82d306726200"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Sun Dec 11 16:36:34 2016 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Sun Jan 22 14:05:15 2017 -0800"
      },
      "message": "Platform support for static shared libraries\n\nThis change adds support for static shared libraries that\nemulate static linking allowing apps that statically link\nagainst the same library version to share a common\nimplementation. A library is hosed by a package in a standard\nAPK.\n\nStatic shared libraries have a name and a version declared\nby a dedicated manifest tag. A client uses also a new tag\nto refer to the static library it uses by specifying the\nlib name, version, and the hash of the signing certificate.\nThis allows two apps to rely on two different library versions\nand prevents impersonation of the shared library by a side-loaded\napp with the same package name.\n\nInternally apps providing static libs use synthetic package\nname generated from the manifest package name and the library\nversion. This allows having different \"versions\" of the same\npackage installed at the same time.\n\nAn application cannot be installed if a static shared lib it\ndepends on is missing. A used shared library cannot be uninstalled.\nShared libraries can rotate certificates like normal apps. The\nversions of these libs should be ordered similarly to the version\ncodes of the hosting package. Such libs cannot use shared user\nid, cannot be ephemeral, cannot declare other libraries, cannot\nrename their package, cannot declare child-packages. They must\ntarget O SDK. Also they cannot be suspended or hidden or their\nuninstall blocked. Generally, speaking policy regarding code in\nstatic shared libs should be applied to the packages using the\nlibrary as it could have just statically linked the code.\n\nWe now have APIs to query information about the shared libraries\non the device in general. To clients static shared libraries are\npresented as multiple versions of the same package which is how\nthey are declared and published. Therefore, one can have two\nversions of the same package which means we need way to query\nfor and uninstall a specific version of a package. Also static\nshared libs can depend on other static shared libs which are\nversioned packages. To ease representation we add the concept\nof a versioned package which should be used in the case of\nstatic shared libs.\n\nA client can see only the static shared libs it depends on and\nmore specifically only the versions it depends would be retrieved\nby using the standard package manager APIs. There is a new\ndedicated API to get info about all shared libraries which\nwould provide data about all static shared lib versions. Also\nthese libraries must use v2 signing scheme.\n\nTest: CTS tests pass\n\nbug:30974070\n\nChange-Id: I4f3d537ee7a81f880950377b996e1d9d4813da5c\n"
    },
    {
      "commit": "42a386b7717300bf6d75cbd3b4f7ad00f294be0d",
      "tree": "740fd669223d48a609ce52cd0af3e5eff65936d8",
      "parents": [
        "4ea4f63d28efe745051f0887c8a1e70f916fe500"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Nov 07 12:21:21 2016 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jan 19 16:23:02 2017 -0800"
      },
      "message": "Enable background restrictions\n\nApps that target O+ are always subject to background restrictions.\nLegacy apps\u0027 background restriction is subject to the OP_RUN_IN_BACKGROUND\napp op.\n\nApps with these properties are exempted from background restrictions:\n  - persistent process\n  - currently on the idle battery whitelist\n  - global whitelist for things like bluetooth services\n\nBug 30953212\n\nChange-Id: Icc19b2fbc05f40dcf8c3fc4abf718c373dc8d4f6\n"
    },
    {
      "commit": "ccb04450279c53eda250ac3e20b75cd07bcd1f7e",
      "tree": "b7465ccb8c71931bcc64f3fa19c90be70d6baf54",
      "parents": [
        "0ac7232b7cd55806b4fd231899a57a20c7f7bdd8"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jan 10 12:08:23 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jan 19 09:43:05 2017 +0000"
      },
      "message": "Prepare for removal of legacy-test from default targets\n\nIn preparation for removing junit classes from the Android API\nthe legacy-test target will be removed from the\nTARGET_DEFAULT_JAVA_LIBRARIES. This change adds explicit\ndependencies on junit and/or legacy-android-test to ensure that\nmodules will compile properly once it is removed.\n\n(cherry picked from 6387604f9e672ece85e07c4bcbd7be396867f06f)\n\nBug: 30188076\nTest: make checkbuild\nMerged-In: I13e88297731253420e4e5f5291d503f13a39a156\nChange-Id: I58446eb8c45d8ac2bcdbc9fa40d1321e811bdd4b\n"
    },
    {
      "commit": "8aeb59ebcd50a510d024dc082fa17b192074c63d",
      "tree": "b7f3e92f4eebc63df03fd63d35b0eafc18ccc81c",
      "parents": [
        "57b8eb3da0c4692ac4f39a9c73aa090af475d14a"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jan 10 12:08:23 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jan 18 16:39:34 2017 +0000"
      },
      "message": "Prepare for removal of legacy-test from default targets\n\nIn preparation for removing junit classes from the Android API\nthe legacy-test target will be removed from the\nTARGET_DEFAULT_JAVA_LIBRARIES. This change adds explicit\ndependencies on junit and/or legacy-android-test to ensure that\nmodules will compile properly once it is removed.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I13e88297731253420e4e5f5291d503f13a39a156\n"
    },
    {
      "commit": "a34f53f61be31b7171d6cbcb12490ee143acffff",
      "tree": "b0d15d434faede85150c30203345d2438b218e8e",
      "parents": [
        "d26d2af79e5bb52f4392bdbfd1858f905f80480d"
      ],
      "author": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Wed Jan 11 18:08:47 2017 +0100"
      },
      "committer": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Fri Jan 13 16:51:28 2017 +0100"
      },
      "message": "Add install reason\n\nThis CL allows a reason to be specified when installing a package. The\ninstall reason is a sticky piece of metadata: When a package is e.g.\ninstalled via enterprise policy and an update is then manually\ninstalled or sideloaded, the install reason will remain \"policy.\"\nThe install reason is tracked separately for each user.\n\nWith this CL, two install reasons exist: \"policy\" and \"unknown.\" Other\ninstall reasons will likely be supported in the future.\n\nBug: 32692748\nBug: 33415829\nTest: Tested manually with \"adb install\" / \"adb uninstall\"\n\nChange-Id: I0c9b9e1b8eb666bb6962564f6efd97e41703cd86\n"
    },
    {
      "commit": "9bc89af3f1bce8003ee4f93b89a1770d8f5b9cc9",
      "tree": "281fb2873aef53de09d95fa7c738b38cc1eacc7a",
      "parents": [
        "cb2c57338b5c018629fb488f7729779b7934a913"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jan 11 11:25:50 2017 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jan 12 09:53:44 2017 -0700"
      },
      "message": "Add API for apps to declare their \"category\".\n\nUpcoming platform features need to cluster apps together into broad\ncategories to help summarize information to users.  (For example,\nwhen presenting battery, network, and disk usage.)\n\nWe are tightly limiting the set of categories to keep them easily\npresentable to users when summarizing information.  This feature is\nnot designed to be a general-purpose taxonomy, nor should it be\nallowed to become one.\n\nOlder apps may not have defined a category in their manifests, so\nallow the installing app to define a category on their behalf.\n\nTest: builds, boots\nBug: 33815939\nChange-Id: I785b882ee7c18072ef47d56e0fc19ad72888e1b7\n"
    },
    {
      "commit": "bf9928de18adfc39de17300325dfbd229af5db99",
      "tree": "6cb1fe5477d72c9f2609d08a3543d3a5caa68004",
      "parents": [
        "5394fd0450ed2ad2355c013bcf9d14c057ce83d4"
      ],
      "author": {
        "name": "Tony Mak",
        "email": "tonymak@google.com",
        "time": "Thu Dec 22 11:02:45 2016 +0000"
      },
      "committer": {
        "name": "Tony Mak",
        "email": "tonymak@google.com",
        "time": "Thu Dec 29 14:07:46 2016 +0000"
      },
      "message": "Make sure ServiceConnection callback is called in main thread\n\nFix: 33568999\n\nTest: cts-tradefed run cts --module CtsDevicePolicyManagerTestCases\n--test com.android.cts.devicepolicy.DeviceOwnerPlusManagedProfileTest\n\nChange-Id: I14c8b5b1f78192429e68a3057430406245a909c8\n"
    },
    {
      "commit": "ed7d67a9200516240f5a0bbef5205a37c2528dd9",
      "tree": "4694b5a7a6980ce4ae40c187b53221e831a4fdbd",
      "parents": [
        "c30cdf89feee88407d6cccf60c1f27ef69c9fcd2",
        "50c1bb82b1ee02af4bdc5dba52f8e2ba8c0a3c94"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Dec 14 13:56:44 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 14 13:56:44 2016 +0000"
      },
      "message": "Copy junit-runner files into test-runner. am: eef35dd29a am: b46cecb6c4 am: b6421ce031\nam: 50c1bb82b1\n\nChange-Id: I7be2758511183480d9ba948ed1e0958e2e7a97c5\n"
    },
    {
      "commit": "eef35dd29ae2cf9d78c052ef8b8a49aa4da55be9",
      "tree": "b505adc571a8f6d18add650f1ab7dfba8d331808",
      "parents": [
        "06178a39f880a12f881bf1c4144b9e54601dfd4a"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Dec 12 12:22:31 2016 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Dec 14 10:41:05 2016 +0000"
      },
      "message": "Copy junit-runner files into test-runner.\n\nThe android.test.runner target forms part of the Android API and\nso must maintain backwards compatibility. The junit classes that\nbelong in there are copied here to ensure that they do not\nchange when external/junit is upgraded.\n\nBug: 30188076\nTest: make checkbuild and checked android.test.runner contents\nChange-Id: I947144c47ae1c3eb361a43c39bdd03dc11b9575f\n"
    },
    {
      "commit": "ea93fe75396465b26429cfe1c1dcfadf7351354f",
      "tree": "cc979179513a34dc41035455d74ee10dba2d078a",
      "parents": [
        "eddb8b0cf4abf12e662dd7032275d54485da1fe9"
      ],
      "author": {
        "name": "Steve McKay",
        "email": "smckay@google.com",
        "time": "Fri Dec 02 11:35:35 2016 -0800"
      },
      "committer": {
        "name": "Steve McKay",
        "email": "smckay@google.com",
        "time": "Fri Dec 09 12:31:44 2016 -0800"
      },
      "message": "Replace ContentProvider SQL args w/ Bundle \u0026 Constants.\n\nTest: cts-tradefed run cts-dev -m CtsContentTestCases\nBug: 30927484\nChange-Id: Idb9dbc2b80896e9f8474a0db71353b7a3810d597\n"
    },
    {
      "commit": "4a7cda98fca86d1a1b7df78d302e3caaf07137e1",
      "tree": "8e1472c91e51ad75416c837dae34d299c4c6d14e",
      "parents": [
        "6b87b3df2c5493cda939a1678ceabb49801120be",
        "b6961ffa5396ad9965968095a37ddd21ed1e32b9"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Dec 07 13:24:14 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 07 13:24:14 2016 +0000"
      },
      "message": "Merge \"Replace core-junit with junit\" am: 6ac5293751 am: a4d7100a3b am: 9cb5f2815d\nam: b6961ffa53\n\nChange-Id: Id397baf01c8285b0843a66afd544ddf89abf451f\n"
    },
    {
      "commit": "9249205d1ba91065b7f314a05706d2b1011ee71b",
      "tree": "b10abe2bd5bb692687d2ee8f3cdff46bb7ef1378",
      "parents": [
        "19fc36fa336c65405f88dbcef907ecc0feace7e7"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Dec 01 13:50:06 2016 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Dec 06 14:32:41 2016 +0000"
      },
      "message": "Replace core-junit with junit\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I0cb6f89907eb099714b54bac57b51c4be186c3e0\n"
    },
    {
      "commit": "02c8990bd6125f05cb32561727d559dc9327a601",
      "tree": "4268f2f3b2a20c517b6f61bca691810a1456c8da",
      "parents": [
        "c66cc5166e1a1c9ee11aa01e56ffa25cd5fa2bc3"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Tue Nov 15 19:36:38 2016 +0000"
      },
      "committer": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Tue Nov 29 14:09:37 2016 +0000"
      },
      "message": "Allow overriding max profile in debugable builds.\n\nSupport a system property on debugable builds to\noverride the max number of managed profiles to\nallow easier dogfooding of multiple profiles.\nSupport 3 different badge colours for managed profiles.\n\nBug: 30473760\nTest: runtest -c com.android.server.pm.UserManagerServiceCreateProfileTest frameworks-services\nTest: runtest -c com.android.server.pm.UserManagerServiceUserInfoTest frameworks-services\nTest: manual - attempting to create 2 profiles with adb fails, passes once I set the property.\nChange-Id: Ie7fb19048a04a01572666f229283152254d0ffc3\n"
    },
    {
      "commit": "d5fd01c89ab5393909b3897c8c1eb3d3c5377ac3",
      "tree": "8699a987a6702d3af8dbd145265b74af015dab72",
      "parents": [
        "595e83395d1dcb537e62ff28e2b24eefa4d27de5",
        "e3b757a4bfe4895eb7dafe6f567e37f659636659"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 24 14:08:54 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 24 14:08:54 2016 +0000"
      },
      "message": "Move JUnit classes from here into external/junit am: 0342ab5b94 am: b9e33cd549 am: f99687ee83\nam: e3b757a4bf\n\nChange-Id: Ib11a330ca65e9c2d2904993cbd67e604b2b80d5d\n"
    },
    {
      "commit": "0342ab5b9447481ad82740dde01595bf3c288e15",
      "tree": "e6bec185c8117cd62fb0baaebb8a7591c90789c2",
      "parents": [
        "c6c005ef5b927be1b49b4d18a0b887b571fb3ca4"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Nov 21 15:26:00 2016 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Nov 22 12:27:53 2016 +0000"
      },
      "message": "Move JUnit classes from here into external/junit\n\nChecked that android.test.runner had the same classes in as\nbefore the change.\n\nThese classes are legacy 3.8.1 classes, they are not in 4.10 at\nall. They appear to have been left here by accident. Looking at\nthe history it appears that at one time there were copies of\nJUnit 3.8.1 junit.runner classes in frameworks and\nexternal/junit. The classes here were upgraded to 4.10 but even\nthough these classes had been deleted immediately after 3.8.2\nwas released they were not removed, instead they appear to have\nbeen reformatted as part of the upgrade. The external/junit\nsource was upgraded to 4.10 about two weeks later which seems to\nhave been done correctly. About three months after that the\nclasses here that were duplicates of those in external/junit\nwere removed from here leaving the legacy classes from 3.8.1.\n\nI could not find any usages of these classes and they are not in\nthe public API so they can probably be removed altogether.\nHowever, for now I will simply move them into external/junit as\ndescribed and remove them when upgrading JUnit there to 4.12.\n\nBug: 30188076\nTest: Built android.test.runner and checkapi\nChange-Id: I88687889315c041d999fe7e61b9652ac8406165c\n"
    },
    {
      "commit": "1133424c2bf28640299a6de375aaa19cfcb407b5",
      "tree": "57b1a76bb5ea9bafe1729a16baaf9c512df98433",
      "parents": [
        "0d11dc0cbb2c7f1fb7b6cb9575823f6ceb66fbc9"
      ],
      "author": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Thu Nov 17 20:49:16 2016 +0100"
      },
      "committer": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Thu Nov 17 20:49:16 2016 +0100"
      },
      "message": "Wire up PM.getInstalledApplicationsAsUser(flags, userId) as hidden API\n\nSettings needs to access a variant of getInstalledApplications() which\ntakes a |userId| argument. Since this is not currently exposed by\nPackageManager, Settings calls into PackageManagerService directly. This\nis ugly and breaks the regular abstraction layer hierarchy.\n\nThe CL fixes the problem by exposing the required variant of\ngetInstalledApplications() as a hidden API, analogously to what was done\nbefore with getInstalledPackages().\n\nBug: 32692748\nTest: Will be CTS-verifier-tested together with Settings\nChange-Id: Id9c4e8e18524d312159821f1a4d5527263c7e950\n"
    },
    {
      "commit": "46aabe5ef4362014914b7df707c2de2341211d69",
      "tree": "49e1ae793bffa18642826610eb31cf0fa13e26f7",
      "parents": [
        "b53e048b92df6bd6f4e31f36a95e46f82298fd2a"
      ],
      "author": {
        "name": "Tony Mak",
        "email": "tonymak@google.com",
        "time": "Mon Nov 14 12:53:06 2016 +0000"
      },
      "committer": {
        "name": "Tony Mak",
        "email": "tonymak@google.com",
        "time": "Mon Nov 14 14:20:11 2016 +0000"
      },
      "message": "Allow cross profile call between DO and PO\n\nAllow DO to bind service of PO in managed profile and vice versa.\nDO and PO must be the same package.\n\nBug: 31895999\n\nChange-Id: I3ce2943aebd1249401d5814757a0ce25b9f85279\nTest: cts-tradefed run cts --module DevicePolicyManager --test com.android.cts.devicepolicy.CorpOwnedManagedProfileTest\n"
    },
    {
      "commit": "1cf454fcb69f63cfb2c5576aab310679df502516",
      "tree": "810843dd9bd64a498941897f2654bec2d14f1b19",
      "parents": [
        "05675c80c11b5414ecee20afce727fe25698452d"
      ],
      "author": {
        "name": "Ben Lin",
        "email": "linben@google.com",
        "time": "Thu Nov 10 13:50:54 2016 -0800"
      },
      "committer": {
        "name": "Ben Lin",
        "email": "linben@google.com",
        "time": "Thu Nov 10 13:53:27 2016 -0800"
      },
      "message": "Adding ContentProvider#refresh and ContentResolver#refresh.\n\nOriginal CL is from ag/1568530.\n\nBug: 31647485\nChange-Id: Ib45fc995a361b8c75cd3600f638910b18a263d51\n"
    },
    {
      "commit": "391dfcfa6838c3b573e28fe22beca30ac5e34370",
      "tree": "4104e4938b50963c1d42de2e2b1d8cbd7c8fd69c",
      "parents": [
        "aa9b4a364be068401838a7dc196784bf77b4da87",
        "38c67d3c0fdd27282d30a23784f98a3df704d6a9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 02 23:56:54 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 02 23:56:55 2016 +0000"
      },
      "message": "Merge \"Revert \"Add per-user versions of set{Component,Application}EnabledSetting.\"\""
    },
    {
      "commit": "38c67d3c0fdd27282d30a23784f98a3df704d6a9",
      "tree": "3e51172b3f795fced155a98933e86e0d0c0332db",
      "parents": [
        "0e6bfff6c1ec17cf8f3cfb6e4853d3c0fa3ffb73"
      ],
      "author": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Tue Aug 02 22:13:17 2016 +0000"
      },
      "committer": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Tue Aug 02 22:13:17 2016 +0000"
      },
      "message": "Revert \"Add per-user versions of set{Component,Application}EnabledSetting.\"\n\nThis reverts commit 0e6bfff6c1ec17cf8f3cfb6e4853d3c0fa3ffb73.\n\nChange-Id: I4eafa9fc052e9eba9e26fd32c09b5e759fe63b00\n"
    },
    {
      "commit": "52c8edc2d8406a90c128d9e0ae86c62e88e618c9",
      "tree": "c02615b494dd3175133bc69c42ee8152c4089608",
      "parents": [
        "23f440d30f2a77e3df54a82674979106e136be6f"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Jul 25 14:30:26 2016 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Jul 25 14:30:26 2016 -0700"
      },
      "message": "Add asUser version of sendBroadcast(Intent, String, Bundle)\n\nChange-Id: Id87aa1123d6c0a8a036ed9430eee10357040321f\n"
    },
    {
      "commit": "0e6bfff6c1ec17cf8f3cfb6e4853d3c0fa3ffb73",
      "tree": "b4f4aa1e1e102b1278e257ba4da10389a4c564d6",
      "parents": [
        "cd74b3050d2e271556cabc7870a9b8bc3ba67fed"
      ],
      "author": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Tue Jul 19 17:49:33 2016 -0700"
      },
      "committer": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Wed Jul 20 10:30:57 2016 -0700"
      },
      "message": "Add per-user versions of set{Component,Application}EnabledSetting.\n\nChange-Id: Id63b233308e92a4c360f38d4728c519ac2131ff0\nFixes: 30230444\n"
    },
    {
      "commit": "4ece3d6bb18a609afcd0e82f0340b7d36ba24eea",
      "tree": "5cdbf44c4ed33767fe334feca6add5d106f40714",
      "parents": [
        "f184789ae9154059a2b74cab386a65b04cefc9c0"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 16 18:05:41 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 21 17:55:58 2016 -0700"
      },
      "message": "ContextImpl: Keep DisplayAdjustments and Display in sync\n\nMake sure that when our Resources get updated, that DisplayAdjustment\nand Display properly reflect the potentially new screen dimensions.\n\nBug:28388969\nChange-Id: I340550ea094ece87abc8790dd46aaa60ab3cedd3\n"
    },
    {
      "commit": "ebdc157bc0d41decfdcade19bd3bda680ace499b",
      "tree": "3e1bcec34e3f1d0c556854fddd83bdba6ec2e69c",
      "parents": [
        "29c01336db4b2db5582904597559b14563543054"
      ],
      "author": {
        "name": "Stephan Linzner",
        "email": "slinzner@google.com",
        "time": "Wed May 25 15:48:29 2016 -0700"
      },
      "committer": {
        "name": "Stephan Linzner",
        "email": "slinzner@google.com",
        "time": "Wed May 25 22:54:27 2016 +0000"
      },
      "message": "Un-deprecated Android mock testing APIs\n\nSome mock APIs don\u0027t have an ATSL equivalent yet\nwill be deprecated in O timeframe now.\n\nChange-Id: Ibb7ec32fba3d16f0ea02d100f4e4fc8f011288f0\nBug: 28295815\n"
    },
    {
      "commit": "a9c2500a6863dabdd786f17a25ce0bf3683109a2",
      "tree": "30a9b8acaeaf91ac0c90ede24fbfa6deac2cd441",
      "parents": [
        "8bb7ad598560fda42ec256f02ba69cf54b433a85"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 13 19:25:56 2016 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 13 19:31:40 2016 -0700"
      },
      "message": "Disallow disable of the system shared libs.\n\nbug:28173410\n\nChange-Id: If731f2d90312a083bb940f83431ba3eccf213947\n"
    },
    {
      "commit": "78c9eb8947538f63d2e06684663d400991dfff8f",
      "tree": "8aade80caa37234ec166da1b2d43d4b453acbe6a",
      "parents": [
        "518bae5fa411327b14ca1e1496f6c9836da0eccd"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Tue Apr 12 15:51:35 2016 -0700"
      },
      "committer": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Tue Apr 12 18:23:56 2016 -0700"
      },
      "message": "Added api to delete cache files for a given user\n\nAdded an api to delete application cache files for a specific user. This\nallows settings to clear cache files for work profile apps as well.\n\nBug: b/25338468\nChange-Id: I52d4944a7a03b6d63ad44dd6bb868aec62815eab\n"
    },
    {
      "commit": "70168dde6e1da06042818350fc6e258188d001ae",
      "tree": "42dce8046e15800facbd1a0bd2b33e1a7f97e6a1",
      "parents": [
        "60328375c85e2a9b48139b553912606e19865196"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Mar 30 21:47:16 2016 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Mar 30 23:31:39 2016 -0600"
      },
      "message": "Make Parcelable classes final, API cleanup.\n\nRemove some Context methods that leaked through.  Add lint rule to\nrecommend using List\u003c? extends Parcelable\u003e instead of Parcelable[].\n\nBug: 27932224, 27930145, 27932911\nChange-Id: Ia302de46cdb0c5101fa175a09316df91aeefcf0d\n"
    },
    {
      "commit": "8a372a0a280127743ce9a7ce4b6198c7a02d2a4f",
      "tree": "f2446f9d00e6dc0be78885db357719b9b3830e48",
      "parents": [
        "58ae278294017abca0dffc95f006ae646c88db89"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Mar 16 16:25:45 2016 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Mar 17 14:49:08 2016 -0600"
      },
      "message": "Refactoring FBE APIs based on council feedback.\n\nMostly consists of removing the word \"encryption\" from most APIs,\nsince we can\u0027t actually make promises about the data being encrypted.\n\nBug: 27531029\nChange-Id: Iace9d7c4e64716abf86ed11847c40f3947e1d625\n"
    },
    {
      "commit": "bbb3ff2b2a29d42771a9ce2fe2d6f576cff62617",
      "tree": "8ac2249728f187ca613a274f85755875c7c9ee78",
      "parents": [
        "466b702cac1ba6102c0c96b6528b4b0b30cd0a0b"
      ],
      "author": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Thu Jul 09 15:39:23 2015 +0100"
      },
      "committer": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Wed Mar 16 01:42:23 2016 +0000"
      },
      "message": "Flush package restriction changes for a user.\n\nChange-Id: I7c4481f820b6b368487d00de6c783e64cec99f4b\n"
    },
    {
      "commit": "66ae66a7f74ee835807a141a216afbb254664510",
      "tree": "34fd21f558dd52533d9e47ac48f135decf89320d",
      "parents": [
        "60b7bcc614ae818c902e1a0ed3b2381e23eba61c"
      ],
      "author": {
        "name": "Vadim Tryshev",
        "email": "vadimt@google.com",
        "time": "Thu Feb 18 15:41:21 2016 -0800"
      },
      "committer": {
        "name": "Vadim Tryshev",
        "email": "vadimt@google.com",
        "time": "Wed Mar 02 14:55:04 2016 -0800"
      },
      "message": "Adding getManagedUserBadgedDrawableForDensity() to PackageManager.\n\nIt allows badging an image regardless of of the user (no\nuser id parameter). The styling for managed users is applied.\n\nThis is useful for new cases where the existing functions\nwouldn\u0027t badge the icon, but we need it.\n\nBug: 25192539\nChange-Id: I2fd2f226f626fb2e6cda1cfe072013350e12b41c\n"
    },
    {
      "commit": "093622f089a84298b5cfaab839eef6678292de5d",
      "tree": "4457547077c5881408a94c6cd2b1c6ea5a5a3e20",
      "parents": [
        "9f68f41a5866e1feb810b16c769705c10e850d5d"
      ],
      "author": {
        "name": "Vadim Tryshev",
        "email": "vadimt@google.com",
        "time": "Wed Mar 02 01:51:42 2016 +0000"
      },
      "committer": {
        "name": "Vadim Tryshev",
        "email": "vadimt@google.com",
        "time": "Wed Mar 02 01:51:42 2016 +0000"
      },
      "message": "Revert \"Adding getManagedUserBadgedDrawableForDensity() to PackageManager.\"\n\nThis reverts commit 9f68f41a5866e1feb810b16c769705c10e850d5d.\n\nCaused breakage.\n\nChange-Id: I441737f61f6f38ed9f440211b52bbac0f74982e3\n"
    },
    {
      "commit": "9f68f41a5866e1feb810b16c769705c10e850d5d",
      "tree": "77defdaf8ce5c43281b824a7923fe6809d8e0273",
      "parents": [
        "85f2ded23e0e77678f606dfa3ea4536d71c6edd2"
      ],
      "author": {
        "name": "Vadim Tryshev",
        "email": "vadimt@google.com",
        "time": "Thu Feb 18 15:41:21 2016 -0800"
      },
      "committer": {
        "name": "Vadim Tryshev",
        "email": "vadimt@google.com",
        "time": "Wed Mar 02 00:41:26 2016 +0000"
      },
      "message": "Adding getManagedUserBadgedDrawableForDensity() to PackageManager.\n\nIt allows badging an image regardless of of the user (no\nuser id parameter). The styling for managed users is applied.\n\nThis is useful for new cases where the existing functions\nwouldn\u0027t badge the icon, but we need it.\n\nBug: 25192539\nChange-Id: I20ca2d7265cbc3a47c050a72ec1843cc0a481c74\n"
    },
    {
      "commit": "a67932374dbbfbe4c6440d223fc7922b313dd957",
      "tree": "59ba1c512eb7732c9913c2306017a67650342bd5",
      "parents": [
        "72041bb2c6cbdab53f00d23cd7f832acf2cbfb5d"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Feb 24 22:46:00 2016 +0000"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Tue Mar 01 07:19:33 2016 -0800"
      },
      "message": "Revert \"Revert \"Remove deprecated methods / classes\"\"\n\nThis reverts commit 5cbeb5902633646fbc0a1be252081e77aaaee7b4.\n\nChange-Id: Id96010364d65e6131221ebbcc8ce5889a2da256c\n"
    },
    {
      "commit": "fe01ea05dd196acaf95a61e169f6b75654ae0875",
      "tree": "0a01ef705adc53a56558f1deff7111fb117e45ea",
      "parents": [
        "b7838209cb9b3e5f89c31487efc7b3f9555a9013",
        "5cbeb5902633646fbc0a1be252081e77aaaee7b4"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Feb 24 22:45:48 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 24 22:45:50 2016 +0000"
      },
      "message": "Merge \"Revert \"Remove deprecated methods / classes\"\" into nyc-dev"
    },
    {
      "commit": "5cbeb5902633646fbc0a1be252081e77aaaee7b4",
      "tree": "47e3242796eabfe4e66c9301f90b4f235d38a4d6",
      "parents": [
        "9706c01f9b92cee64bb84782138735225c8588e0"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Feb 24 22:45:00 2016 +0000"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Feb 24 22:45:00 2016 +0000"
      },
      "message": "Revert \"Remove deprecated methods / classes\"\n\nThis reverts commit 9706c01f9b92cee64bb84782138735225c8588e0.\n\nChange-Id: I14c53ab140220e48f6728b1173ea58760bbeb7f9\n"
    },
    {
      "commit": "ca67844e0c6b564970b8d329009c0d110888a3fc",
      "tree": "fc7490d5dbf1b1134630fd70dbb0a71770088906",
      "parents": [
        "8a5a25db42d87566173cbca99e5a9d52f0874078",
        "9706c01f9b92cee64bb84782138735225c8588e0"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Feb 24 21:02:56 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 24 21:02:58 2016 +0000"
      },
      "message": "Merge \"Remove deprecated methods / classes\" into nyc-dev"
    },
    {
      "commit": "2c1ba9a961d4f96c26df260ee437655ad9e7c03e",
      "tree": "9e31be1e3cb94b1bd2a9cdf96f12e42e92dcfc09",
      "parents": [
        "18026642213698fc095a9510c2431862d3a7f310"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 17 15:29:38 2016 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Feb 18 10:54:11 2016 -0700"
      },
      "message": "Make BackupManager encryption aware.\n\nBackup requires both CE and DE storage to be available, so delay\nspinning up the backup system until the user is unlocked, since\nthat\u0027s when CE storage becomes available.  Note that devices without\nFBE immediately transition USER_SYSTEM into the unlocked state,\nsince their CE is always available.\n\nOffer to backup and restore files under both CE and DE.  Since DE\nis effectively the same as CE, most logic is simply duplicated for\nnow, but it could be simplified in the future.  Since system apps\ncan force their default storage location to DE, we always build\nexplicit CE and DE paths.\n\nAdd getDataDir() to give clean access to the top-level private data\ndirectory, but disclaim that apps shouldn\u0027t create files there.\n\nBug: 26279618\nChange-Id: Ic34a4b330223725db93b1d0f5c9dffc88002c61f\n"
    },
    {
      "commit": "eb84b1843a3f6805c6109c1d9d023550229a3fc5",
      "tree": "a689a4889e3978303935f49c2dd27eaf6303053b",
      "parents": [
        "9496df19ae7552370ec37cfb62cce3d919b0b116"
      ],
      "author": {
        "name": "Andrei Stingaceanu",
        "email": "stg@google.com",
        "time": "Tue Jan 26 18:39:55 2016 +0000"
      },
      "committer": {
        "name": "Andrei Stingaceanu",
        "email": "stg@google.com",
        "time": "Wed Feb 17 15:14:33 2016 +0000"
      },
      "message": "Suspend packages - one call for multiple packages\n\nRefactor setPackageSuspended into setPackagesSuspended. The rationale\nis that the consumers of this API are likely to want to remove\nmultiple packages at once. Rather than calling the API N times, call\nit just once.\n\nThe good part is that we already have the broadcast intent for\nsuspended packages take an array so only one broadcast. Less stress\non the system.\n\nAnother good part is that (right now) we only have one consumer of\nthis API and it will be easy to make changes once this CL goes in.\n\nAs a shell command, for consistency only allowed one package at\na time.\n\nBug: 22776761\nChange-Id: Ic8b8cf64d0a288ea3a282bb7b72f9d663b3b0049\n"
    },
    {
      "commit": "5ae4e73ef0747c2d08a901f1a76d8fb8ee64a53a",
      "tree": "fee0f42b55a307e99989e4fcca379383a6ac9684",
      "parents": [
        "804d648138212a00bb260291e39fde0b327df709",
        "355b232d7998cfc9b29d42a0356390e25191bcbd"
      ],
      "author": {
        "name": "Andrei Stingaceanu",
        "email": "stg@google.com",
        "time": "Wed Feb 17 11:57:50 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 17 11:57:51 2016 +0000"
      },
      "message": "Merge \"Suspend packages - new API for retrieving the suspended status\" into nyc-dev"
    },
    {
      "commit": "9706c01f9b92cee64bb84782138735225c8588e0",
      "tree": "d968b7db4486a79a5eb0fa33bf7e29c49d9e852b",
      "parents": [
        "4f15f2ba67b6bc0ddad53b42235ac86d1079bbba"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Feb 12 15:17:36 2016 -0800"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Tue Feb 16 13:39:55 2016 -0800"
      },
      "message": "Remove deprecated methods / classes\n\nNow that we\u0027ve moved the majority of system components to the\nPackageInstaller, we can remove the majority of the \"installPackage\"\nmethods and the VerificationParams/ContainerEncryptionParams\nclasses. There are still some lingering references to the two\ninstallPackage() methods left [both internal and external; play\nis using these methods via reflection].\n\nBug: 24542768\nChange-Id: Ib65323d842d9f0e7fed60e37e6b5f103c94c859b\n"
    },
    {
      "commit": "355b232d7998cfc9b29d42a0356390e25191bcbd",
      "tree": "7c0155a58f49b9eec15cd163b0b1625f44488bb8",
      "parents": [
        "29b13190cd57bd823eb803f6fca03f671a32a5fe"
      ],
      "author": {
        "name": "Andrei Stingaceanu",
        "email": "stg@google.com",
        "time": "Fri Feb 12 16:43:51 2016 +0000"
      },
      "committer": {
        "name": "Andrei Stingaceanu",
        "email": "stg@google.com",
        "time": "Tue Feb 16 14:57:29 2016 +0000"
      },
      "message": "Suspend packages - new API for retrieving the suspended status\n\nInstead of always rebuilding the full ApplicationInfo for a\npackage when callers are only interested in the suspended status\nadd a new fast API in Packagemanager (which only checks the\nsuspended user setting for the requested package and returns\na boolean) and change the appropriate caller code too.\n\nBug: 26794775\nBug: 22776761\nChange-Id: Ide8428ef734479360d5a8a75fd8e0ed8ddf2da7a\n"
    },
    {
      "commit": "115d2c189a46f535778d9dd0923f703ff2f888fe",
      "tree": "f082b998dc2345ccb24b47657c8b2104991225b6",
      "parents": [
        "c6ca265902d41a0553d15f660647410db6a3e889"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Feb 15 17:25:57 2016 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Feb 15 17:45:42 2016 -0700"
      },
      "message": "Add feature versions for devices and apps.\n\nWe\u0027re starting to see more instances of device features that will\nincrement separately from the SDK API level, such as camera HAL,\nGPU capabilities, Bluetooth, and other hardware standards.\n\nThis change adds the ability for device features to specify a\nversion, which is defined to be backwards compatible.  That is, apps\nrequesting an older version of a feature must continue working on\ndevices with a newer version of that same feature.\n\nWhen a version is undefined, we assume the default version \"0\".\n\nBug: 27162500\nChange-Id: If890bf3f3dbb715e8feb80e7059a0d65618482ea\n"
    },
    {
      "commit": "d7b1f41109abee60ec8529369a85d84300b1d678",
      "tree": "51b28d52f9f79810bcea61eba44dd239e86b08d3",
      "parents": [
        "2a061b5bcfb92be2829f6fe9a6d86352193752e3"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 09 18:49:23 2016 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 09 18:49:27 2016 -0800"
      },
      "message": "Add an API to query the package name of the services shared lib\n\nThe servcies shared lib contains components apps can invoke such\nas services to bind to, activities to start, UI choosers, etc.\nThis lib is built from AOSP code but an OEM may chage its\npackage name. For example, Google renames the package names for\nGMS apps from android.foo.bar to com.google.android.foo.bar.\nWhile we have more than one shared lib that are a part of the\nplatform (currently shared and services libs) the serivces lib\nis the only one clients need to start components in, thus need\nto know its package name. This change adds an API to query the\npackage name of the services shared lib. The API is hidden as\ncurrently the only clients are a part of the system.\n\nChange-Id: Ied48fa4819024522791764b22b3336d4f4b42cc3\n"
    },
    {
      "commit": "35871f2c2bb114806b4e3f109960b7f863d7885c",
      "tree": "9a89bda9cbc01d61a3fd35271f31f092c856672d",
      "parents": [
        "f6ede47b78f557d49a1e2273e37f355d39a75a59"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jan 29 17:13:29 2016 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Jan 30 17:03:23 2016 -0700"
      },
      "message": "Offer to migrate databases and SharedPreferences.\n\nDatabases and SharedPreferences often involve multiple files under\nthe hood, so developers wanting to migrate them between different\nstorage contexts should ask us to make sure all relevant files are\nmigrated correctly.\n\nThis makes a best-effort attempt to recover from battery pulls\nduring migration, while still trying to alert developers to\nconflicting files.\n\nBug: 26668510, 25860525\nChange-Id: I9ffa3e8cb6191dfd4237b9466a081d6d77df3ba0\n"
    },
    {
      "commit": "b51617f4668ef8cf0e6d8d0fc3284eae51dbd8ca",
      "tree": "9e66ea505482770b09a33c338d008ab549357b91",
      "parents": [
        "d11c15d418d776d1db33f7664fad2671de0e6669"
      ],
      "author": {
        "name": "Stephan Linzner",
        "email": "slinzner@google.com",
        "time": "Wed Jan 27 18:09:50 2016 -0800"
      },
      "committer": {
        "name": "Stephan Linzner",
        "email": "slinzner@google.com",
        "time": "Wed Jan 27 18:09:58 2016 -0800"
      },
      "message": "Deprecated platform Android testing APIs\n\n- Deprecated most android.test.* APIs\n- Kept ProviderTestCase2 and LoaderTestCase since we don\u0027t have a\nreplacement yet\n- Deprecated android.test.suitebuilder\n- Added Javadoc to all deprecated APIs with links to corresponding\nAndroid Testing Support Library APIs\n- Removed all trailing whitespace\n\nBug: 22314304\nChange-Id: I1b1f0dd5132364110f1dfd4e3eb2dd044700d859\n"
    },
    {
      "commit": "e6ff946cd4f40a0d4f3de51b6554e07b8d3cee93",
      "tree": "bee8b54d24cc40f6115fe2b3a696c0e1c77a8a97",
      "parents": [
        "6183d12926a189b08cc3be8d9c78470617e63db0"
      ],
      "author": {
        "name": "Selim Cinek",
        "email": "cinek@google.com",
        "time": "Fri Jan 15 15:07:06 2016 -0800"
      },
      "committer": {
        "name": "Selim Cinek",
        "email": "cinek@google.com",
        "time": "Thu Jan 21 19:42:49 2016 -0800"
      },
      "message": "Switched the work profile badge used in the notifications\n\nChange-Id: I62616f1ae8fcda9953853b9859c69a9f1e6f44ca\n"
    },
    {
      "commit": "12705131b95d5d6bcfae79d7991ff3e6f02457e4",
      "tree": "49075f5f7d46b3d8bb72aae6edfaa4692764b261",
      "parents": [
        "f55ed12fd128961db0ab02d9884bda9721cc1e66"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Tue Jan 05 15:17:57 2016 -0800"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Mon Jan 11 16:21:03 2016 -0800"
      },
      "message": "Hide ephemerality\n\nChange-Id: Ibf60366b3f00b1920e330cd804bcc1c550f8882a\n\nBug: 26404647\n"
    },
    {
      "commit": "cd65448ccd13c4c2d0fe9e9623fec3a898ab9372",
      "tree": "da60bd6e2d928bfe7119258f8908d8360166f2c0",
      "parents": [
        "629f98466a4c2d778ddd4ce5a9df107e28f9b98a"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jan 08 17:42:11 2016 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jan 08 18:35:54 2016 -0700"
      },
      "message": "Even more PackageManager caller triage.\n\nFinish moving all UID/GID callers to single AIDL method that requires\ncallers to provide flags.\n\nTriage AppWidgets and PrintServices, which currently can only live on\ninternal storage; we should revisit that later.\n\nFix two bugs where we\u0027d drop pending install sessions and persisted\nUri grants for apps installed on external storage.\n\nBug: 26471205\nChange-Id: I66fdfc737fda0042050d81ff8839de55c2b4effd\n"
    },
    {
      "commit": "8588bc1ef1f020bbe4a24d46874f675708149a57",
      "tree": "ac8ebdc1706f519a8f798ac4f5ca3e26e0439e99",
      "parents": [
        "aec99bf78ff2404bf5497fdcb01430150709d8b3"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jan 06 16:47:42 2016 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jan 07 10:33:26 2016 -0700"
      },
      "message": "Add flags to requests for package UID/GIDs.\n\nThis gives callers the ability to request details for missing\npackages.  Also add annotations for userId and appId variables and\nstart tagging their usage.\n\nChange-Id: I63d5d7f870ac4b7ebae501e0ba4f40e08b14f3f6\n"
    },
    {
      "commit": "e06b4d1d9f718b9fe02980fea794a36831a16db2",
      "tree": "cfef7d72c17fc71b008f0c9a8f08d49553a30e16",
      "parents": [
        "2a90f673f5819e05ea72f6aba3e75956e0f807dc"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jan 06 14:51:50 2016 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jan 06 15:21:06 2016 -0700"
      },
      "message": "Consistent naming for PackageManager methods.\n\nWhen hidden PackageManager methods take a userId argument, they\nshould be named explicitly with the \"AsUser\" suffix.  This fixes\nseveral lagging examples so that we can pave the way to safely\nstart passing flags to new methods without scary overloading.\n\nAlso fix spacing issues in various logging statements.\n\nChange-Id: I1e42f7f66427410275df713bea04f6e0445fba28\n"
    },
    {
      "commit": "31ffb442414bd9cf6c0225799d7d0c5409f3769d",
      "tree": "5e163c32b628b53a36c7c5252e8e7ffb27d6cb11",
      "parents": [
        "8464831bf27cfe27980d0d86b96ba1c348792020"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Mon Dec 21 11:32:53 2015 -0800"
      },
      "committer": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Mon Jan 04 12:31:29 2016 -0800"
      },
      "message": "No need to pass digest of AndroidManifest.xml around.\n\nWhen an APK is being installed, the full path to the file is\noccasionally passed between processes. To detect changes to the file\nduring these handovers, the digest of the AndroidManifest.xml entry\ncould be passed around as well.\n\nThis security feature is no longer used and is no longer needed. APKs\nshould be installed using the modern Package Installer API\n(android.content.pm.PackageInstaller).\n\nBug: 24542768\nChange-Id: I2762634c85448e7adcd47ffc9a5294c021e127bd\n"
    },
    {
      "commit": "1e2839188fb49575b86646d3aadb355c81ef9cc5",
      "tree": "7d891672e43cb5162b7e7c99a3a68e91f8431227",
      "parents": [
        "53129f1c21fc1e404f8e1d5772954710e6442dd8"
      ],
      "author": {
        "name": "Andrei Stingaceanu",
        "email": "stg@google.com",
        "time": "Thu Nov 26 15:26:28 2015 +0000"
      },
      "committer": {
        "name": "Andrei Stingaceanu",
        "email": "stg@google.com",
        "time": "Wed Dec 16 18:14:14 2015 +0000"
      },
      "message": "Wire call to suspend a package\n\nAdds APIs in DevicePolicyManager and PackageManager for allowing\na device admin to suspend a package. PackageManagerService sets\nor unsets a new PackageUserState \u0027suspended\u0027 setting. Terminal\ncommand to suspend/unsuspend has been added via\nPackageManagerShellCommand (as root).\n\nNext steps:\n* use the new \u0027suspended\u0027 setting for denying access to start app\n(probably in ActivityStackSupervisor)\n* broadcast a PACKAGE_(UN)SUSPENDED intent for launchers to pick up\n* remove app from recents (go further and kill it if it is running)\n* erase existing notifications for this app\n\nBug: 22776576\nChange-Id: I718b3498f6a53cc0c6fdfb6d15031e53ddca4353\n"
    },
    {
      "commit": "0c6cc308cfd26ae102a1a3deb258e675da2c1eb0",
      "tree": "1cae39c64e8f239fb491b0a478b73716cf7ad324",
      "parents": [
        "6ec3e4c56b4539e59b932137030e3e745cfdec00",
        "e0e413e2b17a0164e15c77f4ab51b3166f9111d2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Dec 10 20:13:29 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 10 20:13:29 2015 +0000"
      },
      "message": "Merge \"Add new target SDK filtering feature to BroadcastOptions.\""
    },
    {
      "commit": "e0e413e2b17a0164e15c77f4ab51b3166f9111d2",
      "tree": "74aa91f46362c7cb351aa6f505f7c8eab790bdf5",
      "parents": [
        "27cf982641e5e84669565634bbb45940f6b1209a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Dec 09 17:22:26 2015 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Dec 10 12:12:00 2015 -0800"
      },
      "message": "Add new target SDK filtering feature to BroadcastOptions.\n\nYou can now control the range of target SDKs that receivers\nwill be need to have in order to receive your broadcast.\n\nUse this for CONNECTIVITY_ACTION to not allow N+ applications\nto receive these broadcasts through their manifest.\n\nAlso tweak the broadcast debug output code to now include the\ndisposition of each receiver in the list.  This is becoming\nimportant as skipping receivers is becoming a more common\nthing to have happen.\n\nChange-Id: I251daf68575c07cbb447536286ab4e68b7015148\n"
    },
    {
      "commit": "98cb23dccfb65ddd2802c49d8714979f7dbae1df",
      "tree": "5159f138d37965c9b3bd695b7bfe16f1f6f915a1",
      "parents": [
        "863cf1572ebf12cb6ef3a8e5424b1348c4734b0a",
        "e13529a4adb60e5a18c2e36ce6c5bf8f2d1db78f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Wed Dec 09 22:51:43 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 09 22:51:43 2015 +0000"
      },
      "message": "Merge \"Slight API renaming, better behavior.\""
    },
    {
      "commit": "e13529a4adb60e5a18c2e36ce6c5bf8f2d1db78f",
      "tree": "210d70d496483b2cf99b55350d55dc37c6514ebb",
      "parents": [
        "7a30a30ebece75f4a73fa604d4c7721d28eecc16"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Dec 09 14:15:27 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Dec 09 15:22:54 2015 -0700"
      },
      "message": "Slight API renaming, better behavior.\n\nRename APIs to reflect that they\u0027re storage-related.  Also move\ncredential-storage APIs to be system API.\n\nReturn a null Context when device-encrypted storage isn\u0027t\nsupported.  This is the easiest way to keep legacy apps working when\nupgrading from M to N.\n\nReduce strictness of path checking so we don\u0027t crash when working\nwith special packages like \"android\".\n\nBug: 22358539, 26104027\nChange-Id: I38c24fc003488186210a6ae3b64270f86e1efe56\n"
    },
    {
      "commit": "103d61b9f79de4d7b907227a7925e809e3e183c2",
      "tree": "e8c3cbd3b9474dc6b69a92b2dd0de295a951e2d6",
      "parents": [
        "15c4bbddfa2b8597498c2fb960038952f22c3775",
        "7a30a30ebece75f4a73fa604d4c7721d28eecc16"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Tue Dec 08 22:29:52 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 08 22:29:52 2015 +0000"
      },
      "message": "Merge \"Shift around encryption public APIs.\""
    },
    {
      "commit": "7a30a30ebece75f4a73fa604d4c7721d28eecc16",
      "tree": "ff6f65eb8291e9e07a83f7ae6cc7363ee3e0cc3c",
      "parents": [
        "6a6cdafaec56fcd793214678c7fcc52f0b860cfc"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 08 14:20:06 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 08 15:24:29 2015 -0700"
      },
      "message": "Shift around encryption public APIs.\n\nThere are far too many Context APIs with special directory paths\nto replicate device-encryption versions of them all.  Instead, add\nmethods to clone a Context that explicitly stores its data in either\ncredential- or device-encrypted storage.\n\nMethods to test the behavior of a given Context.\n\nBug: 22358539\nChange-Id: I6a6290a9b282605ce9a1f82742fc2c4c50536754\n"
    },
    {
      "commit": "2acf063da08dfff69f184c9a6a90a7a5fe60d818",
      "tree": "57da22759eccdbe0400d1916febec19de0732b9b",
      "parents": [
        "4f5ab5ffbe3d624fd4218e0ccf67a29a0150e102"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Nov 24 19:10:59 2015 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Dec 08 19:17:15 2015 +0000"
      },
      "message": "Ephemeral cookie API\n\nAdd APIs for an ephemeral app to set a cookie which is a small\npeice of data cached longer than the app itself. This is useful\nfor avoiding the user to login every time they use the ephemeral\napp. The cookie is stored after an ephemeral app is uninstalled.\nNormal apps or ephemeral apps upgraded to full apps can also use\nthese APIs with the difference that once they are uninstalled\nthe cookie is deleted.\n\nThe cookie size defaults to 16KB and is configurable by a global\nsettings which can be adjusted via gservices. Also eviction policy\nis time based with a default of one month and is configurable by\na global setting which can be adjusted via gservices. If the cert\nof the app cahnges (when ephemeral is installed, uninstalled and\ninstalled again) the cooke is wiped to prevent data leaks.\n\nThis cahange also adds an API for apps to know whether they run in\nan ephemeral mode since it this mode some APIs will not be available.\nAnother API exposed by this change is private for the system and\nexposes all ephemeral apps - installed and uninstalled. Only the\nsystem can call this API. When an ephemeral app is uninstalled the\nsystem stores its name, icon, and permissions. When the app is\nreinstalled or a full version is installed the permissions are\npropagated.\n\nChange-Id: Id4a73a7750bfbabda0bfcb9bf9018d2062e94367\n"
    },
    {
      "commit": "6a6cdafaec56fcd793214678c7fcc52f0b860cfc",
      "tree": "8875835dd240914d9bf7344dc5f2c0c35dc77b40",
      "parents": [
        "ce14cd01411c384b3b979a9f662bf3cd5f9e7183"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Dec 07 19:25:19 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Dec 07 19:25:25 2015 -0700"
      },
      "message": "APIs to obtain SharedPreferences paths.\n\nNeeded for apps that want to migrate SharedPreferences from CE to DE\nstorage.  Note that a device will only ever enter a CE mode with a\nfactory reset, so apps should only be using these APIs when they\nwant to migrate files to a consistent location on non-FBE devices\nfor simplicity.\n\nBug: 25503089\nChange-Id: Ic846215da1617d116a048e036415ac7ad523b770\n"
    },
    {
      "commit": "8fc29cf1052fd951a3a0828b65506db30df89ece",
      "tree": "dccb83793bc843e60e57d3c477517ab3adfc65b4",
      "parents": [
        "8924e8759f9a8cffb5ad538ca40a7826793aac07"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Nov 30 17:51:00 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Nov 30 18:01:20 2015 -0700"
      },
      "message": "API to create SharedPreferences from File.\n\nNeeded to support storage of SharedPreferences on both credential-\nencrypted and device-encrypted storage paths.\n\nBug: 22358539\nChange-Id: I576b696951b2a9de817d5be63d31b06f7e166a19\n"
    },
    {
      "commit": "cfa292e1dad184648bf673167f3f35b4fb34fc93",
      "tree": "7a6515d840e908fe36e23b674e0fc11299055057",
      "parents": [
        "4133dee9ec5338816e462650afcd039002eb289c"
      ],
      "author": {
        "name": "Piotr Jastrzebski",
        "email": "haaawk@google.com",
        "time": "Tue Feb 17 16:58:52 2015 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Nov 20 14:06:55 2015 +0000"
      },
      "message": "Add core-oj to the list of core library jars.\n\nWith some core classes moved to separate core-oj jar\nwe need to use the new jar.\n\n(cherry-picked from f898cda2f499b14f92bc7fb75f44110cdec7654f)\n\nChange-Id: Ica148f11bcc77f57d22944ff78c501611a293167\n"
    },
    {
      "commit": "15447798a38d2b5acb1998731340255f4203f294",
      "tree": "e65073fba1b29d787b7867ea79b12951383a1869",
      "parents": [
        "ea1e8ecf5eb988703cb4b5297b30b10561d07c29"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Nov 05 16:18:51 2015 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Nov 06 18:35:27 2015 -0800"
      },
      "message": "Initial file-based encryption public APIs.\n\nDefine two explicit directories where device-encrypted and\ncredential-encrypted data will be stored.  Third-party apps only\nneed access to the device-encrypted directory, so that\u0027s the only\nAPI exposed for now.\n\nGeneral cleanup in how ApplicationInfo details are derived.\n\nBug: 22358539\nChange-Id: If0a0108721a4aa1c3052b4912e08604bbf24e1ae\n"
    },
    {
      "commit": "9a80e53b27cd1ca00364a30a0ad153c83000b9d2",
      "tree": "735b91420989e654df9513c4d4d2fe91a4042987",
      "parents": [
        "7d92c474986c0ed562310a99aebd4ed845027f8b"
      ],
      "author": {
        "name": "Nicolas Prevot",
        "email": "nprevot@google.com",
        "time": "Wed Sep 23 15:49:28 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Prevot",
        "email": "nprevot@google.com",
        "time": "Thu Sep 24 10:57:51 2015 +0100"
      },
      "message": "Add more methods that take a userId to PackageManager.\n\nAdd methods installPackageAsUser and installExistingPackageAsUser\nand deletePackageAsUser and getPackageInfoAsUser.\n\nBUG:23516394\nChange-Id: I15e30d2ec45ab18c7f8c0ac02cfc617c50fedb44\n"
    },
    {
      "commit": "3355eca23e89045be068b39f5236cd43406a2a2d",
      "tree": "cd16f63e49e7e644433abd1c5ffd1c3a780bee73",
      "parents": [
        "3b0fc3cf24e1fecdbc11808483c2109415ebfdd2"
      ],
      "author": {
        "name": "Nicolas Prévot",
        "email": "nprevot@google.com",
        "time": "Wed Sep 23 11:34:38 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Prévot",
        "email": "nprevot@google.com",
        "time": "Wed Sep 23 11:34:38 2015 +0000"
      },
      "message": "Revert \"Add more methods that take a userId to PackageManager.\"\n\nThis reverts commit 3b0fc3cf24e1fecdbc11808483c2109415ebfdd2.\n\nIt breaks the build. I had missed other places that extend PackageManager.\n\nChange-Id: Iff012ed4ec8d2d32821586eca85fce55ae67f5b5\n"
    },
    {
      "commit": "3b0fc3cf24e1fecdbc11808483c2109415ebfdd2",
      "tree": "7956d80abb8a83bc7f346b416c59528fb92e0461",
      "parents": [
        "d6fb31adde6cf6c17ee794fd51ea23dbe88ac20e"
      ],
      "author": {
        "name": "Nicolas Prevot",
        "email": "nprevot@google.com",
        "time": "Mon Sep 21 11:39:42 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Prevot",
        "email": "nprevot@google.com",
        "time": "Mon Sep 21 11:39:42 2015 +0100"
      },
      "message": "Add more methods that take a userId to PackageManager.\n\nAdd methods installPackageAsUser and installExistingPackageAsUser\nand deletePackageAsUser and getPackageInfoAsUser.\n\nChange-Id: I9a3ff96f968b4f8d21a57cc7760679628d35c1a9\nBUG:23516394\n"
    },
    {
      "commit": "c875ad14ddc09d0d3a3bde58f71845123110f9f2",
      "tree": "37e0fc1e80f6d47557fd4c984c9a0c1a0c99e001",
      "parents": [
        "33ec1710b0404f36019688ea8e285b687f81109c",
        "56de616725aca7d875fafc2a94e00ae9874fedf9"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jul 29 19:23:52 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 29 19:23:52 2015 +0000"
      },
      "message": "am 56de6167: am f6c2d8a9: am 6da43a83: am 9352af2a: Merge \"Remove dependencies on the package installer\\\u0027s package name\" into mnc-dev\n\n* commit \u002756de616725aca7d875fafc2a94e00ae9874fedf9\u0027:\n  Remove dependencies on the package installer\u0027s package name\n"
    },
    {
      "commit": "f1b7f20bb839c96e8254ccb65398135f10fd45d9",
      "tree": "7803c21a30ad4f110925ee94a1b76735a1c1d406",
      "parents": [
        "02022b70bef7d6964bc8043385531d1aa97fb15b"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jul 29 08:33:42 2015 -0700"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jul 29 08:33:46 2015 -0700"
      },
      "message": "Remove dependencies on the package installer\u0027s package name\n\nbug:22700053\n\nChange-Id: I8540eb8577fbec84e1a67e31e1c31ba654c828a4\n"
    },
    {
      "commit": "808dd5cc8af3e26d12c1b5fe80663eb306cc0c20",
      "tree": "50869898906e303e96e0e8c687e9df0bcec7772c",
      "parents": [
        "89aca46b1bce3d311b445905575633815d5eeda1",
        "4753b5bcf4877e125a8e38d5bcd2ac46c1744429"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 15 02:21:54 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 15 02:21:54 2015 +0000"
      },
      "message": "am 4753b5bc: am 4f73990a: am aa3694f2: am f1f8b9cc: Merge \"Fix issue #21626564: MMS should be receivied while Dozing\" into mnc-dev\n\n* commit \u00274753b5bcf4877e125a8e38d5bcd2ac46c1744429\u0027:\n  Fix issue #21626564: MMS should be receivied while Dozing\n"
    },
    {
      "commit": "1fa2a0888284ae00c905dce7a3003b995815467a",
      "tree": "e3071a813aceceda2e3b5b13e071636a5535eac8",
      "parents": [
        "f488fc28102870d8ec943d0a3a78c6d3997711c2",
        "1281575c257d52f256f4a08559611e6ec0b6190e"
      ],
      "author": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Wed Jul 15 01:42:58 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 15 01:42:58 2015 +0000"
      },
      "message": "am 1281575c: am 41fac5e8: am 189f3136: am 98724126: Merge \"Added sendBroadcastMultiplePermissions method\" into mnc-dev\n\n* commit \u00271281575c257d52f256f4a08559611e6ec0b6190e\u0027:\n  Added sendBroadcastMultiplePermissions method\n"
    },
    {
      "commit": "fd854ee58c5d56f84047007ead9f88a767ae956f",
      "tree": "8cd12e57928f2984b2da6c9a0872fcb795c5fa94",
      "parents": [
        "987241265b77542f45ce95838c25beeaf3ae6849"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 13 18:00:37 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 14 18:33:08 2015 -0700"
      },
      "message": "Fix issue #21626564: MMS should be receivied while Dozing\n\nWe now place whoever is receiving the MMS on the temporary\nwhitelist while doing so, so they can get network access to\ndownload it.\n\nThere was also an issue that needed to be fixed where we\nwere no longer updating the list of allowed uids while\ndozing based on their proc states...  we now do that.\n\nAlso did a bit of optimization of the temp white list update\npath do the network policy manager, instead of going through\na broadcast we now directly call in to the network policy\nmanager.  This also allows us to have a synchronous version\nof updating the list, so we can know the app has network access\nbefore we tell it to do anything.\n\nFinally added battery stats events for things going on and off\nthe whitelist so we can diagnose the behavior there.\n\nChange-Id: Ic7fe010af680034d9f8cb014bb135b2addef7455\n"
    },
    {
      "commit": "d4fd8c766da8a70e3359bbc7efbbc79496efe71a",
      "tree": "971bad23792d3f9486e1ef7a0b0fe6f2952c84b9",
      "parents": [
        "b42cb352a350bac198470f65125aa151ecacff13"
      ],
      "author": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Mon Jul 13 19:19:25 2015 -0700"
      },
      "committer": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Tue Jul 14 17:25:42 2015 -0700"
      },
      "message": "Added sendBroadcastMultiplePermissions method\n\nAdded Context.sendBroadcastMultiplePermissions(Intent intent, String[]\nreceiverPermissions) method, which allows an array of required permissions\nto be enforced.\n\nBug: 21852542\nChange-Id: I27c9130e8f004b428452501ebc8a36aabde1f343\n"
    },
    {
      "commit": "7aeb1a5c19a1226f2b0ca7b498bdad941d206808",
      "tree": "32778466c47a0628b350a338d37818874e395125",
      "parents": [
        "097ec7b958891852d4f5267064845d91e4fd7ba0",
        "cf4617cfd0c9da1fa5a12da5ed576dd0c823f8e5"
      ],
      "author": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Tue Jul 14 23:55:48 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 14 23:55:48 2015 +0000"
      },
      "message": "am cf4617cf: am 1aeceef4: am fc4acfd9: am 4a817924: Merge \"Revert \"Allow array of required permissions in sendBroadcast\"\" into mnc-dev\n\n* commit \u0027cf4617cfd0c9da1fa5a12da5ed576dd0c823f8e5\u0027:\n  Revert \"Allow array of required permissions in sendBroadcast\"\n"
    },
    {
      "commit": "64e8aa18f8c089989113ecd8775d41bffe74b41d",
      "tree": "7db5b5b83a40d67cdf7b217f326f21a41de8ea79",
      "parents": [
        "026d6f97d120f7f557a50effd82e6b3b6f032870",
        "7f006b52215634f37aa881157df6473b8e3dd803"
      ],
      "author": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Tue Jul 14 22:56:11 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 14 22:56:11 2015 +0000"
      },
      "message": "am 7f006b52: am 70174794: am ef77c116: am d69a82c1: Merge \"Allow array of required permissions in sendBroadcast\" into mnc-dev\n\n* commit \u00277f006b52215634f37aa881157df6473b8e3dd803\u0027:\n  Allow array of required permissions in sendBroadcast\n"
    }
  ],
  "next": "e37520b49da8fc2b7b7501c6dbbe1e6ac984dd9f"
}
