aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules
Commit message (Collapse)AuthorAge
* [skjson] Detect end-of-input for unbalanced stringsGravatar Florin Malita2018-06-15
| | | | | | | | | | | | | | | | | | | | | | We currently blow through string chars without checking for end-of-input. Maybe we could avoid this upfront, when we locate the stop char: try to determine if it's part of an unterminated string, fail immediately if so. Figuring out if the tail is an unterminated string seems intractable though (requires arbitrarily deep tail parsing). That brings us to plan B: * treat scope-closing tokens (} & ]) as string terminators (we know end-of-input points to one of these for sure) * adjust matchString() to check for end-of-input Bug: oss-fuzz:8899 Change-Id: Ic0a88a405548e8724b76faca525099a7e7037341 Reviewed-on: https://skia-review.googlesource.com/135145 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Kevin Lubick <kjlubick@google.com>
* [skjson] Catch end-of-stream for unbalanced scopesGravatar Florin Malita2018-06-15
| | | | | | | | | | | | | The input is not guaranteed to contain well-formed scopes, so it's not sufficient to check for end-of-stream only when popping the top-level scope -- we have to check on every scope pop. Bug: oss-fuzz:8898 Change-Id: I7399a8872187ec6714672cac2ff8fc7fbf3c2dfe Reviewed-on: https://skia-review.googlesource.com/135059 Reviewed-by: Kevin Lubick <kjlubick@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [skjson] Some short string optimizationsGravatar Florin Malita2018-06-15
| | | | | | | | | | | 1) skip redundant \0 terminator => Value is always zero-initialized 2) skip storing a len record => strlen is cheap for short strings Change-Id: I3c10c9b9cf6155b95124e2c0194c59e9531a7ca4 Reviewed-on: https://skia-review.googlesource.com/135049 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [skottie] Switch to SkJSONGravatar Florin Malita2018-06-14
| | | | | | | | | | Convert to SkJSON APIs and remove RapidJSON dependency. TBR= Change-Id: I5b4fd78821a443326e3a5b370748d840b80ef279 Reviewed-on: https://skia-review.googlesource.com/134612 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Reland [skjson] Size-constrained input APIGravatar Florin Malita2018-06-14
| | | | | | | | | | | | | Pass an explicit input size instead of requiring a C string. Thanks to mtklein's clever trick, this has no measurable perf impact. TBR= Change-Id: Ic8cb1dc75f4d0814e5b2c80038d1b8d3a7b072ab Reviewed-on: https://skia-review.googlesource.com/134946 Reviewed-by: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Revert "[skjson] Size-constrained input API"Gravatar Florin Malita2018-06-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit fc792b8718cc30e9da62c9559b23c1baac3166bb. Reason for revert: New ASAN, Android failures. Original change's description: > [skjson] Size-constrained input API > > Pass an explicit input size instead of requiring a C string. > > Thanks to mtklein's clever trick, this has no measurable perf impact. > > Change-Id: I64f210a9f653a78b05ab6b58fa34479504aa35ff > Reviewed-on: https://skia-review.googlesource.com/134940 > Reviewed-by: Mike Klein <mtklein@google.com> > Commit-Queue: Florin Malita <fmalita@chromium.org> TBR=mtklein@google.com,fmalita@chromium.org Change-Id: Ic0b52398b1ce6f64c781debb858829cb64bbae58 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/135022 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [skjson] Fix ASAN undefined behaviorGravatar Florin Malita2018-06-14
| | | | | | | | | | | | | | | | | | | ASAN opines that a nullptr memcpy dest is undefined behavior, even when n == 0. ASAN may be right. This doesn't occur internally, in the parser, but can be triggered with the DOM builder API (as do some tests currently). We could say "don't do that", but if someone wants to build an empty string/array/object, it's kind of awkward to force them to provide a valid source pointer instead of simply e.g. Array(nullptr, 0). So let's guard for this case to make ASAN happy. Change-Id: If12e39f5eb8b273f22bbb0b5fce3321bf6482173 Reviewed-on: https://skia-review.googlesource.com/134944 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [skjson] Size-constrained input APIGravatar Florin Malita2018-06-14
| | | | | | | | | | | Pass an explicit input size instead of requiring a C string. Thanks to mtklein's clever trick, this has no measurable perf impact. Change-Id: I64f210a9f653a78b05ab6b58fa34479504aa35ff Reviewed-on: https://skia-review.googlesource.com/134940 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Reland [skjson] Implementation/API tweaksGravatar Florin Malita2018-06-14
| | | | | | | | | | | | | | | | * move most common accessor methods to the header, for inlining * drop the lazy type checking semantics in favor of explicit guarded/unguarded conversions * revisit the public class hierarchy to better constrain type-bound APIs * expose public type factories and add tests * drop the empty-vector optimization -- allocating an external size_t in these uncommon cases is better than paying for a conditional on every access. TBR= Change-Id: Ic609bb74f12cad1756865a2489ad56c03ecc5494 Reviewed-on: https://skia-review.googlesource.com/134845 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Revert "[skjson] Implementation/API tweaks"Gravatar Florin Malita2018-06-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 03b68421cafa58428edd8ab12e0d2235c7000c3f. Reason for revert: Broke Debian9 builds Original change's description: > [skjson] Implementation/API tweaks > > * move most common accessor methods to the header, for inlining > * drop the lazy type checking semantics in favor of explicit guarded/unguarded > conversions > * revisit the public class hierarchy to better constrain type-bound APIs > * expose public type factories and add tests > * drop the empty-vector optimization -- allocating an external size_t in these > uncommon cases is better than paying for a conditional on every access. > > Change-Id: I24a7c75db3aa8b12c740c77ac7df4af4e3a1dff8 > Reviewed-on: https://skia-review.googlesource.com/134610 > Commit-Queue: Florin Malita <fmalita@chromium.org> > Reviewed-by: Mike Klein <mtklein@google.com> TBR=mtklein@google.com,fmalita@chromium.org Change-Id: I2c681ef5c8d5fc15508e58b4b0f6ab9491b7d76f No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/134880 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [skjson] Implementation/API tweaksGravatar Florin Malita2018-06-14
| | | | | | | | | | | | | | | * move most common accessor methods to the header, for inlining * drop the lazy type checking semantics in favor of explicit guarded/unguarded conversions * revisit the public class hierarchy to better constrain type-bound APIs * expose public type factories and add tests * drop the empty-vector optimization -- allocating an external size_t in these uncommon cases is better than paying for a conditional on every access. Change-Id: I24a7c75db3aa8b12c740c77ac7df4af4e3a1dff8 Reviewed-on: https://skia-review.googlesource.com/134610 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Klein <mtklein@google.com>
* Revert "Revert "SkTypes: extract SkTo""Gravatar Hal Canary2018-06-14
| | | | | | | | | | | | | | | | This reverts commit fdcfb8b7c23fbf18f872d2c31d27978235033876. > Original change's description: > > SkTypes: extract SkTo > > > > Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09 > > Reviewed-on: https://skia-review.googlesource.com/133620 > > Reviewed-by: Mike Klein <mtklein@google.com> Change-Id: Ida74fbc5c21248a724a5edbf9fae18a33bcb23aa Reviewed-on: https://skia-review.googlesource.com/134506 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* Revert "SkTypes: extract SkTo"Gravatar Hal Canary2018-06-13
| | | | | | | | | | | | | | | | | | | | | | | This reverts commit 2a2f67592602b18527bc3fd449132d420cd5b62e. Reason for revert: this appears to be what is holding up the Chrome roll. Original change's description: > SkTypes: extract SkTo > > Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09 > Reviewed-on: https://skia-review.googlesource.com/133620 > Reviewed-by: Mike Klein <mtklein@google.com> TBR=mtklein@google.com,halcanary@google.com No-Presubmit: true No-Tree-Checks: true No-Try: true Change-Id: Iafd738aedfb679a23c061a51afe4b98a8d4cdfae Reviewed-on: https://skia-review.googlesource.com/134504 Reviewed-by: Hal Canary <halcanary@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* SkTypes: extract SkToGravatar Hal Canary2018-06-12
| | | | | | Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09 Reviewed-on: https://skia-review.googlesource.com/133620 Reviewed-by: Mike Klein <mtklein@google.com>
* Disable module deps in Android Framework buildsGravatar Florin Malita2018-06-11
| | | | | | | | | | | | | Module-related functionality is not required in dm/bench at this point. Let's disable module deps flattening for now. As an immediate benefit we can reduce the deps visibility for some internal skjson targets. Bug: skia:8061 Change-Id: I0e09208964ca94b519121207ba1b6225059ef573 Reviewed-on: https://skia-review.googlesource.com/133822 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [skottie] Fix color parsingGravatar Florin Malita2018-06-10
| | | | | | | | | | Currently truncating unnecessarily. TBR= Change-Id: I1929a4de62364e4685eb67f9a79b01a8dbac1c61 Reviewed-on: https://skia-review.googlesource.com/133823 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* SkJsonGravatar Florin Malita2018-06-08
| | | | | | | | | | | | | | | | For now this is only wired to a bench and a couple of tests. Local numbers, for a ~500KB BM "compressed" json: micros bench 2456.54 json_rapidjson nonrendering 1192.38 json_skjson nonrendering Change-Id: I7b3514f84c7c525d1787722c43ad6095e3692563 Reviewed-on: https://skia-review.googlesource.com/127622 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [skottie] Add a tool for dumping encoded animation framesGravatar Florin Malita2018-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | Exports animation frames as a sequence of .png files: 0000000.png 0000001.png ... Usage: skottie_tool -i <input_json> -w <out_dir> Other options: --width Frame width (default: 800) --height Frame height (default: 600) --fps Frames per second (default: 30) --t0 Normalized timeline start (default: 0) --t1 Normalized timeline end (default: 1) Change-Id: I4a79be0f823da15e6863909b6d67d38aa74bb740 Reviewed-on: https://skia-review.googlesource.com/132265 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Revert "Rename sg tests and samples targets to fix Visual Studio name conflict"Gravatar Brian Osman2018-06-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit ba2f82986f63812d7b5ca529771d1c3962343c55. Reason for revert: This is going to be hard to maintain long-term. I've fixed the python script to handle this case: https://skia-review.googlesource.com/c/skia/+/131580 Original change's description: > Rename sg tests and samples targets to fix Visual Studio name conflict > > GN was emitting projects for the SG versions of tests and samples, which > conflicted with the top-level versions of those. This made the normal GN > VS IDE files confusing, and the merged ones totally broken. > > Change-Id: Ifd048258d4358ed2852d5263b16278c5b8ebd9c4 > Reviewed-on: https://skia-review.googlesource.com/131391 > Commit-Queue: Brian Osman <brianosman@google.com> > Commit-Queue: Jim Van Verth <jvanverth@google.com> > Commit-Queue: Florin Malita <fmalita@chromium.org> > Auto-Submit: Brian Osman <brianosman@google.com> > Reviewed-by: Jim Van Verth <jvanverth@google.com> > Reviewed-by: Florin Malita <fmalita@chromium.org> TBR=jvanverth@google.com,brianosman@google.com,fmalita@chromium.org,fmalita@google.com Change-Id: I25553fdcfd063c920635fe1bd71553b578d0b0c8 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/131600 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Avoid compilation error on older compilersGravatar Kevin Lubick2018-06-01
| | | | | | | | | | | | | | | | | The constness on null_provider causes: "default initialization of an object of const type 'const NullResourceProvider' without a user-provided default constructor" See https://stackoverflow.com/a/47368753 for more. TL;DR; clang 3.8 and older is not happy Bug: skia: Change-Id: Icfc38680163c3bd4952c0e35551706cad8dbfee6 Reviewed-on: https://skia-review.googlesource.com/131521 Commit-Queue: Kevin Lubick <kjlubick@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Florin Malita <fmalita@chromium.org>
* Rename sg tests and samples targets to fix Visual Studio name conflictGravatar Brian Osman2018-06-01
| | | | | | | | | | | | | | | GN was emitting projects for the SG versions of tests and samples, which conflicted with the top-level versions of those. This made the normal GN VS IDE files confusing, and the merged ones totally broken. Change-Id: Ifd048258d4358ed2852d5263b16278c5b8ebd9c4 Reviewed-on: https://skia-review.googlesource.com/131391 Commit-Queue: Brian Osman <brianosman@google.com> Commit-Queue: Jim Van Verth <jvanverth@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org> Auto-Submit: Brian Osman <brianosman@google.com> Reviewed-by: Jim Van Verth <jvanverth@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org>
* [skottie] Remove inPoint/outPoint/frameRate from public APIGravatar Florin Malita2018-06-01
| | | | | | | | TBR= Change-Id: Ice4de3abe350c4570c22e859a36dbd445527fa41 Reviewed-on: https://skia-review.googlesource.com/131300 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [skottie] Make the resource provider factory argument optionalGravatar Florin Malita2018-05-31
| | | | | | | | | Most of the existing clients don't care about nested resources. Change-Id: Ie7991dd25ebbd679b5b49e5624772c7e19e7ec79 Reviewed-on: https://skia-review.googlesource.com/131141 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Add 'public' headers support to find_headers.pyGravatar Florin Malita2018-05-30
| | | | | | | | | | Update the script to search for headers in both 'sources' and 'public'. Change-Id: I195c6e3720f3d3d99dea04628388821a58fa791b Reviewed-on: https://skia-review.googlesource.com/130823 Reviewed-by: Mike Klein <mtklein@google.com> Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Add Skottie support to FiddleGravatar Florin Malita2018-05-30
| | | | | | | Change-Id: I2d89c1340215b43476337c354057328c1bb2b8ff Reviewed-on: https://skia-review.googlesource.com/130720 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Klein <mtklein@google.com>
* Make SkShaper a moduleGravatar Herb Derby2018-05-30
| | | | | | | Change-Id: I3709e49ba865f14260660cc07a762b9ac837cb3c Reviewed-on: https://skia-review.googlesource.com/130602 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Herb Derby <herb@google.com>
* [skottie] Animation::animationTick() -> Animation::seek()Gravatar Florin Malita2018-05-29
| | | | | | | | | | Replace poorly defined animationTick() with a normalized seek() method. TBR= Change-Id: Id2ea17bb426fe86fede0d6c8a3d93236902f10af Reviewed-on: https://skia-review.googlesource.com/130508 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Clean up modules/skottie/BUILD.gnGravatar Florin Malita2018-05-29
| | | | | | | | | | Per comments in https://skia-review.googlesource.com/c/skia/+/130480 Change-Id: I978b04e4b06bf01c008b44540c640b77f5900f12 Reviewed-on: https://skia-review.googlesource.com/130501 Reviewed-by: Kevin Lubick <kjlubick@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Fix fuzz+Skottie integrationGravatar Kevin Lubick2018-05-29
| | | | | | | | Bug: skia: Change-Id: Ic926f6a838ac1e6d358d51913dc5c58d3083274a Reviewed-on: https://skia-review.googlesource.com/130480 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Kevin Lubick <kjlubick@google.com>
* [skottie] Relocate to modules/skottieGravatar Florin Malita2018-05-27
| | | | | | | | TBR= Change-Id: I218d251ca56578a3a7fd4fb86cba9abdc10fb3bd Reviewed-on: https://skia-review.googlesource.com/130322 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [sksg] Fix WASM buildGravatar Florin Malita2018-05-25
| | | | | | | | Bug: skia: Change-Id: I62c18765d13e2b64ec06fc913e91a3b492fb022f Reviewed-on: https://skia-review.googlesource.com/130132 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* "Modularize" SkSGGravatar Florin Malita2018-05-25
* relocate all SkSG-related files under modules/sksg/ * fix various tidbits to make non-sksg builds possible * drop obsolete SampleSGInval.cpp Change-Id: I54e6c5bb1a09f45030fa8d607b3eb3f7cba78957 Reviewed-on: https://skia-review.googlesource.com/130025 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Klein <mtklein@google.com>