Commit Graph

3162 Commits

Author SHA1 Message Date
Dianne Hackborn
7c55154d47 am 80e75d39: am 0d763a90: Merge "Implement issue #11050739: Show swapped out RAM" into klp-dev
* commit '80e75d3946fd4c5cdd913d217df1b8d32ec464ee':
  Implement issue #11050739: Show swapped out RAM
2013-10-03 15:39:36 -07:00
Dianne Hackborn
61509ca5ba am 479dde0b: am 6a6f96a2: Merge "Fix issue #10378741: configupdater needs to be explicit when it calls startService()" into klp-dev
* commit '479dde0bc21a1e9d0bb8dad801cfe015f6c7e416':
  Fix issue #10378741: configupdater needs to be explicit when it calls startService()
2013-10-03 15:39:33 -07:00
Dianne Hackborn
5eaac1ce33 am e31f959c: am d143d1ff: Merge "Fix issue #11044267: AppOpsManager.startWatchingMode should take a String" into klp-dev
* commit 'e31f959c68a9dfa00daa5b5580ced31badfb1127':
  Fix issue #11044267: AppOpsManager.startWatchingMode should take a String
2013-10-03 15:39:30 -07:00
Christopher Tate
64884eef54 am b61c8219: am ef4f8222: Merge "Fix cross-process race in initial files/cache dir creation" into klp-dev
* commit 'b61c82190d9d16cd4a7dff8af81aff7f43c19cc4':
  Fix cross-process race in initial files/cache dir creation
2013-10-03 15:38:47 -07:00
Dianne Hackborn
0d763a901e Merge "Implement issue #11050739: Show swapped out RAM" into klp-dev 2013-10-03 17:45:42 +00:00
Dianne Hackborn
6a6f96a296 Merge "Fix issue #10378741: configupdater needs to be explicit when it calls startService()" into klp-dev 2013-10-03 17:44:38 +00:00
Dianne Hackborn
d143d1ffd7 Merge "Fix issue #11044267: AppOpsManager.startWatchingMode should take a String" into klp-dev 2013-10-03 17:44:18 +00:00
Dianne Hackborn
fd6c7b12c3 Fix issue #10378741: configupdater needs to be explicit when it calls startService()
Not enough time to fix everything, so instead we'll make it a warning
in this release and finish up turning it into a target-SDK based
exception in the next release.

Change-Id: I5aae64a1225a145f03ba4162238b53d5e401aba2
2013-10-03 10:42:26 -07:00
Christopher Tate
cc866da37d Fix cross-process race in initial files/cache dir creation
Apps that run components in separate processes, especially that
host providers in separate processes, can hit a race condition
where two processes simultaneously discover that the files/cache
dir must be created, then each calls mkdirs().  One of these will
fail not because the dir couldn't be created, but because it lost
the race and mkdirs() returned false to signal that it already
existed -- and this was assumed to be a hard failure.

We now recheck existence after a mkdirs() failure to discern this
case and proceed appropriately.

Bug 10515463

Change-Id: I13fbdd838921223f75ab11faa47291c82b21c650
2013-10-02 18:16:24 -07:00
Dianne Hackborn
8883ced18a Implement issue #11050739: Show swapped out RAM
Add "swapped out" field to mem info everywhere.

Change-Id: I89abe8eb0e91fa5c193da93815dc592593c8a3c8
2013-10-02 17:40:05 -07:00
Jeff Sharkey
c7ce69853a am 50a8663d: am 437befc1: Merge "Docs change: annotate media intent actions." into klp-dev
* commit '50a8663d261a3fd7b26c1a17beac86090e3da4c8':
  Docs change: annotate media intent actions.
2013-10-02 10:45:28 -07:00
Dianne Hackborn
e4cb66fd77 Fix issue #11044267: AppOpsManager.startWatchingMode should take a String
Change-Id: I193a738f2e4ef147c22fb46cfa34ec14ad95d192
2013-10-02 10:36:15 -07:00
Jeff Sharkey
32cd2fb596 Docs change: annotate media intent actions.
Bug: 11043141
Change-Id: I66777c5ce25014d8e64da5b4ce3f70334befb0b7
2013-10-02 10:11:25 -07:00
Jeff Sharkey
7f60e70e81 am 666b998b: am 364fc14f: Merge "Detect wedged ContentProviders, treat as ANR." into klp-dev
* commit '666b998b67fe7bb6fc11dd6d683a18b5690afd39':
  Detect wedged ContentProviders, treat as ANR.
