Title: [291301] trunk/Source/WebCore
- Revision
- 291301
- Author
- grao...@webkit.org
- Date
- 2022-03-15 10:24:09 -0700 (Tue, 15 Mar 2022)
Log Message
[model] model-element/model-element-camera.html is a failure
https://bugs.webkit.org/show_bug.cgi?id=237894
rdar://88982597
Reviewed by Tim Horton.
Ensure we have a non-zero contentSize() and model data before attempting to
create a player. Otherwise, we could end up with a zero frame when calling
into ARKit and the model would fail to load and the ready promise would be
rejected, causing this test to fail.
We can change the existing call site to sizeMayHaveChanged() to no longer
check whether we are using a platform layer since sizeMayHaveChanged() now
takes care of checking whether it has a player.
* Modules/model-element/HTMLModelElement.cpp:
(WebCore::HTMLModelElement::createModelPlayer):
(WebCore::HTMLModelElement::sizeMayHaveChanged):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::updateGeometry):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (291300 => 291301)
--- trunk/Source/WebCore/ChangeLog 2022-03-15 17:14:54 UTC (rev 291300)
+++ trunk/Source/WebCore/ChangeLog 2022-03-15 17:24:09 UTC (rev 291301)
@@ -1,3 +1,27 @@
+2022-03-15 Antoine Quint <grao...@webkit.org>
+
+ [model] model-element/model-element-camera.html is a failure
+ https://bugs.webkit.org/show_bug.cgi?id=237894
+ rdar://88982597
+
+ Reviewed by Tim Horton.
+
+ Ensure we have a non-zero contentSize() and model data before attempting to
+ create a player. Otherwise, we could end up with a zero frame when calling
+ into ARKit and the model would fail to load and the ready promise would be
+ rejected, causing this test to fail.
+
+ We can change the existing call site to sizeMayHaveChanged() to no longer
+ check whether we are using a platform layer since sizeMayHaveChanged() now
+ takes care of checking whether it has a player.
+
+ * Modules/model-element/HTMLModelElement.cpp:
+ (WebCore::HTMLModelElement::createModelPlayer):
+ (WebCore::HTMLModelElement::sizeMayHaveChanged):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateConfiguration):
+ (WebCore::RenderLayerBacking::updateGeometry):
+
2022-03-15 Brandon Stewart <brandonstew...@apple.com>
Line Builder and Content Breaker out of sync
Modified: trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp (291300 => 291301)
--- trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp 2022-03-15 17:14:54 UTC (rev 291300)
+++ trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp 2022-03-15 17:24:09 UTC (rev 291301)
@@ -255,6 +255,13 @@
void HTMLModelElement::createModelPlayer()
{
+ if (!m_model)
+ return;
+
+ auto size = contentSize();
+ if (size.isEmpty())
+ return;
+
ASSERT(document().page());
m_modelPlayer = document().page()->modelPlayerProvider().createModelPlayer(*this);
if (!m_modelPlayer) {
@@ -264,7 +271,7 @@
// FIXME: We need to tell the player if the size changes as well, so passing this
// in with load probably doesn't make sense.
- m_modelPlayer->load(*m_model, contentSize());
+ m_modelPlayer->load(*m_model, size);
}
bool HTMLModelElement::usesPlatformLayer() const
@@ -281,7 +288,10 @@
void HTMLModelElement::sizeMayHaveChanged()
{
- m_modelPlayer->sizeDidChange(contentSize());
+ if (m_modelPlayer)
+ m_modelPlayer->sizeDidChange(contentSize());
+ else
+ createModelPlayer();
}
void HTMLModelElement::didFinishLoading(ModelPlayer& modelPlayer)
Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (291300 => 291301)
--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2022-03-15 17:14:54 UTC (rev 291300)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2022-03-15 17:24:09 UTC (rev 291301)
@@ -1110,6 +1110,8 @@
else if (auto model = element->model())
m_graphicsLayer->setContentsToModel(WTFMove(model), element->isInteractive() ? GraphicsLayer::ModelInteraction::Enabled : GraphicsLayer::ModelInteraction::Disabled);
+ element->sizeMayHaveChanged();
+
layerConfigChanged = true;
}
#endif
@@ -1518,11 +1520,8 @@
setContentsNeedDisplay();
#if ENABLE(MODEL_ELEMENT)
- if (is<RenderModel>(renderer())) {
- auto* element = downcast<HTMLModelElement>(renderer().element());
- if (element->usesPlatformLayer())
- element->sizeMayHaveChanged();
- }
+ if (is<RenderModel>(renderer()))
+ downcast<HTMLModelElement>(renderer().element())->sizeMayHaveChanged();
#endif
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes