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 |