OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/page/PrintContext.h" | 5 #include "core/page/PrintContext.h" |
6 | 6 |
7 #include "core/dom/Document.h" | 7 #include "core/dom/Document.h" |
8 #include "core/frame/FrameView.h" | 8 #include "core/frame/FrameView.h" |
9 #include "core/html/HTMLElement.h" | 9 #include "core/html/HTMLElement.h" |
10 #include "core/layout/LayoutTestHelper.h" | 10 #include "core/layout/LayoutTestHelper.h" |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 "<img style='width: 200px; height: 100px'>")); | 294 "<img style='width: 200px; height: 100px'>")); |
295 printSinglePage(canvas); | 295 printSinglePage(canvas); |
296 | 296 |
297 const Vector<MockCanvas::Operation>& operations = canvas.recordedOperations(); | 297 const Vector<MockCanvas::Operation>& operations = canvas.recordedOperations(); |
298 ASSERT_EQ(1u, operations.size()); | 298 ASSERT_EQ(1u, operations.size()); |
299 EXPECT_EQ(MockCanvas::DrawRect, operations[0].type); | 299 EXPECT_EQ(MockCanvas::DrawRect, operations[0].type); |
300 EXPECT_SKRECT_EQ(50, 60, 200, 100, operations[0].rect); | 300 EXPECT_SKRECT_EQ(50, 60, 200, 100, operations[0].rect); |
301 } | 301 } |
302 | 302 |
303 TEST_F(PrintContextFrameTest, WithSubframe) { | 303 TEST_F(PrintContextFrameTest, WithSubframe) { |
304 MockCanvas canvas; | 304 setChildFrameHTML( |
| 305 absoluteBlockHtmlForLink(50, 60, 70, 80, "#fragment") + |
| 306 absoluteBlockHtmlForLink(150, 160, 170, 180, "http://www.google.com") + |
| 307 absoluteBlockHtmlForLink(250, 260, 270, 280, |
| 308 "http://www.google.com#fragment")); |
| 309 |
305 document().setBaseURLOverride(KURL(ParsedURLString, "http://a.com/")); | 310 document().setBaseURLOverride(KURL(ParsedURLString, "http://a.com/")); |
306 setBodyInnerHTML( | 311 setBodyInnerHTML( |
307 "<style>::-webkit-scrollbar { display: none }</style>" | 312 "<style>::-webkit-scrollbar { display: none }</style>" |
308 "<iframe id='frame' src='http://b.com/' width='500' height='500'" | 313 "<iframe src='http://b.com/' width='500' height='500'" |
309 " style='border-width: 5px; margin: 5px; position: absolute; top: 90px; " | 314 " style='border-width: 5px; margin: 5px; position: absolute; top: 90px; " |
310 "left: 90px'></iframe>"); | 315 "left: 90px'></iframe>"); |
311 | 316 |
312 setupChildIframe( | 317 MockCanvas canvas; |
313 "frame", absoluteBlockHtmlForLink(50, 60, 70, 80, "#fragment") + | |
314 absoluteBlockHtmlForLink(150, 160, 170, 180, | |
315 "http://www.google.com") + | |
316 absoluteBlockHtmlForLink(250, 260, 270, 280, | |
317 "http://www.google.com#fragment")); | |
318 | |
319 printSinglePage(canvas); | 318 printSinglePage(canvas); |
320 | 319 |
321 const Vector<MockCanvas::Operation>& operations = canvas.recordedOperations(); | 320 const Vector<MockCanvas::Operation>& operations = canvas.recordedOperations(); |
322 ASSERT_EQ(2u, operations.size()); | 321 ASSERT_EQ(2u, operations.size()); |
323 EXPECT_EQ(MockCanvas::DrawRect, operations[0].type); | 322 EXPECT_EQ(MockCanvas::DrawRect, operations[0].type); |
324 EXPECT_SKRECT_EQ(250, 260, 170, 180, operations[0].rect); | 323 EXPECT_SKRECT_EQ(250, 260, 170, 180, operations[0].rect); |
325 EXPECT_EQ(MockCanvas::DrawRect, operations[1].type); | 324 EXPECT_EQ(MockCanvas::DrawRect, operations[1].type); |
326 EXPECT_SKRECT_EQ(350, 360, 270, 280, operations[1].rect); | 325 EXPECT_SKRECT_EQ(350, 360, 270, 280, operations[1].rect); |
327 } | 326 } |
328 | 327 |
329 TEST_F(PrintContextFrameTest, WithScrolledSubframe) { | 328 TEST_F(PrintContextFrameTest, WithScrolledSubframe) { |
330 MockCanvas canvas; | 329 setChildFrameHTML( |
| 330 absoluteBlockHtmlForLink(10, 10, 20, 20, "http://invisible.com") + |
| 331 absoluteBlockHtmlForLink(50, 60, 70, 80, "http://partly.visible.com") + |
| 332 absoluteBlockHtmlForLink(150, 160, 170, 180, "http://www.google.com") + |
| 333 absoluteBlockHtmlForLink(250, 260, 270, 280, |
| 334 "http://www.google.com#fragment") + |
| 335 absoluteBlockHtmlForLink(850, 860, 70, 80, |
| 336 "http://another.invisible.com")); |
331 document().setBaseURLOverride(KURL(ParsedURLString, "http://a.com/")); | 337 document().setBaseURLOverride(KURL(ParsedURLString, "http://a.com/")); |
332 setBodyInnerHTML( | 338 setBodyInnerHTML( |
333 "<style>::-webkit-scrollbar { display: none }</style>" | 339 "<style>::-webkit-scrollbar { display: none }</style>" |
334 "<iframe id='frame' src='http://b.com/' width='500' height='500'" | 340 "<iframe src='http://b.com/' width='500' height='500'" |
335 " style='border-width: 5px; margin: 5px; position: absolute; top: 90px; " | 341 " style='border-width: 5px; margin: 5px; position: absolute; top: 90px; " |
336 "left: 90px'></iframe>"); | 342 "left: 90px'></iframe>"); |
337 | 343 |
338 Document& frameDocument = setupChildIframe( | 344 childDocument().domWindow()->scrollTo(100, 100); |
339 "frame", | |
340 absoluteBlockHtmlForLink(10, 10, 20, 20, "http://invisible.com") + | |
341 absoluteBlockHtmlForLink(50, 60, 70, 80, | |
342 "http://partly.visible.com") + | |
343 absoluteBlockHtmlForLink(150, 160, 170, 180, | |
344 "http://www.google.com") + | |
345 absoluteBlockHtmlForLink(250, 260, 270, 280, | |
346 "http://www.google.com#fragment") + | |
347 absoluteBlockHtmlForLink(850, 860, 70, 80, | |
348 "http://another.invisible.com")); | |
349 | 345 |
350 frameDocument.domWindow()->scrollTo(100, 100); | 346 MockCanvas canvas; |
351 | |
352 printSinglePage(canvas); | 347 printSinglePage(canvas); |
353 | 348 |
354 const Vector<MockCanvas::Operation>& operations = canvas.recordedOperations(); | 349 const Vector<MockCanvas::Operation>& operations = canvas.recordedOperations(); |
355 ASSERT_EQ(3u, operations.size()); | 350 ASSERT_EQ(3u, operations.size()); |
356 EXPECT_EQ(MockCanvas::DrawRect, operations[0].type); | 351 EXPECT_EQ(MockCanvas::DrawRect, operations[0].type); |
357 EXPECT_SKRECT_EQ(50, 60, 70, 80, | 352 EXPECT_SKRECT_EQ(50, 60, 70, 80, |
358 operations[0].rect); // FIXME: the rect should be clipped. | 353 operations[0].rect); // FIXME: the rect should be clipped. |
359 EXPECT_EQ(MockCanvas::DrawRect, operations[1].type); | 354 EXPECT_EQ(MockCanvas::DrawRect, operations[1].type); |
360 EXPECT_SKRECT_EQ(150, 160, 170, 180, operations[1].rect); | 355 EXPECT_SKRECT_EQ(150, 160, 170, 180, operations[1].rect); |
361 EXPECT_EQ(MockCanvas::DrawRect, operations[2].type); | 356 EXPECT_EQ(MockCanvas::DrawRect, operations[2].type); |
362 EXPECT_SKRECT_EQ(250, 260, 270, 280, operations[2].rect); | 357 EXPECT_SKRECT_EQ(250, 260, 270, 280, operations[2].rect); |
363 } | 358 } |
364 | 359 |
365 } // namespace blink | 360 } // namespace blink |
OLD | NEW |