Bug: oss-fuzz:14409
Change-Id: I837083139489d46f7db2f697ce85a0cabf85fb94
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219997
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Bug: skia:8243
Change-Id: Ie8b562f4e8ec6efeff1be7d7e0f3ff89ab3e99a7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219487
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Rescales a pixel rectangle from a SkSurface and then converts to YUV
planes. Currently only implemented on GPU.
Supports the same rescaling options as asyncRescaleAndReadPixels. The
RGB->YUV conversion is specified by a SkYUVColorSpace.
Y, U, and V are always separate planes. The U and V planes are
subsampled in X and Y by a factor of 2.
Currently fails if either the width or height of the rectangle is
not even.
Bug: skia:8962
Change-Id: I33237849a9ccf9b66cab13dc56785496f4ce556a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/217123
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
This CL leaves the Ganesh world in a very odd place. In particular it still:
has pendingIO refs on GrSurfaces
forwards the proxy refs on to the backing GrSurface
Removing everything at once only ends in a mess thus, this goofball CL.
Change-Id: If112ff311bcef2e8d65a36c3b53b0ded4041c24e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/210040
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
The analytic clip override was added to work around a fragCoord bug,
before we had the sk_FragCoord workaround. Now that we do, we can enable
that instead. This lets us remove the only use of fMaxClipAnalyticFPs.
Bug: skia:7286
Change-Id: If043bd939fd21088c145536b3133c7090e0984b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218538
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Bug: skia:8243
Change-Id: I80ed04f7bfbcf20549de30822245d8fe2832a810
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219996
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Add logic to adjust glyph positions based on animated tracking properties.
This adjustment is applied post-shaping (it doesn't observe the text box),
and requires line re-alignment - thus it is being processed per-line.
Change-Id: Id44a295032a48c7216f126cb02dd2d2d5cc18ae3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220076
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
This makes our usage of sk_cf_obj consistent with Chrome.
Bug: skia:8243
Change-Id: I159339577a0e8595e7cdd47ffb9ab0653269e108
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218973
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Bug: oss-fuzz:14355
Change-Id: Iff70351a983a0d3451b8609507e55ecc6aec0c2f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220001
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2d0a9acb05..1b5ad312c5
git log 2d0a9acb0551..1b5ad312c57a --date=short --no-merges --format='%ad %ae %s'
2019-06-11 thakis@chromium.org Omit "de_DE.ISO-8859-15@euro" from ShCompileTest.DecimalSepLocale on Windows.
2019-06-10 ynovikov@chromium.org Revert "Temporarily disable creating D3D debug device."
2019-06-10 angle-autoroll@skia-public.iam.gserviceaccount.com Roll ./third_party/glslang/src d3692c701b12..9866ad9195ce (4 commits)
Created with:
gclient setdep -r third_party/externals/angle2@1b5ad312c57a
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=herb@google.com
Change-Id: I77583405a179c438ec0592f234889168e4c05a3b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220022
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
37e3060c53..3032e0d81b
Created with:
gclient setdep -r ../src@3032e0d81b
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=herb@google.com
Change-Id: Ic5f7060f2d77fb32fe5860184dddb2b068f328c3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220023
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/70e8dab65eab3ffc4cadd379da4325fad0c05147 [buildbucket] Add buildbucket host consts (nodir@google.com)
TBR=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I6056aa6071b92783088cc41e2ba6b5a7df8702c2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220056
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>
These formats are for HDR YUV.
This CL also adds partial support for Y416 but, without Ganesh support for RGBA_16161616, it can't be displayed.
Change-Id: I4218a104f2935d1395ee6c7c6792105092e1eeb3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/214220
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Bug: oss-fuzz:14025
Change-Id: I45992c1953e054ce18c8e692273d44dc98f49fd8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220000
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@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/beda2a13041e5eea1c327b92f928a2eac9118eeb Fixed checking of instanceof str or unicode. (karenqian@google.com)
TBR=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I6bfa812154db27fbaa267426753a9a0d8ae51f54
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220016
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 makes GrCFResource a template class with similar semantics to sk_sp.
Change-Id: I9ae9988dac6b39477b16d65591ef6fff44903c36
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218376
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Reed <reed@google.com>
On Mac 10.11, when creating a font from its name and style by using a
font descriptor, sometimes the created font lost the style. To work
around this problem, we check the font style after the creation, if
it is not correct, we will resort to font creation with symbolic traits
which creates the correct font.
BUG=skia:8447
BUG=874103
Change-Id: I8b57e5a81d0d19d9fb0a7bd2951de75f2c41e236
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/172200
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Range selector's "Based On" property controls how range indices map
to glyphs: characters, characters-excluding-spaces, words, lines.
To support this feature:
- update SkottieShaper to track domain-relevant info per fragment
(fLineIndex, fIsWhitespace)
- update TextAdapter to build domain maps
(domain index -> fragment span)
- update RangeSelector to run its range indices through a domain map,
if present.
Change-Id: I80e713f6beaa2578aa0eae1d1ddae8e1e47d8d10
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219859
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Ben Wagner <bungeman@google.com>
I used to have a dump of the value program before it was
translated to registers, but it went away a while ago.
This restores it.
Change-Id: I9b8bfcb124843cad4b0dc44bdf0a03e95a0c83d8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219757
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Bug: skia:9152
Change-Id: I3f1713a765854a56d709a48e510cbfbff4f191cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219522
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
I found it odd that we were mutating isLocalData,
which is pretty clearly an immutable fact.
Change-Id: If52ed6dddd094debe12488c7f437e61c040ad8d7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219337
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Using the approximation (x*y+x)/256 is slightly
faster than (x*y+255)/256 while still maintaining
the property that it's never off by more than a bit.
In the interpreter this saves ~0.1 ns/px when used,
and is also nice for JITting because it doesn't need
any constant registers.
(x*y+y)/256 works just as well, of course.
Change-Id: Ic946e26f0d22c602dfa7e8fa0d64bf87db5505ac
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219917
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
We want the non-color, non-pixel-data version of createBackendTexture to truly create uninitialized textures.
Change-Id: I08867508ea181b7ba3685638cc7a3ea11d527a24
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218396
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Change-Id: Ia86963f743fc63a25b413344839f7e58e703b728
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219861
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Commit-Queue: Herb Derby <herb@google.com>
If the line/line intersection code returns Inf, it can easily turn into
a NaN in subsequent operations, which leads to an assert or hang.
The fix is to ignore intersections which are non-finite.
Bug: 969359
Change-Id: I9e9a5ce5d617aa75b91215a5bbae91ce6f234b7b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219696
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Bug: skia:
Change-Id: I459748b92a62da7b09a57a4b719d787bac897ebd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219617
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Convert extract(x,bits,z) to be (x >> bits) & z,
now a more explicit parallel to pack().
This lets us eliminate the funky bit counting required from the old
instruction, but more saliently it makes it more likely that the masks
we AND with will be the same value.
Ultimately down at the x86 or ARM ISA level, the AND instructions don't
really benefit from having an immediate argument (while the shifts do).
We might as well treat the mask as a normal value, letting it get
commoned with identical values, loop hoisted, etc.
Change-Id: I48a38468b46f2c730574c025f412262296472447
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219597
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Bug: oss-fuzz:14043
Change-Id: Iac068faf311f418200ec7049ce67f06e2b8c812d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219860
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
ea49f6f5d4..2d0a9acb05
git log ea49f6f5d4e3..2d0a9acb0551 --date=short --no-merges --format='%ad %ae %s'
2019-06-08 Tom.Tan@microsoft.com Initialize STACKFRAME64 for ARM64
2019-06-07 dongja@google.com DEBUG: Log all debug messages to console
2019-06-07 timvp@google.com Vulkan: Implement ES 3.0 rasterizer discard
2019-06-07 tobine@google.com For WebGL warn on late extension directive
2019-06-07 syoussefi@chromium.org Disable Linux stack traces on CFI builds
2019-06-07 syoussefi@chromium.org Vulkan: implement glSampleCoverage
2019-06-07 syoussefi@chromium.org Vulkan: implement ES3 blit
Created with:
gclient setdep -r third_party/externals/angle2@2d0a9acb0551
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=herb@google.com
Change-Id: Iac613843b7b4103b9905a5d329d35d9891812884
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219797
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Generalize the partial coverage logic to handle all three cases (left
edge, right edge, both edges), and remove the single-index
branch.
Also add some docs.
TBR=bungeman
Change-Id: I90af708f053d6d3eff154fc1309a5c1269a7eaed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219518
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
6406ce90ed..37e3060c53
Created with:
gclient setdep -r ../src@37e3060c53
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=herb@google.com
Change-Id: Ia00cbeba30d0acbe318f985e728cda0b775683b7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219798
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This reverts commit 14c8ca93db.
Reason for revert: This and original cl are breaking google3
Original change's description:
> Build fix
>
> Change-Id: Ifd64425e6c8bc1a51b4617f043b828acafeb4368
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218966
> Commit-Queue: Julia Lavrova <jlavrova@google.com>
> Reviewed-by: Ben Wagner <bungeman@google.com>
TBR=bungeman@google.com,jlavrova@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: I655f1da3d9c08994c210fff3ee9310288a248895
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219856
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This reverts commit cc82972af1.
Reason for revert: Part of the chain of cls breaking Google3
Original change's description:
> Try to fix include problems for skparagraph
>
> Change-Id: Id98790de9364093dbcd6948c00c192ad0bb01882
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219573
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
TBR=herb@google.com,jlavrova@google.com
Change-Id: Ib2000566a9764dab2dd46f0a4ed0877be1b7f1d5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219857
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This reverts commit 9e1e8caff3.
Reason for revert: ooops it was in includes
Original change's description:
> Add FontCollection.h to gni
>
> Change-Id: I0e720d6cf023303328fd68ce70e09a81e61088f2
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219697
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Herb Derby <herb@google.com>
TBR=herb@google.com,jlavrova@google.com
Change-Id: I4c2c08765ed3502323af028fe0aeb57472db7de0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219756
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This cleans up some of the names to make it easier to understand.
Unfortunately, this also disables the 'common' code since it has issues
with pic-8888 and serialize-8888 configs.
Change-Id: I059d7594c357ba588daeb29643d242f7f510ecc1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218968
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Ben Wagner <bungeman@google.com>
Interpreter is now just a namespace with Run and Disassemble. This hides
all of the implementation details. In addition, the interpreter only used
the Program because of a few details in FunctionDeclarations - scrape that
when constructing a ByteCodeFunction, and we don't need to keep the entire
Program alive, just the ByteCode. Adjust tests to ensure that this works.
Change-Id: I61efe4fe986476afedbd295d3d55b2a326fea4e3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219521
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
We're always defining it... this just deletes dead code.
Change-Id: Ifab266444eed687f637032ac62c8768ebc25625c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219544
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>