Chromium Code Reviews| Index: Source/core/inspector/InspectorStyleSheet.cpp |
| diff --git a/Source/core/inspector/InspectorStyleSheet.cpp b/Source/core/inspector/InspectorStyleSheet.cpp |
| index 321b9b376610116a760082df672306ddf7363b28..738c52e73e22bc44f8dc4478ef25c5151cb99a51 100644 |
| --- a/Source/core/inspector/InspectorStyleSheet.cpp |
| +++ b/Source/core/inspector/InspectorStyleSheet.cpp |
| @@ -586,7 +586,6 @@ InspectorStyle::InspectorStyle(unsigned ruleIndex, PassRefPtrWillBeRawPtr<CSSSty |
| : m_ruleIndex(ruleIndex) |
| , m_style(style) |
| , m_parentStyleSheet(parentStyleSheet) |
| - , m_formatAcquired(false) |
| { |
| ASSERT(m_style); |
| } |
| @@ -621,78 +620,6 @@ PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSComputedStyleProperty> > Insp |
| return result.release(); |
| } |
| -bool InspectorStyle::verifyPropertyText(const String& propertyText, bool canOmitSemicolon) |
| -{ |
| - DEFINE_STATIC_LOCAL(String, bogusPropertyName, ("-webkit-boguz-propertee")); |
| - RuleSourceDataList sourceData; |
| - String declarationText = propertyText + (canOmitSemicolon ? ";" : " ") + bogusPropertyName + ": none"; |
| - StyleSheetHandler handler(declarationText, ownerDocument(), &sourceData); |
| - CSSParser::parseDeclarationListForInspector(parserContextForDocument(ownerDocument()), declarationText, handler); |
| - WillBeHeapVector<CSSPropertySourceData>& propertyData = sourceData.first()->styleSourceData->propertyData; |
| - unsigned propertyCount = propertyData.size(); |
| - |
| - // At least one property + the bogus property added just above should be present. |
| - if (propertyCount < 2) |
| - return false; |
| - |
| - // Check for the proper propertyText termination (the parser could at least restore to the PROPERTY_NAME state). |
| - if (propertyData.at(propertyCount - 1).name != bogusPropertyName) |
| - return false; |
| - |
| - return true; |
| -} |
| - |
| -bool InspectorStyle::setPropertyText(unsigned index, const String& propertyText, bool overwrite, ExceptionState& exceptionState) |
| -{ |
| - ASSERT(m_parentStyleSheet); |
| - |
| - if (m_ruleIndex == UINT_MAX) { |
| - exceptionState.throwDOMException(NotFoundError, "The style is read-only."); |
| - return false; |
| - } |
| - |
| - if (!m_parentStyleSheet->ensureParsedDataReady()) { |
| - exceptionState.throwDOMException(NotFoundError, "The parent style sheet's data hasn't been processed."); |
| - return false; |
| - } |
| - |
| - if (!propertyText.stripWhiteSpace().isEmpty()) { |
| - if (!verifyPropertyText(propertyText, false) && !verifyPropertyText(propertyText, true)) { |
| - exceptionState.throwDOMException(SyntaxError, "The property '" + propertyText + "' could not be set."); |
| - return false; |
| - } |
| - } |
| - |
| - RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = extractSourceData(); |
| - if (!sourceData) { |
| - exceptionState.throwDOMException(NotFoundError, "The property '" + propertyText + "' could not be set."); |
| - return false; |
| - } |
| - |
| - String text; |
| - bool success = styleText(&text); |
| - if (!success) { |
| - exceptionState.throwDOMException(NotFoundError, "The property '" + propertyText + "' could not be set."); |
| - return false; |
| - } |
| - |
| - WillBeHeapVector<InspectorStyleProperty> allProperties; |
| - populateAllProperties(allProperties); |
| - |
| - InspectorStyleTextEditor editor(&allProperties, text, sourceData->ruleBodyRange, newLineAndWhitespaceDelimiters()); |
| - if (overwrite) { |
| - if (index >= allProperties.size()) { |
| - exceptionState.throwDOMException(IndexSizeError, "The index provided (" + String::number(index) + ") is greater than or equal to the maximum bound (" + String::number(allProperties.size()) + ")."); |
| - return false; |
| - } |
| - editor.replaceProperty(index, propertyText); |
| - } else { |
| - editor.insertProperty(index, propertyText); |
| - } |
| - |
| - return m_parentStyleSheet->setStyleText(m_ruleIndex, editor.styleText()); |
| -} |
| - |
| bool InspectorStyle::styleText(String* result) const |
| { |
| RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = extractSourceData(); |
| @@ -834,71 +761,6 @@ String InspectorStyle::shorthandValue(const String& shorthandProperty) const |
| return value; |
| } |
| -NewLineAndWhitespace& InspectorStyle::newLineAndWhitespaceDelimiters() const |
| -{ |
| - DEFINE_STATIC_LOCAL(String, defaultPrefix, (" ")); |
| - |
| - if (m_formatAcquired) |
| - return m_format; |
| - |
| - RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = extractSourceData(); |
| - WillBeHeapVector<CSSPropertySourceData>* sourcePropertyData = sourceData ? &(sourceData->styleSourceData->propertyData) : nullptr; |
| - int propertyCount = sourcePropertyData ? sourcePropertyData->size() : 0; |
| - if (!propertyCount) { |
| - m_format.first = "\n"; |
| - m_format.second = defaultPrefix; |
| - return m_format; // Do not remember the default formatting and attempt to acquire it later. |
| - } |
| - |
| - String styleSheetText; |
| - bool success = m_parentStyleSheet->getText(&styleSheetText); |
| - ASSERT_UNUSED(success, success); |
| - |
| - m_formatAcquired = true; |
| - |
| - String candidatePrefix = defaultPrefix; |
| - StringBuilder formatLineFeed; |
| - StringBuilder prefix; |
| - int scanStart = sourceData->ruleBodyRange.start; |
| - int propertyIndex = 0; |
| - bool isFullPrefixScanned = false; |
| - bool lineFeedTerminated = false; |
| - while (propertyIndex < propertyCount) { |
| - const blink::CSSPropertySourceData& currentProperty = sourcePropertyData->at(propertyIndex++); |
| - |
| - bool processNextProperty = false; |
| - int scanEnd = currentProperty.range.start; |
| - for (int i = scanStart; i < scanEnd; ++i) { |
| - UChar ch = styleSheetText[i]; |
| - bool isLineFeed = isHTMLLineBreak(ch); |
| - if (isLineFeed) { |
| - if (!lineFeedTerminated) |
| - formatLineFeed.append(ch); |
| - prefix.clear(); |
| - } else if (isHTMLSpace<UChar>(ch)) |
| - prefix.append(ch); |
| - else { |
| - candidatePrefix = prefix.toString(); |
| - prefix.clear(); |
| - scanStart = currentProperty.range.end; |
| - ++propertyIndex; |
| - processNextProperty = true; |
| - break; |
| - } |
| - if (!isLineFeed && formatLineFeed.length()) |
| - lineFeedTerminated = true; |
| - } |
| - if (!processNextProperty) { |
| - isFullPrefixScanned = true; |
| - break; |
| - } |
| - } |
| - |
| - m_format.first = formatLineFeed.toString(); |
| - m_format.second = isFullPrefixScanned ? prefix.toString() : candidatePrefix; |
| - return m_format; |
| -} |
| - |
| Document* InspectorStyle::ownerDocument() const |
| { |
| return m_parentStyleSheet->ownerDocument(); |
| @@ -917,24 +779,6 @@ InspectorStyleSheetBase::InspectorStyleSheetBase(const String& id, Listener* lis |
| { |
| } |
| -bool InspectorStyleSheetBase::setPropertyText(unsigned ruleIndex, unsigned propertyIndex, const String& text, bool overwrite, ExceptionState& exceptionState) |
| -{ |
| - RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = inspectorStyleAt(ruleIndex); |
| - if (!inspectorStyle) { |
| - exceptionState.throwDOMException(NotFoundError, "No property could be found for the given ID."); |
| - return false; |
| - } |
| - return inspectorStyle->setPropertyText(propertyIndex, text, overwrite, exceptionState); |
| -} |
| - |
| -bool InspectorStyleSheetBase::getStyleText(unsigned ruleIndex, String* text) |
| -{ |
| - RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = inspectorStyleAt(ruleIndex); |
| - if (!inspectorStyle) |
| - return false; |
| - return inspectorStyle->styleText(text); |
| -} |
| - |
| void InspectorStyleSheetBase::onStyleSheetTextChanged() |
| { |
| m_lineEndings = adoptPtr(new LineEndings()); |
| @@ -994,44 +838,6 @@ bool InspectorStyleSheetBase::lineNumberAndColumnToOffset(unsigned lineNumber, u |
| return true; |
| } |
| -bool InspectorStyleSheetBase::findPropertyByRange(const SourceRange& sourceRange, unsigned* ruleIndex, unsigned* propertyIndex, bool* overwrite) |
| -{ |
| - if (!ensureParsedDataReady()) |
| - return false; |
| - for (size_t i = 0; i < ruleCount(); ++i) { |
| - RefPtrWillBeRawPtr<CSSRuleSourceData> ruleSourceData = ruleSourceDataAt(i); |
| - RefPtrWillBeRawPtr<CSSStyleSourceData> styleSourceData = ruleSourceData->styleSourceData; |
| - if (!styleSourceData) |
| - continue; |
| - if (ruleSourceData->ruleBodyRange.end < sourceRange.start || sourceRange.end < ruleSourceData->ruleBodyRange.start) |
| - continue; |
| - WillBeHeapVector<CSSPropertySourceData>& propertyData = styleSourceData->propertyData; |
| - for (size_t j = 0; j < propertyData.size(); ++j) { |
| - CSSPropertySourceData& property = propertyData.at(j); |
| - unsigned styleStart = ruleSourceData->ruleBodyRange.start; |
| - if (sourceRange.length() && property.range.start == sourceRange.start && property.range.end == sourceRange.end) { |
| - *ruleIndex = i; |
| - *propertyIndex = j; |
| - *overwrite = true; |
| - return true; |
| - } |
| - if (!sourceRange.length() && styleStart <= sourceRange.start && sourceRange.start <= property.range.start) { |
| - *ruleIndex = i; |
| - *propertyIndex = j; |
| - *overwrite = false; |
| - return true; |
| - } |
| - } |
| - if (!sourceRange.length() && ruleSourceData->ruleBodyRange.start <= sourceRange.start && sourceRange.start <= ruleSourceData->ruleBodyRange.end) { |
| - *ruleIndex = i; |
| - *propertyIndex = propertyData.size(); |
| - *overwrite = false; |
| - return true; |
| - } |
| - } |
| - return false; |
| -} |
| - |
| PassRefPtrWillBeRawPtr<InspectorStyleSheet> InspectorStyleSheet::create(InspectorResourceAgent* resourceAgent, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String& documentURL, InspectorCSSAgent* cssAgent) |
| { |
| return adoptRefWillBeNoop(new InspectorStyleSheet(resourceAgent, id, pageStyleSheet, origin, documentURL, cssAgent)); |
| @@ -1734,52 +1540,6 @@ void InspectorStyleSheet::ensureFlatRules() const |
| collectFlatRules(pageStyleSheet(), &m_flatRules); |
| } |
| -bool InspectorStyleSheet::setStyleText(unsigned ruleIndex, const String& text) |
| -{ |
| - CSSStyleDeclaration* style = styleAt(ruleIndex); |
| - if (!style) |
| - return false; |
| - |
| - if (!ensureParsedDataReady()) |
| - return false; |
| - |
| - String patchedStyleSheetText; |
| - bool success = styleSheetTextWithChangedStyle(style, text, &patchedStyleSheetText); |
| - if (!success) |
| - return false; |
| - |
| - TrackExceptionState exceptionState; |
| - style->setCSSText(text, exceptionState); |
| - if (!exceptionState.hadException()) { |
| - innerSetText(patchedStyleSheetText); |
| - onStyleSheetTextChanged(); |
| - } |
| - |
| - return !exceptionState.hadException(); |
| -} |
| - |
| -bool InspectorStyleSheet::styleSheetTextWithChangedStyle(CSSStyleDeclaration* style, const String& newStyleText, String* result) |
| -{ |
| - if (!style) |
| - return false; |
| - |
| - unsigned ruleIndex = indexOf(style); |
| - if (!ensureParsedDataReady() || ruleIndex == UINT_MAX) |
| - return false; |
| - |
| - RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = ruleSourceDataAt(ruleIndex); |
| - unsigned bodyStart = sourceData->ruleBodyRange.start; |
| - unsigned bodyEnd = sourceData->ruleBodyRange.end; |
| - ASSERT(bodyStart <= bodyEnd); |
| - |
| - String text = m_parsedStyleSheet->text(); |
| - ASSERT_WITH_SECURITY_IMPLICATION(bodyEnd <= text.length()); // bodyEnd is exclusive |
|
lushnikov
2015/06/19 15:34:20
move to replace range
pfeldman
2015/06/19 15:59:28
Turns out we never hit it any longer.
|
| - |
| - text.replace(bodyStart, bodyEnd - bodyStart, newStyleText); |
| - *result = text; |
| - return true; |
| -} |
| - |
| unsigned InspectorStyleSheet::indexOf(CSSStyleRule* rule) const |
| { |
| return indexOf(rule->style()); |
| @@ -1864,25 +1624,6 @@ bool InspectorStyleSheetForInlineStyle::setText(const String& text, ExceptionSta |
| return false; |
| } |
| - bool success = setStyleText(0, text); |
| - if (!success) |
| - exceptionState.throwDOMException(SyntaxError, "Style sheet text is invalid."); |
| - return success; |
| -} |
| - |
| -bool InspectorStyleSheetForInlineStyle::getText(String* result) const |
| -{ |
| - if (!m_isStyleTextValid) { |
| - m_styleText = elementStyleText(); |
| - m_isStyleTextValid = true; |
| - } |
| - *result = m_styleText; |
| - return true; |
| -} |
| - |
| -bool InspectorStyleSheetForInlineStyle::setStyleText(unsigned ruleIndex, const String& text) |
| -{ |
| - TrackExceptionState exceptionState; |
| { |
| InspectorCSSAgent::InlineStyleOverrideScope overrideScope(m_element->ownerDocument()); |
| m_element->setAttribute("style", AtomicString(text), exceptionState); |
| @@ -1896,6 +1637,16 @@ bool InspectorStyleSheetForInlineStyle::setStyleText(unsigned ruleIndex, const S |
| return !exceptionState.hadException(); |
| } |
| +bool InspectorStyleSheetForInlineStyle::getText(String* result) const |
| +{ |
| + if (!m_isStyleTextValid) { |
| + m_styleText = elementStyleText(); |
| + m_isStyleTextValid = true; |
| + } |
| + *result = m_styleText; |
| + return true; |
| +} |
| + |
| Document* InspectorStyleSheetForInlineStyle::ownerDocument() const |
| { |
| return &m_element->document(); |