Title: [259578] trunk
- Revision
- 259578
- Author
- [email protected]
- Date
- 2020-04-06 10:47:38 -0700 (Mon, 06 Apr 2020)
Log Message
The change of zoom shouldn't affect ResizeObserverSize
https://bugs.webkit.org/show_bug.cgi?id=209947
Reviewed by Simon Fraser.
Source/WebCore:
Zoom in/out shouldn't affect ResizeObserverSize. Use adjustLayoutUnitForAbsoluteZoom instead.
Test: imported/w3c/web-platform-tests/resize-observer/resize-observer-with-zoom.html
* page/ResizeObservation.cpp:
(WebCore::ResizeObservation::computeObservedSize const):
LayoutTests:
Add test for resizeObserver with zoom. The ResizeObserverSize shouldn't be effected by zooms.
* resize-observer/resize-observer-with-zoom-expected.txt: Added.
* resize-observer/resize-observer-with-zoom.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (259577 => 259578)
--- trunk/LayoutTests/ChangeLog 2020-04-06 17:41:43 UTC (rev 259577)
+++ trunk/LayoutTests/ChangeLog 2020-04-06 17:47:38 UTC (rev 259578)
@@ -1,3 +1,15 @@
+2020-04-06 Cathie Chen <[email protected]>
+
+ The change of zoom shouldn't affect ResizeObserverSize
+ https://bugs.webkit.org/show_bug.cgi?id=209947
+
+ Reviewed by Simon Fraser.
+
+ Add test for resizeObserver with zoom. The ResizeObserverSize shouldn't be effected by zooms.
+
+ * resize-observer/resize-observer-with-zoom-expected.txt: Added.
+ * resize-observer/resize-observer-with-zoom.html: Added.
+
2020-04-04 Darin Adler <[email protected]>
Stop using live ranges in DocumentMarkerController
Added: trunk/LayoutTests/resize-observer/resize-observer-with-zoom-expected.txt (0 => 259578)
--- trunk/LayoutTests/resize-observer/resize-observer-with-zoom-expected.txt (rev 0)
+++ trunk/LayoutTests/resize-observer/resize-observer-with-zoom-expected.txt 2020-04-06 17:47:38 UTC (rev 259578)
@@ -0,0 +1,8 @@
+CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
+CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
+
+PASS ResizeObserver implemented
+PASS guard
+PASS test0: The change of zoom shouldn't affect resizeObserver size.
+PASS test1: The change of zoom shouldn't affect svg resizeObserver size.
+
Added: trunk/LayoutTests/resize-observer/resize-observer-with-zoom.html (0 => 259578)
--- trunk/LayoutTests/resize-observer/resize-observer-with-zoom.html (rev 0)
+++ trunk/LayoutTests/resize-observer/resize-observer-with-zoom.html 2020-04-06 17:47:38 UTC (rev 259578)
@@ -0,0 +1,88 @@
+<!DOCTYPE html><!-- webkit-test-runner [ experimental:ResizeObserverEnabled=true ] -->
+<script src=""
+<script src=""
+<script src=""
+<style>
+ #target {
+ width: 200px;
+ height: 200px;
+ }
+</style>
+<div id="target"></div>
+<svg height="200" width="200">
+ <circle cx="10" cy="10" r="5" style="fill:orange;stroke:black;stroke-width:1" />
+</svg>
+<script>
+'use strict';
+
+// allow uncaught exception because ResizeObserver posts exceptions
+// to window error handler when limit is exceeded.
+setup({ allow_uncaught_exception: true });
+
+function test0() {
+ let target = document.querySelector('#target');
+ let helper = new ResizeTestHelper(
+ "test0: The change of zoom shouldn't affect resizeObserver size.",
+ [
+ {
+ setup: observer => {
+ observer.observe(target);
+ },
+ notify: entries => {
+ assert_equals(entries[0].contentRect.width, 200);
+ assert_equals(entries[0].contentRect.height, 200);
+ }
+ },
+ {
+ setup: observer => {
+ window.internals.setPageZoomFactor(2);
+ target.style.width = "100px";
+ },
+ notify: entries => {
+ assert_equals(entries[0].contentRect.width, 100);
+ assert_equals(entries[0].contentRect.height, 200);
+ }
+ }
+ ]);
+ return helper.start();
+}
+
+function test1() {
+ let target = document.querySelector('circle');
+ let helper = new ResizeTestHelper(
+ "test1: The change of zoom shouldn't affect svg resizeObserver size.",
+ [
+ {
+ setup: observer => {
+ observer.observe(target);
+ },
+ notify: entries => {
+ assert_equals(entries[0].contentRect.width, 10);
+ assert_equals(entries[0].contentRect.height, 10);
+ }
+ },
+ {
+ setup: observer => {
+ window.internals.setPageZoomFactor(2);
+ target.setAttribute('r', 10);
+ },
+ notify: entries => {
+ assert_equals(entries[0].contentRect.width, 20);
+ assert_equals(entries[0].contentRect.height, 20);
+ }
+ }
+ ]);
+ return helper.start();
+}
+
+let guard;
+test(_ => {
+ assert_own_property(window, "ResizeObserver");
+ guard = async_test('guard');
+}, "ResizeObserver implemented")
+
+test0()
+ .then(() => { return test1(); })
+ .then(() => { guard.done(); });
+
+</script>
Modified: trunk/Source/WebCore/ChangeLog (259577 => 259578)
--- trunk/Source/WebCore/ChangeLog 2020-04-06 17:41:43 UTC (rev 259577)
+++ trunk/Source/WebCore/ChangeLog 2020-04-06 17:47:38 UTC (rev 259578)
@@ -1,3 +1,17 @@
+2020-04-06 Cathie Chen <[email protected]>
+
+ The change of zoom shouldn't affect ResizeObserverSize
+ https://bugs.webkit.org/show_bug.cgi?id=209947
+
+ Reviewed by Simon Fraser.
+
+ Zoom in/out shouldn't affect ResizeObserverSize. Use adjustLayoutUnitForAbsoluteZoom instead.
+
+ Test: imported/w3c/web-platform-tests/resize-observer/resize-observer-with-zoom.html
+
+ * page/ResizeObservation.cpp:
+ (WebCore::ResizeObservation::computeObservedSize const):
+
2020-04-06 Antoine Quint <[email protected]>
[Web Animations] Move Document.getAnimations() to DocumentOrShadowRoot
Modified: trunk/Source/WebCore/page/ResizeObservation.cpp (259577 => 259578)
--- trunk/Source/WebCore/page/ResizeObservation.cpp 2020-04-06 17:41:43 UTC (rev 259577)
+++ trunk/Source/WebCore/page/ResizeObservation.cpp 2020-04-06 17:47:38 UTC (rev 259578)
@@ -60,8 +60,12 @@
if (downcast<SVGElement>(*m_target).getBoundingBox(svgRect))
return LayoutSize(svgRect.width(), svgRect.height());
}
- if (m_target->renderBox())
- return m_target->renderBox()->contentSize();
+ auto* box = m_target->renderBox();
+ if (box) {
+ auto contentSize = box->contentSize();
+ return LayoutSize(adjustLayoutUnitForAbsoluteZoom(contentSize.width(), *box), adjustLayoutUnitForAbsoluteZoom(contentSize.height(), *box));
+ }
+
return LayoutSize();
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes