| Index: Source/core/inspector/InspectorCSSAgent.cpp
|
| diff --git a/Source/core/inspector/InspectorCSSAgent.cpp b/Source/core/inspector/InspectorCSSAgent.cpp
|
| index 8512f7f46f3fc47e5d83c3c26ca8551779f63815..a5479574cf7fc10169f63992663bd3f2a344a620 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,57 @@ 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";
|
| + return;
|
| + }
|
| + int startLineNumber;
|
| + int startColumn;
|
| + int endLineNumber;
|
| + int endColumn;
|
| + if (!range->getNumber("startLine", &startLineNumber)) {
|
| + *errorString = "range.startLine is not an integer value";
|
| + return;
|
| + }
|
| + if (!range->getNumber("startColumn", &startColumn)) {
|
| + *errorString = "range.startColumn is not an integer value";
|
| + return;
|
| + }
|
| + if (!range->getNumber("endLine", &endLineNumber)) {
|
| + *errorString = "range.endLine is not an integer value";
|
| + return;
|
| + }
|
| + if (!range->getNumber("endColumn", &endColumn)) {
|
| + *errorString = "range.endColumn is not an integer value";
|
| + 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);
|
| + successConvertion = successConvertion && inspectorStyleSheet->lineNumberAndColumnToOffset(endLineNumber, endColumn, &endOffset);
|
| + if (!successConvertion || startOffset > oldText.length() || endOffset > oldText.length()) {
|
| + *errorString = "Specified range is out of bounds";
|
| + return;
|
| + }
|
| +
|
| + if (startOffset > endOffset) {
|
| + *errorString = "Range start must preceed its end";
|
| + 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);
|
|
|