Commit Graph

22954 Commits

Author SHA1 Message Date
mtklein
0358a6ac00 Update SkOpts namespaces.
If we make sure all SkOpts functions are static, we can give the namespaces any
name we like.  This lets us drop the sk_ prefix and give a real indication of
the default SIMD instruction set rather than just saying sk_default.

Both of these changes help debugger, profiler, and crash report readability.
Perhaps more importantly, keeping these functions static helps prevent
accidentally linking in unused versions of functions, as you see here with
sk_avx::srcover_srgb_srgb().

This requires we update SkBlend_opts tests and benches to call SkOpts functions
through SkOpts rather than declaring the methods externally.  In practice this
drops testing of the SSE2 version on machines with SSE4.  If we still really
need to test/bench the compile time best SIMD level version of this method
against the runtime detected best, we can include SkBlend_opts.h into the tests
or benches directly, similar to what we do for the trivial, brute-force, or best
non-SIMD versions.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2145833002
CQ_INCLUDE_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2145833002
2016-07-13 08:02:20 -07:00
robertphillips
9199a9fef9 Move GrDrawTarget::clear logic into GrDrawContext
I found it a bit worrisome that GrDrawTarget was calling back into GrDrawContext. This also moves GrDrawTarget closer to being a simple-ish container of batches.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2145643003

Review-Url: https://codereview.chromium.org/2145643003
2016-07-13 07:48:43 -07:00
bungeman
e3aea10428 Remove user specified typeface id.
Now that there may be multiple font managers in a process the typeface
ids must be unique across all typefaces, not just unique within a font
manager. If two typefaces have the same id there will be issues in the
glyph cache. All existing font managers were already doing this by
calling SkFontCache::NewFontID, so centralize this in SkTypeface.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2147733002

