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

Side by Side Diff: Source/core/css/CSSComputedStyleDeclaration.cpp

Issue 1164573002: CSSValue Immediates: Change CSSValue to an object instead of a pointer (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: (Hopefully) Builds with oilpan now Created 5 years, 6 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org>
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
6 * Copyright (C) 2011 Sencha, Inc. All rights reserved. 6 * Copyright (C) 2011 Sencha, Inc. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public 9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 ASSERT_ARG(keywordSize, keywordSize); 402 ASSERT_ARG(keywordSize, keywordSize);
403 ASSERT_ARG(keywordSize, keywordSize <= 8); 403 ASSERT_ARG(keywordSize, keywordSize <= 8);
404 return static_cast<CSSValueID>(CSSValueXxSmall + keywordSize - 1); 404 return static_cast<CSSValueID>(CSSValueXxSmall + keywordSize - 1);
405 } 405 }
406 406
407 inline static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> zoomAdjustedPixelValue(d ouble value, const ComputedStyle& style) 407 inline static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> zoomAdjustedPixelValue(d ouble value, const ComputedStyle& style)
408 { 408 {
409 return cssValuePool().createValue(adjustFloatForAbsoluteZoom(value, style), CSSPrimitiveValue::CSS_PX); 409 return cssValuePool().createValue(adjustFloatForAbsoluteZoom(value, style), CSSPrimitiveValue::CSS_PX);
410 } 410 }
411 411
412 PassRefPtrWillBeRawPtr<CSSValue> CSSComputedStyleDeclaration::getFontSizeCSSValu ePreferringKeyword() const 412 NullableCSSValue CSSComputedStyleDeclaration::getFontSizeCSSValuePreferringKeywo rd() const
413 { 413 {
414 if (!m_node) 414 if (!m_node)
415 return nullptr; 415 return nullptr;
416 416
417 m_node->document().updateLayoutIgnorePendingStylesheets(); 417 m_node->document().updateLayoutIgnorePendingStylesheets();
418 418
419 const ComputedStyle* style = m_node->ensureComputedStyle(m_pseudoElementSpec ifier); 419 const ComputedStyle* style = m_node->ensureComputedStyle(m_pseudoElementSpec ifier);
420 if (!style) 420 if (!style)
421 return nullptr; 421 return nullptr;
422 422
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 { 519 {
520 if (!m_node) 520 if (!m_node)
521 return 0; 521 return 0;
522 if (m_node->isElementNode()) { 522 if (m_node->isElementNode()) {
523 if (PseudoElement* element = toElement(m_node)->pseudoElement(m_pseudoEl ementSpecifier)) 523 if (PseudoElement* element = toElement(m_node)->pseudoElement(m_pseudoEl ementSpecifier))
524 return element; 524 return element;
525 } 525 }
526 return m_node.get(); 526 return m_node.get();
527 } 527 }
528 528
529 PassRefPtrWillBeRawPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValu e(CSSPropertyID propertyID) const 529 NullableCSSValue CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropertyID propertyID) const
530 { 530 {
531 Node* styledNode = this->styledNode(); 531 Node* styledNode = this->styledNode();
532 if (!styledNode) 532 if (!styledNode)
533 return nullptr; 533 return nullptr;
534 LayoutObject* layoutObject = styledNode->layoutObject(); 534 LayoutObject* layoutObject = styledNode->layoutObject();
535 const ComputedStyle* style; 535 const ComputedStyle* style;
536 536
537 Document& document = styledNode->document(); 537 Document& document = styledNode->document();
538 538
539 // A timing update may be required if a compositor animation is running. 539 // A timing update may be required if a compositor animation is running.
(...skipping 15 matching lines...) Expand all
555 if (forceFullLayout) { 555 if (forceFullLayout) {
556 document.updateLayoutIgnorePendingStylesheets(); 556 document.updateLayoutIgnorePendingStylesheets();
557 styledNode = this->styledNode(); 557 styledNode = this->styledNode();
558 style = computeComputedStyle(); 558 style = computeComputedStyle();
559 layoutObject = styledNode->layoutObject(); 559 layoutObject = styledNode->layoutObject();
560 } 560 }
561 561
562 if (!style) 562 if (!style)
563 return nullptr; 563 return nullptr;
564 564
565 RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(prope rtyID, *style, layoutObject, styledNode, m_allowVisitedStyle); 565 NullableCSSValue value = ComputedStyleCSSValueMapping::get(propertyID, *styl e, layoutObject, styledNode, m_allowVisitedStyle);
566 if (value) 566 if (value)
567 return value; 567 return *value;
568 568
569 logUnimplementedPropertyID(propertyID); 569 logUnimplementedPropertyID(propertyID);
570 return nullptr; 570 return nullptr;
571 } 571 }
572 572
573 String CSSComputedStyleDeclaration::getPropertyValue(CSSPropertyID propertyID) c onst 573 String CSSComputedStyleDeclaration::getPropertyValue(CSSPropertyID propertyID) c onst
574 { 574 {
575 RefPtrWillBeRawPtr<CSSValue> value = getPropertyCSSValue(propertyID); 575 NullableCSSValue value = getPropertyCSSValue(propertyID);
576 if (value) 576 if (value)
577 return value->cssText(); 577 return value->cssText();
578 return ""; 578 return "";
579 } 579 }
580 580
581 581
582 unsigned CSSComputedStyleDeclaration::length() const 582 unsigned CSSComputedStyleDeclaration::length() const
583 { 583 {
584 if (!m_node || !m_node->inActiveDocument()) 584 if (!m_node || !m_node->inActiveDocument())
585 return 0; 585 return 0;
586 return computableProperties().size(); 586 return computableProperties().size();
587 } 587 }
588 588
589 String CSSComputedStyleDeclaration::item(unsigned i) const 589 String CSSComputedStyleDeclaration::item(unsigned i) const
590 { 590 {
591 if (i >= length()) 591 if (i >= length())
592 return ""; 592 return "";
593 593
594 return getPropertyNameString(computableProperties()[i]); 594 return getPropertyNameString(computableProperties()[i]);
595 } 595 }
596 596
597 bool CSSComputedStyleDeclaration::cssPropertyMatches(CSSPropertyID propertyID, c onst CSSValue* propertyValue) const 597 bool CSSComputedStyleDeclaration::cssPropertyMatches(CSSPropertyID propertyID, c onst CSSValue propertyValue) const
598 { 598 {
599 if (propertyID == CSSPropertyFontSize && propertyValue->isPrimitiveValue() & & m_node) { 599 if (propertyID == CSSPropertyFontSize && propertyValue.isPrimitiveValue() && m_node) {
600 m_node->document().updateLayoutIgnorePendingStylesheets(); 600 m_node->document().updateLayoutIgnorePendingStylesheets();
601 const ComputedStyle* style = m_node->ensureComputedStyle(m_pseudoElement Specifier); 601 const ComputedStyle* style = m_node->ensureComputedStyle(m_pseudoElement Specifier);
602 if (style && style->fontDescription().keywordSize()) { 602 if (style && style->fontDescription().keywordSize()) {
603 CSSValueID sizeValue = cssIdentifierForFontSizeKeyword(style->fontDe scription().keywordSize()); 603 CSSValueID sizeValue = cssIdentifierForFontSizeKeyword(style->fontDe scription().keywordSize());
604 const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(proper tyValue); 604 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(proper tyValue);
605 if (primitiveValue->isValueID() && primitiveValue->getValueID() == s izeValue) 605 if (primitiveValue.isValueID() && primitiveValue.getValueID() == siz eValue)
606 return true; 606 return true;
607 } 607 }
608 } 608 }
609 RefPtrWillBeRawPtr<CSSValue> value = getPropertyCSSValue(propertyID); 609 NullableCSSValue value = getPropertyCSSValue(propertyID);
610 return value && propertyValue && value->equals(*propertyValue); 610 return value && value->equals(propertyValue);
611 } 611 }
612 612
613 PassRefPtrWillBeRawPtr<MutableStylePropertySet> CSSComputedStyleDeclaration::cop yProperties() const 613 PassRefPtrWillBeRawPtr<MutableStylePropertySet> CSSComputedStyleDeclaration::cop yProperties() const
614 { 614 {
615 return copyPropertiesInSet(computableProperties()); 615 return copyPropertiesInSet(computableProperties());
616 } 616 }
617 617
618 PassRefPtrWillBeRawPtr<MutableStylePropertySet> CSSComputedStyleDeclaration::cop yPropertiesInSet(const Vector<CSSPropertyID>& properties) const 618 PassRefPtrWillBeRawPtr<MutableStylePropertySet> CSSComputedStyleDeclaration::cop yPropertiesInSet(const Vector<CSSPropertyID>& properties) const
619 { 619 {
620 WillBeHeapVector<CSSProperty, 256> list; 620 WillBeHeapVector<CSSProperty, 256> list;
621 list.reserveInitialCapacity(properties.size()); 621 list.reserveInitialCapacity(properties.size());
622 for (unsigned i = 0; i < properties.size(); ++i) { 622 for (unsigned i = 0; i < properties.size(); ++i) {
623 RefPtrWillBeRawPtr<CSSValue> value = getPropertyCSSValue(properties[i]); 623 NullableCSSValue value = getPropertyCSSValue(properties[i]);
624 if (value) 624 if (value)
625 list.append(CSSProperty(properties[i], value.release(), false)); 625 list.append(CSSProperty(properties[i], *value, false));
626 } 626 }
627 return MutableStylePropertySet::create(list.data(), list.size()); 627 return MutableStylePropertySet::create(list.data(), list.size());
628 } 628 }
629 629
630 CSSRule* CSSComputedStyleDeclaration::parentRule() const 630 CSSRule* CSSComputedStyleDeclaration::parentRule() const
631 { 631 {
632 return 0; 632 return 0;
633 } 633 }
634 634
635 String CSSComputedStyleDeclaration::getPropertyValue(const String& propertyName) 635 String CSSComputedStyleDeclaration::getPropertyValue(const String& propertyName)
(...skipping 25 matching lines...) Expand all
661 { 661 {
662 exceptionState.throwDOMException(NoModificationAllowedError, "These styles a re computed, and therefore the '" + name + "' property is read-only."); 662 exceptionState.throwDOMException(NoModificationAllowedError, "These styles a re computed, and therefore the '" + name + "' property is read-only.");
663 } 663 }
664 664
665 String CSSComputedStyleDeclaration::removeProperty(const String& name, Exception State& exceptionState) 665 String CSSComputedStyleDeclaration::removeProperty(const String& name, Exception State& exceptionState)
666 { 666 {
667 exceptionState.throwDOMException(NoModificationAllowedError, "These styles a re computed, and therefore the '" + name + "' property is read-only."); 667 exceptionState.throwDOMException(NoModificationAllowedError, "These styles a re computed, and therefore the '" + name + "' property is read-only.");
668 return String(); 668 return String();
669 } 669 }
670 670
671 PassRefPtrWillBeRawPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValu eInternal(CSSPropertyID propertyID) 671 NullableCSSValue CSSComputedStyleDeclaration::getPropertyCSSValueInternal(CSSPro pertyID propertyID)
672 { 672 {
673 return getPropertyCSSValue(propertyID); 673 return getPropertyCSSValue(propertyID);
674 } 674 }
675 675
676 String CSSComputedStyleDeclaration::getPropertyValueInternal(CSSPropertyID prope rtyID) 676 String CSSComputedStyleDeclaration::getPropertyValueInternal(CSSPropertyID prope rtyID)
677 { 677 {
678 return getPropertyValue(propertyID); 678 return getPropertyValue(propertyID);
679 } 679 }
680 680
681 void CSSComputedStyleDeclaration::setPropertyInternal(CSSPropertyID id, const St ring&, bool, ExceptionState& exceptionState) 681 void CSSComputedStyleDeclaration::setPropertyInternal(CSSPropertyID id, const St ring&, bool, ExceptionState& exceptionState)
682 { 682 {
683 exceptionState.throwDOMException(NoModificationAllowedError, "These styles a re computed, and therefore the '" + getPropertyNameString(id) + "' property is r ead-only."); 683 exceptionState.throwDOMException(NoModificationAllowedError, "These styles a re computed, and therefore the '" + getPropertyNameString(id) + "' property is r ead-only.");
684 } 684 }
685 685
686 DEFINE_TRACE(CSSComputedStyleDeclaration) 686 DEFINE_TRACE(CSSComputedStyleDeclaration)
687 { 687 {
688 visitor->trace(m_node); 688 visitor->trace(m_node);
689 CSSStyleDeclaration::trace(visitor); 689 CSSStyleDeclaration::trace(visitor);
690 } 690 }
691 691
692 } // namespace blink 692 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698