2013-10-02 09:35:14 -07:00
Jeff Sharkey
7aa7601c09 Detect wedged ContentProviders, treat as ANR.
All ContentProvider calls are currently blocking, making it hard for
an app to recover when a remote provider is wedged.  This change adds
hidden support to ContentProviderClient to timeout remote calls,
treating them as ANRs.  This behavior is disabled by default.

Update DocumentsUI to use a 20 second timeout whenever interacting
with a storage provider.

Bug: 10993301, 10819461, 10852518
Change-Id: I10fa3c425c6a7225fff9cb7a0a07659028230cd3
2013-10-01 09:50:41 -07:00
Daniel Sandler
5e833d6f57 am 723ad75e: Merge "API cleanups for Notification." into klp-dev
* commit '723ad75e107f57dc541dfca600745895e1251974':
  API cleanups for Notification.
2013-09-30 17:08:06 -07:00
Romain Guy
bb1d4d3896 am d6c1870d: am 5fceada3: Merge "Fragement, or Fragment: that is the question"
* commit 'd6c1870d434562a10e015915dd9da9f8a956661c':
  Fragement, or Fragment: that is the question
2013-09-30 16:23:05 -07:00
Romain Guy
d6c1870d43 am 5fceada3: Merge "Fragement, or Fragment: that is the question"
* commit '5fceada31f0dc8f8e003e9c1d0a0ed0363711343':
  Fragement, or Fragment: that is the question
2013-09-30 16:19:22 -07:00
Cyril Mottier
2de5082f43 Fragement, or Fragment: that is the question
Change-Id: Iac3a14b9d2d7b4bd1e452db987b3c5c95dbefd3b
2013-09-30 22:43:59 +02:00
Daniel Sandler
cf1d39b178 API cleanups for Notification.
- Calling build() on a Style now goes through the same
  codepath as calling build() on the Builder.
- Documented new constants and unhidden classes.
- Fixed crash in Action.clone().

Bug: 10112103
Bug: 10461196
Change-Id: I08cd94790b538a361ccf8ff3682f6a86a7812b95
2013-09-27 11:58:58 -04:00
Dianne Hackborn
8828d3a153 Fix issue #10919261: Don't clear OP_WRITE_SMS when resetting app prefs
Add a new array indicating whether each op allows itself to
be reset, and use it.

Change-Id: I494f630bda170e061196a380563512e9e77b51a8
2013-09-26 09:40:19 -07:00
Dianne Hackborn
66a9b2d739 Merge "Fix issue #10903002: com.facebook.katana keeps itself in A Services" into klp-dev 2013-09-25 23:04:50 +00:00
Dianne Hackborn
cbd9a52f25 Fix issue #10903002: com.facebook.katana keeps itself in A Services
Now when memory low, if a service's process is above
a selected pss, then the process is not allowed to go
in to the service a list.

Also simplified the normal meminfo details dump to not
include the shared dirty and shared clean sizes by
default, since these can be very confusing.  You will
still get to see them with the "-a" flag.

Finally some small steps to better managing service
processes in the LRU list, so hopefully we can some
day be better about letting them drop down in the list
when there isn't really much interesting happening in
the process.  Not yet used at this point.

Change-Id: I654bfd6d05de2a63120185ebb15ffda8cbeb5dac
2013-09-25 15:45:56 -07:00
Jeff Sharkey
e66c1778f8 Require that persistable Uri permissions be taken.
Change our Intent flag to indicate that a Uri permission grant is
persistable, but don't actually persist it until explicitly taken by
the receiving app.  This prevents apps from spamming each other if
persisted permissions aren't really required.

