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 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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 // Note: this (Mutable)StylePropertySet singleton has an embedded | |
457 // CSSStyleDeclaration reference (m_cssomWrapper), which is a | |
458 // ScriptWrappable (=> it can have a v8 wrapper object). Exposing | |
459 // and sharing those via static locals is unsafe, as the singleton | |
460 // really is accessible across window contexts within a renderer | |
461 // process. | |
462 // | |
463 // However, that CSSStyleDeclaration is never instantiated for these | |
464 // presentation attribute style properties, hence this singleton (and | |
465 // the ones below) are considered safe. Indicate that by disabling | |
466 // the no-ScriptWrappables-in-singletons verification check. | |
haraken
2017/02/11 10:25:20
Your analysis looks correct, but it looks better t
sof
2017/02/11 12:09:11
That could probably be done without it being too a
| |
456 DEFINE_STATIC_LOCAL(StylePropertySet, solidBorderStyle, | 467 DEFINE_STATIC_LOCAL(StylePropertySet, solidBorderStyle, |
457 (createBorderStyle(CSSValueHidden))); | 468 (createBorderStyle(CSSValueHidden)), |
469 CheckScriptWrappable::No); | |
458 return &solidBorderStyle; | 470 return &solidBorderStyle; |
459 } | 471 } |
460 return nullptr; | 472 return nullptr; |
461 } | 473 } |
462 | 474 |
463 if (m_borderColorAttr) { | 475 if (m_borderColorAttr) { |
464 DEFINE_STATIC_LOCAL(StylePropertySet, solidBorderStyle, | 476 DEFINE_STATIC_LOCAL(StylePropertySet, solidBorderStyle, |
465 (createBorderStyle(CSSValueSolid))); | 477 (createBorderStyle(CSSValueSolid)), |
478 CheckScriptWrappable::No); | |
466 return &solidBorderStyle; | 479 return &solidBorderStyle; |
467 } | 480 } |
468 DEFINE_STATIC_LOCAL(StylePropertySet, outsetBorderStyle, | 481 DEFINE_STATIC_LOCAL(StylePropertySet, outsetBorderStyle, |
469 (createBorderStyle(CSSValueOutset))); | 482 (createBorderStyle(CSSValueOutset)), |
483 CheckScriptWrappable::No); | |
470 return &outsetBorderStyle; | 484 return &outsetBorderStyle; |
471 } | 485 } |
472 | 486 |
473 HTMLTableElement::CellBorders HTMLTableElement::getCellBorders() const { | 487 HTMLTableElement::CellBorders HTMLTableElement::getCellBorders() const { |
474 switch (m_rulesAttr) { | 488 switch (m_rulesAttr) { |
475 case NoneRules: | 489 case NoneRules: |
476 case GroupsRules: | 490 case GroupsRules: |
477 return NoBorders; | 491 return NoBorders; |
478 case AllRules: | 492 case AllRules: |
479 return SolidBorders; | 493 return SolidBorders; |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
563 } | 577 } |
564 return style; | 578 return style; |
565 } | 579 } |
566 | 580 |
567 const StylePropertySet* HTMLTableElement::additionalGroupStyle(bool rows) { | 581 const StylePropertySet* HTMLTableElement::additionalGroupStyle(bool rows) { |
568 if (m_rulesAttr != GroupsRules) | 582 if (m_rulesAttr != GroupsRules) |
569 return nullptr; | 583 return nullptr; |
570 | 584 |
571 if (rows) { | 585 if (rows) { |
572 DEFINE_STATIC_LOCAL(StylePropertySet, rowBorderStyle, | 586 DEFINE_STATIC_LOCAL(StylePropertySet, rowBorderStyle, |
573 (createGroupBorderStyle(true))); | 587 (createGroupBorderStyle(true)), |
588 CheckScriptWrappable::No); | |
574 return &rowBorderStyle; | 589 return &rowBorderStyle; |
575 } | 590 } |
576 DEFINE_STATIC_LOCAL(StylePropertySet, columnBorderStyle, | 591 DEFINE_STATIC_LOCAL(StylePropertySet, columnBorderStyle, |
577 (createGroupBorderStyle(false))); | 592 (createGroupBorderStyle(false)), |
593 CheckScriptWrappable::No); | |
578 return &columnBorderStyle; | 594 return &columnBorderStyle; |
579 } | 595 } |
580 | 596 |
581 bool HTMLTableElement::isURLAttribute(const Attribute& attribute) const { | 597 bool HTMLTableElement::isURLAttribute(const Attribute& attribute) const { |
582 return attribute.name() == backgroundAttr || | 598 return attribute.name() == backgroundAttr || |
583 HTMLElement::isURLAttribute(attribute); | 599 HTMLElement::isURLAttribute(attribute); |
584 } | 600 } |
585 | 601 |
586 bool HTMLTableElement::hasLegalLinkAttribute(const QualifiedName& name) const { | 602 bool HTMLTableElement::hasLegalLinkAttribute(const QualifiedName& name) const { |
587 return name == backgroundAttr || HTMLElement::hasLegalLinkAttribute(name); | 603 return name == backgroundAttr || HTMLElement::hasLegalLinkAttribute(name); |
(...skipping 18 matching lines...) Expand all Loading... | |
606 const AtomicString& HTMLTableElement::summary() const { | 622 const AtomicString& HTMLTableElement::summary() const { |
607 return getAttribute(summaryAttr); | 623 return getAttribute(summaryAttr); |
608 } | 624 } |
609 | 625 |
610 DEFINE_TRACE(HTMLTableElement) { | 626 DEFINE_TRACE(HTMLTableElement) { |
611 visitor->trace(m_sharedCellStyle); | 627 visitor->trace(m_sharedCellStyle); |
612 HTMLElement::trace(visitor); | 628 HTMLElement::trace(visitor); |
613 } | 629 } |
614 | 630 |
615 } // namespace blink | 631 } // namespace blink |
OLD | NEW |