summaryrefslogtreecommitdiffstats
path: root/test-runner
Commit message (Collapse)AuthorAgeFilesLines
* Remove dependencies on the package installer's package nameSvet Ganov2015-07-291-0/+6
| | | | | | bug:22700053 Change-Id: I8540eb8577fbec84e1a67e31e1c31ba654c828a4
* Fix issue #21626564: MMS should be receivied while DozingDianne Hackborn2015-07-141-2/+8
| | | | | | | | | | | | | | | | | | | | | | We now place whoever is receiving the MMS on the temporary whitelist while doing so, so they can get network access to download it. There was also an issue that needed to be fixed where we were no longer updating the list of allowed uids while dozing based on their proc states... we now do that. Also did a bit of optimization of the temp white list update path do the network policy manager, instead of going through a broadcast we now directly call in to the network policy manager. This also allows us to have a synchronous version of updating the list, so we can know the app has network access before we tell it to do anything. Finally added battery stats events for things going on and off the whitelist so we can diagnose the behavior there. Change-Id: Ic7fe010af680034d9f8cb014bb135b2addef7455
* Added sendBroadcastMultiplePermissions methodFyodor Kupolov2015-07-141-0/+6
| | | | | | | | | Added Context.sendBroadcastMultiplePermissions(Intent intent, String[] receiverPermissions) method, which allows an array of required permissions to be enforced. Bug: 21852542 Change-Id: I27c9130e8f004b428452501ebc8a36aabde1f343
* Revert "Allow array of required permissions in sendBroadcast"Fyodor Kupolov2015-07-141-6/+0
| | | | | | This reverts commit b4e7283c9afd9fb15ebd63f6ce9b75c9c1af658b. Change-Id: Ie8390964bda5bdfa869cee8f46584043d8e7c664
* Allow array of required permissions in sendBroadcastFyodor Kupolov2015-07-141-0/+6
| | | | | | | | Added Context.sendBroadcast(Intent intent, String[] receiverPermissions) method, which allows an array of required permissions to be enforced. Bug: 21852542 Change-Id: I3b8ff258fa9f3249c344bb8093b820b24eef00c0
* Add an API for apps to query if a permisison is denied by policy.Svet Ganov2015-07-081-0/+5
| | | | | | bug:22177216 Change-Id: I32227f55097fae997f33743fd1eee06cb18f47f1
* Fix issue #21814207 and issue #21814212 (alarm manager)Dianne Hackborn2015-06-171-0/+17
| | | | | | | | | | | | | | | | | Issue #21814207: AlarmManager.setAndAllowWhileIdle should also allow wake locks. Introduce a whole new infrastructure for providing options when sending broadcasts, much like ActivityOptions. There is a single option right now, asking the activity manager to apply a tempory whitelist to each receiver of the broadcast. Issue #21814212: Need to allow configuration of alarm manager parameters The various alarm manager timing configurations are not modifiable through settings, much like DeviceIdleController. Also did a few tweaks in the existing DeviceIdleController impl. Change-Id: Ifd01013185acc4de668617b1e46e78e30ebed041
* Add system API to watch for permission changesSvetoslav2015-06-101-0/+12
| | | | Change-Id: I1ce450a59fb326c14848f46732d877dea33f33c7
* Add API to hint whether to show on-board UI before a permission request.Svetoslav2015-06-021-0/+6
| | | | | | bug:21511988 Change-Id: I9d1d7adf34b68074e65510f53b6e642cf784cf6b
* Add permission meta-state flags to support grant/revoke permission policy.Svet Ganov2015-05-111-4/+17
| | | | | | | | | | | | | | | | | | | | | | | | | We now maintain a mata-state with each permission in the form of flags specyfying the policy for this permission. This enables support of the following use cases: 1. The user denies a permission with prejudice in which case an app cannot request the permission at runtime. If an app requests such a permssion it gets a denial unless the user grants the permission from settings. 2. A legacy app with disabled app-ops being upgraded to support runtime permissions. The disabled app ops are converted to permission revocations. The app ops manager is a part of the activity manger which sits on top of the package manager, hence the latter cannot have a dependency on the former. To avoid this the package installer which is the global permission managment authority marks the permission as revoked on upgrade and the package manager revokes it on upgrade. 3. A device policy fixing a permission in a granted or revoked state. This additional information is folded in the meta-state flags and neither apps can request such permissions if revoked not the user can change the permission state in the UI. Change-Id: I443e8a7bb94bfcb4ff6003d158e1408c26149811
* Package and storage movement callbacks.Jeff Sharkey2015-04-231-8/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Since package and primary storage movement can take quite awhile, we want to have SystemUI surface progress and allow the Settings app to be torn down while the movement proceeds in the background. Movement requests now return a unique ID that identifies an ongoing operation, and interested parties can observe ongoing progress and final status. Internally, progress and status are overloaded so the values 0-100 are progress, and any values outside that range are terminal status. Add explicit constants for special-cased volume UUIDs, and change the APIs to accept VolumeInfo to reduce confusion. Internally the UUID value "null" means internal storage, and "primary_physical" means the current primary physical volume. These values are used for both package and primary storage movement destinations. Persist the current primary storage location in MountService metadata, since it can be moved over time. Surface disk scanned events with separate volume count so we can determine when it's partitioned successfully. Also send broadcast to support TvSettings launching into adoption flow. Bug: 19993667 Change-Id: Ic8a4034033c3cb3262023dba4a642efc6795af10
* Always send volume UUID with installd commands.Jeff Sharkey2015-04-181-10/+5
| | | | | | | | Since packages can be moved to other volumes, all relevant commands to installd now require an explicit volume UUID parameter. Bug: 20275577 Change-Id: Ie84f5bc43c7aada5800b8d71692c7928b42b965e
* Add OP_READ_PHONE_STATE app op - frameworkSvet Ganov2015-04-171-0/+7
| | | | | | | | | The READ_PHONE_STATE permission protects PII information and is in the Phone group. This change is adding the corrseponding app op for gating access to the API guarded by READ_POHNE state which will be used instead as an access control for legacy apps. Change-Id: I2ff895a5a0e529f26ec0ad706266a30d829268ba
* Candidate volumes for packages, fix symlink.Jeff Sharkey2015-04-151-0/+14
| | | | | | | | | | | | | | Add API to determine the possible candidate volumes that a package can be moved to. For example, it currently knows that we need to move ASEC-based apps through internal storage before migrating them to a private volume. Comparator for consistent VolumeInfo ordering when displayed in UI. Fix native library symlink to be volume UUID aware. Bug: 19993667 Change-Id: I68d5fac5f0f776ac1c7dd15e7a984bfe2704f3f7
* Merge "Add Default Browser App support and relax Hosts validation for AppLinks"Fabrice Di Meglio2015-04-111-0/+10
|\
| * Add Default Browser App support and relax Hosts validation for AppLinksFabrice Di Meglio2015-04-101-0/+10
| | | | | | | | | | | | | | | | | | | | | | - add private PackageManager APIs for setting/getting the default Browser App package name - serialize / deserialize the default Browser App package name per User Also relax the Hosts name validation for the AppLinls feature. Now we just care if the IntentFilter is having an HTTP or HTTPS scheme. Change-Id: I4436f66ac6beff57e14f7f3a2a00b0b582c03be9
* | Merge "Expose Cursor.setExtras()."Jeff Brown2015-04-101-0/+47
|\ \ | |/ |/|
| * Expose Cursor.setExtras().Jeff Brown2015-04-091-0/+47
| | | | | | | | | | Bug: 19369537 Change-Id: I78e319667cbfaeb51f471d18c4fefeac01d49d80
* | Add IntentFilter auto verification - part 3Fabrice Di Meglio2015-04-071-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - add private API PackageManager.getAllIntentFilters(String) for getting all IntentFilters from a given package - update IntentFilterVerificationInfo to use an ArrayList<String> for domains instead of a String[] - if you make an App a default domain handler then make the others as non default - create an IntentVerificationInfo even if the App IntentFilters do not need to be verified. This would be done only if the App has some domain URLs defined and would allow to make it the default handler for a domain - a few code optimizations here and there Change-Id: I4535372a0bb1a2c8e662e1485be8ca700003e9b3
* | Installing packages to expanded storage.Jeff Sharkey2015-04-061-3/+8
|/ | | | | | | | | | | | | | | | | | | | | | | | PackageManager now offers to load/unload packages when expanded volumes are mounted/unmounted. Expanded storage volumes are still treated as FLAG_EXTERNAL_STORAGE from a public API point-of-view, but this change starts treating the INSTALL_EXTERNAL flag as exclusively meaning ASEC containers. Start tracking the UUID of the volume where a package is installed, giving us a quick way to find relevant packages. When resolving an install location, look across all expanded volumes and pick the one with the largest free space. When upgrading an existing package, continue preferring the existing volume. PackageInstaller now knows how to stage on these volumes. Add new movePackage() variant that accepts a target volume UUID as destination, it will eventually move data too. Expose this move command through "pm" command for testing. Automount expanded volumes when they appear. Bug: 19993667 Change-Id: I9ca2aa328b9977d34e8b3e153db4bea8b8d6f8e3
* Add IntentFilter auto verificationFabrice Di Meglio2015-03-301-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The purpose of this feature is to prompt the Disambiguation dialog to Users as less as possible. - add the new "autoVerify" property to the IntentFilter class - add new APIs to PackageManager: verifyIntentFilter(int, int, List<String>), getIntentVerificationStatus(String, int), updateIntentVerificationStatus(String, int, int), getIntentFilterVerifications(String) for supporting IntentFilter verification - add support for multi-user - update PackageManager for IntentFilter verification: basically when we are installing a new package, ask for verification of all domains from the IntentFilters that have the "autoVerify" to true. This means that the PackageManager will send a well defined protected broadcast (with a new INTENT_FILTER_NEEDS_VERIFICATION action) to an IntentFilter verifier to do the real job of verification. We are passing in the broadcast Intent all the necessary data for doing the verification. The PackageManager will receive as response the result code of the domain verifications and, if needed, the list of domains that have failed the verification. - add a new INTENT_FILTER_VERIFICATION_AGENT permission that needs to be set by an intent filter verifier to be considered as a trustable party by the PackageManager. - add also a new BIND_INTENT_FILTER_VERIFIER permission for securing the binding between the PackageManager and a service doing the intent filter verifications. - add ResolveInfo filterNeedsVerification which is a boolean to knows if the IntentFilter is of a type that needs a verification (action VIEW, category BROWABLE, HTTP/HTTPS data URI) - add new "domain-preferred-apps" / "d" dump command for listing the prefered Apps for all domains - add new "intent-filter-verifiers" / "ivf" command for listing the IntentFilterVerifier used - introduce the IntentVerificationService which is a basic service for verifying IntentFilters. This service will send HTTPS requests to the domain declared in the IntentFilter(s) for doing the verification. This service has a low priority level so that it can be replaced by a more sophisticated one if needed. This service is updating the PackageManager intent verification states thru the updateIntentVerificationStatus(...) API. - update MockPackageManager Change-Id: I0bfed193d0bf1f7c7ac79f6c1b160b7ab93b5fb5
* Runtime permissions: per user permission tracking.Svetoslav2015-03-232-2/+7
| | | | | | | | | | | | | | | | | | Before all permissions were granted at install time at once, so the user was persented with an all or nothing choice. In the new runtime permissions model all dangarous permissions (nomal are always granted and signature one are granted if signatures match) are not granted at install time and the app can request them as necessary at runtime. Before, all granted permission to an app were identical for all users as granting is performed at install time. However, the new runtime model allows the same app running under two different users to have different runtime permission grants. This change refactors the permissions book keeping in the package manager to enable per user permission tracking. The change also adds the app facing APIs for requesting runtime permissions. Change-Id: Icbf2fc2ced15c42ca206c335996206bd1a4a4be5
* Fix some javadocs typosEvan Charlton2015-03-021-3/+3
| | | | | | "Delegating" was misspelled in various ways. Change-Id: I7b441f1c33b7d876b8f82829fddc1eb017cce2d0
* Add Context.getSystemService(Class<?>).Jeff Brown2015-02-251-0/+5
| | | | | | | | | | | | Added an overload of getSystemService() that takes a class instead of a service name to eliminate the extra cast and provide more type safety. Cleaned up docs. Removed the default constructor of BatteryManager which should not have existed. Change-Id: I9da46b20641fc83ecd3342560e5b94cb721f289c
* am 42fec57f: am d9968438: Merge "Fix issue with call backs from media ↵Dianne Hackborn2014-11-213-3/+17
|\ | | | | | | | | | | | | process." into lmp-mr1-dev * commit '42fec57f3addfb1958f814b5d6772ff81341ba20': Fix issue with call backs from media process.
| * Fix issue with call backs from media process.Dianne Hackborn2014-11-193-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All but a few lines of this is for issue #16013164, which allowed apps to do some operations as the media uid by having it call back to them to open a file. The problem here is with the tempory identity stuff in the activity manager, allowing us to make the open call as the original caller... ideally we should figure out a way to just get rid of all of that, but the solution here is actually easier (even though it doesn't look it) -- we now hand a token over to the openFile() call that it can use when doing permission checks to say "yes I would like the check to be against whoever is responsible for the open". This allows us to do the uid remapping for only this one specific set of permission checks, and nothing else. Also fix issue #17487348: Isolated services can access system services they shouldn't be able to. Don't send any system service IBinder objects down for the first initialization of an isolated process. Change-Id: I3c70e16e0899d7eef0bae458e83958b41ed2b75e
* | am 73577862: am b1346d78: Merge "Change boot screen title to "Android is ↵Jeff Hao2014-10-301-0/+8
|\ \ | |/ | | | | | | | | | | starting" when not upgrading." into lmp-mr1-dev * commit '73577862ffe6332f326628febfa1fbb9e693bb40': Change boot screen title to "Android is starting" when not upgrading.
| * Change boot screen title to "Android is starting" when not upgrading.Jeff Hao2014-10-291-0/+8
| | | | | | | | | | Bug: 17565501 Change-Id: Id5741e6e7a40750feee1cd7306e79f7baeec67de
* | am 6c995613: am 301d2276: am 49e2371a: Merge "Log exception when creating ↵Filip Gruszczynski2014-10-101-4/+9
|\ \ | |/ | | | | | | | | | | Activity in ActivityUnitTestCase." into lmp-sprout-dev * commit '6c99561384dafaa080b804078e55c6167efe0e11': Log exception when creating Activity in ActivityUnitTestCase.
| * am 49e2371a: Merge "Log exception when creating Activity in ↵Filip Gruszczynski2014-10-091-4/+9
| |\ | | | | | | | | | | | | | | | | | | ActivityUnitTestCase." into lmp-sprout-dev * commit '49e2371a271e33bbe8177c3f87d5f3b8ef7f59c5': Log exception when creating Activity in ActivityUnitTestCase.
| | * Merge "Log exception when creating Activity in ActivityUnitTestCase." into ↵Filip Gruszczynski2014-10-081-4/+9
| | |\ | | | | | | | | | | | | lmp-sprout-dev
| | | * Log exception when creating Activity in ActivityUnitTestCase.Filip Gruszczynski2014-10-031-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If the creation of an Activity fails, it is impossible to determine what went wrong. We should log the exception immediately before failing on assert. Change-Id: Ie6cbe87ff342b8d60989f5e1a6ffa3efc058c585
* | | | am 59f7c4c7: am 1cb156bb: am f35c305f: am 6a3faf5a: Merge "Fix test ↵Raluca Sauciuc2014-10-071-1/+1
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | | | | | framework to allow Mockito tests to run successfully on ART." into lmp-dev * commit '59f7c4c749fb69c9f83a3d28784147a941fecc58': Fix test framework to allow Mockito tests to run successfully on ART.
| * | | am f35c305f: am 6a3faf5a: Merge "Fix test framework to allow Mockito tests ↵Raluca Sauciuc2014-10-071-1/+1
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | to run successfully on ART." into lmp-dev * commit 'f35c305f45db60394c3c7fec2e41b38963da70ca': Fix test framework to allow Mockito tests to run successfully on ART.
| | * | Fix test framework to allow Mockito tests to run successfully on ART.Raluca Sauciuc2014-10-031-1/+1
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, Mockito tests don't run on ART (KitKat & L) due to an extra NoClassDefFoundError exception being thrown while trying to resolve internal test runner classes. These exceptions are benign, Mockito's internal test runners all inherit from org.junit.runner.Runner, which is not included in the setup, but none of them are actually used in tests. The same apks succeed on Dalvik, and logcat shows the same exceptions going by, minus the NCDFE's. Section 5.3 of the VM spec says the virtual machine has to wrap a ClassNotFoundException in NoClassDefFoundError if the first exception arises from verification or resolution but not initialization of that particular class. Bug: 17042833 Change-Id: I3af20f6884d9fa3afc3fbf9fcb238be10267827a
* | | am 00fcb749: am 31409c0c: Merge "Introduce new API to get an unbadged icon ↵Benjamin Franz2014-10-061-0/+7
|\ \ \ | |/ / | | | | | | | | | | | | | | | and unbadge permissions." into lmp-mr1-dev * commit '00fcb749cbd26c83d1a29a974bd92967b41c5882': Introduce new API to get an unbadged icon and unbadge permissions.
| * | Introduce new API to get an unbadged icon and unbadge permissions.Benjamin Franz2014-10-031-0/+7
| |/ | | | | | | | | Bug: 17125560 Change-Id: I61b884186c96cc54dcaf1d3c7ee8f47610fd1d21
* | resolved conflicts for merge of ee665151 to lmp-mr1-dev-plus-aospNeil Fuller2014-10-021-2/+2
|\ \ | |/ |/| | | Change-Id: I2588c65b7a9fa43f968151a206924a804f0595a7
| * Switch from FloatMath -> Math and Math.hypot where possibleNeil Fuller2014-10-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The motivation is an API change: FloatMath is going to be deprecated and/or removed. Performance is not the goal of this change. That said... Math is faster than FloatMath with AOT compilation. While making the change, occurances of: {Float}Math.sqrt(x * x + y * y) and {Float}Math.sqrt({Float}Math.pow(x, 2) + {Float}Math.pow(y, 2)) have been replaced with: {(float)} Math.hypot(x, y) Right now there is no runtime intrinsic for hypot so is not faster in all cases for AOT compilation: Math.sqrt(x * x + y * y) is faster than Math.hypot(x, y) with AOT, but all other combinations of FloatMath, use of pow() etc. are slower than hypot(). hypot() has the advantage of being self documenting and could be optimized in future. None of the behavior differences around NaN and rounding appear to be important for the cases looked at: they all assume results and arguments are in range and usually the results are cast to float. Different implementations measured on hammerhead / L: AOT compiled: [FloatMath.hypot(x, y)] benchmark=Hypot_FloatMathHypot} 633.85 ns; σ=0.32 ns @ 3 trials [FloatMath.sqrt(x*x + y*y)] benchmark=Hypot_FloatMathSqrtMult} 684.17 ns; σ=4.83 ns @ 3 trials [FloatMath.sqrt(FloatMath.pow(x, 2) + FloatMath.pow(y, 2))] benchmark=Hypot_FloatMathSqrtPow} 1270.65 ns; σ=12.20 ns @ 6 trials [(float) Math.hypot(x, y)] benchmark=Hypot_MathHypot} 96.80 ns; σ=0.05 ns @ 3 trials [(float) Math.sqrt(x*x + y*y)] benchmark=Hypot_MathSqrtMult} 23.97 ns; σ=0.01 ns @ 3 trials [(float) Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))] benchmark=Hypot_MathSqrtPow} 156.19 ns; σ=0.12 ns @ 3 trials Interpreter: benchmark=Hypot_FloatMathHypot} 1180.54 ns; σ=5.13 ns @ 3 trials benchmark=Hypot_FloatMathSqrtMult} 1121.05 ns; σ=3.80 ns @ 3 trials benchmark=Hypot_FloatMathSqrtPow} 3327.14 ns; σ=7.33 ns @ 3 trials benchmark=Hypot_MathHypot} 856.57 ns; σ=1.41 ns @ 3 trials benchmark=Hypot_MathSqrtMult} 1028.92 ns; σ=9.11 ns @ 3 trials benchmark=Hypot_MathSqrtPow} 2539.47 ns; σ=24.44 ns @ 3 trials Bug: https://code.google.com/p/android/issues/detail?id=36199 Change-Id: I06c91f682095e627cb547d60d936ef87941be692
* | Remove unnecessary waits in TouchUtil's dragYigit Boyar2014-09-221-25/+57
| | | | | | | | | | | | | | | | | | TouchUtil's drag method tries to sync after sending each event which is not necessary. Sync are slow so removing them greatly improves test running time. Bug: 17323559 Change-Id: Ia4ed02b2af44da0d821d93d28f963005d9d7ea79
* | Remove package level intent forwarding.Adam Connors2014-09-111-18/+0
| | | | | | | | | | | | | | Clean up unused methods. Bug: 17389110 Change-Id: I8a80fe3e14219f06572de05c390cdda0efcbf5db
* | Addressing API council comments for UserManager.Svetoslav2014-09-051-1/+24
| | | | | | | | | | | | bug:17390424 Change-Id: I498d2541289915cb7db16e5c3249ccc7a7dc5ee6
* | Fix ProviderTestCase2 broken by ag/519661:Akos Ludanyi2014-09-052-11/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: 1. ProviderTestCase2 passes a null as a ProviderInfo to the ContentProvider 2. mAuthority and mAuthorities will be null during the test 3. ContentProvider.matchesOurAuthorities will throw an NPE. Fix: Supply a ProviderInfo with authority. Example bug: b/17379295 Change-Id: Ia533313c0994727ef81f337a4e31a57ae7ec3c15
* | Address KeySet API Reviewdcashman2014-08-141-0/+4
| | | | | | | | | | | | | | | | | | Hide KeySet API. Change getKeySetByAlias to not require aliases from the calling package. Make KeySet parcelable. Add hashCode method. Bug: 16895228 Bug: 17009318 Change-Id: I75951947dfc7a3cca9f8873bda72576d11abaaf0
* | Add hidden API for removing cross-profile package filtersAlexandra Gherghina2014-08-061-0/+9
| | | | | | | | | | Bug: 16646591 Change-Id: Iaf6837fe4390ac1018c49df366ea434776ed7244
* | Allow adding widgets from user profiles.Svetoslav2014-08-051-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | The goal of this change is to enable support for appwidget from user profiles to the user main profile. A user profile is a user which is associated as a child of the main user profile. For example, a user may have a personal (parent) and corporate (child) profile. The device policy should be able to control whether adding a widget from a child profile and given packages is allowed. This change assumes that all packages from managed profiles are white listed. Another change will add the device policy changes. Change-Id: I267260b55d74c48b112a29979a9f59eef7a8194e
* | PackageInstaller changes based on feedback.Jeff Sharkey2014-07-251-1/+1
| | | | | | | | | | | | | | Mostly cosmetic changes from API council feedback. Bug: 16543552 Change-Id: Ic926829b3f77c31f50a899c59b779353daf00d59
* | Rename setApplicationBlocked to setApplicationHiddenAmith Yamasani2014-07-211-2/+2
| | | | | | | | | | | | | | | | This corrects the expected behavior of the app state. Hidden apps can be installed by the store to be brought out of hidden state. Bug: 16191518 Change-Id: Id128ce971ceee99ba1dea14ba07ce03bd8d77335
* | Add code cache directory for apps.Jeff Sharkey2014-07-151-0/+5
| | | | | | | | | | | | | | | | | | This provides a directory where apps can cache compiled or optimized code generated at runtime. The platform will delete all files in this location on both app and platform upgrade. Bug: 16187224 Change-Id: I641b21d841c436247f35ff235317e3a4ba520441
* | Merge "Public API for PackageInstaller!" into lmp-devJeff Sharkey2014-07-151-1/+7
|\ \