WebKit Bugzilla
Attachment 356761 Details for
Bug 192396
: Web Inspector: Styles: toggling selected properties may cause data corruption
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
patch.txt (text/plain), 6.49 KB, created by
Nikita Vasilyev
on 2018-12-06 16:15:53 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Nikita Vasilyev
Created:
2018-12-06 16:15:53 PST
Size:
6.49 KB
patch
obsolete
>diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 565ab81a36f..78c73319d3e 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,16 @@ >+2018-12-06 Nikita Vasilyev <nvasilyev@apple.com> >+ >+ Web Inspector: Styles: toggling selected properties may cause data corruption >+ https://bugs.webkit.org/show_bug.cgi?id=192396 >+ <rdar://problem/46478383> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Test uncommenting and commenting out CSS properties. >+ >+ * inspector/css/modify-css-property-expected.txt: >+ * inspector/css/modify-css-property.html: >+ > 2018-12-06 Wenson Hsieh <wenson_hsieh@apple.com> > > [iOS] WKWebView should match UITextView behavior when editing text with an RTL keyboard >diff --git a/LayoutTests/inspector/css/modify-css-property-expected.txt b/LayoutTests/inspector/css/modify-css-property-expected.txt >index c8aa3d9cbfc..6ba02340928 100644 >--- a/LayoutTests/inspector/css/modify-css-property-expected.txt >+++ b/LayoutTests/inspector/css/modify-css-property-expected.txt >@@ -16,3 +16,10 @@ PASS: Style declaration text should stay "width: 64px". > PASS: "width" property value should update to "200px". > PASS: Inline style declaration text should update when not locked. > >+-- Running test case: Comment out and uncomment a property >+PASS: Commented out property should be disabled. >+PASS: Style declaration text should update immediately with uncommented property. >+PASS: Uncommented property is enabled. >+PASS: Style declaration text should update immediately with commented out property. >+PASS: Commented out property is disabled. >+ >diff --git a/LayoutTests/inspector/css/modify-css-property.html b/LayoutTests/inspector/css/modify-css-property.html >index c35b9f03157..73a3d7628ca 100644 >--- a/LayoutTests/inspector/css/modify-css-property.html >+++ b/LayoutTests/inspector/css/modify-css-property.html >@@ -127,6 +127,53 @@ function test() { > } > }); > >+ suite.addTestCase({ >+ name: "Comment out and uncomment a property", >+ test(resolve, reject) { >+ let getMatchedStyleDeclaration = () => { >+ for (let rule of nodeStyles.matchedRules) { >+ if (rule.selectorText === ".rule-c") >+ return rule.style; >+ } >+ }; >+ >+ let getProperty = (propertyName) => { >+ let styleDeclaration = getMatchedStyleDeclaration(); >+ for (let property of styleDeclaration.allProperties) { >+ if (property.name === propertyName) >+ return property; >+ } >+ }; >+ >+ let styleDeclaration = getMatchedStyleDeclaration(); >+ styleDeclaration.locked = true; >+ >+ InspectorTest.expectThat(!getProperty("padding-right").enabled, `Commented out property should be disabled.`); >+ >+ let disabled = false; >+ getProperty("padding-right").commentOut(disabled); >+ >+ InspectorTest.expectEqual(styleDeclaration.text, ` >+ /* padding-left: 2em; */ >+ padding-right: 0px; >+ `, `Style declaration text should update immediately with uncommented property.`); >+ >+ InspectorTest.expectThat(getProperty("padding-right").enabled, `Uncommented property is enabled.`); >+ >+ disabled = true; >+ getProperty("padding-right").commentOut(disabled); >+ >+ InspectorTest.expectEqual(styleDeclaration.text, ` >+ /* padding-left: 2em; */ >+ /* padding-right: 0px; */ >+ `, `Style declaration text should update immediately with commented out property.`); >+ >+ InspectorTest.expectThat(!getProperty("padding-right").enabled, `Commented out property is disabled.`); >+ >+ resolve(); >+ } >+ }); >+ > WI.domManager.requestDocument((documentNode) => { > WI.domManager.querySelector(documentNode.id, "#x", (contentNodeId) => { > if (contentNodeId) { >@@ -160,7 +207,11 @@ function test() { > margin-top: 1em; > } > .rule-b {font-size: 12px; color: antiquewhite} >+ .rule-c { >+ /* padding-left: 2em; */ >+ /* padding-right: 0px; */ >+ } > </style> >- <div id="x" class="test-node rule-a rule-b" style="width: 100px"></div> >+ <div id="x" class="test-node rule-a rule-b rule-c" style="width: 100px"></div> > </body> > </html> >diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog >index 698900f5b78..4ebb925d782 100644 >--- a/Source/WebInspectorUI/ChangeLog >+++ b/Source/WebInspectorUI/ChangeLog >@@ -1,3 +1,32 @@ >+2018-12-06 Nikita Vasilyev <nvasilyev@apple.com> >+ >+ Web Inspector: Styles: toggling selected properties may cause data corruption >+ https://bugs.webkit.org/show_bug.cgi?id=192396 >+ <rdar://problem/46478383> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Uncommenting a property after commented out property used to insert an unnecessary semicolon. >+ >+ For example: >+ >+ /* color: red; */ >+ /* font-size: 12px */ >+ >+ Uncommenting `fons-size` would result in something like this: >+ >+ /* color: red; */; font-size: 12px >+ ^ >+ unnecessary semicolon >+ >+ The updated _appendSemicolonIfNeeded doesn't insert a semicolon in this case: >+ >+ /* color: red; */ font-size: 12px >+ >+ * UserInterface/Models/CSSProperty.js: >+ (WI.CSSProperty.prototype._appendSemicolonIfNeeded): >+ (WI.CSSProperty): >+ > 2018-12-06 Matt Baker <mattbaker@apple.com> > > Web Inspector: REGRESSION(r238602): Elements: collapsing a DOM node with the left arrow doesn't work >diff --git a/Source/WebInspectorUI/UserInterface/Models/CSSProperty.js b/Source/WebInspectorUI/UserInterface/Models/CSSProperty.js >index d6e4ad71535..29d36ed586a 100644 >--- a/Source/WebInspectorUI/UserInterface/Models/CSSProperty.js >+++ b/Source/WebInspectorUI/UserInterface/Models/CSSProperty.js >@@ -389,8 +389,19 @@ WI.CSSProperty = class CSSProperty extends WI.Object > > _appendSemicolonIfNeeded(styleText) > { >- if (/[^;\s]\s*$/.test(styleText)) >- return styleText.trimRight() + "; "; >+ if (this.index === 0) >+ return styleText; >+ >+ for (let i = this.index - 1; i >= 0; --i) { >+ let property = this._ownerStyle.allProperties[i]; >+ if (!property.enabled) >+ continue; >+ >+ if (/[^;\s]\s*$/.test(property.text)) >+ return styleText.trimRight() + "; "; >+ >+ break; >+ } > > return styleText; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
nvasilyev
:
review-
nvasilyev
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192396
:
356761
|
356785
|
356790
|
356850
|
356890
|
356891
|
357397