14184 Commits

Author SHA1 Message Date
Svetoslav Ganov
a00271533f Refactoring of the print sub-system and API clean up.
1. Now a user state has ins own spooler since the spooler app is
   running per user. The user state registers an observer for the state
   of the spooler to get information needed to orchestrate unbinding
   from print serivces that have no work and eventually unbinding from
   the spooler when all no service has any work.

2. Abstracted a remote print service from the perspective of the system
   in a class that is transparently managing binding and unbinding to
   the remote instance.

3. Abstracted the remote print spooler to transparently manage binding
   and unbinding to the remote instance when there is work and when
   there is no work, respectively.

4. Cleaned up the print document adapter (ex-PrintAdapter) APIs to
   enable implementing the all callbacks on a thread of choice. If
   the document is really small, using the main thread makes sense.

   Now if an app that does not need the UI state to layout the printed
   content, it can schedule all the work for allocating resources, laying
   out, writing, and releasing resources on a dedicated thread.

5. Added info class for the printed document that is now propagated
   the the print services. A print service gets an instance of a
   new document class that encapsulates the document info and a method
   to access the document's data.

6. Added APIs for describing the type of a document to the new document
   info class. This allows a print service to do smarts based on the
   doc type. For now we have only photo and document types.

7. Renamed the systemReady method for system services that implement
   it with different semantics to systemRunning. Such methods assume
   the the service can run third-party code which is not the same as
   systemReady.

8. Cleaned up the print job configuration activity.

9. Sigh... code clean up here and there. Factoring out classes to
   improve readability.

Change-Id: I637ba28412793166cbf519273fdf022241159a92
2013-07-16 12:59:59 -07:00
Dianne Hackborn
cdae0f3c60 Merge "Switch proc stats to use new process state constants." 2013-07-16 18:15:09 +00:00
Alon Albert
2d48f0690a Merge "Minor Formating Fix" 2013-07-16 07:57:32 +00:00
Rom Lemarchand
0a880d0402 Merge "Increase swappiness of processes when memcgroups are enabled" 2013-07-16 02:32:13 +00:00
Dianne Hackborn
c823051972 Switch proc stats to use new process state constants.
These new constants are a better mapping to the kind of
information that procstats is wanting to collect about
processes.  In doing this, the process states are tweaked
to have a bit more information that we care about for
procstats.

This changes the format of the data printed by procstats,
so the checkin version is bumped to 2.  The structure is
the same, however the codes for process states have all
changed.  The new codes are, in order of precedence:

p -- persistent system process.
t -- top activity; actually any visible activity.
f -- important foreground process (ime, wallpaper, etc).
b -- important background process
u -- performing backup operation.
w -- heavy-weight process (currently not used).
s -- background process running a service.
r -- process running a receiver.
h -- process hosting home/launcher app when not on top.
l -- process hosting the last app the user was in.
a -- cached process hosting a previous activity.
c -- cached process hosting a client activity.
e -- cached process that is empty.

In addition, we are now collecting uss along with pss
data for each process, so the pss checkin entries now
have three new values at the end of the min/avg/max uss
values of that process.

With this switch to using process state constants more
fundamentally, I realized that they could actually be
used by the core oom adj code to make it a lot cleaner.
So that change has been made, that code has changed quite
radically, and lost a lot of its secondary states and flags
that it used to use in its computation, now relying on
primarily the oom_adj and proc state values for the process.

This also cleaned up a few problems -- for example for
purposes of determing the memory level of the device, if a
long-running service dropped into the cached oom_adj level,
it would start being counted as a cached process and thus
make us think that the memory state is better than it is.
Now we do this based on the proc state, which always stays
as a service regardless of what is happening like this, giving
as a more consistent view of the memory state of the device.

Making proc state a more fundamentally part of the oom adj
computation means that the values can also be more carefully
tuned in semantic meaning so the value assigned to a process
doesn't tend to change unless the semantics of the process
has really significantly changed.

For example, a process will be assigned the service state
regardless of whether that services is executing operations
in the foreground, running normally, or has been dropped to
the lru list for pruning.  The top state is used for everything
related to activities visible to the user: when actually on
top, visible but not on top, currently pausing, etc.

There is a new Context.BIND_SHOWING_UI added for when system
services bind to apps, to explicitly indicate that the app
is showing UI for the system.  This gives us a better metric
to determine when it is showing UI, and thus when it needs
to do a memory trim when it is no longer in that state.  Without
this, services could get in bad states of continually trimming.