Remember the last time a persisted grant was taken by an app, and
use this to prune away the oldest grants when the number of grants
grows too large.  Allow apps to query persisted grants they are
holding, and allow them to release previously persisted grants. Add
public UriPermission class to return grant details and timestamp.

Track various permission strengths separately, and combine together
after each mutation pass.  Persistable grants are currently treated
like global grants, but they could be moved to have owners in the
future.  Require that grant holders trying to extend a persistable
permission actually hold a persistable permission themselves.

Bug: 10835779
Change-Id: I95b2f797c04ce7fd2612f9a644685dbd44e03759
2013-09-25 15:16:41 -07:00
Jeff Sharkey
0156a379e2 Merge "Allow saving to Downloads." into klp-dev 2013-09-23 21:28:07 +00:00
Jeff Sharkey
b180a65d41 Allow saving to Downloads.
Uses new column to mark writability.  Also filter file selection in
create mode to only allow writable files.

Bug: 10667164, 10893268
Change-Id: I90f74efbb7ac634fbdb3cc02a904a96a434d3605
2013-09-23 14:23:45 -07:00
Amith Yamasani
85f77c2b8b Merge "Unmarshall PFDs properly when hand-crafting interface stubs" into klp-dev 2013-09-23 21:14:51 +00:00
Amith Yamasani
c2be0d6183 Unmarshall PFDs properly when hand-crafting interface stubs
ParcelFileDescriptors now carry an optional socket fd to communicate
close events. So, make sure that the correct creator is called when
reconstructing parceled PFDs.

Bug: 10759966
Change-Id: Ic6b9ffb8cb7af5f3a12440def595f74682231866
2013-09-23 13:35:46 -07:00
Dianne Hackborn
9bb0ee9131 Issue #10461551: KLP API Review: AppOpsManager
Changed public constants from integers to strings.  Internally
everything is still integers, since we want that more efficient
representation for most things.

Changed the Callback interface to OnOpChangedListener.  We also
have a private versin that again takes an int, and tricks to
make both work.

Reworked the class documentation to be appropriate to the SDK
(as much as it can be); most of the existing documentation is
moved to the private implementation.  Also added documentation
of the MODE constants.

Change-Id: I4f7e73cc99fe66beff9194e960e072e2aa9458f8
2013-09-23 09:35:21 -07:00
Jeff Sharkey
dfed244876 Merge "Delegate mkdirs() to vold when lacking perms." into klp-dev 2013-09-20 22:56:07 +00:00
Jeff Sharkey
2d8b4e8013 Delegate mkdirs() to vold when lacking perms.
Apps without sdcard_r or sdcard_rw are still able to write to
their package-specific directory, but someone needs to first make
that directory on their behalf.  This change will delegate the
mkdirs() call through to vold when an app fails to create directly.

MountService validates that the path belongs to the calling user, and
that it's actually on external storage, before passing to vold.

Update Environment to make app-vs-vold paths clearer.

Bug: 10577808
Change-Id: I43b4a77fd6d2b9af2a0d899790da8d9d89386776
2013-09-20 14:34:02 -07:00
Dianne Hackborn
3bc8f78d7a Implement issue #10691475: Kill cached processes if about to...
...be uncached and too large

When the device is in a low RAM state, when we go to pull a cached
process out to use for some background operation, we can now kill
the current process if we consider its size to be too large.

Note that the current implementation for killing processes is to
just use the same killUnneededProcessLocked() method that we already
have for other things like too many cached processes.  This is a
little wrong here, though, because in this case we are at the
point where the caller is actually looking for a process to use.
This current code is not actually removing or cleaning up the
process, so we still need to return the now killed ProcessRecord
and let things fall out from there, which typically means the caller
trying to make an IPC on it and failing and falling into its "oh
no the process died unexpectedly" path.  All code using this
*should* be able to handle this correctly, anyway, since processes
really can be killed at any time.

