| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010, Google Inc. All rights reserved. | 2 * Copyright (C) 2010, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 | 496 |
| 497 if (rule->type() == CSSRule::KEYFRAMES_RULE) | 497 if (rule->type() == CSSRule::KEYFRAMES_RULE) |
| 498 return toCSSKeyframesRule(rule)->cssRules(); | 498 return toCSSKeyframesRule(rule)->cssRules(); |
| 499 | 499 |
| 500 if (rule->type() == CSSRule::SUPPORTS_RULE) | 500 if (rule->type() == CSSRule::SUPPORTS_RULE) |
| 501 return toCSSSupportsRule(rule)->cssRules(); | 501 return toCSSSupportsRule(rule)->cssRules(); |
| 502 | 502 |
| 503 return nullptr; | 503 return nullptr; |
| 504 } | 504 } |
| 505 | 505 |
| 506 PassRefPtr<InspectorStyle> InspectorStyle::create(const InspectorCSSId& styleId,
PassRefPtrWillBeRawPtr<CSSStyleDeclaration> style, InspectorStyleSheetBase* par
entStyleSheet) | 506 PassRefPtrWillBeRawPtr<InspectorStyle> InspectorStyle::create(const InspectorCSS
Id& styleId, PassRefPtrWillBeRawPtr<CSSStyleDeclaration> style, InspectorStyleSh
eetBase* parentStyleSheet) |
| 507 { | 507 { |
| 508 return adoptRef(new InspectorStyle(styleId, style, parentStyleSheet)); | 508 return adoptRefWillBeNoop(new InspectorStyle(styleId, style, parentStyleShee
t)); |
| 509 } | 509 } |
| 510 | 510 |
| 511 InspectorStyle::InspectorStyle(const InspectorCSSId& styleId, PassRefPtrWillBeRa
wPtr<CSSStyleDeclaration> style, InspectorStyleSheetBase* parentStyleSheet) | 511 InspectorStyle::InspectorStyle(const InspectorCSSId& styleId, PassRefPtrWillBeRa
wPtr<CSSStyleDeclaration> style, InspectorStyleSheetBase* parentStyleSheet) |
| 512 : m_styleId(styleId) | 512 : m_styleId(styleId) |
| 513 , m_style(style) | 513 , m_style(style) |
| 514 , m_parentStyleSheet(parentStyleSheet) | 514 , m_parentStyleSheet(parentStyleSheet) |
| 515 , m_formatAcquired(false) | 515 , m_formatAcquired(false) |
| 516 { | 516 { |
| 517 ASSERT(m_style); | 517 ASSERT(m_style); |
| 518 } | 518 } |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 m_format.first = formatLineFeed.toString(); | 820 m_format.first = formatLineFeed.toString(); |
| 821 m_format.second = isFullPrefixScanned ? prefix.toString() : candidatePrefix; | 821 m_format.second = isFullPrefixScanned ? prefix.toString() : candidatePrefix; |
| 822 return m_format; | 822 return m_format; |
| 823 } | 823 } |
| 824 | 824 |
| 825 Document* InspectorStyle::ownerDocument() const | 825 Document* InspectorStyle::ownerDocument() const |
| 826 { | 826 { |
| 827 return m_parentStyleSheet->ownerDocument(); | 827 return m_parentStyleSheet->ownerDocument(); |
| 828 } | 828 } |
| 829 | 829 |
| 830 void InspectorStyle::trace(Visitor* visitor) |
| 831 { |
| 832 visitor->trace(m_style); |
| 833 visitor->trace(m_parentStyleSheet); |
| 834 } |
| 835 |
| 830 InspectorStyleSheetBase::InspectorStyleSheetBase(const String& id, Listener* lis
tener) | 836 InspectorStyleSheetBase::InspectorStyleSheetBase(const String& id, Listener* lis
tener) |
| 831 : m_id(id) | 837 : m_id(id) |
| 832 , m_listener(listener) | 838 , m_listener(listener) |
| 833 { | 839 { |
| 834 } | 840 } |
| 835 | 841 |
| 836 bool InspectorStyleSheetBase::setPropertyText(const InspectorCSSId& id, unsigned
propertyIndex, const String& text, bool overwrite, ExceptionState& exceptionSta
te) | 842 bool InspectorStyleSheetBase::setPropertyText(const InspectorCSSId& id, unsigned
propertyIndex, const String& text, bool overwrite, ExceptionState& exceptionSta
te) |
| 837 { | 843 { |
| 838 RefPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id); | 844 RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id); |
| 839 if (!inspectorStyle) { | 845 if (!inspectorStyle) { |
| 840 exceptionState.throwDOMException(NotFoundError, "No property could be fo
und for the given ID."); | 846 exceptionState.throwDOMException(NotFoundError, "No property could be fo
und for the given ID."); |
| 841 return false; | 847 return false; |
| 842 } | 848 } |
| 843 return inspectorStyle->setPropertyText(propertyIndex, text, overwrite, excep
tionState); | 849 return inspectorStyle->setPropertyText(propertyIndex, text, overwrite, excep
tionState); |
| 844 } | 850 } |
| 845 | 851 |
| 846 bool InspectorStyleSheetBase::getStyleText(const InspectorCSSId& id, String* tex
t) | 852 bool InspectorStyleSheetBase::getStyleText(const InspectorCSSId& id, String* tex
t) |
| 847 { | 853 { |
| 848 RefPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id); | 854 RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id); |
| 849 if (!inspectorStyle) | 855 if (!inspectorStyle) |
| 850 return false; | 856 return false; |
| 851 return inspectorStyle->styleText(text); | 857 return inspectorStyle->styleText(text); |
| 852 } | 858 } |
| 853 | 859 |
| 854 void InspectorStyleSheetBase::fireStyleSheetChanged() | 860 void InspectorStyleSheetBase::fireStyleSheetChanged() |
| 855 { | 861 { |
| 856 if (listener()) | 862 if (listener()) |
| 857 listener()->styleSheetChanged(this); | 863 listener()->styleSheetChanged(this); |
| 858 } | 864 } |
| 859 | 865 |
| 860 PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorStyleSheetBase::buildObjectForSt
yle(CSSStyleDeclaration* style) | 866 PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorStyleSheetBase::buildObjectForSt
yle(CSSStyleDeclaration* style) |
| 861 { | 867 { |
| 862 RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = nullptr; | 868 RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = nullptr; |
| 863 if (ensureParsedDataReady()) | 869 if (ensureParsedDataReady()) |
| 864 sourceData = ruleSourceDataAt(styleId(style).ordinal()); | 870 sourceData = ruleSourceDataAt(styleId(style).ordinal()); |
| 865 | 871 |
| 866 InspectorCSSId id = styleId(style); | 872 InspectorCSSId id = styleId(style); |
| 867 if (id.isEmpty()) { | 873 if (id.isEmpty()) { |
| 868 // Any rule coming from User Agent and not from DefaultStyleSheet will n
ot have id. | 874 // Any rule coming from User Agent and not from DefaultStyleSheet will n
ot have id. |
| 869 // See InspectorCSSAgent::buildObjectForRule for details. | 875 // See InspectorCSSAgent::buildObjectForRule for details. |
| 870 RefPtr<InspectorStyle> inspectorStyle = InspectorStyle::create(id, style
, this); | 876 RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = InspectorStyle::crea
te(id, style, this); |
| 871 return inspectorStyle->buildObjectForStyle(); | 877 return inspectorStyle->buildObjectForStyle(); |
| 872 } | 878 } |
| 873 RefPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id); | 879 RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id); |
| 874 RefPtr<TypeBuilder::CSS::CSSStyle> result = inspectorStyle->buildObjectForSt
yle(); | 880 RefPtr<TypeBuilder::CSS::CSSStyle> result = inspectorStyle->buildObjectForSt
yle(); |
| 875 | 881 |
| 876 // Style text cannot be retrieved without stylesheet, so set cssText here. | 882 // Style text cannot be retrieved without stylesheet, so set cssText here. |
| 877 if (sourceData) { | 883 if (sourceData) { |
| 878 String sheetText; | 884 String sheetText; |
| 879 bool success = getText(&sheetText); | 885 bool success = getText(&sheetText); |
| 880 if (success) { | 886 if (success) { |
| 881 const SourceRange& bodyRange = sourceData->ruleBodyRange; | 887 const SourceRange& bodyRange = sourceData->ruleBodyRange; |
| 882 result->setCssText(sheetText.substring(bodyRange.start, bodyRange.en
d - bodyRange.start)); | 888 result->setCssText(sheetText.substring(bodyRange.start, bodyRange.en
d - bodyRange.start)); |
| 883 } | 889 } |
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1283 size_t index = m_flatRules.find(rule); | 1289 size_t index = m_flatRules.find(rule); |
| 1284 // FIXME(lusnikov): m_flatRules are not always aligned with the m_parsedStyl
eSheet rule source | 1290 // FIXME(lusnikov): m_flatRules are not always aligned with the m_parsedStyl
eSheet rule source |
| 1285 // datas due to the CSSOM operations that add/remove rules without changing
source. | 1291 // datas due to the CSSOM operations that add/remove rules without changing
source. |
| 1286 // This is a design issue. See crbug.com/178410 | 1292 // This is a design issue. See crbug.com/178410 |
| 1287 if (index == kNotFound || index >= m_parsedStyleSheet->ruleCount()) | 1293 if (index == kNotFound || index >= m_parsedStyleSheet->ruleCount()) |
| 1288 return nullptr; | 1294 return nullptr; |
| 1289 RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = m_parsedStyleSheet->ruleS
ourceDataAt(static_cast<unsigned>(index)); | 1295 RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = m_parsedStyleSheet->ruleS
ourceDataAt(static_cast<unsigned>(index)); |
| 1290 return buildSourceRangeObject(sourceData->ruleHeaderRange, lineEndings().get
()); | 1296 return buildSourceRangeObject(sourceData->ruleHeaderRange, lineEndings().get
()); |
| 1291 } | 1297 } |
| 1292 | 1298 |
| 1293 PassRefPtr<InspectorStyle> InspectorStyleSheet::inspectorStyleForId(const Inspec
torCSSId& id) | 1299 PassRefPtrWillBeRawPtr<InspectorStyle> InspectorStyleSheet::inspectorStyleForId(
const InspectorCSSId& id) |
| 1294 { | 1300 { |
| 1295 CSSStyleDeclaration* style = styleForId(id); | 1301 CSSStyleDeclaration* style = styleForId(id); |
| 1296 if (!style) | 1302 if (!style) |
| 1297 return nullptr; | 1303 return nullptr; |
| 1298 | 1304 |
| 1299 return InspectorStyle::create(id, style, this); | 1305 return InspectorStyle::create(id, style, this); |
| 1300 } | 1306 } |
| 1301 | 1307 |
| 1302 unsigned InspectorStyleSheet::ruleCount() | 1308 unsigned InspectorStyleSheet::ruleCount() |
| 1303 { | 1309 { |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1660 | 1666 |
| 1661 bool success = !!m_ruleSourceData; | 1667 bool success = !!m_ruleSourceData; |
| 1662 if (!success) { | 1668 if (!success) { |
| 1663 m_ruleSourceData = CSSRuleSourceData::create(CSSRuleSourceData::STYLE_RU
LE); | 1669 m_ruleSourceData = CSSRuleSourceData::create(CSSRuleSourceData::STYLE_RU
LE); |
| 1664 return false; | 1670 return false; |
| 1665 } | 1671 } |
| 1666 | 1672 |
| 1667 return true; | 1673 return true; |
| 1668 } | 1674 } |
| 1669 | 1675 |
| 1670 PassRefPtr<InspectorStyle> InspectorStyleSheetForInlineStyle::inspectorStyleForI
d(const InspectorCSSId& id) | 1676 PassRefPtrWillBeRawPtr<InspectorStyle> InspectorStyleSheetForInlineStyle::inspec
torStyleForId(const InspectorCSSId& id) |
| 1671 { | 1677 { |
| 1672 ASSERT_UNUSED(id, !id.ordinal()); | 1678 ASSERT_UNUSED(id, !id.ordinal()); |
| 1673 return m_inspectorStyle; | 1679 return m_inspectorStyle; |
| 1674 } | 1680 } |
| 1675 | 1681 |
| 1676 CSSStyleDeclaration* InspectorStyleSheetForInlineStyle::inlineStyle() const | 1682 CSSStyleDeclaration* InspectorStyleSheetForInlineStyle::inlineStyle() const |
| 1677 { | 1683 { |
| 1678 return m_element->style(); | 1684 return m_element->style(); |
| 1679 } | 1685 } |
| 1680 | 1686 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1699 RuleSourceDataList ruleSourceDataResult; | 1705 RuleSourceDataList ruleSourceDataResult; |
| 1700 StyleSheetHandler handler(m_styleText, &m_element->document(), m_element->do
cument().elementSheet().contents(), &ruleSourceDataResult); | 1706 StyleSheetHandler handler(m_styleText, &m_element->document(), m_element->do
cument().elementSheet().contents(), &ruleSourceDataResult); |
| 1701 BisonCSSParser(parserContextForDocument(&m_element->document())).parseDeclar
ation(tempDeclaration.get(), m_styleText, &handler, m_element->document().elemen
tSheet().contents()); | 1707 BisonCSSParser(parserContextForDocument(&m_element->document())).parseDeclar
ation(tempDeclaration.get(), m_styleText, &handler, m_element->document().elemen
tSheet().contents()); |
| 1702 return ruleSourceDataResult.first().release(); | 1708 return ruleSourceDataResult.first().release(); |
| 1703 } | 1709 } |
| 1704 | 1710 |
| 1705 void InspectorStyleSheetForInlineStyle::trace(Visitor* visitor) | 1711 void InspectorStyleSheetForInlineStyle::trace(Visitor* visitor) |
| 1706 { | 1712 { |
| 1707 visitor->trace(m_element); | 1713 visitor->trace(m_element); |
| 1708 visitor->trace(m_ruleSourceData); | 1714 visitor->trace(m_ruleSourceData); |
| 1715 visitor->trace(m_inspectorStyle); |
| 1709 InspectorStyleSheetBase::trace(visitor); | 1716 InspectorStyleSheetBase::trace(visitor); |
| 1710 } | 1717 } |
| 1711 | 1718 |
| 1712 } // namespace blink | 1719 } // namespace blink |
| 1713 | 1720 |
| OLD | NEW |