GC::saveLayer() may taint the current clip.

SaveLayer() can optionally apply a clip. In that case we need to make
sure that we're saving the current clip, to avoid tainting it.

This was discovered while experimenting with SaveFlags removal and
requires a minor test rebaseline.

R=schenney@chormium.org,senorblanco@chromium.org

Review URL: https://codereview.chromium.org/212993004

git-svn-id: svn://svn.chromium.org/blink/trunk@170096 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Fix getBBox() returning (0,0) bug when width or height is zero
    
For rects/ellipses with width or height of 0, getBBox() returns the
bounding box as being empty. This patch fixes this bug.
    
It ports and extends one initial patch, fixing the isEmpty() check,
by Changhun Kang <temoochin@company100.net>
    
On top of Changhun's patch, this patch addresses the case where
rects/ellipses fall back to renderSVGShape and their fill bounding box
should not fall back.
    
In detail, this patch involves the following:
    
- Patch for the bug (RenderSVGEllipse, RenderSVGRect and SVGPathData)
- Three new test cases for rect, ellipse and circle
- Current layout tests updated under platform/linux
- Updated TestExpectations

BUG=140472

Review URL: https://codereview.chromium.org/208323007

git-svn-id: svn://svn.chromium.org/blink/trunk@170097 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Have SourceBuffer throw TypeError for non-finite doubles.

Switch to throwing TypeError instead of TypeMismatchError when encountering
non-finite doubles, following what WebIDL requires

 http://heycam.github.io/webidl/#es-double

R=acolwell@chromium.org
BUG=353245

Review URL: https://codereview.chromium.org/212953004

git-svn-id: svn://svn.chromium.org/blink/trunk@170098 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Mark shift-relative-positioned-container-with-image-addition as flaky

Can't preemptively mark Mac as flaky, because it needs a rebaseline.  :(

TBR=jchaffraix@chromium.org
BUG=356834

Review URL: https://codereview.chromium.org/212623005

git-svn-id: svn://svn.chromium.org/blink/trunk@170099 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Auto-rebaseline for r170066

http://src.chromium.org/viewvc/blink?view=revision&revision=170066

BUG=353933
TBR=jchaffraix@chromium.org

Review URL: https://codereview.chromium.org/213553002

git-svn-id: svn://svn.chromium.org/blink/trunk@170100 bbb929c8-8fbe-4397-9dbb-9b2b20218538
RuleFeatures argument list cleanup.

Got rid of extensive argument lists for invalidation set features by
introducing a struct for them.

R=esprehn@chromium.org,chrishtr@chromium.org
BUG=

Review URL: https://codereview.chromium.org/212603002

git-svn-id: svn://svn.chromium.org/blink/trunk@170101 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Selectively disable rubber banding on mac.

The logic for handling 2-finger swipes should be:
1. If a 2-finger swipe can scroll the content (or iframe), it should do so.
2. If the 2-finger swipe can cause history navigation, it should do so.
3. The 2-finger swipe should rubber-band the content view.

(2) is handled by the embedder, and (1 & 3) by the renderer. Right now, the
renderer is passed an IPC, and it tries to do (1), and then it tries to do (3).
I've added a new IPC so that there are flags that prevent the renderer from
performing (3) under specific circumstances.

There was an existing mechanism to determine whether the renderer should try
(3), but it was fragile, incorrectly used, and insufficient for newer features
in chrome - the user can cancel a history swipe without cancelling the gesture,
at which point rubber-banding should be possible again. I've simplified and
fixed the logic inside ScrollElasticityController.mm to reflect the desired
behavior.

I modified the IPC InputMsg_HandleInputEvent to include 2 additional bools:
can_rubberband_left and can_rubberband_right. Blink will attempt to consume the
event to scroll the content view, and will only attempt to rubberband if bools
allow it too.

This is part 1 of a two-part change. It only includes the IPC change. The
changes to ScrollElasticityController will land after I've updated Chromium to
use the new API.

BUG=321437

Review URL: https://codereview.chromium.org/197213011

git-svn-id: svn://svn.chromium.org/blink/trunk@170102 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Fix deferred filter application with shearing or rotating CTM.

NOTE: this requires Skia change
https://codereview.chromium.org/211103006/ to land and roll into
Chromium.

Pixel-moving filters (e.g., blur, morphology) don't work well with
matrices applying anything more than scale and translate. (We do a
best-effort, but it's really wrong.) To fix, we separate out only
the scaling and translation components from the CTM, process the filters
with that, and apply the remainder of the CTM as a final matrix
transform image filter.

Since the matrix image filter is a generalization of the resize image
filter, we switch the filterRes implementation over to use that as well.

Covered by svg/batik/filters/feTile.svg and svg/filters/filterRes.svg
when run with --enable-deferred-filters.

R=fmalita@chromium.org
BUG=353630

Review URL: https://codereview.chromium.org/208683008

git-svn-id: svn://svn.chromium.org/blink/trunk@170104 bbb929c8-8fbe-4397-9dbb-9b2b20218538