Review-Url: https://codereview.chromium.org/2147733002
2016-07-13 05:16:58 -07:00
msarett
ba3880fa6d Revert of Pre-crop filled rects to avoid scissor (patchset #6 id:100001 of https://codereview.chromium.org/2132073002/ )
Reason for revert:
I think this is still causing a test failure on Chrome windows bots.

https://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_x64_rel_ng/builds/243928/steps/cc_unittests%20%28with%20patch%29%20on%20Windows-7-SP1/logs/stdio

Original issue's description:
> Pre-crop filled rects to avoid scissor
>
> Updates GrDrawContext to crop filled rects to the clip bounds before
> creating batches for them. Also adds clipping logic to ignore scissor
> when the draw falls completely inside. These two changes combined
> reduce API traffic and improve batching.
>
> In the future this can and should be improved by switching to floating
> point clip boundaries, thus allowing us to throw out non pixel aligned
> rectangle clips as well.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2132073002
>
> Committed: https://skia.googlesource.com/skia/+/7969838702135b9f127bd738728da61bc49b050a
> Committed: https://skia.googlesource.com/skia/+/86de59f4a99b5f54be0483c60ff0335be55b2bdf

TBR=bsalomon@google.com,robertphillips@google.com,csmartdalton@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2140253004
2016-07-12 18:48:21 -07:00
bsalomon
634b430080 Add a function to convert a texture backed SkImage to raster.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2147493004

Review-Url: https://codereview.chromium.org/2147493004
2016-07-12 18:11:17 -07:00
mtklein
e504dbc092 Revert "Added the framework for having canvas/recorder/picture record depth_set's."
1-click revert failed.
This reverts commit 6d3fb898d5.

TBR=

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2148543002

Review-Url: https://codereview.chromium.org/2148543002
2016-07-12 15:41:08 -07:00
borenet
c4600204f2 Run the Vulkan config on nanobench for Vulkan bots
BUG=skia:5513
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2145633002

Review-Url: https://codereview.chromium.org/2145633002
2016-07-12 15:11:35 -07:00
liyuqian
e25faf3e18 Fix option name typo
BUG=skia:
TBR=jvanverth@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2143093002
NOTRY=true
DOCS_PREVIEW= https://skia.org/?cl=2143093002

Review-Url: https://codereview.chromium.org/2143093002
2016-07-12 15:11:31 -07:00
reed
7c70d7cfa2 center glyphs for text-on-path-via-rsxform
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2137083005

Review-Url: https://codereview.chromium.org/2137083005
2016-07-12 15:06:33 -07:00
brianosman
6373c95554 Monitor profile tool, now with Windows support, too!
Original Mac support by Matt.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2095093002

Review-Url: https://codereview.chromium.org/2141573004
2016-07-12 15:06:25 -07:00
mtklein
281b33fdd9 SkRasterPipeline preliminaries
Re-uploading to see if I can get a CL number < 2^31.
    patch from issue 2147533002 at patchset 240001 (http://crrev.com/2147533002#ps240001)

Already reviewed at the other crrev link.
TBR=

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2147533002
CQ_INCLUDE_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2144573004
2016-07-12 15:01:26 -07:00
bungeman
7438bfc080 Factor code to rotate a canvas about a point.
SkMatrix::scale and ::rotate take a point around which to scale or rotate.
Canvas lacks these helpers, so the code to rotate a canvas around a
point has been duplicated many times. Factor all of these
implementations into SkCanvas::rotate.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2142033002

Review-Url: https://codereview.chromium.org/2142033002
2016-07-12 15:01:19 -07:00
herb
2edf0c6a71 Remove bloat from SkBlend_opts.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2130183003
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2130183003
2016-07-12 15:00:46 -07:00
msarett
7d3ff71423 Add Sk4f_RoundToInt
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2134753006
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2134753006
2016-07-12 14:55:45 -07:00
fmenozzi
90ccfbaf2e Fix Lua bugs, nit name change
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2140293002

Review-Url: https://codereview.chromium.org/2140293002
2016-07-12 14:55:39 -07:00
vjiaoblack
6d3fb898d5 Added the framework for having canvas/recorder/picture record depth_set's.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2127233002

Review-Url: https://codereview.chromium.org/2127233002
2016-07-12 14:50:41 -07:00
mtklein
2052f313f0 Enable SkTaskGroup threading in monobench.
Without this Enabler, SkTaskGroups all run serially.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2139423002

Review-Url: https://codereview.chromium.org/2139423002
2016-07-12 14:50:28 -07:00
fmenozzi
54d500f90c Add benchmarks for 3 and 4 colors (most common)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2143653002

Review-Url: https://codereview.chromium.org/2143653002
2016-07-12 14:45:32 -07:00
csmartdalton
86de59f4a9 Pre-crop filled rects to avoid scissor
Updates GrDrawContext to crop filled rects to the clip bounds before
creating batches for them. Also adds clipping logic to ignore scissor
when the draw falls completely inside. These two changes combined
reduce API traffic and improve batching.

In the future this can and should be improved by switching to floating
point clip boundaries, thus allowing us to throw out non pixel aligned
rectangle clips as well.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2132073002

Committed: https://skia.googlesource.com/skia/+/7969838702135b9f127bd738728da61bc49b050a
Review-Url: https://codereview.chromium.org/2132073002
2016-07-12 14:45:23 -07:00
halcanary
f119796f95 tools/SkShaper: SkStream->blob
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2142023002

Review-Url: https://codereview.chromium.org/2142023002
2016-07-12 09:17:43 -07:00
fmenozzi
7f2c85e66b Add hard stop count
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2141733002

Review-Url: https://codereview.chromium.org/2141733002
2016-07-12 09:17:39 -07:00
liyuqian
e7d15fe870 Update documents/scripts for SampleApp removal
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2140663002
DOCS_PREVIEW= https://skia.org/?cl=2140663002

Review-Url: https://codereview.chromium.org/2140663002
2016-07-12 09:12:39 -07:00
reed
1264472c06 remove unused parameter to make android happy (when this header is moved to private)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2139333002

Review-Url: https://codereview.chromium.org/2139333002
2016-07-12 09:12:30 -07:00
brianosman
e1d2007924 Respect --match for samples and jpgs in viewer
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2144643002

Review-Url: https://codereview.chromium.org/2144643002
2016-07-12 09:07:33 -07:00
ethannicholas
9fd67a1f53 SkSL performance improvements (plus a couple of minor warning fixes)
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2131223002

Review-Url: https://codereview.chromium.org/2131223002
2016-07-12 09:07:21 -07:00
bungeman
5dba301e91 Use hintgasp font when testing rendering.
The hintgasp font was added specifically for the typefacerendering gm.
However, this gm didn't actually use the font, so now use it. In
addition this adds embedded bitmap strikes to the hintgasp font and the
gm is updated to test these as well.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2140863002

NOTREECHECKS=true
Test only change, does not affect users.

Review-Url: https://codereview.chromium.org/2140863002
2016-07-12 06:55:25 -07:00
msarett
aeadcdfbf2 Revert of Pre-crop filled rects to avoid scissor (patchset #6 id:100001 of https://codereview.chromium.org/2132073002/ )
Reason for revert:
I believe that this is breaking the roll.

https://codereview.chromium.org/2141923002

https://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_ng/builds/258434/steps/cc_unittests%20%28with%20patch%29%20on%20Mac-10.9/logs/stdio

Original issue's description:
> Pre-crop filled rects to avoid scissor
>
> Updates GrDrawContext to crop filled rects to the clip bounds before
> creating batches for them. Also adds clipping logic to ignore scissor
> when the draw falls completely inside. These two changes combined
> reduce API traffic and improve batching.
>
> In the future this can and should be improved by switching to floating
> point clip boundaries, thus allowing us to throw out non pixel aligned
> rectangle clips as well.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2132073002
>
> Committed: https://skia.googlesource.com/skia/+/7969838702135b9f127bd738728da61bc49b050a

TBR=bsalomon@google.com,robertphillips@google.com,csmartdalton@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2145573002
2016-07-12 05:40:39 -07:00
halcanary
8792e523dc tools/fiddle: remove unused fiddler.go
Review-Url: https://codereview.chromium.org/2138153002
2016-07-11 16:26:26 -07:00
msarett
afb8539f62 Revert of try to speed-up maprect + round2i + contains (patchset #8 id:140001 of https://codereview.chromium.org/2133413002/ )
Reason for revert:
Breaking the roll...
https://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_ng/builds/253294/steps/compile%20%28with%20patch%29/logs/stdio

Original issue's description:
> try to speed-up maprect + round2i + contains
>
> We call roundOut in a few places. If we can get SkNx::Ceil we could efficiently implement that as well.
>
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2133413002
> CQ_INCLUDE_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/b42b785d1cbc98bd34aceae338060831b974f9c5

TBR=mtklein@google.com,reed@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2136343002
2016-07-11 14:57:26 -07:00
msarett
bed41afa5f Revert of Fix compile error on MSAN bot (patchset #1 id:1 of https://codereview.chromium.org/2142653002/ )
Reason for revert:
Reverting CL that this is based on

Original issue's description:
> Fix compile error on MSAN bot
>
> TBR=reed@google.com
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2142653002
>
> Committed: https://skia.googlesource.com/skia/+/76c52ace16a7846d7d2ddf166d64572546f2de69

TBR=
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2134023003
2016-07-11 14:54:55 -07:00
msarett
76c52ace16 Fix compile error on MSAN bot
TBR=reed@google.com

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2142653002

Review-Url: https://codereview.chromium.org/2142653002
2016-07-11 14:52:21 -07:00
csmartdalton
7969838702 Pre-crop filled rects to avoid scissor
Updates GrDrawContext to crop filled rects to the clip bounds before
creating batches for them. Also adds clipping logic to ignore scissor
when the draw falls completely inside. These two changes combined
reduce API traffic and improve batching.

In the future this can and should be improved by switching to floating
point clip boundaries, thus allowing us to throw out non pixel aligned
rectangle clips as well.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2132073002

Review-Url: https://codereview.chromium.org/2132073002
2016-07-11 14:34:12 -07:00
halcanary
8a74f13239 tools/SkShaper: factor shaping out of using_skia_and_harfbuzz
Make a clearer demarcation between shaping and layout.

also: refactor using_skia_and_harfbuzz; stop leaking
like a sieve.

Review-Url: https://codereview.chromium.org/2138133002
2016-07-11 14:30:39 -07:00
jbroman
203a993c77 Handle negative scale in SkDropShadowImageFilter::onFilterNodeBounds.
Add unit tests for positive and negative scale factors for the two effects that
apply a Gaussian blur like this: blur and drop-shadow. The last two assertions
fail without the fix in SkDropShadowImageFilter.

BUG=chromium:600821
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2114313002

Review-Url: https://codereview.chromium.org/2114313002
2016-07-11 14:07:59 -07:00
reed
b42b785d1c try to speed-up maprect + round2i + contains
We call roundOut in a few places. If we can get SkNx::Ceil we could efficiently implement that as well.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2133413002
CQ_INCLUDE_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2133413002
2016-07-11 13:17:35 -07:00
mtklein
7e602c2c6c hacking on a single-benchmark tool
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2012413004

Review-Url: https://codereview.chromium.org/2012413004
2016-07-11 11:27:30 -07:00
robertphillips
c90bc40fdd Simplify GrDefaultPathRenderer a tiny bit
This is far less compelling than https://codereview.chromium.org/2135053002/ (Simplify MSAA path renderer) but is probably still worth it.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2135853003

Review-Url: https://codereview.chromium.org/2135853003
2016-07-11 10:44:07 -07:00
robertphillips
8e375309ca Simplify MSAA path renderer
This simplification is based on the observations that:
   there were never more than 2 passes
   the only time passes[] was null was the single-pass, !stencilOnly case
   only kBoth_DrawFace was was ever used

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2135053002

Review-Url: https://codereview.chromium.org/2135053002
2016-07-11 10:43:58 -07:00
herb
00dd4538a5 Reduce size of LinearBitmapPipeline from 281K to 134K, but keep the same speed.
Speed checked using top25desk SKPS.

Size measured using:
 llvm-nm-3.6  -print-file-name  -print-size -U out/Release/libskia_core.a | awk '{totals[$1] += strtonum("0x" $3)} END { for (i in totals) {print totals[i], i}}' | sort -n | column -t

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2100323002

Review-Url: https://codereview.chromium.org/2100323002
2016-07-11 10:33:37 -07:00
mtklein
f3bc76a12a Fix MIPS32r2 + DSP2 builders after NDK update.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2141643002

TBR=djsollen@google.com

CQ_INCLUDE_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-MipsDSP2-Debug-Android-Trybot,Build-Ubuntu-GCC-MipsDSP2-Release-Android-Trybot

Review-Url: https://codereview.chromium.org/2141643002
2016-07-11 10:30:19 -07:00
tomhudson
63d14413be Remove obsolete bench analysis scripts
R=bungeman@google.com
BUG=skia:5459
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2125953002

Review-Url: https://codereview.chromium.org/2125953002
2016-07-11 10:26:56 -07:00
mtklein
5608e2ed22 Clean up hyper-local SkCpu feature test experiment.
This removes the code paths where we make SkCpu::Supports() calls
    from within a tight loop.  It keeps code paths using SkCpu::Supports()
    to choose entire routines from src/opts/.

    We can't rely on these hyper-local checks to be hoisted up reliably enough.
    It worked pretty well with the first couple platforms we tried (e.g. Clang
    on Linux/Mac) but we can't gaurantee it works everywhere.

    Further, I'm not able to actually do anything fancy with those tests
    outside of x86... I've not found a way to get, say, NEON+F16 conversion
    code embedded into ordinary NEON code outside writing then entire function
    in external assembly.

    This whole idea becomes less important now that we've got a way to chain
    separate function calls together efficiently.  We can now, e.g., use an
    AVX+F16C method to load some pixels, then chain that into an ordinary AVX
    method to color filter them.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2138073002
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2138073002
2016-07-11 09:59:21 -07:00
fmenozzi
d6767aa2d5 Add HardStopGradientBench.cpp
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2131643002

Committed: https://skia.googlesource.com/skia/+/d0d652e0e0cb4bcecb7ccac9f4f4831fcaccdc45
Review-Url: https://codereview.chromium.org/2131643002
2016-07-11 09:56:31 -07:00
fmenozzi
ffa185d3cf Revert of Add HardStopGradientBench.cpp (patchset #3 id:40001 of https://codereview.chromium.org/2131643002/ )
Reason for revert:
Segfaulting on HardStopGradientBench; didn't allocate enough stack memory for color/position arrays.

Original issue's description:
> Add HardStopGradientBench.cpp
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2131643002
>
> Committed: https://skia.googlesource.com/skia/+/d0d652e0e0cb4bcecb7ccac9f4f4831fcaccdc45

TBR=bsalomon@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2140603003
2016-07-11 09:30:25 -07:00
bsalomon
810efb57b7 Delay initialization of free list in SkTLList until first use of list
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2138043002

Review-Url: https://codereview.chromium.org/2138043002
2016-07-11 08:31:27 -07:00
fmenozzi
d0d652e0e0 Add HardStopGradientBench.cpp
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2131643002

Review-Url: https://codereview.chromium.org/2131643002
2016-07-11 08:31:23 -07:00
rmistry
3b3ee20d93 Do not use the deprecated CQ_EXTRA_TRYBOTS
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2135063003

Review-Url: https://codereview.chromium.org/2135063003
2016-07-11 08:27:49 -07:00
mtklein
8a6d23257e ndk: r11c -> r12b
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2140603002

Review-Url: https://codereview.chromium.org/2140603002
2016-07-11 08:27:43 -07:00
msarett
6006f678e7 Make all color xforms 'fast' (step 1)
This refactors opt code to handle arbitrary src and dst
gammas that are specified by tables.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2130013002
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2130013002
2016-07-11 05:49:17 -07:00
dvonbeck
6af677ff8f Changed SkLightingShader API to take in a shader as color source
This CL's base is the CL for the same modification, but in the implementation side: https://codereview.chromium.org/2062703003/

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2064153002

Review-Url: https://codereview.chromium.org/2064153002
2016-07-10 18:38:34 -07:00