| OLD | NEW |
| 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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 { | 220 { |
| 221 ASSERT(hasRareData()); | 221 ASSERT(hasRareData()); |
| 222 return static_cast<ElementRareData*>(rareData()); | 222 return static_cast<ElementRareData*>(rareData()); |
| 223 } | 223 } |
| 224 | 224 |
| 225 inline ElementRareData& Element::ensureElementRareData() | 225 inline ElementRareData& Element::ensureElementRareData() |
| 226 { | 226 { |
| 227 return static_cast<ElementRareData&>(ensureRareData()); | 227 return static_cast<ElementRareData&>(ensureRareData()); |
| 228 } | 228 } |
| 229 | 229 |
| 230 bool Element::hasElementFlagInternal(ElementFlags mask) const |
| 231 { |
| 232 ASSERT(hasRareData()); |
| 233 return elementRareData()->hasFlag(mask); |
| 234 } |
| 235 |
| 236 void Element::setElementFlag(ElementFlags mask, bool value) |
| 237 { |
| 238 if (!hasRareData() && !value) |
| 239 return; |
| 240 ensureElementRareData().setFlag(mask, value); |
| 241 } |
| 242 |
| 243 void Element::clearElementFlag(ElementFlags mask) |
| 244 { |
| 245 if (!hasRareData()) |
| 246 return; |
| 247 elementRareData()->clearFlag(mask); |
| 248 } |
| 249 |
| 230 void Element::clearTabIndexExplicitlyIfNeeded() | 250 void Element::clearTabIndexExplicitlyIfNeeded() |
| 231 { | 251 { |
| 232 if (hasRareData()) | 252 if (hasRareData()) |
| 233 elementRareData()->clearTabIndexExplicitly(); | 253 elementRareData()->clearTabIndexExplicitly(); |
| 234 } | 254 } |
| 235 | 255 |
| 236 void Element::setTabIndexExplicitly(short tabIndex) | 256 void Element::setTabIndexExplicitly(short tabIndex) |
| 237 { | 257 { |
| 238 ensureElementRareData().setTabIndexExplicitly(tabIndex); | 258 ensureElementRareData().setTabIndexExplicitly(tabIndex); |
| 239 } | 259 } |
| 240 | 260 |
| 241 bool Element::supportsFocus() const | |
| 242 { | |
| 243 return hasRareData() && elementRareData()->tabIndexSetExplicitly(); | |
| 244 } | |
| 245 | |
| 246 short Element::tabIndex() const | 261 short Element::tabIndex() const |
| 247 { | 262 { |
| 248 return hasRareData() ? elementRareData()->tabIndex() : 0; | 263 return hasRareData() ? elementRareData()->tabIndex() : 0; |
| 249 } | 264 } |
| 250 | 265 |
| 251 bool Element::rendererIsFocusable() const | 266 bool Element::rendererIsFocusable() const |
| 252 { | 267 { |
| 253 // Elements in canvas fallback content are not rendered, but they are allowe
d to be | 268 // Elements in canvas fallback content are not rendered, but they are allowe
d to be |
| 254 // focusable as long as their canvas is displayed and visible. | 269 // focusable as long as their canvas is displayed and visible. |
| 255 if (isInCanvasSubtree()) { | 270 if (isInCanvasSubtree()) { |
| (...skipping 1120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1376 if (wasInDocument) { | 1391 if (wasInDocument) { |
| 1377 if (hasPendingResources()) | 1392 if (hasPendingResources()) |
| 1378 document().accessSVGExtensions().removeElementFromPendingResources(t
his); | 1393 document().accessSVGExtensions().removeElementFromPendingResources(t
his); |
| 1379 | 1394 |
| 1380 if (isUpgradedCustomElement()) | 1395 if (isUpgradedCustomElement()) |
| 1381 CustomElement::didLeaveDocument(this, insertionPoint->document()); | 1396 CustomElement::didLeaveDocument(this, insertionPoint->document()); |
| 1382 } | 1397 } |
| 1383 | 1398 |
| 1384 document().removeFromTopLayer(this); | 1399 document().removeFromTopLayer(this); |
| 1385 | 1400 |
| 1386 if (hasRareData()) | 1401 clearElementFlag(IsInCanvasSubtree); |
| 1387 elementRareData()->setIsInCanvasSubtree(false); | |
| 1388 } | 1402 } |
| 1389 | 1403 |
| 1390 void Element::attach(const AttachContext& context) | 1404 void Element::attach(const AttachContext& context) |
| 1391 { | 1405 { |
| 1392 ASSERT(document().inStyleRecalc()); | 1406 ASSERT(document().inStyleRecalc()); |
| 1393 | 1407 |
| 1394 StyleResolverParentPusher parentPusher(*this); | 1408 StyleResolverParentPusher parentPusher(*this); |
| 1395 | 1409 |
| 1396 // We've already been through detach when doing an attach, but we might | 1410 // We've already been through detach when doing an attach, but we might |
| 1397 // need to clear any state that's been added since then. | 1411 // need to clear any state that's been added since then. |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1418 parentPusher.push(); | 1432 parentPusher.push(); |
| 1419 } | 1433 } |
| 1420 | 1434 |
| 1421 ContainerNode::attach(context); | 1435 ContainerNode::attach(context); |
| 1422 | 1436 |
| 1423 createPseudoElementIfNeeded(AFTER); | 1437 createPseudoElementIfNeeded(AFTER); |
| 1424 createPseudoElementIfNeeded(BACKDROP); | 1438 createPseudoElementIfNeeded(BACKDROP); |
| 1425 | 1439 |
| 1426 if (hasRareData()) { | 1440 if (hasRareData()) { |
| 1427 ElementRareData* data = elementRareData(); | 1441 ElementRareData* data = elementRareData(); |
| 1428 if (data->needsFocusAppearanceUpdateSoonAfterAttach()) { | 1442 if (data->hasFlag(NeedsFocusAppearanceUpdateSoonAfterAttach)) { |
| 1429 if (isFocusable() && document().focusedElement() == this) | 1443 if (isFocusable() && document().focusedElement() == this) |
| 1430 document().updateFocusAppearanceSoon(false /* don't restore sele
ction */); | 1444 document().updateFocusAppearanceSoon(false /* don't restore sele
ction */); |
| 1431 data->setNeedsFocusAppearanceUpdateSoonAfterAttach(false); | 1445 data->clearFlag(NeedsFocusAppearanceUpdateSoonAfterAttach); |
| 1432 } | 1446 } |
| 1433 if (!renderer()) { | 1447 if (!renderer()) { |
| 1434 if (ActiveAnimations* activeAnimations = data->activeAnimations()) { | 1448 if (ActiveAnimations* activeAnimations = data->activeAnimations()) { |
| 1435 activeAnimations->cssAnimations().cancel(); | 1449 activeAnimations->cssAnimations().cancel(); |
| 1436 activeAnimations->setAnimationStyleChange(false); | 1450 activeAnimations->setAnimationStyleChange(false); |
| 1437 } | 1451 } |
| 1438 } | 1452 } |
| 1439 } | 1453 } |
| 1440 | 1454 |
| 1441 InspectorInstrumentation::didRecalculateStyleForElement(this); | 1455 InspectorInstrumentation::didRecalculateStyleForElement(this); |
| (...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2160 // does not make sense to continue and update appearence. | 2174 // does not make sense to continue and update appearence. |
| 2161 protect = this; | 2175 protect = this; |
| 2162 if (!page->focusController().setFocusedElement(this, doc.frame(), type)) | 2176 if (!page->focusController().setFocusedElement(this, doc.frame(), type)) |
| 2163 return; | 2177 return; |
| 2164 } | 2178 } |
| 2165 | 2179 |
| 2166 // Setting the focused node above might have invalidated the layout due to s
cripts. | 2180 // Setting the focused node above might have invalidated the layout due to s
cripts. |
| 2167 doc.updateLayoutIgnorePendingStylesheets(); | 2181 doc.updateLayoutIgnorePendingStylesheets(); |
| 2168 | 2182 |
| 2169 if (!isFocusable()) { | 2183 if (!isFocusable()) { |
| 2170 ensureElementRareData().setNeedsFocusAppearanceUpdateSoonAfterAttach(tru
e); | 2184 setElementFlag(NeedsFocusAppearanceUpdateSoonAfterAttach); |
| 2171 return; | 2185 return; |
| 2172 } | 2186 } |
| 2173 | 2187 |
| 2174 cancelFocusAppearanceUpdate(); | 2188 cancelFocusAppearanceUpdate(); |
| 2175 updateFocusAppearance(restorePreviousSelection); | 2189 updateFocusAppearance(restorePreviousSelection); |
| 2176 } | 2190 } |
| 2177 | 2191 |
| 2178 void Element::updateFocusAppearance(bool /*restorePreviousSelection*/) | 2192 void Element::updateFocusAppearance(bool /*restorePreviousSelection*/) |
| 2179 { | 2193 { |
| 2180 if (isRootEditableElement()) { | 2194 if (isRootEditableElement()) { |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2495 // FIXME: Try to do better than this. Ensure that styleForElement() work
s for elements that are not in the | 2509 // FIXME: Try to do better than this. Ensure that styleForElement() work
s for elements that are not in the |
| 2496 // document tree and figure out when to destroy the computed style for s
uch elements. | 2510 // document tree and figure out when to destroy the computed style for s
uch elements. |
| 2497 return 0; | 2511 return 0; |
| 2498 | 2512 |
| 2499 ElementRareData& rareData = ensureElementRareData(); | 2513 ElementRareData& rareData = ensureElementRareData(); |
| 2500 if (!rareData.computedStyle()) | 2514 if (!rareData.computedStyle()) |
| 2501 rareData.setComputedStyle(document().styleForElementIgnoringPendingStyle
sheets(this)); | 2515 rareData.setComputedStyle(document().styleForElementIgnoringPendingStyle
sheets(this)); |
| 2502 return pseudoElementSpecifier ? rareData.computedStyle()->getCachedPseudoSty
le(pseudoElementSpecifier) : rareData.computedStyle(); | 2516 return pseudoElementSpecifier ? rareData.computedStyle()->getCachedPseudoSty
le(pseudoElementSpecifier) : rareData.computedStyle(); |
| 2503 } | 2517 } |
| 2504 | 2518 |
| 2505 void Element::setStyleAffectedByEmpty() | |
| 2506 { | |
| 2507 ensureElementRareData().setStyleAffectedByEmpty(true); | |
| 2508 } | |
| 2509 | |
| 2510 void Element::setChildrenAffectedByFocus() | |
| 2511 { | |
| 2512 ensureElementRareData().setChildrenAffectedByFocus(true); | |
| 2513 } | |
| 2514 | |
| 2515 void Element::setChildrenAffectedByHover() | |
| 2516 { | |
| 2517 ensureElementRareData().setChildrenAffectedByHover(true); | |
| 2518 } | |
| 2519 | |
| 2520 void Element::setChildrenAffectedByActive() | |
| 2521 { | |
| 2522 ensureElementRareData().setChildrenAffectedByActive(true); | |
| 2523 } | |
| 2524 | |
| 2525 void Element::setChildrenAffectedByDrag() | |
| 2526 { | |
| 2527 ensureElementRareData().setChildrenAffectedByDrag(true); | |
| 2528 } | |
| 2529 | |
| 2530 void Element::setChildrenAffectedByFirstChildRules() | |
| 2531 { | |
| 2532 ensureElementRareData().setChildrenAffectedByFirstChildRules(true); | |
| 2533 } | |
| 2534 | |
| 2535 void Element::setChildrenAffectedByLastChildRules() | |
| 2536 { | |
| 2537 ensureElementRareData().setChildrenAffectedByLastChildRules(true); | |
| 2538 } | |
| 2539 | |
| 2540 void Element::setChildrenAffectedByDirectAdjacentRules() | |
| 2541 { | |
| 2542 ensureElementRareData().setChildrenAffectedByDirectAdjacentRules(true); | |
| 2543 } | |
| 2544 | |
| 2545 void Element::setChildrenAffectedByForwardPositionalRules() | |
| 2546 { | |
| 2547 ensureElementRareData().setChildrenAffectedByForwardPositionalRules(true); | |
| 2548 } | |
| 2549 | |
| 2550 void Element::setChildrenAffectedByBackwardPositionalRules() | |
| 2551 { | |
| 2552 ensureElementRareData().setChildrenAffectedByBackwardPositionalRules(true); | |
| 2553 } | |
| 2554 | |
| 2555 void Element::setChildIndex(unsigned index) | 2519 void Element::setChildIndex(unsigned index) |
| 2556 { | 2520 { |
| 2557 ElementRareData& rareData = ensureElementRareData(); | 2521 ElementRareData& rareData = ensureElementRareData(); |
| 2558 if (RenderStyle* style = renderStyle()) | 2522 if (RenderStyle* style = renderStyle()) |
| 2559 style->setUnique(); | 2523 style->setUnique(); |
| 2560 rareData.setChildIndex(index); | 2524 rareData.setChildIndex(index); |
| 2561 } | 2525 } |
| 2562 | 2526 |
| 2563 bool Element::childrenSupportStyleSharing() const | |
| 2564 { | |
| 2565 if (!hasRareData()) | |
| 2566 return true; | |
| 2567 return !rareDataChildrenAffectedByFocus() | |
| 2568 && !rareDataChildrenAffectedByHover() | |
| 2569 && !rareDataChildrenAffectedByActive() | |
| 2570 && !rareDataChildrenAffectedByDrag() | |
| 2571 && !rareDataChildrenAffectedByFirstChildRules() | |
| 2572 && !rareDataChildrenAffectedByLastChildRules() | |
| 2573 && !rareDataChildrenAffectedByDirectAdjacentRules() | |
| 2574 && !rareDataChildrenAffectedByForwardPositionalRules() | |
| 2575 && !rareDataChildrenAffectedByBackwardPositionalRules(); | |
| 2576 } | |
| 2577 | |
| 2578 bool Element::rareDataStyleAffectedByEmpty() const | |
| 2579 { | |
| 2580 ASSERT(hasRareData()); | |
| 2581 return elementRareData()->styleAffectedByEmpty(); | |
| 2582 } | |
| 2583 | |
| 2584 bool Element::rareDataChildrenAffectedByFocus() const | |
| 2585 { | |
| 2586 ASSERT(hasRareData()); | |
| 2587 return elementRareData()->childrenAffectedByFocus(); | |
| 2588 } | |
| 2589 | |
| 2590 bool Element::rareDataChildrenAffectedByHover() const | |
| 2591 { | |
| 2592 ASSERT(hasRareData()); | |
| 2593 return elementRareData()->childrenAffectedByHover(); | |
| 2594 } | |
| 2595 | |
| 2596 bool Element::rareDataChildrenAffectedByActive() const | |
| 2597 { | |
| 2598 ASSERT(hasRareData()); | |
| 2599 return elementRareData()->childrenAffectedByActive(); | |
| 2600 } | |
| 2601 | |
| 2602 bool Element::rareDataChildrenAffectedByDrag() const | |
| 2603 { | |
| 2604 ASSERT(hasRareData()); | |
| 2605 return elementRareData()->childrenAffectedByDrag(); | |
| 2606 } | |
| 2607 | |
| 2608 bool Element::rareDataChildrenAffectedByFirstChildRules() const | |
| 2609 { | |
| 2610 ASSERT(hasRareData()); | |
| 2611 return elementRareData()->childrenAffectedByFirstChildRules(); | |
| 2612 } | |
| 2613 | |
| 2614 bool Element::rareDataChildrenAffectedByLastChildRules() const | |
| 2615 { | |
| 2616 ASSERT(hasRareData()); | |
| 2617 return elementRareData()->childrenAffectedByLastChildRules(); | |
| 2618 } | |
| 2619 | |
| 2620 bool Element::rareDataChildrenAffectedByDirectAdjacentRules() const | |
| 2621 { | |
| 2622 ASSERT(hasRareData()); | |
| 2623 return elementRareData()->childrenAffectedByDirectAdjacentRules(); | |
| 2624 } | |
| 2625 | |
| 2626 bool Element::rareDataChildrenAffectedByForwardPositionalRules() const | |
| 2627 { | |
| 2628 ASSERT(hasRareData()); | |
| 2629 return elementRareData()->childrenAffectedByForwardPositionalRules(); | |
| 2630 } | |
| 2631 | |
| 2632 bool Element::rareDataChildrenAffectedByBackwardPositionalRules() const | |
| 2633 { | |
| 2634 ASSERT(hasRareData()); | |
| 2635 return elementRareData()->childrenAffectedByBackwardPositionalRules(); | |
| 2636 } | |
| 2637 | |
| 2638 unsigned Element::rareDataChildIndex() const | 2527 unsigned Element::rareDataChildIndex() const |
| 2639 { | 2528 { |
| 2640 ASSERT(hasRareData()); | 2529 ASSERT(hasRareData()); |
| 2641 return elementRareData()->childIndex(); | 2530 return elementRareData()->childIndex(); |
| 2642 } | 2531 } |
| 2643 | 2532 |
| 2644 void Element::setIsInCanvasSubtree(bool isInCanvasSubtree) | |
| 2645 { | |
| 2646 ensureElementRareData().setIsInCanvasSubtree(isInCanvasSubtree); | |
| 2647 } | |
| 2648 | |
| 2649 bool Element::isInCanvasSubtree() const | |
| 2650 { | |
| 2651 return hasRareData() && elementRareData()->isInCanvasSubtree(); | |
| 2652 } | |
| 2653 | |
| 2654 AtomicString Element::computeInheritedLanguage() const | 2533 AtomicString Element::computeInheritedLanguage() const |
| 2655 { | 2534 { |
| 2656 const Node* n = this; | 2535 const Node* n = this; |
| 2657 AtomicString value; | 2536 AtomicString value; |
| 2658 // The language property is inherited, so we iterate over the parents to fin
d the first language. | 2537 // The language property is inherited, so we iterate over the parents to fin
d the first language. |
| 2659 do { | 2538 do { |
| 2660 if (n->isElementNode()) { | 2539 if (n->isElementNode()) { |
| 2661 if (const ElementData* elementData = toElement(n)->elementData()) { | 2540 if (const ElementData* elementData = toElement(n)->elementData()) { |
| 2662 // Spec: xml:lang takes precedence -- http://www.w3.org/TR/xhtml
1/#C_7 | 2541 // Spec: xml:lang takes precedence -- http://www.w3.org/TR/xhtml
1/#C_7 |
| 2663 if (const Attribute* attribute = elementData->getAttributeItem(X
MLNames::langAttr)) | 2542 if (const Attribute* attribute = elementData->getAttributeItem(X
MLNames::langAttr)) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2677 } | 2556 } |
| 2678 | 2557 |
| 2679 Locale& Element::locale() const | 2558 Locale& Element::locale() const |
| 2680 { | 2559 { |
| 2681 return document().getCachedLocale(computeInheritedLanguage()); | 2560 return document().getCachedLocale(computeInheritedLanguage()); |
| 2682 } | 2561 } |
| 2683 | 2562 |
| 2684 void Element::cancelFocusAppearanceUpdate() | 2563 void Element::cancelFocusAppearanceUpdate() |
| 2685 { | 2564 { |
| 2686 if (hasRareData()) | 2565 if (hasRareData()) |
| 2687 elementRareData()->setNeedsFocusAppearanceUpdateSoonAfterAttach(false); | 2566 clearElementFlag(NeedsFocusAppearanceUpdateSoonAfterAttach); |
| 2688 if (document().focusedElement() == this) | 2567 if (document().focusedElement() == this) |
| 2689 document().cancelFocusAppearanceUpdate(); | 2568 document().cancelFocusAppearanceUpdate(); |
| 2690 } | 2569 } |
| 2691 | 2570 |
| 2692 void Element::normalizeAttributes() | 2571 void Element::normalizeAttributes() |
| 2693 { | 2572 { |
| 2694 if (!hasAttributes()) | 2573 if (!hasAttributes()) |
| 2695 return; | 2574 return; |
| 2696 // attributeCount() cannot be cached before the loop because the attributes | 2575 // attributeCount() cannot be cached before the loop because the attributes |
| 2697 // list is altered while iterating. | 2576 // list is altered while iterating. |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2846 void Element::webkitRequestFullscreen() | 2725 void Element::webkitRequestFullscreen() |
| 2847 { | 2726 { |
| 2848 FullscreenElementStack::from(document()).requestFullScreenForElement(this, A
LLOW_KEYBOARD_INPUT, FullscreenElementStack::EnforceIFrameAllowFullScreenRequire
ment); | 2727 FullscreenElementStack::from(document()).requestFullScreenForElement(this, A
LLOW_KEYBOARD_INPUT, FullscreenElementStack::EnforceIFrameAllowFullScreenRequire
ment); |
| 2849 } | 2728 } |
| 2850 | 2729 |
| 2851 void Element::webkitRequestFullScreen(unsigned short flags) | 2730 void Element::webkitRequestFullScreen(unsigned short flags) |
| 2852 { | 2731 { |
| 2853 FullscreenElementStack::from(document()).requestFullScreenForElement(this, (
flags | LEGACY_MOZILLA_REQUEST), FullscreenElementStack::EnforceIFrameAllowFullS
creenRequirement); | 2732 FullscreenElementStack::from(document()).requestFullScreenForElement(this, (
flags | LEGACY_MOZILLA_REQUEST), FullscreenElementStack::EnforceIFrameAllowFullS
creenRequirement); |
| 2854 } | 2733 } |
| 2855 | 2734 |
| 2856 bool Element::containsFullScreenElement() const | |
| 2857 { | |
| 2858 return hasRareData() && elementRareData()->containsFullScreenElement(); | |
| 2859 } | |
| 2860 | |
| 2861 void Element::setContainsFullScreenElement(bool flag) | 2735 void Element::setContainsFullScreenElement(bool flag) |
| 2862 { | 2736 { |
| 2863 ensureElementRareData().setContainsFullScreenElement(flag); | 2737 setElementFlag(ContainsFullScreenElement, flag); |
| 2864 setNeedsStyleRecalc(SubtreeStyleChange); | 2738 setNeedsStyleRecalc(SubtreeStyleChange); |
| 2865 } | 2739 } |
| 2866 | 2740 |
| 2867 static Element* parentCrossingFrameBoundaries(Element* element) | 2741 static Element* parentCrossingFrameBoundaries(Element* element) |
| 2868 { | 2742 { |
| 2869 ASSERT(element); | 2743 ASSERT(element); |
| 2870 return element->parentElement() ? element->parentElement() : element->docume
nt().ownerElement(); | 2744 return element->parentElement() ? element->parentElement() : element->docume
nt().ownerElement(); |
| 2871 } | 2745 } |
| 2872 | 2746 |
| 2873 void Element::setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(boo
l flag) | 2747 void Element::setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(boo
l flag) |
| 2874 { | 2748 { |
| 2875 Element* element = this; | 2749 Element* element = this; |
| 2876 while ((element = parentCrossingFrameBoundaries(element))) | 2750 while ((element = parentCrossingFrameBoundaries(element))) |
| 2877 element->setContainsFullScreenElement(flag); | 2751 element->setContainsFullScreenElement(flag); |
| 2878 } | 2752 } |
| 2879 | 2753 |
| 2880 bool Element::isInTopLayer() const | |
| 2881 { | |
| 2882 return hasRareData() && elementRareData()->isInTopLayer(); | |
| 2883 } | |
| 2884 | |
| 2885 void Element::setIsInTopLayer(bool inTopLayer) | 2754 void Element::setIsInTopLayer(bool inTopLayer) |
| 2886 { | 2755 { |
| 2887 if (isInTopLayer() == inTopLayer) | 2756 if (isInTopLayer() == inTopLayer) |
| 2888 return; | 2757 return; |
| 2889 ensureElementRareData().setIsInTopLayer(inTopLayer); | 2758 setElementFlag(IsInTopLayer, inTopLayer); |
| 2890 | 2759 |
| 2891 // We must ensure a reattach occurs so the renderer is inserted in the corre
ct sibling order under RenderView according to its | 2760 // We must ensure a reattach occurs so the renderer is inserted in the corre
ct sibling order under RenderView according to its |
| 2892 // top layer position, or in its usual place if not in the top layer. | 2761 // top layer position, or in its usual place if not in the top layer. |
| 2893 lazyReattachIfAttached(); | 2762 lazyReattachIfAttached(); |
| 2894 } | 2763 } |
| 2895 | 2764 |
| 2896 void Element::webkitRequestPointerLock() | 2765 void Element::webkitRequestPointerLock() |
| 2897 { | 2766 { |
| 2898 if (document().page()) | 2767 if (document().page()) |
| 2899 document().page()->pointerLockController().requestPointerLock(this); | 2768 document().page()->pointerLockController().requestPointerLock(this); |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3307 InputMethodContext& Element::inputMethodContext() | 3176 InputMethodContext& Element::inputMethodContext() |
| 3308 { | 3177 { |
| 3309 return ensureElementRareData().ensureInputMethodContext(toHTMLElement(this))
; | 3178 return ensureElementRareData().ensureInputMethodContext(toHTMLElement(this))
; |
| 3310 } | 3179 } |
| 3311 | 3180 |
| 3312 bool Element::hasInputMethodContext() const | 3181 bool Element::hasInputMethodContext() const |
| 3313 { | 3182 { |
| 3314 return hasRareData() && elementRareData()->hasInputMethodContext(); | 3183 return hasRareData() && elementRareData()->hasInputMethodContext(); |
| 3315 } | 3184 } |
| 3316 | 3185 |
| 3317 bool Element::hasPendingResources() const | |
| 3318 { | |
| 3319 return hasRareData() && elementRareData()->hasPendingResources(); | |
| 3320 } | |
| 3321 | |
| 3322 void Element::setHasPendingResources() | |
| 3323 { | |
| 3324 ensureElementRareData().setHasPendingResources(true); | |
| 3325 } | |
| 3326 | |
| 3327 void Element::clearHasPendingResources() | |
| 3328 { | |
| 3329 ensureElementRareData().setHasPendingResources(false); | |
| 3330 } | |
| 3331 | |
| 3332 void Element::synchronizeStyleAttributeInternal() const | 3186 void Element::synchronizeStyleAttributeInternal() const |
| 3333 { | 3187 { |
| 3334 ASSERT(isStyledElement()); | 3188 ASSERT(isStyledElement()); |
| 3335 ASSERT(elementData()); | 3189 ASSERT(elementData()); |
| 3336 ASSERT(elementData()->m_styleAttributeIsDirty); | 3190 ASSERT(elementData()->m_styleAttributeIsDirty); |
| 3337 elementData()->m_styleAttributeIsDirty = false; | 3191 elementData()->m_styleAttributeIsDirty = false; |
| 3338 const StylePropertySet* inlineStyle = this->inlineStyle(); | 3192 const StylePropertySet* inlineStyle = this->inlineStyle(); |
| 3339 const_cast<Element*>(this)->setSynchronizedLazyAttribute(styleAttr, | 3193 const_cast<Element*>(this)->setSynchronizedLazyAttribute(styleAttr, |
| 3340 inlineStyle ? AtomicString(inlineStyle->asText()) : nullAtom); | 3194 inlineStyle ? AtomicString(inlineStyle->asText()) : nullAtom); |
| 3341 } | 3195 } |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3540 // Before doing so, we need to resolve issues in HTMLSelectElement::recalcLi
stItems | 3394 // Before doing so, we need to resolve issues in HTMLSelectElement::recalcLi
stItems |
| 3541 // and RenderMenuList::setText. See also https://bugs.webkit.org/show_bug.cg
i?id=88405 | 3395 // and RenderMenuList::setText. See also https://bugs.webkit.org/show_bug.cg
i?id=88405 |
| 3542 if (isHTMLOptionElement(*this) || isHTMLOptGroupElement(*this)) | 3396 if (isHTMLOptionElement(*this) || isHTMLOptGroupElement(*this)) |
| 3543 return false; | 3397 return false; |
| 3544 if (FullscreenElementStack::isActiveFullScreenElement(this)) | 3398 if (FullscreenElementStack::isActiveFullScreenElement(this)) |
| 3545 return false; | 3399 return false; |
| 3546 return true; | 3400 return true; |
| 3547 } | 3401 } |
| 3548 | 3402 |
| 3549 } // namespace WebCore | 3403 } // namespace WebCore |
| OLD | NEW |