Commit Graph

11796 Commits

Author SHA1 Message Date
Svetoslav Ganov
650f0ee31b ssss
Change-Id: I001c2ae5bc6caeac7e1a2223e221be69f6e6cb6c
2013-08-02 13:31:20 -07:00
Svetoslav Ganov
55b409a97c Iteration of the print sub-system.
1. Added APIs for adding partially initialized PrintInfo objects
   enabling light-weight lookps for print serivces that want to
   populate the list of available printers without querying each
   of them for its capabilities. This includes APIs for the system
   to request from a print service to update certain printers.

2. Fixed a bug in PrinterId#equals().

3. Added equals and hasCode implementaion to PrinterInfo. Also
   the defaul in PrinterInfo are now an array instead of a
   SparseArray - cheaper.

4. Now PrintJobConfigActivity works with partially specified
   printers. Specifically, if such a printer is selected the
   activity is requesting from the print service to update
   the printer. We are currently not handling the timeout case.
   It also handles udpated pritners.

Change-Id: I5e83e924ef597c9e22cbd06a971d4f4d3bd3a9c1
2013-07-31 18:59:53 -07:00
Svetoslav Ganov
85b1f88305 Iteration on the print sub-system.
1.  API changes: Moved copies API from PrintAttributes to PrintJobInfo;
    Changed the PageRange list to an array in PrintDocumentAdapter#onWrite;
    Added onCancelled method to the layout and write callbacks.

2.  Refactored the serialization of remote layout and write commands. Now
    the commands are serialized by the code in the client instead in the spooler.
    The benefit is simple code since the client has to do a serialization to delegate
    to the main thread anyway. The increased IPC found is fine since these calls
    are quite unfrequent.

3.  Removed an unused file: IPrintSpoolerObserver.aidl

4.  Added equals and hasCode implementation to PageRange, PrintAttributes,
    MediaSize, Resolution, Margins, Tray, PrintDocumentInfo.

5.  Added shortcut path for query APIs on PrintJob that return cached values
    if the print job is in a uncuttable state, i.e. completed or cancelled. Failed
    print jobs can be restarted.

6.  PrintJobInfo was not properly serialized.

7.  Updated the look of the print dialog to be stable if there is and there isn't
    currently selected printer.

8.  PrintJobCOnfigActivity now calls onLayout on every print attributes change
    but requests a write only on print preview or print button press. Also if the
    layout did not change the content and it is already written no subsequent
    call is made. Also if the selected pages change and we already have them
    no subsequent call to write is made. Also the app is called with print preview
    attribute set when performing layout and with it cleared after the print button
    is pressed. A lot of changes making sure that only valid actions are enabled
    in the activity (looks like a dialog) at a given time frame. The print job config
    activity is also hidden after we got all the data, i.e. layout and write are done.

9.  The callback from the print spooler to the system are scheduled via messages
    to avoid lock being held during the call. It was hard to guarantee that since a
    method holding a lock may be calling one that would like to release the lock
    at some point to make the callbacks.

10. Print spooler state is persisted only if something changes in a completed
    print job, i.e. not one that is being constructed due the print job config dialog.

11. Fixed a potential race in the RemotePrintSpooler where it was possible that
    a client that got a handle to the remote spooler calls into an unbound spooler.
    E.g: the client gets the remote interface with a lock held, now the client releases
    the lock to avoid IPC with a lock, during the IPC scheduling the spooler has
    notified the system that it is done and the system unbinds from it, now the
    client's IPC is made to a spooler that is disconnected.

Change-Id: Ie9c42255940a27ecaed21a4d326a663a4788ac9d
2013-07-30 17:15:11 -07:00
Svetoslav Ganov
88d199130d Implement persistence/restoring of print spooler state.
1. Implemented the persistence and restoring of the print spooler state.
   The print spooler state is saved as an XML on every print job change
   and is restored when we bind to the spooler. The system does not
   unbind from the spooler until the state persistence completes. We
   are now storing the entire state, i.e. all print jobs, when a single
   one changes. This is not optimal but we are not expecting to have
   many such at the same time, so for now we err for simplicity of
   implementation.