At some point we may to make this implementation cleaner, where it
actually tears down the process right in the call and returns a
null ProcessRecord.  That is very dangerous however (we'd need to
go through all paths into this to make sure they are going to be
okay with process state changing on them like that), and I'm not
sure it is really worthwhile.  This intention is that killing
processes like this is unusual, due to processes being too large,
and anyway as I wrote all of our incoming code paths must already
be able to handle the process being killed at this point and one
could argue this is just another way to excercise those code paths.
Really, the main negative to this is that we will often have spam
in the log with exceptions about processes dying unexpectedly.
If that is the only issue, we could just add some conditions to
quiet that up at in this case.

We don't want to compute the size of the process each time we try
to evaluate it here (it takes 10s or ms to do so), so there is now
a new field associated with the process to give us the last pss
size we computed for it while it was in the cached state.

To be able to have better cached pss data when we now need it, the
timing for computing process pss has been tuned to use a much
shorter delay for the situations when the process has first switch
into a new state.  This may result in us having a fair amount more
pss data overall, which is good, as long as it doesn't cause us to
be computing pss excessively and burning cpu.

Procstats now also has new state to keep track of the number of
times each process has been killed by this new system, along with
the min, avg, max pss of all the times it has happened.  This has
slightly changed the checkin format to include this additional data
at the end of pkgkills/prockills lines.

Other changes here:

- Fixed a problem where GPU RAM was not being seen when dumping
  the full RAM details of a process.  This was because in that
  case the system would ask the process to compute its own MemInfo,
  which it returned, but the process doesn't have permission to
  access the files containing the GPU RAM data.  So now the system
  always computes the MemInfo and hands it to the app.

- Improved broadcast delays to not apply the delay if the next receiver
  of the broadcast is going to run in the same process as the last
  one.  A situation I was seeing was an application that had two
  receivers, one of which started a service; we are better off letting
  the second receiver run while the service is running.

- Changed the alarm manager's TIME_TICK broadcast to be a foreground
  broadcast.  This really should have been anyway (it is supposed to
  go out even minute, on the minute, very accurately, for UI elements
  to update), and is even more important now that we are doing more
  things to delay background broadcasts.

- Reworked how we maintain the LRU process list.  It is now divided
  into the two parts, the top always containing the processes holding
  activities.  This better matches the semantics we want (always try
  to keep those around modulated by the LRU order we interleave with
  other cached processes), and we now know whether a process is being
  moved on the LRU list because of an activity operation so we can
  only change the order of these activity processes when user operations
  happen.  Further, this just makes that common code path a lot simpler
  and gets rid of all the old complexity that doesn't make sense any
  more.

Change-Id: I04933ec3931b96db70b2b6ac109c071698e124eb
2013-09-19 14:35:53 -07:00
Craig Mautner
e8a9422495 Merge "Return tasks in correct order." into klp-dev 2013-09-19 20:03:24 +00:00
Christopher Tate
9c5cc571e5 Merge "Support for "not the home app you're looking for" metadata" into klp-dev 2013-09-19 19:46:20 +00:00
Christopher Tate
bd413f6c05 Support for "not the home app you're looking for" metadata
* Make sure that pm.getHomeActivities() returns the activity metadata
  as well, so that the caller can trace the reference

* Add a public canonical name for that metadata key

Bug 10749961

Change-Id: Ic4d0750d61001ffe5af180398f042afa30eea1ce
2013-09-19 12:31:49 -07:00
Craig Mautner
c0fd805234 Return tasks in correct order.
Fixed ActivityManager.getRunningTasks().

Fixes bug 10705790.

Change-Id: Ia3f66e592e08a87896a1ab59f980618ec5310dfe
2013-09-19 11:20:17 -07:00
David Braun
345d491b77 Merge "Implement new method for handling SMS/MMS on the platform" into klp-dev 2013-09-17 22:14:54 +00:00
Dianne Hackborn
35f72be50b Implement issue #10691359: Kill long-running processes
We now have the activity manager kill long-running processes
during idle maintanence.

This involved adding some more information to the activity manager
about the current memory state, so that it could know if it really
should bother killing anything.  While doing this, I also improved
how we determine when memory is getting low by better ignoring cases
where processes are going away for other reasons (such as now idle
maintenance).  We now won't raise our memory state if either a process
is going away because we wanted it gone for another reason or the
total number of processes is not decreasing.

