| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_test.htm
l", true, 0, 0); | 135 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_test.htm
l", true, 0, 0); |
| 136 webView->resize(WebSize(1000, 1000)); | 136 webView->resize(WebSize(1000, 1000)); |
| 137 webView->updateAllLifecyclePhases(); | 137 webView->updateAllLifecyclePhases(); |
| 138 | 138 |
| 139 // We are going test everything twice. Once with FloatPoints and once with | 139 // We are going test everything twice. Once with FloatPoints and once with |
| 140 // FloatRects. This is because LayoutGeometryMap treats both slightly | 140 // FloatRects. This is because LayoutGeometryMap treats both slightly |
| 141 // differently | 141 // differently |
| 142 LayoutGeometryMap rgm; | 142 LayoutGeometryMap rgm; |
| 143 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InitialDiv"), 0); | 143 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InitialDiv"), 0); |
| 144 FloatRect rect(0.0f, 0.0f, 1.0f, 2.0f); | 144 FloatRect rect(0.0f, 0.0f, 1.0f, 2.0f); |
| 145 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 1.0f, 2.0f)), rgm.mapToContainer(r
ect, nullptr)); | 145 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 1.0f, 2.0f)), rgm.mapToAncestor(re
ct, nullptr)); |
| 146 | 146 |
| 147 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); | 147 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); |
| 148 EXPECT_EQ(FloatQuad(FloatRect(0.0f, 0.0f, 1.0f, 2.0f)), rgm.mapToContainer(r
ect, nullptr)); | 148 EXPECT_EQ(FloatQuad(FloatRect(0.0f, 0.0f, 1.0f, 2.0f)), rgm.mapToAncestor(re
ct, nullptr)); |
| 149 | 149 |
| 150 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InnerDiv"), 0); | 150 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InnerDiv"), 0); |
| 151 EXPECT_EQ(FloatQuad(FloatRect(21.0f, 6.0f, 1.0f, 2.0f)), rgm.mapToContainer(
rect, getLayoutBox(webView, "CenterDiv"))); | 151 EXPECT_EQ(FloatQuad(FloatRect(21.0f, 6.0f, 1.0f, 2.0f)), rgm.mapToAncestor(r
ect, getLayoutBox(webView, "CenterDiv"))); |
| 152 | 152 |
| 153 rgm.pushMappingsToAncestor(getLayoutBox(webView, "OtherDiv"), getLayoutBox(w
ebView, "InnerDiv")); | 153 rgm.pushMappingsToAncestor(getLayoutBox(webView, "OtherDiv"), getLayoutBox(w
ebView, "InnerDiv")); |
| 154 EXPECT_EQ(FloatQuad(FloatRect(22.0f, 12.0f, 1.0f, 2.0f)), rgm.mapToContainer
(rect, getLayoutBox(webView, "CenterDiv"))); | 154 EXPECT_EQ(FloatQuad(FloatRect(22.0f, 12.0f, 1.0f, 2.0f)), rgm.mapToAncestor(
rect, getLayoutBox(webView, "CenterDiv"))); |
| 155 | 155 |
| 156 EXPECT_EQ(FloatQuad(FloatRect(1.0f, 6.0f, 1.0f, 2.0f)), rgm.mapToContainer(r
ect, getLayoutBox(webView, "InnerDiv"))); | 156 EXPECT_EQ(FloatQuad(FloatRect(1.0f, 6.0f, 1.0f, 2.0f)), rgm.mapToAncestor(re
ct, getLayoutBox(webView, "InnerDiv"))); |
| 157 | 157 |
| 158 EXPECT_EQ(FloatQuad(FloatRect(50.0f, 44.0f, 1.0f, 2.0f)), rgm.mapToContainer
(rect, nullptr)); | 158 EXPECT_EQ(FloatQuad(FloatRect(50.0f, 44.0f, 1.0f, 2.0f)), rgm.mapToAncestor(
rect, nullptr)); |
| 159 } | 159 } |
| 160 | 160 |
| 161 // Fails on Windows due to crbug.com/391457. When run through the transform the | 161 // Fails on Windows due to crbug.com/391457. When run through the transform the |
| 162 // position on windows differs by a pixel | 162 // position on windows differs by a pixel |
| 163 #if OS(WIN) | 163 #if OS(WIN) |
| 164 TEST_F(LayoutGeometryMapTest, DISABLED_TransformedGeometryTest) | 164 TEST_F(LayoutGeometryMapTest, DISABLED_TransformedGeometryTest) |
| 165 #else | 165 #else |
| 166 TEST_F(LayoutGeometryMapTest, TransformedGeometryTest) | 166 TEST_F(LayoutGeometryMapTest, TransformedGeometryTest) |
| 167 #endif | 167 #endif |
| 168 { | 168 { |
| 169 registerMockedHttpURLLoad("rgm_transformed_test.html"); | 169 registerMockedHttpURLLoad("rgm_transformed_test.html"); |
| 170 FrameTestHelpers::WebViewHelper webViewHelper; | 170 FrameTestHelpers::WebViewHelper webViewHelper; |
| 171 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_transfor
med_test.html", true, 0, 0); | 171 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_transfor
med_test.html", true, 0, 0); |
| 172 webView->resize(WebSize(1000, 1000)); | 172 webView->resize(WebSize(1000, 1000)); |
| 173 webView->updateAllLifecyclePhases(); | 173 webView->updateAllLifecyclePhases(); |
| 174 | 174 |
| 175 LayoutGeometryMap rgm; | 175 LayoutGeometryMap rgm; |
| 176 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InitialDiv"), 0); | 176 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InitialDiv"), 0); |
| 177 const float rectWidth = 15.0f; | 177 const float rectWidth = 15.0f; |
| 178 const float scaleWidth = 2.0f; | 178 const float scaleWidth = 2.0f; |
| 179 const float scaleHeight = 3.0f; | 179 const float scaleHeight = 3.0f; |
| 180 FloatRect rect(0.0f, 0.0f, 15.0f, 25.0f); | 180 FloatRect rect(0.0f, 0.0f, 15.0f, 25.0f); |
| 181 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 15.0f, 25.0f)), rgm.mapToContainer
(rect, nullptr)); | 181 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 15.0f, 25.0f)), rgm.mapToAncestor(
rect, nullptr)); |
| 182 | 182 |
| 183 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); | 183 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); |
| 184 EXPECT_EQ(FloatQuad(FloatRect(0.0f, 0.0f, 15.0f, 25.0f)).boundingBox(), rgm.
mapToContainer(rect, nullptr).boundingBox()); | 184 EXPECT_EQ(FloatQuad(FloatRect(0.0f, 0.0f, 15.0f, 25.0f)).boundingBox(), rgm.
mapToAncestor(rect, nullptr).boundingBox()); |
| 185 | 185 |
| 186 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InnerDiv"), 0); | 186 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InnerDiv"), 0); |
| 187 EXPECT_EQ(FloatQuad(FloatRect(523.0f - rectWidth, 6.0f, 15.0f, 25.0f)).bound
ingBox(), rgm.mapToContainer(rect, getLayoutBox(webView, "CenterDiv")).boundingB
ox()); | 187 EXPECT_EQ(FloatQuad(FloatRect(523.0f - rectWidth, 6.0f, 15.0f, 25.0f)).bound
ingBox(), rgm.mapToAncestor(rect, getLayoutBox(webView, "CenterDiv")).boundingBo
x()); |
| 188 | 188 |
| 189 rgm.pushMappingsToAncestor(getLayoutBox(webView, "OtherDiv"), getLayoutBox(w
ebView, "InnerDiv")); | 189 rgm.pushMappingsToAncestor(getLayoutBox(webView, "OtherDiv"), getLayoutBox(w
ebView, "InnerDiv")); |
| 190 EXPECT_EQ(FloatQuad(FloatRect(522.0f - rectWidth, 12.0f, 15.0f, 25.0f)).boun
dingBox(), rgm.mapToContainer(rect, getLayoutBox(webView, "CenterDiv")).bounding
Box()); | 190 EXPECT_EQ(FloatQuad(FloatRect(522.0f - rectWidth, 12.0f, 15.0f, 25.0f)).boun
dingBox(), rgm.mapToAncestor(rect, getLayoutBox(webView, "CenterDiv")).boundingB
ox()); |
| 191 | 191 |
| 192 EXPECT_EQ(FloatQuad(FloatRect(1.0f, 6.0f, 15.0f, 25.0f)).boundingBox(), rgm.
mapToContainer(rect, getLayoutBox(webView, "InnerDiv")).boundingBox()); | 192 EXPECT_EQ(FloatQuad(FloatRect(1.0f, 6.0f, 15.0f, 25.0f)).boundingBox(), rgm.
mapToAncestor(rect, getLayoutBox(webView, "InnerDiv")).boundingBox()); |
| 193 | 193 |
| 194 EXPECT_EQ(FloatQuad(FloatRect(821.0f - rectWidth * scaleWidth, 31.0f, 15.0f
* scaleWidth, 25.0f * scaleHeight)).boundingBox(), rgm.mapToContainer(rect, null
ptr).boundingBox()); | 194 EXPECT_EQ(FloatQuad(FloatRect(821.0f - rectWidth * scaleWidth, 31.0f, 15.0f
* scaleWidth, 25.0f * scaleHeight)).boundingBox(), rgm.mapToAncestor(rect, nullp
tr).boundingBox()); |
| 195 | 195 |
| 196 rect = FloatRect(10.0f, 25.0f, 15.0f, 25.0f); | 196 rect = FloatRect(10.0f, 25.0f, 15.0f, 25.0f); |
| 197 EXPECT_EQ(FloatQuad(FloatRect(512.0f - rectWidth, 37.0f, 15.0f, 25.0f)).boun
dingBox(), rgm.mapToContainer(rect, getLayoutBox(webView, "CenterDiv")).bounding
Box()); | 197 EXPECT_EQ(FloatQuad(FloatRect(512.0f - rectWidth, 37.0f, 15.0f, 25.0f)).boun
dingBox(), rgm.mapToAncestor(rect, getLayoutBox(webView, "CenterDiv")).boundingB
ox()); |
| 198 | 198 |
| 199 EXPECT_EQ(FloatQuad(FloatRect(11.0f, 31.0f, 15.0f, 25.0f)).boundingBox(), rg
m.mapToContainer(rect, getLayoutBox(webView, "InnerDiv")).boundingBox()); | 199 EXPECT_EQ(FloatQuad(FloatRect(11.0f, 31.0f, 15.0f, 25.0f)).boundingBox(), rg
m.mapToAncestor(rect, getLayoutBox(webView, "InnerDiv")).boundingBox()); |
| 200 | 200 |
| 201 EXPECT_EQ(FloatQuad(FloatRect(801.0f - rectWidth * scaleWidth, 106.0f, 15.0f
* scaleWidth, 25.0f * scaleHeight)).boundingBox(), rgm.mapToContainer(rect, nul
lptr).boundingBox()); | 201 EXPECT_EQ(FloatQuad(FloatRect(801.0f - rectWidth * scaleWidth, 106.0f, 15.0f
* scaleWidth, 25.0f * scaleHeight)).boundingBox(), rgm.mapToAncestor(rect, null
ptr).boundingBox()); |
| 202 } | 202 } |
| 203 | 203 |
| 204 TEST_F(LayoutGeometryMapTest, FixedGeometryTest) | 204 TEST_F(LayoutGeometryMapTest, FixedGeometryTest) |
| 205 { | 205 { |
| 206 registerMockedHttpURLLoad("rgm_fixed_position_test.html"); | 206 registerMockedHttpURLLoad("rgm_fixed_position_test.html"); |
| 207 FrameTestHelpers::WebViewHelper webViewHelper; | 207 FrameTestHelpers::WebViewHelper webViewHelper; |
| 208 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_fixed_po
sition_test.html", true, 0, 0); | 208 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_fixed_po
sition_test.html", true, 0, 0); |
| 209 webView->resize(WebSize(1000, 1000)); | 209 webView->resize(WebSize(1000, 1000)); |
| 210 webView->updateAllLifecyclePhases(); | 210 webView->updateAllLifecyclePhases(); |
| 211 | 211 |
| 212 LayoutGeometryMap rgm; | 212 LayoutGeometryMap rgm; |
| 213 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InitialDiv"), 0); | 213 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InitialDiv"), 0); |
| 214 FloatRect rect(0.0f, 0.0f, 15.0f, 25.0f); | 214 FloatRect rect(0.0f, 0.0f, 15.0f, 25.0f); |
| 215 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 15.0f, 25.0f)), rgm.mapToContainer
(rect, nullptr)); | 215 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 15.0f, 25.0f)), rgm.mapToAncestor(
rect, nullptr)); |
| 216 | 216 |
| 217 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); | 217 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); |
| 218 EXPECT_EQ(FloatQuad(FloatRect(0.0f, 0.0f, 15.0f, 25.0f)), rgm.mapToContainer
(rect, nullptr)); | 218 EXPECT_EQ(FloatQuad(FloatRect(0.0f, 0.0f, 15.0f, 25.0f)), rgm.mapToAncestor(
rect, nullptr)); |
| 219 | 219 |
| 220 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InnerDiv"), 0); | 220 rgm.pushMappingsToAncestor(getLayoutBox(webView, "InnerDiv"), 0); |
| 221 EXPECT_EQ(FloatQuad(FloatRect(20.0f, 14.0f, 15.0f, 25.0f)), rgm.mapToContain
er(rect, nullptr)); | 221 EXPECT_EQ(FloatQuad(FloatRect(20.0f, 14.0f, 15.0f, 25.0f)), rgm.mapToAncesto
r(rect, nullptr)); |
| 222 | 222 |
| 223 rgm.pushMappingsToAncestor(getLayoutBox(webView, "OtherDiv"), getLayoutBox(w
ebView, "InnerDiv")); | 223 rgm.pushMappingsToAncestor(getLayoutBox(webView, "OtherDiv"), getLayoutBox(w
ebView, "InnerDiv")); |
| 224 EXPECT_EQ(FloatQuad(FloatRect(21.0f, 20.0f, 15.0f, 25.0f)), rgm.mapToContain
er(rect, getLayoutContainer(webView, "CenterDiv"))); | 224 EXPECT_EQ(FloatQuad(FloatRect(21.0f, 20.0f, 15.0f, 25.0f)), rgm.mapToAncesto
r(rect, getLayoutContainer(webView, "CenterDiv"))); |
| 225 | 225 |
| 226 rect = FloatRect(22.0f, 15.2f, 15.3f, 0.0f); | 226 rect = FloatRect(22.0f, 15.2f, 15.3f, 0.0f); |
| 227 EXPECT_EQ(FloatQuad(FloatRect(43.0f, 35.2f, 15.3f, 0.0f)), rgm.mapToContaine
r(rect, getLayoutContainer(webView, "CenterDiv"))); | 227 EXPECT_EQ(FloatQuad(FloatRect(43.0f, 35.2f, 15.3f, 0.0f)), rgm.mapToAncestor
(rect, getLayoutContainer(webView, "CenterDiv"))); |
| 228 | 228 |
| 229 EXPECT_EQ(FloatQuad(FloatRect(43.0f, 35.2f, 15.3f, 0.0f)), rgm.mapToContaine
r(rect, getLayoutContainer(webView, "InnerDiv"))); | 229 EXPECT_EQ(FloatQuad(FloatRect(43.0f, 35.2f, 15.3f, 0.0f)), rgm.mapToAncestor
(rect, getLayoutContainer(webView, "InnerDiv"))); |
| 230 | 230 |
| 231 EXPECT_EQ(FloatQuad(FloatRect(43.0f, 35.2f, 15.3f, 0.0f)), rgm.mapToContaine
r(rect, nullptr)); | 231 EXPECT_EQ(FloatQuad(FloatRect(43.0f, 35.2f, 15.3f, 0.0f)), rgm.mapToAncestor
(rect, nullptr)); |
| 232 } | 232 } |
| 233 | 233 |
| 234 TEST_F(LayoutGeometryMapTest, IframeTest) | 234 TEST_F(LayoutGeometryMapTest, IframeTest) |
| 235 { | 235 { |
| 236 registerMockedHttpURLLoad("rgm_iframe_test.html"); | 236 registerMockedHttpURLLoad("rgm_iframe_test.html"); |
| 237 registerMockedHttpURLLoad("rgm_test.html"); | 237 registerMockedHttpURLLoad("rgm_test.html"); |
| 238 FrameTestHelpers::WebViewHelper webViewHelper; | 238 FrameTestHelpers::WebViewHelper webViewHelper; |
| 239 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_iframe_t
est.html", true, 0, 0); | 239 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_iframe_t
est.html", true, 0, 0); |
| 240 webView->resize(WebSize(1000, 1000)); | 240 webView->resize(WebSize(1000, 1000)); |
| 241 webView->updateAllLifecyclePhases(); | 241 webView->updateAllLifecyclePhases(); |
| 242 | 242 |
| 243 LayoutGeometryMap rgm(TraverseDocumentBoundaries); | 243 LayoutGeometryMap rgm(TraverseDocumentBoundaries); |
| 244 LayoutGeometryMap rgmNoFrame; | 244 LayoutGeometryMap rgmNoFrame; |
| 245 | 245 |
| 246 rgmNoFrame.pushMappingsToAncestor(getFrameElement("test_frame", webView, "In
itialDiv"), 0); | 246 rgmNoFrame.pushMappingsToAncestor(getFrameElement("test_frame", webView, "In
itialDiv"), 0); |
| 247 rgm.pushMappingsToAncestor(getFrameElement("test_frame", webView, "InitialDi
v"), 0); | 247 rgm.pushMappingsToAncestor(getFrameElement("test_frame", webView, "InitialDi
v"), 0); |
| 248 FloatRect rect(0.0f, 0.0f, 1.0f, 2.0f); | 248 FloatRect rect(0.0f, 0.0f, 1.0f, 2.0f); |
| 249 | 249 |
| 250 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 1.0f, 2.0f)), rgmNoFrame.mapToCont
ainer(rect, nullptr)); | 250 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 1.0f, 2.0f)), rgmNoFrame.mapToAnce
stor(rect, nullptr)); |
| 251 | 251 |
| 252 // Our initial rect looks like: (0, 0, 1, 2) | 252 // Our initial rect looks like: (0, 0, 1, 2) |
| 253 // p0_____ | 253 // p0_____ |
| 254 // | | | 254 // | | |
| 255 // | | | 255 // | | |
| 256 // | | | 256 // | | |
| 257 // |___| | 257 // |___| |
| 258 // When we rotate we get a rect of the form: | 258 // When we rotate we get a rect of the form: |
| 259 // p0_ | 259 // p0_ |
| 260 // / -_ | 260 // / -_ |
| 261 // / / | 261 // / / |
| 262 // / / | 262 // / / |
| 263 // -_/ | 263 // -_/ |
| 264 // So it is sensible that the minimum y is the same as for a point at 0, 0. | 264 // So it is sensible that the minimum y is the same as for a point at 0, 0. |
| 265 // The minimum x should be p0.x - 2 * sin(30deg) = p0.x - 1. | 265 // The minimum x should be p0.x - 2 * sin(30deg) = p0.x - 1. |
| 266 // That maximum x should likewise be p0.x + cos(30deg) = p0.x + 0.866. | 266 // That maximum x should likewise be p0.x + cos(30deg) = p0.x + 0.866. |
| 267 // And the maximum y should be p0.x + sin(30deg) + 2*cos(30deg) | 267 // And the maximum y should be p0.x + sin(30deg) + 2*cos(30deg) |
| 268 // = p0.y + 2.232. | 268 // = p0.y + 2.232. |
| 269 EXPECT_NEAR(69.5244f, rectFromQuad(rgm.mapToContainer(rect, nullptr)).x(), 0
.0001f); | 269 EXPECT_NEAR(69.5244f, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).x(), 0.
0001f); |
| 270 EXPECT_NEAR(-44.0237, rectFromQuad(rgm.mapToContainer(rect, nullptr)).y(), 0
.0001f); | 270 EXPECT_NEAR(-44.0237, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).y(), 0.
0001f); |
| 271 EXPECT_NEAR(1.866, rectFromQuad(rgm.mapToContainer(rect, nullptr)).width(),
0.0001f); | 271 EXPECT_NEAR(1.866, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).width(), 0
.0001f); |
| 272 EXPECT_NEAR(2.232, rectFromQuad(rgm.mapToContainer(rect, nullptr)).height(),
0.0001f); | 272 EXPECT_NEAR(2.232, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).height(),
0.0001f); |
| 273 | 273 |
| 274 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); | 274 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); |
| 275 rgmNoFrame.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); | 275 rgmNoFrame.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); |
| 276 | 276 |
| 277 rgm.pushMappingsToAncestor(getFrameElement("test_frame", webView, "InnerDiv"
), 0); | 277 rgm.pushMappingsToAncestor(getFrameElement("test_frame", webView, "InnerDiv"
), 0); |
| 278 rgmNoFrame.pushMappingsToAncestor(getFrameElement("test_frame", webView, "In
nerDiv"), 0); | 278 rgmNoFrame.pushMappingsToAncestor(getFrameElement("test_frame", webView, "In
nerDiv"), 0); |
| 279 EXPECT_EQ(FloatQuad(FloatRect(21.0f, 6.0f, 1.0f, 2.0f)), rgm.mapToContainer(
rect, getFrameLayoutContainer("test_frame", webView, "CenterDiv"))); | 279 EXPECT_EQ(FloatQuad(FloatRect(21.0f, 6.0f, 1.0f, 2.0f)), rgm.mapToAncestor(r
ect, getFrameLayoutContainer("test_frame", webView, "CenterDiv"))); |
| 280 EXPECT_EQ(FloatQuad(FloatRect(21.0f, 6.0f, 1.0f, 2.0f)), rgmNoFrame.mapToCon
tainer(rect, getFrameLayoutContainer("test_frame", webView, "CenterDiv"))); | 280 EXPECT_EQ(FloatQuad(FloatRect(21.0f, 6.0f, 1.0f, 2.0f)), rgmNoFrame.mapToAnc
estor(rect, getFrameLayoutContainer("test_frame", webView, "CenterDiv"))); |
| 281 | 281 |
| 282 rgm.pushMappingsToAncestor(getFrameElement("test_frame", webView, "OtherDiv"
), getFrameLayoutContainer("test_frame", webView, "InnerDiv")); | 282 rgm.pushMappingsToAncestor(getFrameElement("test_frame", webView, "OtherDiv"
), getFrameLayoutContainer("test_frame", webView, "InnerDiv")); |
| 283 rgmNoFrame.pushMappingsToAncestor(getFrameElement("test_frame", webView, "Ot
herDiv"), getFrameLayoutContainer("test_frame", webView, "InnerDiv")); | 283 rgmNoFrame.pushMappingsToAncestor(getFrameElement("test_frame", webView, "Ot
herDiv"), getFrameLayoutContainer("test_frame", webView, "InnerDiv")); |
| 284 EXPECT_EQ(FloatQuad(FloatRect(22.0f, 12.0f, 1.0f, 2.0f)), rgm.mapToContainer
(rect, getFrameLayoutContainer("test_frame", webView, "CenterDiv"))); | 284 EXPECT_EQ(FloatQuad(FloatRect(22.0f, 12.0f, 1.0f, 2.0f)), rgm.mapToAncestor(
rect, getFrameLayoutContainer("test_frame", webView, "CenterDiv"))); |
| 285 EXPECT_EQ(FloatQuad(FloatRect(22.0f, 12.0f, 1.0f, 2.0f)), rgmNoFrame.mapToCo
ntainer(rect, getFrameLayoutContainer("test_frame", webView, "CenterDiv"))); | 285 EXPECT_EQ(FloatQuad(FloatRect(22.0f, 12.0f, 1.0f, 2.0f)), rgmNoFrame.mapToAn
cestor(rect, getFrameLayoutContainer("test_frame", webView, "CenterDiv"))); |
| 286 | 286 |
| 287 EXPECT_EQ(FloatQuad(FloatRect(1.0f, 6.0f, 1.0f, 2.0f)), rgm.mapToContainer(r
ect, getFrameLayoutContainer("test_frame", webView, "InnerDiv"))); | 287 EXPECT_EQ(FloatQuad(FloatRect(1.0f, 6.0f, 1.0f, 2.0f)), rgm.mapToAncestor(re
ct, getFrameLayoutContainer("test_frame", webView, "InnerDiv"))); |
| 288 EXPECT_EQ(FloatQuad(FloatRect(1.0f, 6.0f, 1.0f, 2.0f)), rgmNoFrame.mapToCont
ainer(rect, getFrameLayoutContainer("test_frame", webView, "InnerDiv"))); | 288 EXPECT_EQ(FloatQuad(FloatRect(1.0f, 6.0f, 1.0f, 2.0f)), rgmNoFrame.mapToAnce
stor(rect, getFrameLayoutContainer("test_frame", webView, "InnerDiv"))); |
| 289 | 289 |
| 290 EXPECT_NEAR(87.8975f, rectFromQuad(rgm.mapToContainer(rect, nullptr)).x(), 0
.0001f); | 290 EXPECT_NEAR(87.8975f, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).x(), 0.
0001f); |
| 291 EXPECT_NEAR(8.1532f, rectFromQuad(rgm.mapToContainer(rect, nullptr)).y(), 0.
0001f); | 291 EXPECT_NEAR(8.1532f, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).y(), 0.0
001f); |
| 292 EXPECT_NEAR(1.866, rectFromQuad(rgm.mapToContainer(rect, nullptr)).width(),
0.0001f); | 292 EXPECT_NEAR(1.866, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).width(), 0
.0001f); |
| 293 EXPECT_NEAR(2.232, rectFromQuad(rgm.mapToContainer(rect, nullptr)).height(),
0.0001f); | 293 EXPECT_NEAR(2.232, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).height(),
0.0001f); |
| 294 | 294 |
| 295 EXPECT_EQ(FloatQuad(FloatRect(50.0f, 44.0f, 1.0f, 2.0f)), rgmNoFrame.mapToCo
ntainer(rect, nullptr)); | 295 EXPECT_EQ(FloatQuad(FloatRect(50.0f, 44.0f, 1.0f, 2.0f)), rgmNoFrame.mapToAn
cestor(rect, nullptr)); |
| 296 } | 296 } |
| 297 | 297 |
| 298 TEST_F(LayoutGeometryMapTest, ColumnTest) | 298 TEST_F(LayoutGeometryMapTest, ColumnTest) |
| 299 { | 299 { |
| 300 registerMockedHttpURLLoad("rgm_column_test.html"); | 300 registerMockedHttpURLLoad("rgm_column_test.html"); |
| 301 FrameTestHelpers::WebViewHelper webViewHelper; | 301 FrameTestHelpers::WebViewHelper webViewHelper; |
| 302 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_column_t
est.html", true, 0, 0); | 302 WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "rgm_column_t
est.html", true, 0, 0); |
| 303 webView->resize(WebSize(1000, 1000)); | 303 webView->resize(WebSize(1000, 1000)); |
| 304 webView->updateAllLifecyclePhases(); | 304 webView->updateAllLifecyclePhases(); |
| 305 | 305 |
| 306 // The document is 1000f wide (we resized to that size). | 306 // The document is 1000f wide (we resized to that size). |
| 307 // We have a 8px margin on either side of the document. | 307 // We have a 8px margin on either side of the document. |
| 308 // Between each column we have a 10px gap, and we have 3 columns. | 308 // Between each column we have a 10px gap, and we have 3 columns. |
| 309 // The width of a given column is (1000 - 16 - 20)/3. | 309 // The width of a given column is (1000 - 16 - 20)/3. |
| 310 // The total offset between any column and it's neighbour is width + 10px | 310 // The total offset between any column and it's neighbour is width + 10px |
| 311 // (for the gap). | 311 // (for the gap). |
| 312 float offset = (1000.0f - 16.0f - 20.0f) / 3.0f + 10.0f; | 312 float offset = (1000.0f - 16.0f - 20.0f) / 3.0f + 10.0f; |
| 313 | 313 |
| 314 LayoutGeometryMap rgm; | 314 LayoutGeometryMap rgm; |
| 315 rgm.pushMappingsToAncestor(getLayoutBox(webView, "A"), 0); | 315 rgm.pushMappingsToAncestor(getLayoutBox(webView, "A"), 0); |
| 316 FloatPoint point; | 316 FloatPoint point; |
| 317 FloatRect rect(0.0f, 0.0f, 5.0f, 3.0f); | 317 FloatRect rect(0.0f, 0.0f, 5.0f, 3.0f); |
| 318 | 318 |
| 319 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 5.0f, 3.0f)), rgm.mapToContainer(r
ect, nullptr)); | 319 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 5.0f, 3.0f)), rgm.mapToAncestor(re
ct, nullptr)); |
| 320 | 320 |
| 321 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); | 321 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); |
| 322 EXPECT_EQ(FloatQuad(FloatRect(0.0f, 0.0f, 5.0f, 3.0f)), rgm.mapToContainer(r
ect, nullptr)); | 322 EXPECT_EQ(FloatQuad(FloatRect(0.0f, 0.0f, 5.0f, 3.0f)), rgm.mapToAncestor(re
ct, nullptr)); |
| 323 | 323 |
| 324 rgm.pushMappingsToAncestor(getLayoutBox(webView, "Col1"), 0); | 324 rgm.pushMappingsToAncestor(getLayoutBox(webView, "Col1"), 0); |
| 325 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 5.0f, 3.0f)), rgm.mapToContainer(r
ect, nullptr)); | 325 EXPECT_EQ(FloatQuad(FloatRect(8.0f, 8.0f, 5.0f, 3.0f)), rgm.mapToAncestor(re
ct, nullptr)); |
| 326 | 326 |
| 327 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); | 327 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); |
| 328 rgm.pushMappingsToAncestor(getLayoutBox(webView, "Col2"), nullptr); | 328 rgm.pushMappingsToAncestor(getLayoutBox(webView, "Col2"), nullptr); |
| 329 EXPECT_NEAR(8.0f + offset, rectFromQuad(rgm.mapToContainer(rect, nullptr)).x
(), 0.1f); | 329 EXPECT_NEAR(8.0f + offset, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).x(
), 0.1f); |
| 330 EXPECT_NEAR(8.0f, rectFromQuad(rgm.mapToContainer(rect, nullptr)).y(), 0.1f)
; | 330 EXPECT_NEAR(8.0f, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).y(), 0.1f); |
| 331 EXPECT_EQ(5.0f, rectFromQuad(rgm.mapToContainer(rect, nullptr)).width()); | 331 EXPECT_EQ(5.0f, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).width()); |
| 332 EXPECT_EQ(3.0f, rectFromQuad(rgm.mapToContainer(rect, nullptr)).height()); | 332 EXPECT_EQ(3.0f, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).height()); |
| 333 | 333 |
| 334 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); | 334 rgm.popMappingsToAncestor(static_cast<PaintLayer*>(nullptr)); |
| 335 rgm.pushMappingsToAncestor(getLayoutBox(webView, "Col3"), nullptr); | 335 rgm.pushMappingsToAncestor(getLayoutBox(webView, "Col3"), nullptr); |
| 336 EXPECT_NEAR(8.0f + offset * 2.0f, rectFromQuad(rgm.mapToContainer(rect, null
ptr)).x(), 0.1f); | 336 EXPECT_NEAR(8.0f + offset * 2.0f, rectFromQuad(rgm.mapToAncestor(rect, nullp
tr)).x(), 0.1f); |
| 337 EXPECT_NEAR(8.0f, rectFromQuad(rgm.mapToContainer(rect, nullptr)).y(), 0.1f)
; | 337 EXPECT_NEAR(8.0f, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).y(), 0.1f); |
| 338 EXPECT_EQ(5.0f, rectFromQuad(rgm.mapToContainer(rect, nullptr)).width()); | 338 EXPECT_EQ(5.0f, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).width()); |
| 339 EXPECT_EQ(3.0f, rectFromQuad(rgm.mapToContainer(rect, nullptr)).height()); | 339 EXPECT_EQ(3.0f, rectFromQuad(rgm.mapToAncestor(rect, nullptr)).height()); |
| 340 | 340 |
| 341 } | 341 } |
| 342 | 342 |
| 343 } // namespace blink | 343 } // namespace blink |
| OLD | NEW |