2. Enforcing a non-empty print job name.

3. Hidden the STATE_CREATED print job state which should never be visible to a
   client since this is the state of a print job during construction, i.e. the
   print dialog is up and we are doing back and forth with the app.

4. Fixed some PrintAttributes APIs that were incorrectly taking in a PackageManager
   instance.

5. Updated the PrintSpooler build file due to splitting the framework into multiple
   jars.

Change-Id: I52c88eaa1ec9c64920359cc143c79832a4c3d25b
2013-07-22 13:07:09 -07:00
Svetoslav
597945fd3a First pass of the print dialog UX
Change-Id: I315a16d7f68c73ca180c76e722847b4b1bdea55b
2013-07-19 16:23:12 -07:00
Craig Mautner
acb837fe63 Merge "Fix home activity and user switch interactions." 2013-07-19 23:07:51 +00:00
Craig Mautner
ac6f843c91 Fix home activity and user switch interactions.
- Make sure Home activity goes in the correct task and on the correct
stack.
- Do not allow different users to be in the same task.
- Do not set stacks aside for each user.

Fixes bug 9775492.

Change-Id: I0e7954e917aac8482a1015a36923e02914e2b692
2013-07-19 16:05:59 -07:00
Christopher Tate
a5bc070e9e Merge "EWRONGVARNAME" 2013-07-19 21:54:50 +00:00
Christopher Tate
e982faffc9 EWRONGVARNAME
Bug 9940349

Change-Id: I60205899cd33070394752fc4b2f1e0cf6a2d9192
2013-07-19 14:52:49 -07:00
Robert Greenwalt
bfc7634b36 resolved conflicts for merge of f9774dc7 to master
Change-Id: Ia9509ab6897e27da8bf4fc61a4140f2f93acb80f
2013-07-19 14:30:49 -07:00
Robert Greenwalt
538cdb98ef resolved conflicts for merge of 85b5e4c4 to master
Change-Id: Idd0ad9b1504fddf68c4c4cc04731de1eddd204b3
2013-07-19 14:09:30 -07:00
Wink Saville
0871ac2afb am b96cca27: am df43ba82: am e3badc10: Merge "When a SIM is changed check mobile provisioning." into jb-mr2-dev
* commit 'b96cca27ba15121aab2c481786a292880c007bb6':
  When a SIM is changed check mobile provisioning.
2013-07-19 13:42:36 -07:00
Robert Greenwalt
f9774dc796 am ddf17b5b: am 8c87b297: Merge "Make CS.isTetheringSupported dynamic" into jb-mr2-dev
* commit 'ddf17b5b82f25965502377588483abbc328c4e6d':
  Make CS.isTetheringSupported dynamic
2013-07-19 13:37:58 -07:00
Robert Greenwalt
85b5e4c48f am b5bf655c: am e874bd35: Merge "Add gservices updater for carrier provisioning url" into jb-mr2-dev
* commit 'b5bf655cc6cc9128aec99958cce3b054348c9273':
  Add gservices updater for carrier provisioning url
2013-07-19 13:37:41 -07:00
Wink Saville
b96cca27ba am df43ba82: am e3badc10: Merge "When a SIM is changed check mobile provisioning." into jb-mr2-dev
* commit 'df43ba82e6c232985a95c9827f7d71dd3194e0a8':
  When a SIM is changed check mobile provisioning.
2013-07-19 13:37:35 -07:00
Jeff Brown
7afdf7f051 am 2445880c: am ba8a5413: Fix missing lock in power manager.
* commit '2445880c5cb6504455bd5cae38a850744f4804be':
  Fix missing lock in power manager.
2013-07-19 13:37:25 -07:00
Craig Mautner
70eac41f70 am a64325f6: am 7c6be10d: Remove iterators (DO NOT MERGE)
* commit 'a64325f6e70569255ff395a85ec161f3230f9e35':
  Remove iterators (DO NOT MERGE)