Finally, more HashSet containers have been changed to ArraySet,
reducing the temporary iterators created for iterating over
them.

Change-Id: I1724113f42abe7862e8aecb6faae5a7620245e89
2013-07-15 16:21:35 -07:00
Jeff Brown
ef69117979 Remove dead code in system server initialization.
System server always forks from Zygote so we no longer need
the system_server executable which was probably broken anyhow.
This makes the initialization sequence slightly more intelligible.

Likewise, we don't need the GrimReaper anymore because init
will automatically take care of restarting the system when the
service manager dies.

Change-Id: I02c88d9392f7c8133d9cde9d0d978da89ed80452
2013-07-15 15:08:39 -07:00
Geremy Condra
c3bdf87505 Merge "Support routing sockets as another user" 2013-07-15 21:57:18 +00:00
Geremy Condra
b7fb8dbad6 Merge "Restricted profiles use Owner's VPN" 2013-07-15 21:56:55 +00:00
Geremy Condra
045ad910b7 Merge changes Ia6646363,I94389b64
* changes:
  Add per user VPN support
  Add NetworkUtil function for marking sockets
2013-07-15 21:56:30 +00:00
Rom Lemarchand
5534ba91ac Increase swappiness of processes when memcgroups are enabled
When memcgroups are enabled, migrate heavier and lower priority processes
to the sw memcgroup.

Change-Id: Iba07a723037a599736ef23dea16a30a26634428a
2013-07-15 13:19:27 -07:00
Chad Brubaker
d475c70424 Support routing sockets as another user
Add support for routing sockets as if they were another user's.
This is for services that handle delegated network tasks like MediaServer and DownloadManager.

Change-Id: Id20efc1f5c2cce6f8838d777762f6c0a703a9437
2013-07-15 12:14:10 -07:00
Chad Brubaker
c2865195b6 Restricted profiles use Owner's VPN
Restricted profiles cannot start their own VPN and will use the Owner's
VPN if one is running.

Change-Id: I1fc153742047f9149acb414c4c9d35305e97d8d0
2013-07-15 12:13:47 -07:00
Svetoslav
d08d7ee4e9 Allowing the root user to use the screen introspection APIs.
We were allowing the system and the shell user to access use the
screen introspection APIs but the root user was not able to to so.
This change enableS the root user to also use these APIs. Note that
we usually allow the root user to access privileged functionality
similarly to the shell user of the system.

bug:8877685

Change-Id: Ie4008339e864b835bd3a2d5e06b042e4431c5270
2013-07-15 10:20:31 -07:00
Cyril Mottier
5f5882ffa8 Remove useless/repetitive code
fixScale(float) method has been extracted from the code but the original
code has been kept in place. Because of this, the animation scale is 
"fixed" twice which is not necessary. This patch, simply call 
fixScale(float) once and stores the result of it in the scale variable.

Change-Id: I50aeacbc2c13ebbf447506ae4309d50c0e313837
2013-07-15 15:38:10 +02:00
Alon Albert
eca2fe9cfc Minor Formating Fix
Put a space between the period and the bundle of a
periodic sync.

Change-Id: If6cd7ae2b3faf59d2c8fd760983eb4650d62aca9
2013-07-15 08:41:34 +03:00
Chad Brubaker
4ca19e8377 Add per user VPN support
VPNs are now per user instead of global. A VPN set by user A routes only
user A's traffic and no other user can access it.

Change-Id: Ia66463637b6bd088b05768076a1db897fe95c46c
2013-07-12 20:51:03 -07:00
Dianne Hackborn
a413dc06b2 Add new proc state constants and delivery.
The activity manager now keeps a new "process state" for
each process, indicating the general execution and memory
state of the process.  This closely follows the out-of-memory
adjustment and scheduling class that it currently tracks,
but roles these together (plus a little more info) into one
more semantically meaningful number.

This value is reported to each process as it changes, so they
can do things like tune the Dalvik garbage collector to match
the current process state.

I think I should also switch to this for process states.  It
will give is more meaningful divisions of time for each process.

Also fix a problem in the activity stack where the previous
process was not being set correctly when moving between
activity stacks.

Change-Id: I598b1667dc46547f8fadae304e210c352cc9d41f
2013-07-12 18:14:46 -07:00
Dianne Hackborn
9ad5bc7e64 Merge "Reduce some event log noise:" 2013-07-13 01:02:32 +00:00
Dianne Hackborn
cf11716409 Reduce some event log noise:
- Only log battery levels on level changes, not voltage or temp.
- Reduce the text in the start service log to only the suffix
  of the service component, and a uid field.

