Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: sky/engine/core/dom/Element.cpp

Issue 834693007: Remove the remaining parts of ignorePendingStylesheets and placeholder styles. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Remove comment. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/engine/core/dom/Document.cpp ('k') | sky/engine/core/dom/Range.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Peter Kelly (pmk@post.com) 4 * (C) 2001 Peter Kelly (pmk@post.com)
5 * (C) 2001 Dirk Mueller (mueller@kde.org) 5 * (C) 2001 Dirk Mueller (mueller@kde.org)
6 * (C) 2007 David Smith (catfish.man@gmail.com) 6 * (C) 2007 David Smith (catfish.man@gmail.com)
7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved. 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved.
8 * (C) 2007 Eric Seidel (eric@webkit.org) 8 * (C) 2007 Eric Seidel (eric@webkit.org)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 return toValidDirValue(getAttribute(HTMLNames::dirAttr)); 351 return toValidDirValue(getAttribute(HTMLNames::dirAttr));
352 } 352 }
353 353
354 void Element::setDir(const AtomicString& value) 354 void Element::setDir(const AtomicString& value)
355 { 355 {
356 setAttribute(HTMLNames::dirAttr, value); 356 setAttribute(HTMLNames::dirAttr, value);
357 } 357 }
358 358
359 int Element::offsetLeft() 359 int Element::offsetLeft()
360 { 360 {
361 document().updateLayoutIgnorePendingStylesheets(); 361 document().updateLayout();
362 if (RenderBoxModelObject* renderer = renderBoxModelObject()) 362 if (RenderBoxModelObject* renderer = renderBoxModelObject())
363 return renderer->offsetLeft(); 363 return renderer->offsetLeft();
364 return 0; 364 return 0;
365 } 365 }
366 366
367 int Element::offsetTop() 367 int Element::offsetTop()
368 { 368 {
369 document().updateLayoutIgnorePendingStylesheets(); 369 document().updateLayout();
370 if (RenderBoxModelObject* renderer = renderBoxModelObject()) 370 if (RenderBoxModelObject* renderer = renderBoxModelObject())
371 return renderer->pixelSnappedOffsetTop(); 371 return renderer->pixelSnappedOffsetTop();
372 return 0; 372 return 0;
373 } 373 }
374 374
375 int Element::offsetWidth() 375 int Element::offsetWidth()
376 { 376 {
377 document().updateLayoutIgnorePendingStylesheets(); 377 document().updateLayout();
378 if (RenderBoxModelObject* renderer = renderBoxModelObject()) 378 if (RenderBoxModelObject* renderer = renderBoxModelObject())
379 return renderer->pixelSnappedOffsetWidth(); 379 return renderer->pixelSnappedOffsetWidth();
380 return 0; 380 return 0;
381 } 381 }
382 382
383 int Element::offsetHeight() 383 int Element::offsetHeight()
384 { 384 {
385 document().updateLayoutIgnorePendingStylesheets(); 385 document().updateLayout();
386 if (RenderBoxModelObject* renderer = renderBoxModelObject()) 386 if (RenderBoxModelObject* renderer = renderBoxModelObject())
387 return renderer->pixelSnappedOffsetHeight(); 387 return renderer->pixelSnappedOffsetHeight();
388 return 0; 388 return 0;
389 } 389 }
390 390
391 Element* Element::offsetParent() 391 Element* Element::offsetParent()
392 { 392 {
393 document().updateLayoutIgnorePendingStylesheets(); 393 document().updateLayout();
394 if (RenderObject* renderer = this->renderer()) 394 if (RenderObject* renderer = this->renderer())
395 return renderer->offsetParent(); 395 return renderer->offsetParent();
396 return 0; 396 return 0;
397 } 397 }
398 398
399 int Element::clientLeft() 399 int Element::clientLeft()
400 { 400 {
401 document().updateLayoutIgnorePendingStylesheets(); 401 document().updateLayout();
402 402
403 if (RenderBox* renderer = renderBox()) 403 if (RenderBox* renderer = renderBox())
404 return roundToInt(renderer->clientLeft()); 404 return roundToInt(renderer->clientLeft());
405 return 0; 405 return 0;
406 } 406 }
407 407
408 int Element::clientTop() 408 int Element::clientTop()
409 { 409 {
410 document().updateLayoutIgnorePendingStylesheets(); 410 document().updateLayout();
411 411
412 if (RenderBox* renderer = renderBox()) 412 if (RenderBox* renderer = renderBox())
413 return roundToInt(renderer->clientTop()); 413 return roundToInt(renderer->clientTop());
414 return 0; 414 return 0;
415 } 415 }
416 416
417 int Element::clientWidth() 417 int Element::clientWidth()
418 { 418 {
419 document().updateLayoutIgnorePendingStylesheets(); 419 document().updateLayout();
420 420
421 // FIXME(sky): Can we just use getBoundingClientRect() instead? 421 // FIXME(sky): Can we just use getBoundingClientRect() instead?
422 if (document().documentElement() == this) { 422 if (document().documentElement() == this) {
423 if (FrameView* view = document().view()) 423 if (FrameView* view = document().view())
424 return view->layoutSize().width(); 424 return view->layoutSize().width();
425 } 425 }
426 426
427 if (RenderBox* renderer = renderBox()) 427 if (RenderBox* renderer = renderBox())
428 return renderer->pixelSnappedClientWidth(); 428 return renderer->pixelSnappedClientWidth();
429 return 0; 429 return 0;
430 } 430 }
431 431
432 int Element::clientHeight() 432 int Element::clientHeight()
433 { 433 {
434 document().updateLayoutIgnorePendingStylesheets(); 434 document().updateLayout();
435 435
436 // FIXME(sky): Can we just use getBoundingClientRect() instead? 436 // FIXME(sky): Can we just use getBoundingClientRect() instead?
437 if (document().documentElement() == this) { 437 if (document().documentElement() == this) {
438 if (FrameView* view = document().view()) 438 if (FrameView* view = document().view())
439 return view->layoutSize().height(); 439 return view->layoutSize().height();
440 } 440 }
441 441
442 if (RenderBox* renderer = renderBox()) 442 if (RenderBox* renderer = renderBox())
443 return renderer->pixelSnappedClientHeight(); 443 return renderer->pixelSnappedClientHeight();
444 return 0; 444 return 0;
445 } 445 }
446 446
447 int Element::scrollLeft() 447 int Element::scrollLeft()
448 { 448 {
449 document().updateLayoutIgnorePendingStylesheets(); 449 document().updateLayout();
450 450
451 if (document().documentElement() != this) { 451 if (document().documentElement() != this) {
452 if (RenderBox* rend = renderBox()) 452 if (RenderBox* rend = renderBox())
453 return rend->scrollLeft(); 453 return rend->scrollLeft();
454 } 454 }
455 455
456 return 0; 456 return 0;
457 } 457 }
458 458
459 int Element::scrollTop() 459 int Element::scrollTop()
460 { 460 {
461 document().updateLayoutIgnorePendingStylesheets(); 461 document().updateLayout();
462 462
463 if (document().documentElement() != this) { 463 if (document().documentElement() != this) {
464 if (RenderBox* rend = renderBox()) 464 if (RenderBox* rend = renderBox())
465 return rend->scrollTop(); 465 return rend->scrollTop();
466 } 466 }
467 467
468 return 0; 468 return 0;
469 } 469 }
470 470
471 void Element::setScrollLeft(int newLeft) 471 void Element::setScrollLeft(int newLeft)
472 { 472 {
473 document().updateLayoutIgnorePendingStylesheets(); 473 document().updateLayout();
474 474
475 if (document().documentElement() != this) { 475 if (document().documentElement() != this) {
476 if (RenderBox* rend = renderBox()) 476 if (RenderBox* rend = renderBox())
477 rend->setScrollLeft(newLeft); 477 rend->setScrollLeft(newLeft);
478 } 478 }
479 } 479 }
480 480
481 void Element::setScrollLeft(const Dictionary& scrollOptionsHorizontal, Exception State& exceptionState) 481 void Element::setScrollLeft(const Dictionary& scrollOptionsHorizontal, Exception State& exceptionState)
482 { 482 {
483 String scrollBehaviorString; 483 String scrollBehaviorString;
(...skipping 10 matching lines...) Expand all
494 exceptionState.throwTypeError("ScrollOptionsHorizontal must include an ' x' member."); 494 exceptionState.throwTypeError("ScrollOptionsHorizontal must include an ' x' member.");
495 return; 495 return;
496 } 496 }
497 497
498 // FIXME: Use scrollBehavior to decide whether to scroll smoothly or instant ly. 498 // FIXME: Use scrollBehavior to decide whether to scroll smoothly or instant ly.
499 setScrollLeft(position); 499 setScrollLeft(position);
500 } 500 }
501 501
502 void Element::setScrollTop(int newTop) 502 void Element::setScrollTop(int newTop)
503 { 503 {
504 document().updateLayoutIgnorePendingStylesheets(); 504 document().updateLayout();
505 505
506 if (document().documentElement() != this) { 506 if (document().documentElement() != this) {
507 if (RenderBox* rend = renderBox()) 507 if (RenderBox* rend = renderBox())
508 rend->setScrollTop(newTop); 508 rend->setScrollTop(newTop);
509 } 509 }
510 } 510 }
511 511
512 void Element::setScrollTop(const Dictionary& scrollOptionsVertical, ExceptionSta te& exceptionState) 512 void Element::setScrollTop(const Dictionary& scrollOptionsVertical, ExceptionSta te& exceptionState)
513 { 513 {
514 String scrollBehaviorString; 514 String scrollBehaviorString;
(...skipping 10 matching lines...) Expand all
525 exceptionState.throwTypeError("ScrollOptionsVertical must include a 'y' member."); 525 exceptionState.throwTypeError("ScrollOptionsVertical must include a 'y' member.");
526 return; 526 return;
527 } 527 }
528 528
529 // FIXME: Use scrollBehavior to decide whether to scroll smoothly or instant ly. 529 // FIXME: Use scrollBehavior to decide whether to scroll smoothly or instant ly.
530 setScrollTop(position); 530 setScrollTop(position);
531 } 531 }
532 532
533 int Element::scrollWidth() 533 int Element::scrollWidth()
534 { 534 {
535 document().updateLayoutIgnorePendingStylesheets(); 535 document().updateLayout();
536 if (RenderBox* rend = renderBox()) 536 if (RenderBox* rend = renderBox())
537 return rend->scrollWidth().toDouble(); 537 return rend->scrollWidth().toDouble();
538 return 0; 538 return 0;
539 } 539 }
540 540
541 int Element::scrollHeight() 541 int Element::scrollHeight()
542 { 542 {
543 document().updateLayoutIgnorePendingStylesheets(); 543 document().updateLayout();
544 if (RenderBox* rend = renderBox()) 544 if (RenderBox* rend = renderBox())
545 return rend->scrollHeight().toDouble(); 545 return rend->scrollHeight().toDouble();
546 return 0; 546 return 0;
547 } 547 }
548 548
549 PassRefPtr<ClientRectList> Element::getClientRects() 549 PassRefPtr<ClientRectList> Element::getClientRects()
550 { 550 {
551 document().updateLayoutIgnorePendingStylesheets(); 551 document().updateLayout();
552 552
553 RenderBoxModelObject* renderBoxModelObject = this->renderBoxModelObject(); 553 RenderBoxModelObject* renderBoxModelObject = this->renderBoxModelObject();
554 if (!renderBoxModelObject) 554 if (!renderBoxModelObject)
555 return ClientRectList::create(); 555 return ClientRectList::create();
556 556
557 // FIXME: Handle SVG elements. 557 // FIXME: Handle SVG elements.
558 // FIXME: Handle table/inline-table with a caption. 558 // FIXME: Handle table/inline-table with a caption.
559 559
560 Vector<FloatQuad> quads; 560 Vector<FloatQuad> quads;
561 renderBoxModelObject->absoluteQuads(quads); 561 renderBoxModelObject->absoluteQuads(quads);
562 document().adjustFloatQuadsForScroll(quads); 562 document().adjustFloatQuadsForScroll(quads);
563 return ClientRectList::create(quads); 563 return ClientRectList::create(quads);
564 } 564 }
565 565
566 PassRefPtr<ClientRect> Element::getBoundingClientRect() 566 PassRefPtr<ClientRect> Element::getBoundingClientRect()
567 { 567 {
568 document().updateLayoutIgnorePendingStylesheets(); 568 document().updateLayout();
569 569
570 Vector<FloatQuad> quads; 570 Vector<FloatQuad> quads;
571 // Get the bounding rectangle from the box model. 571 // Get the bounding rectangle from the box model.
572 if (renderBoxModelObject()) 572 if (renderBoxModelObject())
573 renderBoxModelObject()->absoluteQuads(quads); 573 renderBoxModelObject()->absoluteQuads(quads);
574 574
575 if (quads.isEmpty()) 575 if (quads.isEmpty())
576 return ClientRect::create(); 576 return ClientRect::create();
577 577
578 FloatRect result = quads[0].boundingBox(); 578 FloatRect result = quads[0].boundingBox();
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 { 1207 {
1208 if (!inDocument()) 1208 if (!inDocument())
1209 return; 1209 return;
1210 1210
1211 if (document().focusedElement() == this) 1211 if (document().focusedElement() == this)
1212 return; 1212 return;
1213 1213
1214 if (!document().isActive()) 1214 if (!document().isActive())
1215 return; 1215 return;
1216 1216
1217 document().updateLayoutIgnorePendingStylesheets(); 1217 document().updateLayout();
1218 if (!isFocusable()) 1218 if (!isFocusable())
1219 return; 1219 return;
1220 1220
1221 RefPtr<Node> protect(this); 1221 RefPtr<Node> protect(this);
1222 if (!document().page()->focusController().setFocusedElement(this, document() .frame(), type)) 1222 if (!document().page()->focusController().setFocusedElement(this, document() .frame(), type))
1223 return; 1223 return;
1224 1224
1225 // Setting the focused node above might have invalidated the layout due to s cripts. 1225 // Setting the focused node above might have invalidated the layout due to s cripts.
1226 document().updateLayoutIgnorePendingStylesheets(); 1226 document().updateLayout();
1227 if (!isFocusable()) 1227 if (!isFocusable())
1228 return; 1228 return;
1229 updateFocusAppearance(restorePreviousSelection); 1229 updateFocusAppearance(restorePreviousSelection);
1230 1230
1231 if (UserGestureIndicator::processedUserGestureSinceLoad()) { 1231 if (UserGestureIndicator::processedUserGestureSinceLoad()) {
1232 // Bring up the keyboard in the context of anything triggered by a user 1232 // Bring up the keyboard in the context of anything triggered by a user
1233 // gesture. Since tracking that across arbitrary boundaries (eg. 1233 // gesture. Since tracking that across arbitrary boundaries (eg.
1234 // animations) is difficult, for now we match IE's heuristic and bring 1234 // animations) is difficult, for now we match IE's heuristic and bring
1235 // up the keyboard if there's been any gesture since load. 1235 // up the keyboard if there's been any gesture since load.
1236 document().page()->chrome().client().showImeIfNeeded(); 1236 document().page()->chrome().client().showImeIfNeeded();
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
1383 // values returned for the ":selection" pseudo-element will be correct. 1383 // values returned for the ":selection" pseudo-element will be correct.
1384 if (RenderStyle* usedStyle = renderStyle()) 1384 if (RenderStyle* usedStyle = renderStyle())
1385 return usedStyle; 1385 return usedStyle;
1386 1386
1387 if (!inActiveDocument()) 1387 if (!inActiveDocument())
1388 // FIXME: Try to do better than this. Ensure that styleForElement() work s for elements that are not in the 1388 // FIXME: Try to do better than this. Ensure that styleForElement() work s for elements that are not in the
1389 // document tree and figure out when to destroy the computed style for s uch elements. 1389 // document tree and figure out when to destroy the computed style for s uch elements.
1390 return 0; 1390 return 0;
1391 1391
1392 ElementRareData& rareData = ensureElementRareData(); 1392 ElementRareData& rareData = ensureElementRareData();
1393 if (!rareData.computedStyle()) 1393 if (!rareData.computedStyle()) {
1394 rareData.setComputedStyle(document().styleForElementIgnoringPendingStyle sheets(this)); 1394 RenderStyle* parentStyle = parentNode() ? parentNode()->computedStyle() : 0;
1395 rareData.setComputedStyle(document().ensureStyleResolver().styleForEleme nt(this, parentStyle));
1396 }
1395 return rareData.computedStyle(); 1397 return rareData.computedStyle();
1396 } 1398 }
1397 1399
1398 AtomicString Element::computeInheritedLanguage() const 1400 AtomicString Element::computeInheritedLanguage() const
1399 { 1401 {
1400 const Node* n = this; 1402 const Node* n = this;
1401 AtomicString value; 1403 AtomicString value;
1402 // The language property is inherited, so we iterate over the parents to fin d the first language. 1404 // The language property is inherited, so we iterate over the parents to fin d the first language.
1403 do { 1405 do {
1404 if (n->isElementNode()) { 1406 if (n->isElementNode()) {
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
1821 return false; 1823 return false;
1822 // Turn off style sharing for elements that can gain layers for reasons outs ide of the style system. 1824 // Turn off style sharing for elements that can gain layers for reasons outs ide of the style system.
1823 // See comments in RenderObject::setStyle(). 1825 // See comments in RenderObject::setStyle().
1824 // FIXME: Why does gaining a layer from outside the style system require dis abling sharing? 1826 // FIXME: Why does gaining a layer from outside the style system require dis abling sharing?
1825 if (isHTMLCanvasElement(*this)) 1827 if (isHTMLCanvasElement(*this))
1826 return false; 1828 return false;
1827 return true; 1829 return true;
1828 } 1830 }
1829 1831
1830 } // namespace blink 1832 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/core/dom/Document.cpp ('k') | sky/engine/core/dom/Range.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698