2013-07-19 13:37:22 -07:00
Amith Yamasani
7e81dd274f Merge "Have UserManagerService clear the restrictions and unblock apps" 2013-07-19 19:48:21 +00:00
Craig Mautner
0f4ab97c23 Access sparse array in correct manner
Was using get() for iteration. Consequence of cl 331550.

Fixes bug 9902476.

Change-Id: I4ec08d0421411981db8b8fba7342e9a3db606ce1
2013-07-19 11:07:29 -07:00
Wink Saville
71795c73b4 Merge "checkMobileProvisioning is not using sendNotification." 2013-07-19 17:14:41 +00:00
Wink Saville
c2fee24f76 checkMobileProvisioning is not using sendNotification.
Change-Id: Ie5b98b462b29fe9339fcb8207d2d33e3028a155c
2013-07-19 09:27:56 -07:00
Christopher Tate
7359766116 Twilight alarms are now non-wakeup but exact
Change-Id: Iccb15065d7a0483f0bc2aff0238b94e946b8cbf1
2013-07-18 17:52:44 -07:00
Colin Cross
5408ae83e8 Merge "Use virtual screen size to determine lowmemorykiller tuning" 2013-07-19 00:35:29 +00:00
Colin Cross
4107a81365 Merge "Add properties to override size and density" 2013-07-19 00:35:01 +00:00
Christopher Tate
1a80cfe968 Merge "Batch alarms to reduce device wakeups" 2013-07-19 00:22:59 +00:00
Colin Cross
637dbfcaf0 Use virtual screen size to determine lowmemorykiller tuning
Use the virtual screen resolution returned by getBaseDisplaySize
instead of the physical screen resolution returned by
getInitialDisplaySize.  The memory required by apps will scale
with graphics buffer size, which are generally relative to the
virtual screen resolution.

Change-Id: I0476e4afad99eca2f4f56042a8dbef5b3c7889db
2013-07-18 17:15:15 -07:00
Colin Cross
ef96fd9009 Add properties to override size and density
Add properties ro.config.density_override and ro.config.size_override
to provide build-time virtual screen sizes.  A device with no
override set with "wm size" will use the size specified by the property.
"wm size reset" will go back to the physical size.

Change-Id: I07a585eb2e0f91365fac2b64c53de3af138a2a85
2013-07-18 17:09:56 -07:00
Amith Yamasani
1a7472e722 Have UserManagerService clear the restrictions and unblock apps
Since this is an operation that could take a few seconds to run and needs to be
completed even if Settings dies, best to do it in the user manager.

Refactored PIN challenge/setup UI with a field to verify existing pin
when changing to a new one.

Change-Id: I0b7df5b2ccb7f343aa9282a9245d3bc2b577a794
2013-07-18 16:12:27 -07:00
Dianne Hackborn
8585d688f8 Fix issue #9913990: Background processes are being added to...
...the *end* of the process LRU listB

Change-Id: I75c9477b81e10c4e517fd836304467fb3f7ed85e
2013-07-18 15:41:02 -07:00
Robert Greenwalt
c13368bfd1 Make CS.isTetheringSupported dynamic
It used to be set at boot, but that was too quick to pick up carrier
specific resources.  With this change even if you switch sims subequent
checks get the new values.

bug:9865616
Change-Id: I8c270c6b02fc6bdd3c3d76ceea58172df25e058d
2013-07-18 14:24:42 -07:00
Dianne Hackborn
e98f5dbe6b Make it safe to use start/stop app ops outside of system proc
We now keep track of all of the active start operations per
non-system process, so they can be cleaned up if the process
goes away.

Change-Id: I9d05f1e0281c47dbe1213de014f0491f1359685c
2013-07-17 17:25:13 -07:00
Robert Greenwalt
e874bd351f Merge "Add gservices updater for carrier provisioning url" into jb-mr2-dev 2013-07-17 23:46:25 +00:00
Christopher Tate
e0a22b324d Batch alarms to reduce device wakeups
The default Alarm Manager behavior for KLP+ apps will be to aggressively
coalesce alarms, trading exact timeliness of delivery for minimizing the
number of alarm-delivery points, especially wakeup points.

