| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) | 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) |
| 3 * (C) 1997 Torben Weis (weis@kde.org) | 3 * (C) 1997 Torben Weis (weis@kde.org) |
| 4 * (C) 1998 Waldo Bastian (bastian@kde.org) | 4 * (C) 1998 Waldo Bastian (bastian@kde.org) |
| 5 * (C) 1999 Lars Knoll (knoll@kde.org) | 5 * (C) 1999 Lars Knoll (knoll@kde.org) |
| 6 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 6 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2010, 2011 Apple Inc. All rights | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2010, 2011 Apple Inc. All rights |
| 8 * reserved. | 8 * reserved. |
| 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 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 } else { | 427 } else { |
| 428 HTMLElement::parseAttribute(params); | 428 HTMLElement::parseAttribute(params); |
| 429 } | 429 } |
| 430 | 430 |
| 431 if (bordersBefore != getCellBorders() || oldPadding != m_padding) { | 431 if (bordersBefore != getCellBorders() || oldPadding != m_padding) { |
| 432 m_sharedCellStyle = nullptr; | 432 m_sharedCellStyle = nullptr; |
| 433 setNeedsTableStyleRecalc(); | 433 setNeedsTableStyleRecalc(); |
| 434 } | 434 } |
| 435 } | 435 } |
| 436 | 436 |
| 437 static StylePropertySet* createBorderStyle(CSSValueID value) { | 437 static MutableStylePropertySet* createBorderStyle(CSSValueID value) { |
| 438 MutableStylePropertySet* style = | 438 MutableStylePropertySet* style = |
| 439 MutableStylePropertySet::create(HTMLQuirksMode); | 439 MutableStylePropertySet::create(HTMLQuirksMode); |
| 440 style->setProperty(CSSPropertyBorderTopStyle, value); | 440 style->setProperty(CSSPropertyBorderTopStyle, value); |
| 441 style->setProperty(CSSPropertyBorderBottomStyle, value); | 441 style->setProperty(CSSPropertyBorderBottomStyle, value); |
| 442 style->setProperty(CSSPropertyBorderLeftStyle, value); | 442 style->setProperty(CSSPropertyBorderLeftStyle, value); |
| 443 style->setProperty(CSSPropertyBorderRightStyle, value); | 443 style->setProperty(CSSPropertyBorderRightStyle, value); |
| 444 return style; | 444 return style; |
| 445 } | 445 } |
| 446 | 446 |
| 447 const StylePropertySet* | 447 const StylePropertySet* |
| 448 HTMLTableElement::additionalPresentationAttributeStyle() { | 448 HTMLTableElement::additionalPresentationAttributeStyle() { |
| 449 if (m_frameAttr) | 449 if (m_frameAttr) |
| 450 return nullptr; | 450 return nullptr; |
| 451 | 451 |
| 452 if (!m_borderAttr && !m_borderColorAttr) { | 452 if (!m_borderAttr && !m_borderColorAttr) { |
| 453 // Setting the border to 'hidden' allows it to win over any border | 453 // Setting the border to 'hidden' allows it to win over any border |
| 454 // set on the table's cells during border-conflict resolution. | 454 // set on the table's cells during border-conflict resolution. |
| 455 if (m_rulesAttr != UnsetRules) { | 455 if (m_rulesAttr != UnsetRules) { |
| 456 DEFINE_STATIC_LOCAL(StylePropertySet, solidBorderStyle, | 456 ALLOW_UNSAFE_SINGLETON() |
| 457 DEFINE_STATIC_LOCAL(MutableStylePropertySet, solidBorderStyle, |
| 457 (createBorderStyle(CSSValueHidden))); | 458 (createBorderStyle(CSSValueHidden))); |
| 458 return &solidBorderStyle; | 459 return &solidBorderStyle; |
| 459 } | 460 } |
| 460 return nullptr; | 461 return nullptr; |
| 461 } | 462 } |
| 462 | 463 |
| 463 if (m_borderColorAttr) { | 464 if (m_borderColorAttr) { |
| 464 DEFINE_STATIC_LOCAL(StylePropertySet, solidBorderStyle, | 465 ALLOW_UNSAFE_SINGLETON() |
| 466 DEFINE_STATIC_LOCAL(MutableStylePropertySet, solidBorderStyle, |
| 465 (createBorderStyle(CSSValueSolid))); | 467 (createBorderStyle(CSSValueSolid))); |
| 466 return &solidBorderStyle; | 468 return &solidBorderStyle; |
| 467 } | 469 } |
| 468 DEFINE_STATIC_LOCAL(StylePropertySet, outsetBorderStyle, | 470 ALLOW_UNSAFE_SINGLETON() |
| 471 DEFINE_STATIC_LOCAL(MutableStylePropertySet, outsetBorderStyle, |
| 469 (createBorderStyle(CSSValueOutset))); | 472 (createBorderStyle(CSSValueOutset))); |
| 470 return &outsetBorderStyle; | 473 return &outsetBorderStyle; |
| 471 } | 474 } |
| 472 | 475 |
| 473 HTMLTableElement::CellBorders HTMLTableElement::getCellBorders() const { | 476 HTMLTableElement::CellBorders HTMLTableElement::getCellBorders() const { |
| 474 switch (m_rulesAttr) { | 477 switch (m_rulesAttr) { |
| 475 case NoneRules: | 478 case NoneRules: |
| 476 case GroupsRules: | 479 case GroupsRules: |
| 477 return NoBorders; | 480 return NoBorders; |
| 478 case AllRules: | 481 case AllRules: |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 | 543 |
| 541 return style; | 544 return style; |
| 542 } | 545 } |
| 543 | 546 |
| 544 const StylePropertySet* HTMLTableElement::additionalCellStyle() { | 547 const StylePropertySet* HTMLTableElement::additionalCellStyle() { |
| 545 if (!m_sharedCellStyle) | 548 if (!m_sharedCellStyle) |
| 546 m_sharedCellStyle = createSharedCellStyle(); | 549 m_sharedCellStyle = createSharedCellStyle(); |
| 547 return m_sharedCellStyle.get(); | 550 return m_sharedCellStyle.get(); |
| 548 } | 551 } |
| 549 | 552 |
| 550 static StylePropertySet* createGroupBorderStyle(int rows) { | 553 static MutableStylePropertySet* createGroupBorderStyle(int rows) { |
| 551 MutableStylePropertySet* style = | 554 MutableStylePropertySet* style = |
| 552 MutableStylePropertySet::create(HTMLQuirksMode); | 555 MutableStylePropertySet::create(HTMLQuirksMode); |
| 553 if (rows) { | 556 if (rows) { |
| 554 style->setProperty(CSSPropertyBorderTopWidth, CSSValueThin); | 557 style->setProperty(CSSPropertyBorderTopWidth, CSSValueThin); |
| 555 style->setProperty(CSSPropertyBorderBottomWidth, CSSValueThin); | 558 style->setProperty(CSSPropertyBorderBottomWidth, CSSValueThin); |
| 556 style->setProperty(CSSPropertyBorderTopStyle, CSSValueSolid); | 559 style->setProperty(CSSPropertyBorderTopStyle, CSSValueSolid); |
| 557 style->setProperty(CSSPropertyBorderBottomStyle, CSSValueSolid); | 560 style->setProperty(CSSPropertyBorderBottomStyle, CSSValueSolid); |
| 558 } else { | 561 } else { |
| 559 style->setProperty(CSSPropertyBorderLeftWidth, CSSValueThin); | 562 style->setProperty(CSSPropertyBorderLeftWidth, CSSValueThin); |
| 560 style->setProperty(CSSPropertyBorderRightWidth, CSSValueThin); | 563 style->setProperty(CSSPropertyBorderRightWidth, CSSValueThin); |
| 561 style->setProperty(CSSPropertyBorderLeftStyle, CSSValueSolid); | 564 style->setProperty(CSSPropertyBorderLeftStyle, CSSValueSolid); |
| 562 style->setProperty(CSSPropertyBorderRightStyle, CSSValueSolid); | 565 style->setProperty(CSSPropertyBorderRightStyle, CSSValueSolid); |
| 563 } | 566 } |
| 564 return style; | 567 return style; |
| 565 } | 568 } |
| 566 | 569 |
| 567 const StylePropertySet* HTMLTableElement::additionalGroupStyle(bool rows) { | 570 const StylePropertySet* HTMLTableElement::additionalGroupStyle(bool rows) { |
| 568 if (m_rulesAttr != GroupsRules) | 571 if (m_rulesAttr != GroupsRules) |
| 569 return nullptr; | 572 return nullptr; |
| 570 | 573 |
| 571 if (rows) { | 574 if (rows) { |
| 572 DEFINE_STATIC_LOCAL(StylePropertySet, rowBorderStyle, | 575 ALLOW_UNSAFE_SINGLETON() |
| 576 DEFINE_STATIC_LOCAL(MutableStylePropertySet, rowBorderStyle, |
| 573 (createGroupBorderStyle(true))); | 577 (createGroupBorderStyle(true))); |
| 574 return &rowBorderStyle; | 578 return &rowBorderStyle; |
| 575 } | 579 } |
| 576 DEFINE_STATIC_LOCAL(StylePropertySet, columnBorderStyle, | 580 ALLOW_UNSAFE_SINGLETON() |
| 581 DEFINE_STATIC_LOCAL(MutableStylePropertySet, columnBorderStyle, |
| 577 (createGroupBorderStyle(false))); | 582 (createGroupBorderStyle(false))); |
| 578 return &columnBorderStyle; | 583 return &columnBorderStyle; |
| 579 } | 584 } |
| 580 | 585 |
| 581 bool HTMLTableElement::isURLAttribute(const Attribute& attribute) const { | 586 bool HTMLTableElement::isURLAttribute(const Attribute& attribute) const { |
| 582 return attribute.name() == backgroundAttr || | 587 return attribute.name() == backgroundAttr || |
| 583 HTMLElement::isURLAttribute(attribute); | 588 HTMLElement::isURLAttribute(attribute); |
| 584 } | 589 } |
| 585 | 590 |
| 586 bool HTMLTableElement::hasLegalLinkAttribute(const QualifiedName& name) const { | 591 bool HTMLTableElement::hasLegalLinkAttribute(const QualifiedName& name) const { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 606 const AtomicString& HTMLTableElement::summary() const { | 611 const AtomicString& HTMLTableElement::summary() const { |
| 607 return getAttribute(summaryAttr); | 612 return getAttribute(summaryAttr); |
| 608 } | 613 } |
| 609 | 614 |
| 610 DEFINE_TRACE(HTMLTableElement) { | 615 DEFINE_TRACE(HTMLTableElement) { |
| 611 visitor->trace(m_sharedCellStyle); | 616 visitor->trace(m_sharedCellStyle); |
| 612 HTMLElement::trace(visitor); | 617 HTMLElement::trace(visitor); |
| 613 } | 618 } |
| 614 | 619 |
| 615 } // namespace blink | 620 } // namespace blink |
| OLD | NEW |