Title: [168228] trunk
Revision
168228
Author
simon.fra...@apple.com
Date
2014-05-03 13:32:31 -0700 (Sat, 03 May 2014)

Log Message

[UI-side compositing] Assertion in PlatformCAFilters::setFiltersOnLayer with animated reference filter
https://bugs.webkit.org/show_bug.cgi?id=132528
<rdar://problem/16671660>

Reviewed by Tim Horton.

Source/WebKit2:
Allow PASSTHROUGH filters to be encoded and sent to the UI process; they can be set
on layers as the result of a filter animation using a reference filter, and just get
ignored anyway, but encoding them maintains consistency of the filters list.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<FilterOperation>::encode): Assert during encoding if
we try to encode a NONE or REFERENCE filter (to match the decoding assertions).
(IPC::decodeFilterOperation): Allow decoding of PASSTHROUGH filters. Have
trying to decode a NONE or REFERENCE filter mark the message as invalid.
(IPC::ArgumentCoder<IDBKeyData>::decode): Mark the message invalid when receiving
unexpected key types.
* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTextStream::operator<<): Have the logging not crash if
a filter is null (should never happen).

LayoutTests:
Make the animation duration a little longer to cause bug 132528 to reproduce more
reliably. The test does notifyDone() from an animation start event, so this doesn't
increase test duration.

* css3/filters/crash-filter-animation-invalid-url.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (168227 => 168228)


--- trunk/LayoutTests/ChangeLog	2014-05-03 20:32:24 UTC (rev 168227)
+++ trunk/LayoutTests/ChangeLog	2014-05-03 20:32:31 UTC (rev 168228)
@@ -1,5 +1,19 @@
 2014-05-03  Simon Fraser  <simon.fra...@apple.com>
 
+        [UI-side compositing] Assertion in PlatformCAFilters::setFiltersOnLayer with animated reference filter
+        https://bugs.webkit.org/show_bug.cgi?id=132528
+        <rdar://problem/16671660>
+
+        Reviewed by Tim Horton.
+        
+        Make the animation duration a little longer to cause bug 132528 to reproduce more
+        reliably. The test does notifyDone() from an animation start event, so this doesn't
+        increase test duration.
+
+        * css3/filters/crash-filter-animation-invalid-url.html:
+
+2014-05-03  Simon Fraser  <simon.fra...@apple.com>
+
         Very fuzzy layers under non-decompasable matrices
         https://bugs.webkit.org/show_bug.cgi?id=132516
         <rdar://problem/16717478>

Modified: trunk/LayoutTests/css3/filters/crash-filter-animation-invalid-url.html (168227 => 168228)


--- trunk/LayoutTests/css3/filters/crash-filter-animation-invalid-url.html	2014-05-03 20:32:24 UTC (rev 168227)
+++ trunk/LayoutTests/css3/filters/crash-filter-animation-invalid-url.html	2014-05-03 20:32:31 UTC (rev 168228)
@@ -3,7 +3,7 @@
 <style>
     a {
         -webkit-animation-name: n;
-        -webkit-animation-duration: .01s;
+        -webkit-animation-duration: 50ms;
     }
     @-webkit-keyframes n {
         from {

Modified: trunk/Source/WebKit2/ChangeLog (168227 => 168228)


--- trunk/Source/WebKit2/ChangeLog	2014-05-03 20:32:24 UTC (rev 168227)
+++ trunk/Source/WebKit2/ChangeLog	2014-05-03 20:32:31 UTC (rev 168228)
@@ -1,3 +1,26 @@
+2014-05-03  Simon Fraser  <simon.fra...@apple.com>
+
+        [UI-side compositing] Assertion in PlatformCAFilters::setFiltersOnLayer with animated reference filter
+        https://bugs.webkit.org/show_bug.cgi?id=132528
+        <rdar://problem/16671660>
+
+        Reviewed by Tim Horton.
+        
+        Allow PASSTHROUGH filters to be encoded and sent to the UI process; they can be set
+        on layers as the result of a filter animation using a reference filter, and just get
+        ignored anyway, but encoding them maintains consistency of the filters list.
+
+        * Shared/WebCoreArgumentCoders.cpp:
+        (IPC::ArgumentCoder<FilterOperation>::encode): Assert during encoding if
+        we try to encode a NONE or REFERENCE filter (to match the decoding assertions).
+        (IPC::decodeFilterOperation): Allow decoding of PASSTHROUGH filters. Have
+        trying to decode a NONE or REFERENCE filter mark the message as invalid.
+        (IPC::ArgumentCoder<IDBKeyData>::decode): Mark the message invalid when receiving
+        unexpected key types.
+        * Shared/mac/RemoteLayerTreeTransaction.mm:
+        (WebKit::RemoteLayerTreeTextStream::operator<<): Have the logging not crash if
+        a filter is null (should never happen).
+
 2014-05-02  Dan Bernstein  <m...@apple.com>
 
         [Cocoa] Remove unused WKErrorRecoveryAttempting

Modified: trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp (168227 => 168228)


--- trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp	2014-05-03 20:32:24 UTC (rev 168227)
+++ trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp	2014-05-03 20:32:31 UTC (rev 168228)
@@ -1561,10 +1561,10 @@
     encoder.encodeEnum(filter.type());
 
     switch (filter.type()) {
-    case FilterOperation::REFERENCE: {
+    case FilterOperation::NONE:
+    case FilterOperation::REFERENCE:
         ASSERT_NOT_REACHED();
         break;
-    }
     case FilterOperation::GRAYSCALE:
     case FilterOperation::SEPIA:
     case FilterOperation::SATURATE:
@@ -1591,7 +1591,6 @@
         encoder.encodeEnum(toDefaultFilterOperation(filter).representedType());
         break;
     case FilterOperation::PASSTHROUGH:
-    case FilterOperation::NONE:
         break;
     }
 }
@@ -1603,11 +1602,11 @@
         return false;
 
     switch (type) {
-    case FilterOperation::PASSTHROUGH:
     case FilterOperation::NONE:
     case FilterOperation::REFERENCE:
         ASSERT_NOT_REACHED();
-        break;
+        decoder.markInvalid();
+        return false;
     case FilterOperation::GRAYSCALE:
     case FilterOperation::SEPIA:
     case FilterOperation::SATURATE:
@@ -1655,6 +1654,9 @@
         filter = DefaultFilterOperation::create(representedType);
         break;
     }
+    case FilterOperation::PASSTHROUGH:
+        filter = PassthroughFilterOperation::create();
+        break;
     }
             
     return true;
@@ -1835,6 +1837,7 @@
         // MaxType and MinType are only used for comparison to other keys.
         // They should never be sent across the wire.
         ASSERT_NOT_REACHED();
+        decoder.markInvalid();
         return false;
     }
 

Modified: trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm (168227 => 168228)


--- trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm	2014-05-03 20:32:24 UTC (rev 168227)
+++ trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm	2014-05-03 20:32:31 UTC (rev 168228)
@@ -646,7 +646,10 @@
     RemoteLayerTreeTextStream& ts = *this;
     for (size_t i = 0; i < filters.size(); ++i) {
         const auto filter = filters.at(i);
-        ts << *filter;
+        if (filter)
+            ts << *filter;
+        else
+            ts << "(null)";
         if (i < filters.size() - 1)
             ts << " ";
     }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to