Commit Graph

19281 Commits

Author SHA1 Message Date
bsalomon
648c696438 Add immediate mode option for gpu configs in dm
Review URL: https://codereview.chromium.org/1421853002
2015-10-23 09:06:59 -07:00
scroggo
b7f1251775 Revert of Use SkSwizzler to convert from CMYK (patchset #4 id:60001 of https://codereview.chromium.org/1411083009/ )
Reason for revert:
Breaking ASAN. See http://build.chromium.org/p/client.skia/builders/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-ASAN/builds/2879

Original issue's description:
> Use SkSwizzler to convert from CMYK
>
> Move convert_CMYK_to_RGBA into two functions in SkSwizzler: one for 565
> and one for 8888.
>
> For simplicity, when converting to 8888, we no longer convert in place.
>
> BUG=skia:4476
>
> Committed: https://skia.googlesource.com/skia/+/450ee8f26d39f975cf6af37a27de658ae5a9fa10

TBR=msarett@google.com,scroggo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:4476

Review URL: https://codereview.chromium.org/1411193006
2015-10-23 08:39:58 -07:00
scroggo
450ee8f26d Use SkSwizzler to convert from CMYK
Move convert_CMYK_to_RGBA into two functions in SkSwizzler: one for 565
and one for 8888.

For simplicity, when converting to 8888, we no longer convert in place.

BUG=skia:4476

Review URL: https://codereview.chromium.org/1411083009
2015-10-23 08:01:06 -07:00
joshualitt
ccdbc1d062 Remove mac buffer impl war
BUG=skia:

Review URL: https://codereview.chromium.org/1419203002
2015-10-23 07:33:54 -07:00
mtklein
33eefcd58b SkTime::GetNSecs()
- Move high-precision wall timers from tools/timer to SkTime.
   - Implement SkTime::GetMSecs() in terms of SkTime::GetNSecs().
   - Delete unused tools/timer code.

I have no idea what's going on there in src/animator.
I don't intend to investigate.

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/70084cbc16ee8162649f2601377feb6e49de0217

CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Debug-CrOS_Link-Trybot

Committed: https://skia.googlesource.com/skia/+/a1840d50e29fd95e4df2d1168fe54c34c2a5c30c

Committed: https://skia.googlesource.com/skia/+/38a88e4c0c28a7be981aac7bb4a198ad95a62a63

Review URL: https://codereview.chromium.org/1422513003
2015-10-23 07:02:06 -07:00
mtklein
3b5b784542 Revert of SkTime::GetNSecs() (patchset #11 id:200001 of https://codereview.chromium.org/1422513003/ )
Reason for revert:
Times don't look like they make sense on Windows.

Original issue's description:
> SkTime::GetNSecs()
>
>    - Move high-precision wall timers from tools/timer to SkTime.
>    - Implement SkTime::GetMSecs() in terms of SkTime::GetNSecs().
>    - Delete unused tools/timer code.
>
> I have no idea what's going on there in src/animator.
> I don't intend to investigate.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/70084cbc16ee8162649f2601377feb6e49de0217
>
> CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Debug-CrOS_Link-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/a1840d50e29fd95e4df2d1168fe54c34c2a5c30c
>
> Committed: https://skia.googlesource.com/skia/+/38a88e4c0c28a7be981aac7bb4a198ad95a62a63

TBR=caryclark@google.com,reed@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1422623003
2015-10-23 06:40:33 -07:00
mtklein
38a88e4c0c SkTime::GetNSecs()
- Move high-precision wall timers from tools/timer to SkTime.
   - Implement SkTime::GetMSecs() in terms of SkTime::GetNSecs().
   - Delete unused tools/timer code.

I have no idea what's going on there in src/animator.
I don't intend to investigate.

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/70084cbc16ee8162649f2601377feb6e49de0217

CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Debug-CrOS_Link-Trybot

Committed: https://skia.googlesource.com/skia/+/a1840d50e29fd95e4df2d1168fe54c34c2a5c30c

Review URL: https://codereview.chromium.org/1422513003
2015-10-23 06:24:07 -07:00
mtklein
5a06df4686 Revert of SkTime::GetNSecs() (patchset #10 id:180001 of https://codereview.chromium.org/1422513003/ )
Reason for revert:
https://codereview.chromium.org/1412453006

Original issue's description:
> SkTime::GetNSecs()
>
>    - Move high-precision wall timers from tools/timer to SkTime.
>    - Implement SkTime::GetMSecs() in terms of SkTime::GetNSecs().
>    - Delete unused tools/timer code.
>
> I have no idea what's going on there in src/animator.
> I don't intend to investigate.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/70084cbc16ee8162649f2601377feb6e49de0217
>
> CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Debug-CrOS_Link-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/a1840d50e29fd95e4df2d1168fe54c34c2a5c30c

TBR=caryclark@google.com,reed@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1417753003
2015-10-22 17:49:22 -07:00
mtklein
a1840d50e2 SkTime::GetNSecs()
- Move high-precision wall timers from tools/timer to SkTime.
   - Implement SkTime::GetMSecs() in terms of SkTime::GetNSecs().
   - Delete unused tools/timer code.

I have no idea what's going on there in src/animator.
I don't intend to investigate.

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/70084cbc16ee8162649f2601377feb6e49de0217

CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Debug-CrOS_Link-Trybot

Review URL: https://codereview.chromium.org/1422513003
2015-10-22 13:33:22 -07:00
reed
c9b5f8b152 tunnel down texture-size-constraint to imagefilters
BUG=skia:

Review URL: https://codereview.chromium.org/1421493003
2015-10-22 13:20:20 -07:00
caryclark
6ae30fbbaf Revert of SkTime::GetNSecs() (patchset #9 id:160001 of https://codereview.chromium.org/1422513003/ )
Reason for revert:
broke chromeos

Original issue's description:
> SkTime::GetNSecs()
>
>    - Move high-precision wall timers from tools/timer to SkTime.
>    - Implement SkTime::GetMSecs() in terms of SkTime::GetNSecs().
>    - Delete unused tools/timer code.
>
> I have no idea what's going on there in src/animator.
> I don't intend to investigate.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/70084cbc16ee8162649f2601377feb6e49de0217

TBR=reed@google.com,mtklein@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1420923003
2015-10-22 13:03:02 -07:00
mtklein
70084cbc16 SkTime::GetNSecs()
- Move high-precision wall timers from tools/timer to SkTime.
   - Implement SkTime::GetMSecs() in terms of SkTime::GetNSecs().
   - Delete unused tools/timer code.

I have no idea what's going on there in src/animator.
I don't intend to investigate.

BUG=skia:

Review URL: https://codereview.chromium.org/1422513003
2015-10-22 12:47:04 -07:00
egdaniel
cae0085acc Force the s4 to use highp for transforming to NDS
This seems to fix some rendering issues. Currently this will use highp
for all draws on the s4, but if we see perf issues we can refine this
later to specific types of draws.

BUG=skia:

Review URL: https://codereview.chromium.org/1419593003
2015-10-22 11:08:08 -07:00
joshualitt
eec180db93 Remove unused functions from GrGLVertexBuffer / IndexBuffer
BUG=skia:

Review URL: https://codereview.chromium.org/1416303002
2015-10-22 10:00:24 -07:00
egdaniel
2a459ffe2d Fix force high precision for arm gpus
This fixes a bug introduced by recent changes to GLSL caps.

TBR=bsalomon@google.com
BUG=skia:

Review URL: https://codereview.chromium.org/1422553004
2015-10-22 09:40:36 -07:00
egdaniel
472d44e8f8 Add version string and force highp NDS transfrom to GLSLCaps
This also include the use of any() in the shaders.

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/cef4bce8e260b49bf3417eadbac806cf7d39cdc8

Review URL: https://codereview.chromium.org/1417993004
2015-10-22 08:20:00 -07:00
msarett
26ad17b8f8 Implementation of SkBitmapRegionDecoder using SkAndroidCodec
Includes testing in DM and nanobench

BUG=skia:

Review URL: https://codereview.chromium.org/1402863002
2015-10-22 07:29:19 -07:00
caryclark
ed0935a28a Reland of path ops: fix conic weight and partial coincidence (patchset #1 id:1 of https://codereview.chromium.org/1408923003/ )
Reason for revert:
suppressions have landed in chrome

Original issue's description:
> Revert of path ops: fix conic weight and partial coincidence (patchset #5 id:80001 of https://codereview.chromium.org/1413763002/ )
>
> Reason for revert:
> path ops change breaks svg clipping layout tests -- conic is now more accurate, changing edge of circle in clip
>
> These need to be rebaselined
>
> svg/clip-path/clip-path-child-clipped.svg
> svg/clip-path/clip-path-nonzero.svg
> svg/clip-path/clip-path-evenodd-nonzero.svg
> svg/clip-path/clip-path-nonzero-evenodd.svg
>
> Original issue's description:
> > The remaining 1m skp bugs are asserts that can be harmlessly
> > suppressed and bugs around conics.
> >
> > The conic calculation for a subdivided w was just wrong.
> >
> > Also added debugging to template intersection to initialize
> > reused structures and dump additional data.
> >
> > TBR=reed@google.com
> >
> > Committed: https://skia.googlesource.com/skia/+/ef33b1e739b23a1201100ff17a572da85b03d9af
>
> TBR=
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
>
> Committed: https://skia.googlesource.com/skia/+/f428df1be3e96d3f8970d0f7f415b862f7da5404

TBR=
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1407003016
2015-10-22 07:23:52 -07:00
scroggo
7f53819ea9 Revert of Suppression for valgrind bug (patchset #1 id:1 of https://codereview.chromium.org/1410953002/ )
Reason for revert:
We believe this was suppressing an out of date error that was being triggered because the valgrind bot was not rebuilding nanobench. The valgrind bot has been fixed (is there a bug tracking that?), so this suppression is probably not necessary.

Original issue's description:
> Suppression for valgrind bug
>
> TBR=msarett@google.com
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
>
> BUG=skia:4478
>
> Committed: https://skia.googlesource.com/skia/+/82e341ff8764ef6168a0c9322089c391d657ae7f

TBR=msarett@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:4478

Review URL: https://codereview.chromium.org/1406333006
2015-10-22 07:23:21 -07:00
egdaniel
899ba37db3 Revert of Add version string and force highp NDS transfrom to GLSLCaps (patchset #3 id:40001 of https://codereview.chromium.org/1417993004/ )
Reason for revert:
breaking bots

Original issue's description:
> Add version string and force highp NDS transfrom to GLSLCaps
>
> This also include the use of any() in the shaders.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/cef4bce8e260b49bf3417eadbac806cf7d39cdc8

TBR=bsalomon@google.com,jvanverth@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1420033002
2015-10-22 07:08:37 -07:00
borenet
5eaaad29dd Stop running nanobench on GalaxyS4
BUG=skia:3214

Review URL: https://codereview.chromium.org/1422683002
2015-10-22 07:06:28 -07:00
egdaniel
cef4bce8e2 Add version string and force highp NDS transfrom to GLSLCaps
This also include the use of any() in the shaders.

BUG=skia:

Review URL: https://codereview.chromium.org/1417993004
2015-10-22 06:54:15 -07:00
robertphillips
a352b14c87 Revert of Dependencies are now added between the drawTargets in GrPipeline (patchset #6 id:120001 of https://codereview.chromium.org/1414903002/ )
Reason for revert:
Breaking bots

Original issue's description:
> Dependencies are now added between the drawTargets in GrPipeline
>
> This CL relies on https://codereview.chromium.org/1414773002/ (Add the machinery to GrDrawTarget to enable topological sorting)
>
> BUG=skia:4094
>
> Committed: https://skia.googlesource.com/skia/+/45a1c34f607a970933e5cd05e1df6cd8090db1be
>
> Committed: https://skia.googlesource.com/skia/+/869c5e82a725a6928a45cd1fa6945ac783b8b3d8

TBR=bsalomon@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:4094

Review URL: https://codereview.chromium.org/1417263002
2015-10-22 05:31:32 -07:00
robertphillips
869c5e82a7 Dependencies are now added between the drawTargets in GrPipeline
This CL relies on https://codereview.chromium.org/1414773002/ (Add the machinery to GrDrawTarget to enable topological sorting)

BUG=skia:4094

Committed: https://skia.googlesource.com/skia/+/45a1c34f607a970933e5cd05e1df6cd8090db1be

Review URL: https://codereview.chromium.org/1414903002
2015-10-22 05:19:50 -07:00
herb
12449a9614 Add lighter weight lock guards.
BUG=skia:

Review URL: https://codereview.chromium.org/1417583005
2015-10-21 19:11:13 -07:00
msarett
fa23a9ec4e Fix uninitialized memory on kIndex8 divisor tests in Gold
Turns out bitmap.eraseColor() does nothing if the bitmap
is kIndex8.  We need a more reliable way to initialize
all of the pixels that we look at in Gold.

The input SkCanvas* is always zero initialized, so let's
only draw pixels to the canvas if we have initialized them.

BUG=skia:

Review URL: https://codereview.chromium.org/1418913002
2015-10-21 13:26:59 -07:00
benjaminwagner
4d5de04559 Omit Math from DM on Google3 because it fails under the MSAN config.
BUG=skia:

Review URL: https://codereview.chromium.org/1418903002
2015-10-21 13:07:07 -07:00
mtklein
479fe776a0 SkRemote: more refactoring
- move Client / Server definitions to .cpp
    - rename Client / Server to Canvas / Decoder

No diffs:
https://gold.skia.org/search2?issue=1409113005&unt=true&query=source_type%3Dgm&master=false&include=true

BUG=skia:

Review URL: https://codereview.chromium.org/1409113005
2015-10-21 12:34:01 -07:00
mtklein
e71000f0df Move SkChecksum::Murmur3 out of the header.
As we use this more and more, we end up with more and more inline copies.
On my desktop, this makes Skia ~16K smaller.

Boy perf trybots would be neat.

BUG=skia:

Review URL: https://codereview.chromium.org/1415133003
2015-10-21 11:53:27 -07:00
caryclark
b4a20767ee Revert of Remove SkDEPRECATED_InstallDiscardablePixelRef from SkPictureShader (patchset #3 id:40001 of https://codereview.chromium.org/1405103003/ )
Reason for revert:
Test to see if patch fixes Nexus 6.

Original issue's description:
> Remove SkDEPRECATED_InstallDiscardablePixelRef from SkPictureShader
>
> Use an SkImage generator/shader instead.
>
> R=reed@google.com
>
> Committed: https://skia.googlesource.com/skia/+/fa694ad067976a5b713eec0b6f92ba5efeb0aa9d

TBR=reed@google.com,fmalita@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1407043008
2015-10-21 11:39:06 -07:00
mtklein
b6b8f2727f SkRemote: refactoring
- Cache becomes CachingEncoder that wraps another Encoder
  - Encoders provide IDs
  - syntaxy improvements to Client
  - ID isn't really protocol sensitive.
  - I don't think we need Type::kNone.

No diffs.
https://gold.skia.org/search2?issue=1418863002&unt=true&query=source_type%3Dgm&master=false&include=true

BUG=skia:

Review URL: https://codereview.chromium.org/1418863002
2015-10-21 10:46:02 -07:00
egdaniel
0d3f061262 Move GrGLShaderVar to GrGLSL
BUG=skia:

Review URL: https://codereview.chromium.org/1417123002
2015-10-21 10:45:48 -07:00
msarett
3d9d7a7213 Create an SkAndroidCodec API separate from SkCodec
We will implement this API using SkCodecs.

SkAndroidCodecs will be used to implement the
BitmapRegionDecoder Java API (and possibly
BitmapFactory).

BUG=skia:

Review URL: https://codereview.chromium.org/1406223002
2015-10-21 10:27:10 -07:00
herb
c7378af961 Add a mutex to protect the DWrite calls.
BUG=skia:4479

Review URL: https://codereview.chromium.org/1421433004
2015-10-21 09:24:37 -07:00
joshualitt
fb02cdafda Force VisualBench to reset GLContext on GrContext reset
BUG=skia:

Review URL: https://codereview.chromium.org/1416063002
2015-10-21 08:04:24 -07:00
borenet
b64b195dbd Fix build targets for some bots
Valgrind bot is not building nanobench. Some bots are building nanobench and then not running it.

BUG=skia:

Review URL: https://codereview.chromium.org/1412243004
2015-10-21 07:50:58 -07:00
egdaniel
f529439fea Move shader precision modifier check onto GLSLCaps
BUG=skia:

Review URL: https://codereview.chromium.org/1414373002
2015-10-21 07:14:17 -07:00
bsalomon
02141734f2 Stop creating static GrProcessor instances
R=joshualitt@google.com

BUG=skia:4483

Review URL: https://codereview.chromium.org/1414733007
2015-10-21 06:57:31 -07:00
caryclark
81bdbf8bed Revert of Dependencies are now added between the drawTargets in GrPipeline (patchset #5 id:100001 of https://codereview.chromium.org/1414903002/ )
Reason for revert:
this may have broken the TSAN and ASAN bots

Original issue's description:
> Dependencies are now added between the drawTargets in GrPipeline
>
> This CL relies on https://codereview.chromium.org/1414773002/ (Add the machinery to GrDrawTarget to enable topological sorting)
>
> BUG=skia:4094
>
> Committed: https://skia.googlesource.com/skia/+/45a1c34f607a970933e5cd05e1df6cd8090db1be

TBR=bsalomon@google.com,robertphillips@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:4094

Review URL: https://codereview.chromium.org/1419613005
2015-10-21 04:16:19 -07:00
caryclark
f428df1be3 Revert of path ops: fix conic weight and partial coincidence (patchset #5 id:80001 of https://codereview.chromium.org/1413763002/ )
Reason for revert:
path ops change breaks svg clipping layout tests -- conic is now more accurate, changing edge of circle in clip

These need to be rebaselined

svg/clip-path/clip-path-child-clipped.svg
svg/clip-path/clip-path-nonzero.svg
svg/clip-path/clip-path-evenodd-nonzero.svg
svg/clip-path/clip-path-nonzero-evenodd.svg

Original issue's description:
> The remaining 1m skp bugs are asserts that can be harmlessly
> suppressed and bugs around conics.
>
> The conic calculation for a subdivided w was just wrong.
>
> Also added debugging to template intersection to initialize
> reused structures and dump additional data.
>
> TBR=reed@google.com
>
> Committed: https://skia.googlesource.com/skia/+/ef33b1e739b23a1201100ff17a572da85b03d9af

TBR=
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1408923003
2015-10-21 04:02:51 -07:00
msarett
74deb981d5 Valgrind experiment
I don't really expect this to fix the errors, but I think
it's worth it to try shaking up the valgrind bot overnight.
There's some strange behavior with regard to color type on
the valgrind bot that I can't reproduce and that we aren't
seeing on any of the other bots.

TBR=mtklein,scroggo

BUG=skia:

Review URL: https://codereview.chromium.org/1418723002
2015-10-20 16:45:56 -07:00
mtklein
98f015431b SkRemote: shaders
https://gold.skia.org/search2?issue=1417703003&unt=true&query=source_type%3Dgm&master=false&include=true&limit=60

BUG=skia:

Review URL: https://codereview.chromium.org/1417703003
2015-10-20 15:04:22 -07:00
Brian Salomon
b1dda9b4cd Use the current OpengGL standard to determine blur precision, rather than kGLES
TBR=ethannicholas@google.com,robertphillips@google.com

Review URL: https://codereview.chromium.org/1408123004 .
2015-10-20 17:33:26 -04:00
mtklein
0c768a2f33 Clean up some dead code.
This cleans up tools/ code, or code that should have been in tools/.

The only interesting code change trims features off of PictureRenderer.
It's still in use by a few useful-looking tools.

BUG=skia:

Review URL: https://codereview.chromium.org/1416913003
2015-10-20 14:29:10 -07:00
caryclark
ef33b1e739 The remaining 1m skp bugs are asserts that can be harmlessly
suppressed and bugs around conics.

The conic calculation for a subdivided w was just wrong.

Also added debugging to template intersection to initialize
reused structures and dump additional data.

TBR=reed@google.com

Review URL: https://codereview.chromium.org/1413763002
2015-10-20 13:42:25 -07:00
robertphillips
45a1c34f60 Dependencies are now added between the drawTargets in GrPipeline
This CL relies on https://codereview.chromium.org/1414773002/ (Add the machinery to GrDrawTarget to enable topological sorting)

BUG=skia:4094

Review URL: https://codereview.chromium.org/1414903002
2015-10-20 13:41:16 -07:00
benjaminwagner
964eebae2d Include resources directory in google3 sync.
Also other minor improvements in sync scripts.

In BUILD.public, include all files under resources as data dependencies for DM. Omit newly failing DM tests and add newly passing DM tests.

Adds the OpenClipart "license" to LICENSE per comment in google3 CL 100158380.

Corresponding google3 CL is 105602927.

BUG=skia:

Review URL: https://codereview.chromium.org/1406283002
2015-10-20 13:00:48 -07:00
caryclark
c752badbe3 remove debug statement
R=djsollen@google.com

Review URL: https://codereview.chromium.org/1415603004
2015-10-20 11:09:41 -07:00
mtklein
a1bde7d2e1 Remove SkThread::setProcessorAffinity()
It's only used by a couple unit tests.  We have other ways of getting
the same quality testing of our ref-count code now (e.g. TSAN).

BUG=skia:
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac10.9-Clang-x86_64-Release-CMake-Trybot

Review URL: https://codereview.chromium.org/1408213005
2015-10-20 11:05:06 -07:00
senorblanco
1d3ff43495 Image filters: Replace all use of tryAllocPixels() with createDevice().
In order to have a central pinch point for bitmap allocation, change all
filters to use Proxy::createDevice() instead of allocating memory
directly with SkBitmap::tryAllocPixels().

This will aid in moving filter backing stores and caches to
discardable memory.

BUG=skia:

Review URL: https://codereview.chromium.org/1414843003
2015-10-20 10:17:34 -07:00