Change-Id: I6d65e6700e021b3b005dccc90d64f36c1f97137f
2013-07-12 17:26:02 -07:00
keunyoung
27116e35e8 Merge "add TYPE_PRIVATE_PRESENTATION window type" 2013-07-12 23:03:21 +00:00
keunyoung
a446bf0e8c add TYPE_PRIVATE_PRESENTATION window type
- This window type can be used for Presentation created on top of virtual
  private display.
- There can be PRIVATE_PRESENTATION specific policy / behavior, but for now,
  there is nothing special.

Change-Id: I9fde0f0376e57fcc60000d3a3f8657a21ef58993
2013-07-12 14:41:10 -07:00
Christopher Tate
70d3dd4f79 Merge "Out-of-band apk pushes to the privileged install dir" 2013-07-12 20:18:55 +00:00
Geremy Condra
f33468e68a Merge "Add NetworkManagement support for fwmark routes" 2013-07-12 19:47:19 +00:00
Christopher Tate
409bb36a13 Out-of-band apk pushes to the privileged install dir
The new apk will now correctly allow system permissions to an app
placed in the privileged install dir via 'adb push' on the fly.

Change-Id: Ie4284d12628e08d9562d18eee6a7e8f74ae6295e
2013-07-12 12:33:09 -07:00
Amith Yamasani
46db67cf7f Merge "Fix build" 2013-07-12 19:24:10 +00:00
Amith Yamasani
ed411593ec Fix build
Change-Id: If4c4f1f104826b599c86bc1c924ebadc5223c8f0
2013-07-12 12:23:16 -07:00
Wink Saville
7ab34954c8 am 97b077bc: am 42a85412: am 925ec03f: Merge "VZW wants the phoneNumber to be 10 zero\'s if there isn\'t one." into jb-mr2-dev
* commit '97b077bc18752e7dafe041cb04c19e67ce69939c':
  VZW wants the phoneNumber to be 10 zero's if there isn't one.
2013-07-12 12:14:01 -07:00
Wink Saville
97b077bc18 am 42a85412: am 925ec03f: Merge "VZW wants the phoneNumber to be 10 zero\'s if there isn\'t one." into jb-mr2-dev
* commit '42a85412d12078f36c3fdeda1211bdc3800bab0c':
  VZW wants the phoneNumber to be 10 zero's if there isn't one.
2013-07-12 12:03:53 -07:00
Wink Saville
925ec03fcd Merge "VZW wants the phoneNumber to be 10 zero's if there isn't one." into jb-mr2-dev 2013-07-12 18:59:03 +00:00
Amith Yamasani
abee69bc08 am 8361a9f7: am 1a1a7c08: am 06a441de: Merge "Pass along the user id to AttributeCache requests" into jb-mr2-dev
* commit '8361a9f719b6a416a40134951daf28297b6e0670':
  Pass along the user id to AttributeCache requests
2013-07-12 11:25:24 -07:00
Amith Yamasani
8361a9f719 am 1a1a7c08: am 06a441de: Merge "Pass along the user id to AttributeCache requests" into jb-mr2-dev
* commit '1a1a7c0878320b94d01da6bdfaa857c85b4199a3':
  Pass along the user id to AttributeCache requests
2013-07-12 11:21:27 -07:00
Amith Yamasani
06a441de3b Merge "Pass along the user id to AttributeCache requests" into jb-mr2-dev 2013-07-12 18:17:09 +00:00
Lorenzo Colitti
51a845688c Merge "Make legacy VPN work over stacked interfaces." 2013-07-12 03:33:20 +00:00
Vinit Deshapnde
e088428400 Merge "Allow enabling TDLS on specific routes" 2013-07-12 00:58:07 +00:00
Vinit Deshapnde
64f0d5ba15 Allow enabling TDLS on specific routes
This change exposes couple of internal APIs to enable TDLS between local
machine and a remote machine. The implementation translates client provided
remote IP to a MAC address using system ARP cache, and then instructs the
driver to enable TDLS with that endpoint. Another API takes application
specified MAC address.

Bug: 8538898

Change-Id: Ida343fc42ba3a817a4f380255596e7fb7fcdfb9b
2013-07-11 15:12:44 -07:00
Chad Brubaker
cca54c4dec Add NetworkManagement support for fwmark routes
Add NetworkManagementService binds for netd's fwmark routes

