haikuwebkit/LayoutTests/model-element/model-element-ready.html

29 lines
743 B
HTML
Raw Permalink Normal View History

HTMLModelElement needs a renderer https://bugs.webkit.org/show_bug.cgi?id=222114 Reviewed by Simon Fraser. Source/WebCore: Tests: model-element/model-element-ready-load-aborted.html model-element/model-element-ready-load-failed.html model-element/model-element-ready.html model-element/model-element-renderer-no-source.html model-element/model-element-renderer.html * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: Add RenderModel.h/cpp * Modules/model-element/HTMLModelElement.cpp: (WebCore::HTMLModelElement::HTMLModelElement): (WebCore::HTMLModelElement::~HTMLModelElement): (WebCore::HTMLModelElement::modelData const): (WebCore::HTMLModelElement::sourcesChanged): (WebCore::HTMLModelElement::setSourceURL): (WebCore::HTMLModelElement::readyPromiseResolve): (WebCore::HTMLModelElement::createElementRenderer): (WebCore::HTMLModelElement::responseReceived): (WebCore::HTMLModelElement::dataReceived): (WebCore::HTMLModelElement::redirectReceived): (WebCore::HTMLModelElement::notifyFinished): * Modules/model-element/HTMLModelElement.h: * Modules/model-element/HTMLModelElement.idl: Add basic loading of model data as a CachedRawResource. In the future, we may want a more specialized loader, but for now this gets the data into a data buffer and that's a good start. Also adds a "ready" promise that resolves when the load completes. This may mutate to an event in the future as the spec moves forward. * rendering/RenderModel.cpp: Added. (WebCore::RenderModel::RenderModel): (WebCore::RenderModel::modelElement const): (WebCore::RenderModel::updateFromElement): * rendering/RenderModel.h: Added. * rendering/RenderObject.h: (WebCore::RenderObject::isRenderModel const): Add a simple RenderReplaced subclass as the starting point of a renderer for <model>. It's enough that it shows up in a render tree dump, but not really anything else. LayoutTests: Add basic tests for loading HTMLModelElement elements and rendering RenderModel elements. * model-element/model-element-ready-expected.txt: Added. * model-element/model-element-ready-load-aborted-expected.txt: Added. * model-element/model-element-ready-load-aborted.html: Added. * model-element/model-element-ready-load-failed-expected.txt: Added. * model-element/model-element-ready-load-failed.html: Added. * model-element/model-element-ready.html: Added. * model-element/model-element-renderer-expected.txt: Added. * model-element/model-element-renderer-no-source-expected.txt: Added. * model-element/model-element-renderer-no-source.html: Added. * model-element/model-element-renderer.html: Added. * model-element/resources: Added. * model-element/resources/heart.usdz: Added. Canonical link: https://commits.webkit.org/234452@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273290 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-23 01:43:27 +00:00
<!DOCTYPE html><!-- webkit-test-runner [ ModelElementEnabled=true ] -->
<html>
<body>
<model id="model">
<source src="resources/heart.usdz">
</model>
<p>This test passes if you see the word "Passed" below:</p>
<p id="result">Failed</p>
<script>
if (window.testRunner) {
testRunner.waitUntilDone();
testRunner.dumpAsText();
}
let result = document.getElementById("result");
let model = document.getElementById("model");
model.ready.then(value => {
result.textContent = `Passed`;
}, reason => {
result.textContent = `Failed. Model did not load: ${reason}`;
}).finally(() => {
if (window.testRunner)
testRunner.notifyDone();
});
</script>
</body>
</html>