Chromium -> Mojo roll.

Update from https://crrev.com/321900

Changes:
(1) OpenTypeSanitizer.cpp: Removed use of ots::EnableWOFF2() which was
removed from library and implementation was empty anyways.
(2) GraphicsContext.cpp: Header location for SkMatrixImageFilter.h moved.
(3) SkiaImageFilterBuilder.cpp: Header location for SkMatrixImageFilter.h moved.
(4) FEDropShadow.cpp: Function signature changed.

R=davemoore@chromium.org, jamesr@chromium.org
BUG=453591

Review URL: https://codereview.chromium.org/1028333002
diff --git a/cc/resources/layer_quad.cc b/cc/resources/layer_quad.cc
index ba92314..ff336ba 100644
--- a/cc/resources/layer_quad.cc
+++ b/cc/resources/layer_quad.cc
@@ -22,6 +22,14 @@
   scale(1.0f / tangent.Length());
 }
 
+gfx::PointF LayerQuad::Edge::Intersect(const LayerQuad::Edge& e) const {
+  DCHECK(!degenerate());
+  DCHECK(!e.degenerate());
+
+  return gfx::PointF((y() * e.z() - e.y() * z()) / (x() * e.y() - e.x() * y()),
+                     (x() * e.z() - e.x() * z()) / (e.x() * y() - x() * e.y()));
+}
+
 LayerQuad::LayerQuad(const gfx::QuadF& quad) {
   // Create edges.
   left_ = Edge(quad.p4(), quad.p1());
@@ -46,6 +54,12 @@
       bottom_(bottom) {}
 
 gfx::QuadF LayerQuad::ToQuadF() const {
+  size_t num_degenerate_edges = left_.degenerate() + right_.degenerate() +
+                                top_.degenerate() + bottom_.degenerate();
+  if (num_degenerate_edges > 1) {
+    return gfx::QuadF();
+  }
+
   if (left_.degenerate()) {
     return gfx::QuadF(top_.Intersect(bottom_), top_.Intersect(right_),
                       right_.Intersect(bottom_), bottom_.Intersect(top_));