[webkit-reviews] review denied: [Bug 88838] Delete Grammar markers on editing : [Attachment 147272] Patch v1

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jun 13 15:14:25 PDT 2012


Ryosuke Niwa <rniwa at webkit.org> has denied Hironori Bono <hbono at chromium.org>'s
request for review:
Bug 88838: Delete Grammar markers on editing
https://bugs.webkit.org/show_bug.cgi?id=88838

Attachment 147272: Patch v1
https://bugs.webkit.org/attachment.cgi?id=147272&action=review

------- Additional Comments from Ryosuke Niwa <rniwa at webkit.org>
View in context: https://bugs.webkit.org/attachment.cgi?id=147272&action=review


r- because I think we want one more iteration.

> Source/WebCore/editing/Editor.cpp:2207
> +    if (!m_alternativeTextController->shouldRemoveMarkersUponEditing()) {
> +	   if (!textChecker() ||
textChecker()->shouldEraseMarkersAfterChangeSelection(TextCheckingTypeGrammar))


It seems like we can combine these two if-statements.
But why do we need to bail out when shouldEraseMarkersAfterChangeSelection is
true?
Please explain that in the change log.

> Source/WebKit/chromium/src/EditorClientImpl.cpp:772
> +void EditorClientImpl::checkGrammarOfString(const UChar* text, int length,
> +					       WTF::Vector<GrammarDetail>&
details,
>					       int* badGrammarLocation,
>					       int* badGrammarLength)

I'd prefer putting all arguments in single line given that we no longer have
80-character limit in WebKit/chromium code.

> Source/WebKit/chromium/src/EditorClientImpl.cpp:788
> +    WebVector<WebTextCheckingResult> webResults;
> +    m_webView->spellCheckClient()->checkTextOfParagraph(WebString(text,
length), WebTextCheckingTypeGrammar, &webResults);
> +    if (!webResults.size())
> +	   return;

We can make use of some blank lines here.

> Source/WebKit/chromium/src/EditorClientImpl.cpp:790
> +    int start = length;
> +    int end = 0;

Why are we using these initial values? They look completely arbitrary to me.

> Source/WebKit/chromium/src/EditorClientImpl.cpp:798
> +    for (size_t i = 0; i < webResults.size(); ++i) {
> +	   if (webResults[i].type == WebTextCheckingTypeGrammar) {
> +	       int errorStart = webResults[i].location;
> +	       int errorEnd = webResults[i].location + webResults[i].length;
> +	       start = (start > errorStart) ? errorStart : start;
> +	       end = (end < errorEnd) ? errorEnd : end;
> +	   }
> +    }

I would extract a helper function that describes what we're doing with start &
end.

> Source/WebKit/chromium/src/EditorClientImpl.cpp:800
> +    if (end - start <= 0)
> +	   return;

Why is this ever true?

> Tools/DumpRenderTree/chromium/WebViewHost.cpp:476
> +	   const WebUChar* data = text.data();

I'm not having this local variable is useful. It's used exactly once when we
obtain the pointer at offset.
I'd prefer just doing test.data() + offset instead.

> LayoutTests/editing/spelling/grammar-edit-word.html:1
> +<html>

No DOCTYPE?

> LayoutTests/editing/spelling/grammar-edit-word.html:12
> +description('Test if WebKit removes grammar markers when we edit a
grammatically-incorrect word. ' +
> +	       'To test manually, type a grammatically-incorrect sentence "You
has the right." and ' +
> +	       'type a backspace key to delete the last character of "has". ' +

> +	       'This test succeeds when "ha" does not have grammar markers.');

We don't normally align indentation like this.
Also, + should appear at the beginning of a line instead.

> LayoutTests/editing/spelling/grammar-edit-word.html:22
> +internals.settings.setUnifiedTextCheckingEnabled(true);
> +var target = document.getElementById('src');
> +target.focus();
> +document.execCommand('InsertText', false, 'You has the right.');
> +shouldBeTrue('internals.hasGrammarMarker(document, 4, 3)');
> +for (var i = 0; i < 12; ++i)
> +    layoutTestController.execCommand('DeleteBackward');
> +shouldBeFalse('internals.hasGrammarMarker(document, 4, 2)');
> +internals.settings.setUnifiedTextCheckingEnabled(false);

Again, we can make use of some blank lines here.


More information about the webkit-reviews mailing list