839 Commits

Author SHA1 Message Date
Leon Scroggins III
a730ef3f77 Handle bad ninepatch data.
Changes proposed by Ben Hawkes of Google Project Zero.

NinePatchPeeker.cpp:
Instead of asserting, return false for bad data.

ResourceTypes.h:
Store ninepatch values as unsigned.

BUG:19151999
Change-Id: Ibe35e7569f632c6bb8a34a7701e26bb6ed547ec2
2015-01-27 16:41:16 +00:00
Chris Craik
112e35b464 Merge "Update generationId on bitmaps when decoded into by BitmapRegionDecoder" into lmp-mr1-dev 2015-01-15 23:04:15 +00:00
Chris Craik
3b47713b26 Update generationId on bitmaps when decoded into by BitmapRegionDecoder
bug:18921087

This fixes issues where bitmaps are cached as textures, and not
reuploaded when reused by BitmapRegionDecoder, showing stale content.

Change-Id: I7626fd6acd36d8e38723689734855ce9154eb8c8
2015-01-14 16:55:34 -08:00
Vladimir Marko
152d7282a4 Check for OOM in BitmapFactory's getMimeTypeString().
Bug: 18909596

(cherry picked from commit 7ab249a18e08bfefb8c2d60af1fb668c67ba4368)

Change-Id: Ie7be228442876d47faf37e3f664e378253dab6e3
2015-01-07 11:50:04 +00:00
Derek Sollenberger
f29d5a5b21 Update AndroidPixelRef to prevent VM from cleaning up memory prematurely.
bug:18306529
Change-Id: I1ea94df1dcaf4fcf248b63dc8b0a13f36412570a
2014-12-03 13:43:30 -05:00
Bo Liu
de92f4c72b Fix crash in getNativeCanvas when canvasHandle is NULL
BUG: 18261928
Change-Id: I01a5af201fe829d5752433e1bb0db7edc01733d4
2014-11-24 11:25:45 -08:00
Dan Stoza
d17793ea2a Merge "Add a BufferItem parameter to onFrameAvailable" into lmp-mr1-dev 2014-11-07 19:44:34 +00:00
John Reck
a35778c799 Yank ResourceCache out of Caches
Bug: 17947547

Pull the ResourceCache (aka, ref-counting side channel) out of
Caches so that DisplayListRenderer doesn't use Caches, avoiding
the risk of instantiating Caches on the wrong thread or
without a GL context

Change-Id: I7d63b70b3b0a0163308c5dedd6ef255eadebe8fd
2014-11-06 09:45:10 -08:00
Dan Stoza
2c34b5e813 Add a BufferItem parameter to onFrameAvailable
Passes the BufferItem for the queued buffer to the onFrameAvailable
callback so the consumer can track the BufferQueue's contents.

Bug: 18111837
Change-Id: If9d07229c9b586c668e5f99074e9b63b0468feb0
2014-11-04 11:36:33 -08:00
Svet Ganov
fce84f035c Crash apps that print malformed or password protected PDFs.
If apps are writing malformed content (typically not a PDF file) or if the
PDF content they provide to the print system is password protected, are now
crashed as both of these are app bugs.

bug:17636435

Change-Id: Ifce6a3199e587448dd38f6a84290a965c24b698b
2014-11-01 00:06:08 +00:00
Svetoslav
bec22beb99 Save to a PDF file should look like print preview.
When rendering a PDF file for print preview we take into account
the selected print options such as paper size, orientation, etc
without modifying the document. To print we send the doc in its
original form and the print options so the print service can apply
the necessary transforms in addition to the optional custom options
it supports. When saving to PDF we have to actually change the
document as we act as a print service.

bug:13545980

Change-Id: Icdcecf962bec6ff742cc6015df5af9d9086ce760
2014-10-31 10:41:34 -07:00
Leon Scroggins III
36960fad66 Merge "Decoder only returns true on complete success." into lmp-mr1-dev 2014-10-22 21:53:07 +00:00
Leon Scroggins III
754bffe969 am e463bc38: am 3c8bde55: Merge "Report that a JavaInputStreamAdaptor is at end." into lmp-dev
* commit 'e463bc388e7f5d83f864b320dde400e390ef5817':
  Report that a JavaInputStreamAdaptor is at end.
