Chromium Code Reviews| Index: Source/core/inspector/InspectorCSSAgent.cpp |
| diff --git a/Source/core/inspector/InspectorCSSAgent.cpp b/Source/core/inspector/InspectorCSSAgent.cpp |
| index 8512f7f46f3fc47e5d83c3c26ca8551779f63815..bea56ed3d057c3fc5c0428807f52cafcecf7ae6e 100644 |
| --- a/Source/core/inspector/InspectorCSSAgent.cpp |
| +++ b/Source/core/inspector/InspectorCSSAgent.cpp |
| @@ -828,7 +828,7 @@ void InspectorCSSAgent::setStyleSheetText(ErrorString* errorString, const String |
| { |
| InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, styleSheetId); |
| if (!inspectorStyleSheet) { |
| - *errorString = "Style sheet with id " + styleSheetId + " not found."; |
| + *errorString = "Style sheet with id " + styleSheetId + " not found"; |
| return; |
| } |
| @@ -837,6 +837,61 @@ void InspectorCSSAgent::setStyleSheetText(ErrorString* errorString, const String |
| *errorString = InspectorDOMAgent::toErrorString(exceptionState); |
| } |
| +void InspectorCSSAgent::editRangeInStyleSheetText(ErrorString* errorString, const String& styleSheetId, const RefPtr<JSONObject>& range, const String& text) |
| +{ |
| + InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, styleSheetId); |
| + if (!inspectorStyleSheet) { |
| + *errorString = "Style sheet with id " + styleSheetId + " not found"; |
|
apavlov
2014/02/21 14:37:55
"Stylesheet" ?
lushnikov
2014/02/23 16:07:07
Done.
|
| + return; |
| + } |
| + int startLineNumber; |
| + int startColumn; |
| + int endLineNumber; |
| + int endColumn; |
| + if (!range->getNumber("startLine", &startLineNumber)) { |
|
apavlov
2014/02/21 14:37:55
This could be extracted:
static bool rangeCompone
lushnikov
2014/02/23 16:07:07
Done.
lushnikov
2014/02/23 16:07:07
Done.
|
| + *errorString = "range.startLine must be an integer value"; |
|
apavlov
2014/02/21 14:37:55
"...must be an integer" is sufficient (since "inte
lushnikov
2014/02/23 16:07:07
Done.
|
| + return; |
| + } |
| + if (!range->getNumber("startColumn", &startColumn)) { |
| + *errorString = "range.startColumn must be an integer value"; |
| + return; |
| + } |
| + if (!range->getNumber("endLine", &endLineNumber)) { |
| + *errorString = "range.endLine must be an integer value"; |
| + return; |
| + } |
| + if (!range->getNumber("endColumn", &endColumn)) { |
| + *errorString = "range.endColumn must be an integer value"; |
| + return; |
| + } |
| + if (startLineNumber < 0 || startColumn < 0 || endLineNumber < 0 || endColumn < 0) { |
| + *errorString = "Range parameters must be non-negative integer values"; |
| + return; |
| + } |
| + String oldText; |
| + if (!inspectorStyleSheet->getText(&oldText)) { |
| + *errorString = "Failed to fetch stylesheet text"; |
| + return; |
| + } |
| + |
| + unsigned startOffset; |
| + unsigned endOffset; |
| + bool successConvertion = inspectorStyleSheet->lineNumberAndColumnToOffset(startLineNumber, startColumn, &startOffset); |
|
apavlov
2014/02/21 14:37:55
successConvertion -> success (or something along t
lushnikov
2014/02/23 16:07:07
Done.
|
| + successConvertion = successConvertion && inspectorStyleSheet->lineNumberAndColumnToOffset(endLineNumber, endColumn, &endOffset); |
|
apavlov
2014/02/21 14:37:55
if (successConversion)
successConversion = ...
lushnikov
2014/02/23 16:07:07
This is essentially the same due-to "&&" operation
|
| + if (!successConvertion || startOffset > oldText.length() || endOffset > oldText.length()) { |
|
apavlov
2014/02/21 14:37:55
it does not make any sense to extract a part of li
lushnikov
2014/02/23 16:07:07
Done.
|
| + *errorString = "Specified range is out of bounds"; |
| + return; |
| + } |
| + |
| + if (startOffset > endOffset) { |
| + *errorString = "Range start must preceed its end"; |
|
apavlov
2014/02/21 14:37:55
"precede"
or, better yet,
"Range start must not
lushnikov
2014/02/23 16:07:07
Done.
|
| + return; |
| + } |
| + |
| + oldText.replace(startOffset, endOffset - startOffset, text); |
| + setStyleSheetText(errorString, styleSheetId, oldText); |
| +} |
| + |
| void InspectorCSSAgent::setPropertyText(ErrorString* errorString, const RefPtr<JSONObject>& fullStyleId, int propertyIndex, const String& text, bool overwrite, RefPtr<TypeBuilder::CSS::CSSStyle>& result) |
| { |
| InspectorCSSId compoundId(fullStyleId); |