The idle maintanence killing also uses new per-process information
about whether the process has ever gone into the cached state since
the last idle maintenance, and the initial pss and current pss size
over its run time.

Change-Id: Iceaa7ffb2ad2015c33a64133a72a272b56dbad53
2013-09-16 14:05:34 -07:00
David Braun
f5d831915d Implement new method for handling SMS/MMS on the platform
Multi project change:
The changes in this project add the new (hidden) default sms application
setting to Settings.Secure and updates AppOps to support the concept
of an op defaulting to something other than allowed. OP_WRITE_SMS is set
to default to MODE_IGNORED.

Bug: 10449618
Change-Id: I37619784ac70c27cf9fbcbfcac1b263398bc4e01
2013-09-16 13:43:51 -07:00
Ying Wang
930d4e52ad Fix docs build.
Change-Id: I4a1608bfad809d67240db2070fda85df486179e6
2013-09-14 11:57:17 -07:00
Maggie Benthall
f5aba5ad1e Merge "CA cert monitoring: add notifications and actions for dialog" into klp-dev 2013-09-14 18:00:13 +00:00
Michael Jurka
276e6c7a89 Merge "Add new intent/method for cropping and setting wallpapers" into klp-dev 2013-09-14 12:25:51 +00:00
Maggie Benthall
0469f41010 CA cert monitoring: add notifications and actions for dialog
In DevicePolicyManagementService, on boot and when certs are installed,
post notification to tell the user that their traffic may be
monitored.
Have QuickSettings use the MonitoringCertInfoActivity instead
of building the dialog itself.

Bug: 10633199

Change-Id: Ie4b97295a9fc25867c87872feccdb17f4bea071d
2013-09-13 15:46:30 -04:00
Christopher Tate
a2a0850de8 Add hidden API for querying available 'home' activities
To support improved home-app selection UX in Settings.

Bug 9958444

Change-Id: I106090784618bf7bea6fce28f4f9b9fb8480d310
2013-09-13 12:16:00 -07:00
Michael Jurka
e8d1bf7a43 Add new intent/method for cropping and setting wallpapers
Also, create a system fallback WallpaperCropper

Bug: 4225598

Change-Id: I6bc6d5a3bb3df1dc00f3db701978aa172020c568
2013-09-13 17:04:46 +02:00
Chet Haase
e850c973b0 Merge "Hide translucent activity conversion API" into klp-dev 2013-09-12 19:41:33 +00:00
Chet Haase
abd3d778e5 Hide translucent activity conversion API
This API and functionality is not yet completely baked. It's worth
thinking more about this mechanism before exposing it as public API.

Issue #10461415 KLP API Review: Activity convert to translucent

Change-Id: I94d986b62443b3bfa7a9a19807ecebe36bf57e07
2013-09-11 14:33:05 -07:00
Alexander Ray
7563d42331 Merge "Add consumer IR framework" into klp-dev 2013-09-11 19:05:38 +00:00
Dianne Hackborn
95d785346b Fix issue #10688644: Java crash in com.android.phone:
java.lang.SecurityException: Operation not allowed

There was a situation I wasn't taking into account -- components
declared by the system has a special ability to run in the processes
of other uids.  This means that if that code loaded into another
process tries to do anything needing an app op verification, it will
fail, because it will say it is calling as the system package name but
it is not actually coming from the system uid.

To fix this, we add a new Context.getOpPackageName() to go along-side
getBasePackageName().  This is a special call for use by all app ops
verification, which will be initialized with either the base package
name, the actual package name, or now the default package name of the
process if we are creating a context for system code being loaded into
a non-system process.

I had to update all of the code doing app ops checks to switch to this
method to get the calling package name.

Also improve the security exception throw to have a more descriptive
error message.

Change-Id: Ic04f77b3938585b02fccabbc12d2f0dc62b9ef25
2013-09-11 09:59:47 -07:00
Erik Gilling
51e95df8f2 Add consumer IR framework
Change-Id: I786c00db0cce61ef75e4edc24e90f2cdcba6dbfb
2013-09-11 09:52:47 -07:00