Change-Id: I55cf6b198d56f1fb0d20818ddf176a0f779a33b6
2013-07-11 13:41:40 -07:00
Satoshi Kataoka
713412fd54 am 7e0fad1d: am 8b95d259: am b7925f22: Merge "Revert "Stop marking gamepads as keyboards"" into jb-mr2-dev
* commit '7e0fad1d442428b9a2ba5d88ce7f8a59869acb0e':
  Revert "Stop marking gamepads as keyboards"
2013-07-11 08:08:18 -07:00
Lorenzo Colitti
41fb98c868 Make legacy VPN work over stacked interfaces.
On stacked interfaces like 464xlat, Legacy VPN can't find the
default gateway because it uses getRoutes, which only returns
routes for the base link and not for the stacked links. It also
assumes that the interface that the default route points to is
the interface for the base link (e.g., rmnet0) instead of the
interface the route actually points to (e.g., clat4).

Fix this by calling getAllRoutes to find the default IPv4 route,
and get the interface name from the route we find instead of
assuming it's the base interface.

Bug: 9597516
Change-Id: Ia6ce0b6258a421cd22f60dedca7e94176b32176b
2013-07-11 18:15:48 +09:00
Wink Saville
8cf3560469 VZW wants the phoneNumber to be 10 zero's if there isn't one.
Bug: 9784059
Change-Id: I41bba908855648d2560440655d8a75a7cb2e0859
2013-07-10 23:00:07 -07:00
Dianne Hackborn
9865ef1ba5 Merge "Add -c option to meminfo to dump a compact form." 2013-07-11 02:03:33 +00:00
Dianne Hackborn
20cdcee47d Add -c option to meminfo to dump a compact form.
Also fix a bug in FastPrintWriter where println(long) was
not printing the newline.

Change-Id: Idcb4eaab0c1ec4b992032b5e36478ef11a6533d9
2013-07-10 18:47:04 -07:00
Amith Yamasani
4befbecfcc Pass along the user id to AttributeCache requests
Bug: 9759331
Change-Id: Ib96ba6a89c58edc207021aa43a2b67b4f6c50117
2013-07-10 16:18:01 -07:00
Craig Mautner
fb20eb48aa Merge "Add convertToTranslucent to API." 2013-07-10 21:52:28 +00:00
Kenny Root
3b4d69508a Merge "KeySetManager: convert comments to Javadoc" 2013-07-10 19:35:49 +00:00
Dianne Hackborn
1304f4ae32 Add new location monitoring op, make some of app ops public.
The new location monitoring op is to tell us when an application
is monitoring for any location changes.  It may be useful information
in addition to the more explicitly information about when location
data actually goes to the app.

Also make parts of AppOpsManager public for use by gcore.  It is
not available to third party apps.

Change-Id: Ib639f704258ffdd7f3acd7567350ed2539da628a
2013-07-09 18:17:27 -07:00
Craig Mautner
5eda9b3301 Add convertToTranslucent to API.
Rename convertToOpaque to convertFromTranslucent. Add the
counterpart to Activity.convertFromTranslucent() for returning from
opaque to a translucent Activity. The caller should wait until
TranslucentConversionListener.onTranslucentConversionComplete() is
called before actually changing the background to translucent.

Change-Id: Id04b026bcc4dd8bad9a33a7af126e1bb28fb9c03
2013-07-09 14:50:12 -07:00
Amith Yamasani
235e817c80 Merge "Clean up any restrictions files that shouldn't be there." 2013-07-09 18:32:41 +00:00
Amith Yamasani
b82add27d0 Clean up any restrictions files that shouldn't be there.
Partially fixes the mess that was caused by #9681399

Change-Id: Iaabe15c87d1b002f0b2210b34adcc31b8fb4329c
2013-07-09 11:24:44 -07:00
Satoshi Kataoka
7e0fad1d44 am 8b95d259: am b7925f22: Merge "Revert "Stop marking gamepads as keyboards"" into jb-mr2-dev
* commit '8b95d259b9f66342ba5ae6e8f4ea262dcb1de05b':
  Revert "Stop marking gamepads as keyboards"
2013-07-09 10:25:02 -07:00
Satoshi Kataoka
b7925f2219 Merge "Revert "Stop marking gamepads as keyboards"" into jb-mr2-dev 2013-07-09 17:20:39 +00:00