There is new API in AlarmManager, setExact() and setExactRepeating(),
for use by apps that absolutely *must* get their alarms at a specific
point in time.

Bug 9532215

Change-Id: I40b4eea90220211cc958172d2629664b921ff051
2013-07-17 14:37:12 -07:00
Robert Greenwalt
e182bfe398 Add gservices updater for carrier provisioning url
bug:9623159
Change-Id: I36697ed341353b7a3dbec5afe20241102e76f6f1
2013-07-17 14:05:33 -07:00
Wink Saville
e3badc1011 Merge "When a SIM is changed check mobile provisioning." into jb-mr2-dev 2013-07-17 18:43:30 +00:00
John Spurlock
332d84a567 Merge "Fix View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION." 2013-07-17 00:20:36 +00:00
Wink Saville
fde1ac9bec When a SIM is changed check mobile provisioning.
A simple mechanism for doing this is to take advantage of the fact
that we require the device to reboot after a sim has been changed.
Thus when connectivity service is started we wait to get a connection
then call checkMobileProvisioning once. We also add a check that
the DEVICE_PROVISIONED is true, i.e. SetupWizard has been run.

Bug: 9784024
Change-Id: I5c1936744f6fc55a447ae44cd36eec3849d27e21
2013-07-16 17:16:37 -07:00
John Spurlock
7045aaa21e Fix View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION.
If a window's task stack has no sibling, restore old behavior
of allowing frame to go below the nav bar.

Bug:9884905
Change-Id: Ifc38901a6633cf431dba8740a65258d0618c0fd0
2013-07-16 19:42:23 -04:00
Jeff Brown
ba8a54136d Fix missing lock in power manager.
The display wake lock and other internal state could become
out of sync if we happened to execute the power manager's update
function concurrently due to the missing lock.

This bug can be trigged due to display state changes or proximity
sensor updated.  Although it would be extremely rare, we have
some evidence of this happening on at least a few devices resulting
in rapid power drain with the screen off or a crash.

Bug: 9880044
Change-Id: I3c674ce429621a50cbb36c3a01883d5f388205b2
(cherry picked from commit d91e417b06)
2013-07-16 22:29:57 +00:00
Jeff Brown
07c09ce248 Merge "Fix missing lock in power manager." 2013-07-16 22:28:31 +00:00
Jeff Brown
d91e417b06 Fix missing lock in power manager.
The display wake lock and other internal state could become
out of sync if we happened to execute the power manager's update
function concurrently due to the missing lock.

This bug can be trigged due to display state changes or proximity
sensor updated.  Although it would be extremely rare, we have
some evidence of this happening on at least a few devices resulting
in rapid power drain with the screen off or a crash.

Bug: 9880044
Change-Id: I3c674ce429621a50cbb36c3a01883d5f388205b2
2013-07-16 15:22:14 -07:00
Craig Mautner
b48fe0ec5e Merge "Remove iterators." 2013-07-16 21:45:32 +00:00
Craig Mautner
f8924150b3 Remove iterators.
Remove DisplayContentsIterator and AllWindowsIterator. These were cute
but they take up valuable resources. Iterate over ArrayList members
in their place.

Change-Id: I1d8a3b040175cb88b98f6a7e97cab06d17d5706b
2013-07-16 13:45:29 -07:00
Craig Mautner
7c6be10d31 Remove iterators (DO NOT MERGE)
Remove DisplayContentsIterator and AllWindowsIterator. These were cute
but they take up valuable resources. Iterate over ArrayList members
in their place.

Change-Id: Ie0c537608532cfb36f34d976cc6eacd21bad98cd
2013-07-16 13:07:48 -07:00
Svetoslav Ganov
c59df3caeb Merge "Refactoring of the print sub-system and API clean up." 2013-07-16 20:01:34 +00:00
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