2014-10-22 02:00:46 +00:00
Leon Scroggins III
91332e7eca Report that a JavaInputStreamAdaptor is at end.
This prevents a naive caller from continuing to attempt to read.

BUG:17419670
BUG:17873145
Change-Id: Idd462ff9055aea42e8c7d5d58ef177f9e667385b
2014-10-20 22:49:35 +00:00
Leon Scroggins III
14494262d3 Decoder only returns true on complete success.
Recently we added a way for SkImageDecoder::decode to distinguish
between successfully decoding the entire image and only partially
decoding the image (see https://codereview.chromium.org/647023006).

Only consider a call to decode() a success if the image was completely
decoded. This matches pre-L behavior, and lets the caller know that
they need to try to decode again.

Requires a change to external/skia (I33e6940e247b74b20361ae041f8d36eb600df49f)

BUG:17419670
Change-Id: I17ed7288b2359fafaec9551adb16d1d037800eb7
2014-10-17 21:15:51 +00:00
Chris Craik
86fd9278a9 Merge "Enable fast jni for simple RenderNode/Matrix/Paint operations" into lmp-mr1-dev 2014-10-08 19:58:13 +00:00
Chris Craik
4136a0aeac Enable fast jni for simple RenderNode/Matrix/Paint operations
bug:17895119

Change-Id: Id83bfd719ec873028f0d4e7e4e4c0702f3bb3dd9
2014-10-07 15:09:46 -07:00
Derek Sollenberger
5cb769d999 Fix memory leak where we close the descriptor instead of the file.
bug: 17541634
Change-Id: I9968f9df249e4cba24383239ce6130dd16fcd532
2014-09-29 14:12:07 -04:00
Jérôme Poichet
d29c902f98 Revert "Fix memory leak where we close the descriptor instead of the file."
This reverts commit 1503ebd95fc82b1ae6ec8b006e62a9f6109973fa.

Change-Id: Id40cf34821ea244b1a838079bd147bc845b96cb3
2014-09-26 18:59:11 +00:00
Derek Sollenberger
1b99187253 Fix memory leak where we close the descriptor instead of the file.
bug: 17541634
Change-Id: I842176213e0547dd737ef6e0b83c320a5cc32219
2014-09-24 09:32:37 -04:00
George Mount
784ab49b6e Merge "Allow Path approximation to work with a single point Path." into lmp-dev 2014-09-11 21:51:58 +00:00
George Mount
68cfdad20d Allow Path approximation to work with a single point Path.
Bug 17452965

A single point Path (move-to only) was not returning any
verbs in the verb list. This forces an approximation for
single move-to and empty paths by giving the same value
for fraction 0 and fraction 1.

Change-Id: Icb1b932d730457680cf422377a83fe669f0a7687
2014-09-11 10:25:31 -07:00
Svetoslav
62ce332c14 Trim unnecessary pages when printing.
A user may request a subset of the document's pages to be printed.
In this case the expectation is that the resulting document does
not include not selected pages. While print serivices can do the
trimming themselves or the printer may do so, moving, potantually
many, redundant pages is inefficient. The real problem is when
saving to a PDF file where the saved file must not have the pages
the user did not select. This change adds shredding of undesired
pages from the PDF before saving it or passing it to a print service.
:
bug:17285994

Change-Id: I7deba535af99457bea3c118202314f0f3812e809
2014-09-09 09:38:07 -07:00
Mathieu Chartier
a08d10fa70 Add missing null check to ninePatchInsets
ninePatchInsets could be null after allocation, this possibly caused
a SIGABRT in GC or check_jni failure.

Bug: 17323232

Change-Id: Icd7e3819032e8e999d3c1483bf261bb39b3fe9e4
2014-08-29 16:57:30 -07:00
Raph Levien
772d576b97 Merge "New weight-aware font config" into lmp-dev 2014-08-27 16:24:37 +00:00
Raph Levien
2a5fab9d47 Merge "Fix incorrect return value on missing glyph" into lmp-dev 2014-08-27 16:24:14 +00:00
Raph Levien
531dab6d3a Fix incorrect return value on missing glyph
The GetGlyph function returns a boolean indicating whether the glyph
exists in the font. However, we were testing the pointer, so the test
would always succeed even if the glyph was missing. This interfered with
fallback algorithms for rendering compatibility characters.

Bug: 15816880
Bug: 16856221
Change-Id: I95cd45bb8f5e8ddf74cf23e6e624fbf30172e00a
2014-08-26 22:19:29 -07:00
Raph Levien
117cbebe81 New weight-aware font config
Parse new fonts.xml config file, and resolve weight selection based on
the base weight of the font (as defined by a weight alias specified in
the config file) and the requested bold flag. This change improves the
appearance of bold spans for alternate weights of Roboto.

In addition, this patch enables weight selection for fallback fonts.
For example, if an additional font with a weight of 100 is added to the
Hebrew font family in the fallback list, then requesting
"sans-serif-thin" would select that font for Hebrew text.

Bug: 14538154
Change-Id: I99a04fad4f7bf01c75726e760d42735dd9003496
2014-08-26 19:37:45 -07:00
John Reck
1698297daf Merge "DO NOT MERGE Copy shaders" into lmp-dev 2014-08-26 14:53:34 +00:00
John Reck
c1469f39b5 DO NOT MERGE Copy shaders
Bug: 16733996

Change-Id: I84afc1b24a23dd6ddf5ab48fb2bfcbe779f8d3e3
2014-08-25 15:27:11 -07:00
Raph Levien
908040534d Preserve paint parameters in Paint copy constructor
The copy constructor for Paint was setting default values for additional
parameters, rather than copying them from the original object, resulting
in incorrect locale in the software text drawing path.

Fix for bug 17149910 "Chinese font is used on IME even if the system
language is Japanese"

Change-Id: I25f377ce4e0ea66946a27ea46a2db524872ae36f
2014-08-25 09:36:29 -07:00
John Reck
01edef10b9 Revert immutable Shader change
Bug: 16733996

Change-Id: I51686aaf8f6ae8d0e390e298ad70f98f81c5f555
2014-08-22 11:15:37 -07:00
Chris Craik
bd8db2e87e Add bounds checking to nine patch scaling
bug:17114103

Better handle the case, when scaling the divs in a nine patch, where
divs fall outside of the bounds of the bitmap.

Change-Id: I244b9c45b938c2a15f29e4563a86825ee9439b5f
2014-08-20 16:37:16 -07:00
Derek Sollenberger
6f03023ece Remove dependency on SkPaintOptionsAndroid
Change-Id: I579a3503697efe3b8fd9bc809a6c9bfbf735cb1b
2014-08-07 14:38:51 -04:00
Behdad Esfahbod
e9ad3931fa Add fontFeatureSettings to TextView and attrs
New API is hidden.

Bug: 15246510
Change-Id: I8cdbbd3a36fc280e07569dbb130f8c237062fff5
2014-08-01 21:35:05 +00:00
Chris Craik
8e554924c5 Merge "Add outline alpha" into lmp-dev 2014-07-31 21:44:36 +00:00
Chris Craik
77b5cad3ef Add outline alpha
bug:16140822
bug:16566746

This allows background drawables to alter the opacity of a shadow
being cast with their own alpha values.

Change-Id: I49698cc7c1bf4b2b55ffe2f82899543ca62bc61c
2014-07-31 12:29:57 -07:00
Behdad Esfahbod
805f6ebf17 Support FontFeatureSettings in Paint
New API is hidden.

Bug: 15246510
Change-Id: Idefca06a366de0d87f53d123b5291788448de4d0
2014-07-30 21:38:23 +00:00
Raph Levien
ed1e6962ba Merge "Bump refcount of canvas created for Picture" into lmp-dev 2014-07-30 20:38:44 +00:00
Raph Levien
febccd05f2 Bump refcount of canvas created for Picture
Both the Canvas and Picture objects will unref the canvas in their
finalizers, so an extra ref is needed. This had been present but was
inadvertently removed in the patch "Refactor android.graphics.Picture
JNI bindings." This patch simply restores the previous ref and comment.

Bug: 16399257
Change-Id: I9911826bd0e668bd25546ef54b0c9c1d467538c8
2014-07-30 13:41:10 -07:00
Behdad Esfahbod
fa80f7491d Add letter-spacing to Paint and TextView
New API is hidden.

Bug: 15594400
Change-Id: I5cbe7aebef0b7280eb13924f2a706c0cb4a4688e
2014-07-24 18:46:07 -04:00
Derek Sollenberger
c41d941f1b Disable fallback chaining in Skia.
Change-Id: I6e57b525bc4953a5b8969bb4c3e71b4a53de33d3
2014-07-30 14:40:00 -04:00
Behdad Esfahbod
e21e2a2d1d Clean up Minikin includes
Include headers where they are used.  Add header guards to MinikinSkia.h

Change-Id: If341231625348290d28a7d625561fffc171a8407
2014-07-30 14:58:40 +00:00
Behdad Esfahbod
5ec789608b Use new minikin Layout::doLayout() that doesn't use a CSS string
The CSS version will be removed in minikin soon.

Bug: 16651112
Change-Id: Icebcbde6869e64399f160e1773e843cdd0199bc8
2014-07-29 14:32:57 -04:00
Behdad Esfahbod
c437f6eef2 Merge "Further centralize Minikin interaction" into lmp-dev 2014-07-24 15:37:54 +00:00
Behdad Esfahbod
63c5c78a72 Further centralize Minikin interaction
Part of the fix for bug 15246510 and others.

Change-Id: Ie99000989dfcd7a81aaa1233dec522344f852f31
2014-07-25 19:23:49 +00:00
Behdad Esfahbod
1fc68395d3 Remove unused TextLayout.h
Respective code was removed when switching to Minikin.

Change-Id: I353c834457145ccd9462a439dfdf16d4adb8b695
2014-07-25 14:06:35 -04:00
Derek Sollenberger
cae05e0b4c Move Canvas.h to a new location so that it can be shared with HWUI.
Bug: 15672762
Change-Id: Ia59e986cd4034e16b2e54e8d594e6941a6c9fb1b
2014-07-25 11:39:37 -04:00
Derek Sollenberger
acb4099def Refactor text drawing to move minikin interactions outside of the canvas interface.
bug:15672762
Change-Id: Iad63855424b4eeccef67a7341a9c2b0018c64c30
2014-07-24 09:46:58 -04:00
Leon Scroggins III
866cf65cc3 Make updateLocalMatrix replace the current Matrix.
Fixes a bug introduced in I3c3316377874e89fccc85afb864bc038b0ef3890.

CreateLocalMatrixShader combines the existing matrix with the new
matrix, which is not what we want. Keep track of the original
SkShader at all times, and always create the local matrix shader
with the original. Store the SkShader with a local matrix as
Shader.native_with_local_matrix.

Make Shader.native_instance private. Instead of allowing direct
access, add an init() method which sets it, and getNativeInstance(),
which returns either native_instance or native_with_local_matrix,
as appropriate.

Make Shader subclasses call init(), instead of setting native_instance
directly.

Pass native_with_local_matrix pointer to nativeSetLocalMatrix and
nativeDestructor, which unrefs it (if not null).

Since nativeSetLocalMatrix no longer replaces the original, do not
unref it.

Add a comment to Shader.updateLocalMatrix that it does not affect
ComposeShaders created with this Shader. (This should have been a
part of I3c3316377874e89fccc85afb864bc038b0ef3890.)

BUG:16293121
Change-Id: Ieb31c7e1fe99081f6b81493178f4a18d3c5df643
2014-07-24 09:30:23 -04:00