1. Implemented the advanced printer options integration. Now a print service
may declare an advanced print options activity which may be launched by
the user if the current printer supports advanced print options. These options
are visible only to the print service that added them and it is the only party
that will interpret the options.
2. Fixed a couple of bugs in the saved print jobs parsing. One was that if there
are more than one page range, a half of the print job properties was not
properly parsed. The other was that the media size constructor was using
incorrect argument order, thus creating a media size with wring width.
3. Fixed and edge case where old print jobs and their docs can get stuck in
the spooler. If the app did not write the requested pages we were not showing
an error message, rather just finish the activity without canceling the print
job and this print job is stuck in the spooler. Now we show an error message
and the user may retry, cancel. If the user cancels the print job is also
cancelled, thus no leftover in the spooler.
4. Fixed the background color of the print dialog to meet UX spec.
bug:11241800
Change-Id: I352440bc86aec824a805883fc9579d96a06d11e6
While user is actively looking at a directory, subscribe to inotify
events and notify of content changes to trigger requeries. Reference
count the observers, since multiple cursors are regularly open during
requeries.
Fix leaking cursors on activity rotation; crazy loader ID generation
is no longer needed.
Bug: 10999396
Change-Id: Iddeb08a056fee80c93df8499874705bcd213a1e2
Also always lower-case extension to extract MIME type correctly,
we may want to fix in MimeUtils at some point.
Bug: 11354402
Change-Id: I77d0c06a663cd0c4320c41553ff1980b6f9a7778
Previously, turning the screen off with the panel expanded would
run one time through panelExpansionChanged, leaving the background
in an intermediate state.
This has probably been around for a while, only uncovered now
that we can see it (if the status bar is translucent).
Bug:11357145
Change-Id: I55b768696c8791f82265a61d2c0f665503ad8bb0
- reuse intermediate bitmaps when loading resources
- only use hardware layers on views that are animating
Bug: 11269977
Change-Id: I39ad7aff16468632da47448404416404f3b54cc4
When mutation operations are waiting for a storage backend, show a
spinner in place of the save button.
Bug: 11333249
Change-Id: I2b620b4532ad977a2b60d4bdc5caa55f89021456
Add supplyPinReportResult & supplyPukReportResult that
returns the result code and attempts remaining.
Display "Attempts remaining" in Keyguard
Bug: 9928717
Change-Id: Ibad0635dd1375fabce11ba2b7b9f95f8868489e6
Data cleared usually means accounts went away, so kick off roots
refresh. Also update any visible UI after a refresh finishes.
Bug: 10899793
Change-Id: Id68c80b5e635e358cfd75f4961ce13cd1c7c5f82
When a more important request comes along, preempt all outstanding
thumbnail requests.
Bug: 11317901
Change-Id: I164fc8d804bb9c471e6da3f8127228043b3ca482
Transitions, when started, add an OnPreDrawListener to the current
ViewTreeObserver (which is global to the view hierarchy). This listener
is removed when the listener is called.
It is possible to add this listener and then remove the view from
the hierarchy before the listener is called. This could result in
either the listener not getting called at all (since there was no
drawing event) or (in the case of this bug) the listener getting called
when the sceneRoot had no AttachInfo (which is the case when that
root has been removed from the hierarchy). This results in the listener
trying to remove itself from a *different* ViewTreeObserver than the one
it added itself to, leaving the actual listener still sitting on a list
of listeners in that original VTO. This can result in a growing list of
listeners and a growing amount of work that gets done on every frame.
It can also lead to a serious memory leak, since the objects referred to
by the transition may be non-trivial (as in the case of this bug).
The fix is to add another mechanism for the listener to get removed.
Specifically, we now listen for detach events on the sceneRoot. If that
view gets detached before the listener is called, then we have a chance to
remove it from the correct VTO before the AttachInfo becomes null.
Issue #11307391 keyguard is slow after updating to krt16c and playing music
Change-Id: I108413ea2f18f5351df0a11d4ae56fec0b4aa154
Out with TransitionDrawable.
The new background drawable knows about all possible
background styles, and optimizes the transitions
between them - including picking up from the current
state, force finishing on screen off, and using
SystemClock.elapsedRealtime() for timing.
Bug:11254317
Change-Id: Ice83dc966f6674ef97f7008f2a1b62d67ec59e7d
This fix ensures that only one runnable is running at a time, no matter how
many events come in. There's probably a better way to do this, but this is a
safe fix.
Fixes bug 11307391
Change-Id: I007c95062b20285571f39603c95fb9174b9a2da3
This works around a problem where removing a review with unfinished
transitions results in leaked object references to KeyguardTransportControlView.
The workaround disables transitions until we have a better fix.
Fixes bug 11307391
Change-Id: I1df82f2c6f1cd9f5c9076d4c76cfd4aec3b6806c
1. For an app to print it creates a PrintDocumentAdapter implementation
which is passed to the print dialog activity. If the activity that
created the adapter is destroyed then the adapter, which may rely on
the activity state, may be in an invalid state. For example, an app
creates an adapter and calls print resuting in the app activity and
the print dialog activity being stacked. Now the user rotates the
device which triggers the recreating of the activity stack (assume the
app does not handle rotation). The recreated print dialog activity
receives the intent that originally created it with containing the
adapter that was constructed in the context of the old, now destroyed,
app activity instance.
To handle this we are limiting an app to be able to print only from
and activity and when this activity is destroyed we mark the adapter
as invalid which will result in hiding the print dialog activity. Note
that if the app process is killed we already handle this in the print
dialog activiy by registering a death recipient on the adapter binder.
2. In the PrintManager.PrintDocumentAdapterDelegate some of the state is
accessed only on the main thread and some from miltiple threads. The
code was trying to avoid locking for state that is not accessed by
multiple threads but this is error prone and the benefit does not
justify the complexity and added fragility. Now grabbing a lock all
the time.
3. The PrintJobConfigActivity waits for it to bind to the print spooler
service before instantiating its print controller and editor. However,
these can be accessed by invoking some of the activity cycle callbacks.
This change is adding null checks for the case where the activity
callbacks are called before the binding to the spooler is completed.
bug:11242661
Change-Id: Id906b3170e4f0a0553772dfa62686f06fdca0eaf
This occurs when switching users on devices that
don't have a rotation lock quick settings tile.
Change-Id: I738ca15ca754be90cec7eaf3a8eda3e38ed96b33
(cherry picked from commit e8f50a1400d288e6fd7c20ec7947270e204ee57d)