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