Bug 29164

Summary: execCommand('removeFormat') adds extra styles inside tables
Product: WebKit Reporter: Julie Parent <jparent>
Component: HTML EditingAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: hdn, michael.vm, rniwa
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: OS X 10.5   
Bug Depends on: 43017    
Bug Blocks:    
Attachments:
Description Flags
Patch tony: review+

Description Julie Parent 2009-09-10 17:17:26 PDT
1. Create a simple table, with a style inside a cell, for example: "<table><tr><td><b>foo</b></td></tr><tr><td>bar</td></tr></table>"
2. Select some styled text, for example: select "foo"
3. document.execCommand('removeFormat', false, null)

Result: Extra apple-style-span added with border-spacing styles, for example: <table><tbody><tr><td><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;">foo</span></td></tr><tr><td>bar</td></tr></tbody></table>
Expected Result: Just the b tag is removed, for example: <table><tbody><tr><td>foo</td></tr><tr><td>bar</td></tr></tbody></table>

Demo: http://www.plexode.com/cgi-bin/eval3.py#ht=%3Cdiv%20contentEditable%20id%3D'editable'%3E%3Ctable%3E%3Ctr%3E%3Ctd%3E%3Cb%20id%3D'foo'%3Efoo%3C%2Fb%3E%3C%2Ftd%3E%3C%2Ftr%3E%3Ctr%3E%3Ctd%3Ebar%3C%2Ftd%3E%3C%2Ftr%3E%3C%2Ftable%3E%3C%2Fdiv%3E&ohh=1&ohj=1&jt=%2F%2F%20Select%20%22foo%22%0Avar%20rng%20%3D%20document.createRange()%3B%0Arng.setStart(foo.firstChild%2C%200)%3B%0Arng.setEnd(foo.firstChild%2C%20foo.firstChild.length)%3B%0Adocument.getSelection().addRange(rng)%3B%0A%0Adocument.execCommand('removeFormat'%2C%20false%2C%20null)%3B%0Aalert(editable.innerHTML)%3B%0A&ojh=0&ojj=0&ms=100&oth=0&otj=0&cex=1
Comment 1 Ryosuke Niwa 2010-10-25 14:29:19 PDT
Created attachment 71795 [details]
Patch
Comment 2 Tony Chang 2010-10-25 15:14:05 PDT
Comment on attachment 71795 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=71795&action=review

> LayoutTests/editing/execCommand/remove-format-in-table-cell.html:8
> +Markup.description('This tests RemoveFormant command "hello". "hello" should be the immediate child of td below and there should be no style attribute.');

Nit: I'm not sure what 'This tests RemoveFormant command "hello".' means.  Can you rewrite it?  Something like:
This tests that RemoveFormat doesn't add extra span tags when inside a table cell.
Comment 3 Ryosuke Niwa 2010-10-25 17:03:29 PDT
Thanks for the review!

(In reply to comment #2)
> (From update of attachment 71795 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=71795&action=review
> 
> > LayoutTests/editing/execCommand/remove-format-in-table-cell.html:8
> > +Markup.description('This tests RemoveFormant command "hello". "hello" should be the immediate child of td below and there should be no style attribute.');
> 
> Nit: I'm not sure what 'This tests RemoveFormant command "hello".' means.  Can you rewrite it?  Something like:
> This tests that RemoveFormat doesn't add extra span tags when inside a table cell.

This wasn't intended.  Thanks for catching that.  Will fix and land.
Comment 4 Ryosuke Niwa 2010-10-25 17:07:15 PDT
Committed r70507: <http://trac.webkit.org/changeset/70507>