The two existing external users of SkPaintFilterCanvas always end up
making a copy of the paint when the canvas is in use. As a result, the
extra overhead of doing COW is being wasted. In general, it seems easier
for users to optimize by simply not using the filter canvas when it
won't be making any changes. Also, no users are using the 'Type'.
After users are updated to this new API, the old onFilter can be
removed.
Change-Id: Iee1ce3cd22bce8c00664de078375b105abd7c866
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/149806
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Small cleanup in the mask case to remove cast.
Change-Id: I0867fa80372cc917eae7c1ca84beafd699d8a349
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207705
Auto-Submit: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
The issue was that a vector != comparison was getting translated into
!all(v1 != v2) rather than any(v1 != v2).
Bug: skia:8960
Change-Id: I9c0dcde7aa721ee093e91d93b84244e689735dd1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207706
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
- be more explicit about casting
- general rewrite for clarity
Cq-Include-Trybots: skia.primary:Test-Win2016-MSVC-GCE-CPU-AVX2-x86_64-Debug-All-MSRTC
Change-Id: I924d6d247e6b9afcefb27c690715fdad84635a5d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207721
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
cannot find anyone defining it
Change-Id: Ia93555b4d8fa1c07dd932dc39fe8854518f1455e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207720
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Bug: skia:8975
Change-Id: Id45738b178b108593cf931ac236505901e97330a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207680
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: Iab74531614654f241e12d1cd1af14725888580c8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207143
Reviewed-by: Mike Reed <reed@google.com>
Auto-Submit: Lee Salzman <lsalzman@mozilla.com>
Commit-Queue: Mike Klein <mtklein@google.com>
These replicate the base logic of Sk4px::Wide::div255() and
Sk4px::approxMulDiv255(), and will come in handy replacing them.
No platform specializations yet... want to remind myself what
codegen they get from these vanilla versions first, and then
I'll fill in the platform specific stuff as needed. The tests
should cover everything pretty exhaustively.
Change-Id: I5854d1bc0902a85cbb2351f669c4da7cc31a8775
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207683
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Change the name, and add the atlas limit parameter.
Change-Id: Ic718d06d483667d7a341b74c280bc3fd016289ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207314
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
We think there are some seemingly minor codegen improvements (pmovzxbw
instead of punpcklbw) when compiling for SSE 4.1 that might actually be
a bigger deal speed-wise than they'd seem.
Also rewrite using SkVx in a way that should scale well up to AVX2.
Change-Id: Ie7c0194dc4fe9fe81c1c932187c0bb00da69190b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207260
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Lee Salzman <lsalzman@mozilla.com>
An FcConfig has the concept of a sysroot against which file names should
be resolved. Add support for this so that it is possible to use
relocatable FcConfigs. Also adds a test that this works.
Change-Id: I523d5fb1233830434a88dc52b27728aaf83bb5a5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206278
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Bug: skia:8243
Change-Id: Ic95aefa7f08ff3f931923dd57faab0e2ceeb03e4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207309
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
f39b4f0280..e6b23e45b3
git log f39b4f0280ef..e6b23e45b380 --date=short --no-merges --format='%ad %ae %s'
2019-04-10 ynovikov@chromium.org Skip Texture2DTestES3.TextureImplPropogatesDirtyBits on Win AMD GL
2019-04-10 jonahr@google.com Use ANGLE's gpu_info_util libraries for test expectations
2019-04-10 ynovikov@chromium.org Skip EGLSurfaceTest.SwapInterval on Nexus 5X and 6P GLES
2019-04-10 jmadill@chromium.org Minor update to auto-roller infra docs.
2019-04-10 syoussefi@chromium.org Vulkan: update GLES3 and EGL expectations
2019-04-10 spang@chromium.org Vulkan: Expose GL_EXT_memory_object_fd & GL_EXT_semaphore_fd
2019-04-10 angle-autoroll@skia-public.iam.gserviceaccount.com Roll ./third_party/spirv-tools/src d90aae9a5a6c..82ebbbba15c2 (2 commits)
Created with:
gclient setdep -r third_party/externals/angle2@e6b23e45b380
The AutoRoll server is located here: https://autoroll.skia.org/r/angle-skia-autoroll
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.
CQ_INCLUDE_TRYBOTS=skia.primary:Build-Debian9-Clang-x86_64-Release-ANGLE;skia.primary:Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE
TBR=egdaniel@google.com
Change-Id: I91e964ae97905ae68e9addfe48f86b8eba1754e3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207293
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
1b121674f5..f8764798ff
Created with:
gclient setdep -r ../src@f8764798ff
The AutoRoll server is located here: https://autoroll.skia.org/r/chromium-skia-autoroll
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.
CQ_INCLUDE_TRYBOTS=skia.primary:Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-CommandBuffer;skia.primary:Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-CommandBuffer
TBR=egdaniel@google.com
Change-Id: Id8388e29dbfacd2baac61af8b0d737df30c2d52f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207292
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
recipe_engine:
https://crrev.com/a8a96dca3e5e81e2bfff4b93a2384c8b40a58068 Add commit_position module (nodir@google.com)
TBR=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I3022a22da68d3062fa78f11013227a031602f279
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207365
Reviewed-by: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
recipe_engine:
https://crrev.com/10a2ec175037ae0a360b7e317ecc9b8ac76e9d95 [buildbucket] Print builder ids (nodir@google.com)
TBR=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ib844817cb32747184a5b97ed2838566c32756535
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207364
Reviewed-by: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
recipe_engine:
https://crrev.com/cc7c58088b474b95483beaf4b41a3028121e4f7b [scheduler] Read current triggers (nodir@google.com)
TBR=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I643ad06f0668ce8c78c7efe776bc44bd4e41a414
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207363
Reviewed-by: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
recipe_engine:
https://crrev.com/166a0650c2d951e45118581b5fa442940a675a13 Add recipe_proto OWNERS (nodir@google.com)
TBR=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ic011ac4b0bee4296a9604b4b1df16e334d108df4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207362
Reviewed-by: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
This is to match the current features of SkSurface::flush and to prepare
for adding additional features to flush.
Bug: skia:8802
Change-Id: I5d68272e1277b416af357e6ffaf426841ceda943
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207301
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
On Windows, exported types always have their constructors,
destructors, assignment operators, etc... generated, including
exception handling. This can require stricter rules about usage of
forward declared types. Ensure that we build correctly in that
environment (with both MSVC and Clang).
Change-Id: I119c368fcf3f0e55acce7b8f9183eca3ae1851fa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207223
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
These changes let us build a non-official component build on Windows,
using either MSVC or clang
Change-Id: Ia3279aa19e007e70ff28925ff70a0bfe8144d96f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207307
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This reverts commit 1208002548.
Reason for revert: This wasn't the cause of chrome roll failure as the failing bot is randomly failing on non-skia rolls as well.
Original change's description:
> Revert "Remove unnecessary flush in RenderYUVAToRGBA (take 2)"
>
> This reverts commit 223845f792.
>
> Reason for revert: speculative revert for chrome roll
>
> Original change's description:
> > Remove unnecessary flush in RenderYUVAToRGBA (take 2)
> >
> > There is no real reason to flush here. If clients need to access the results immediately they should be flushing at the API level.
> >
> > A reland of: https://skia-review.googlesource.com/c/skia/+/196645
> >
> > It needs to land after the Chrome CL:
> >
> > https://chromium-review.googlesource.com/c/chromium/src/+/1560554 (Flush pending work after calls to YUVGrBackendTexturesToSkImage)
> >
> > Change-Id: I230d7433b5c1b72d8f50fd475033c942826eda94
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206688
> > Reviewed-by: Greg Daniel <egdaniel@google.com>
> > Commit-Queue: Robert Phillips <robertphillips@google.com>
>
> TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com
>
> Change-Id: Ib712184e8c4f03cb4da21ca5c445b37cd3d7cd90
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207306
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com
Change-Id: I543baa628f45a5599fbbc7bcafc0d12db6fa2adf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207312
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Introduce sksg::LevelsColorFilter and hook into Skottie's effects builder.
Limitations:
- BM/Lottie does not export animated paramaters (static values only)
- BM/Lottie only exports the first modified channel
Change-Id: I9ef389478c2eaa0d13794abe6a8089a8b3c0c62e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206269
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Bug: skia:8243
Change-Id: Id71073dffe6e2b42d099f0c92059b53c48b46c4f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206717
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
This change reducess the size of the layer bounding box for layers
created when drawing a path or image with a mask filter.
All test PDFs render the same.
Motivation: renderers may be able to allocate smaller raster layers and
save time and memory.
Change-Id: Ibe53b85bada5d6af6ecc98aff972b5610c09d4dc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207361
Commit-Queue: Hal Canary <halcanary@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Hal Canary <halcanary@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
This reverts commit 223845f792.
Reason for revert: speculative revert for chrome roll
Original change's description:
> Remove unnecessary flush in RenderYUVAToRGBA (take 2)
>
> There is no real reason to flush here. If clients need to access the results immediately they should be flushing at the API level.
>
> A reland of: https://skia-review.googlesource.com/c/skia/+/196645
>
> It needs to land after the Chrome CL:
>
> https://chromium-review.googlesource.com/c/chromium/src/+/1560554 (Flush pending work after calls to YUVGrBackendTexturesToSkImage)
>
> Change-Id: I230d7433b5c1b72d8f50fd475033c942826eda94
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206688
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>
TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com
Change-Id: Ib712184e8c4f03cb4da21ca5c445b37cd3d7cd90
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207306
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
For some reason, Clang can infer <N,T> but GCC can't.
No big deal... we know exactly the ones we want anyway.
Change-Id: I15ba4d4edbd3bc0f37ebe3c2b6e411726cd9fb69
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207341
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Was starting to use this and ran into a few problems with clashing
symbols, namely SI and cast(). Seemed simple enough to not use SI,
and to move all the free-standing types into skvx: skvx::cast,
skvx::shuffle, etc.
Change-Id: Ia5d8ef6d0ae5375bf80d76be88d16f0c9cde56e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207340
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
In the mask case, the original position is needed for the fallback case.
Add an index from the original sequence to lookup the source position
when needed.
Change-Id: I16ca08cab6be685af45e4ccabf3d1f76efd7e61e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206709
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
recipe_engine:
https://crrev.com/6c8922f408b3a4f103be5659fa941b2bbe1befb2 Implement copy operations for sentinel. (gbeaty@chromium.org)
TBR=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ia5ec3c79bdeb60a0b6f393efded89848633fee91
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207360
Reviewed-by: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Similar to the Skottie refactor that just landed, this avoids having an
empty component when shaper is disabled (which turns into a DLL with no
sources, and a missing DllMain). I think this pattern of having modules
expose the same components as empty groups is simpler (and also fixes
the fact that only two of N references in top-level BUILD.gn were
guarded). Also, no one is using the define?
Change-Id: I9d25c1cfbd42336874f4428bf61f3e34a4a18d3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207303
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Skottie doesn't currently build with is_component_build=true. Trying to
build a DLL with skia_enable_skottie=false failed, because we ended up
with a component("skottie") that had no sources. That led to fallback
linker behavior, but no DllMain.
To solve this, and simplify things, move the skia_enable_skottie checks
to the outer scope, and simply replace all the referenced components
with empty groups when it's not enabled. Also fix some fm code that was
assuming it was always enabled.
Change-Id: I4a47d80d882e6c557ee14b34255e22e09292cc8c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207302
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
This is a reland of 7b56b0ae39
Original change's description:
> Do not use sub-pixel positioning for source space
>
> Since the source space drawing modes call getGlyphMetrics with
> the point {0, 0}, just turn of sub-pixel positioning. This uses
> a more efficient code path in the strike
>
> Change-Id: I360f56e1eede776dfa82db6b780b88c1fda50d36
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206701
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Ben Wagner <bungeman@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
> Auto-Submit: Herb Derby <herb@google.com>
Change-Id: I4f5305990765e280930f93b25c049f6df198dc10
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206912
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Another fix for Windows DLL builds. This is basically the issue from
crbug.com/770771 - we have a vector<unique_ptr>, and unique_ptr does
not allow copying or assignment. For an exported (SK_API) class, those
members will be auto-generated unless they're explicitly deleted.
Change-Id: I5764ecf0528f28cc3c201127b51574ad41841325
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207220
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Found by TSAN reporting on a recorded Sk1DPathEffect being drawn from
multiple threads.
Change-Id: I6d4bf9c336d9fd091263babd558891e64203e281
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/207180
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>