[webkit-reviews] review denied: [Bug 56055] Hook up new AppKit autocorrection UI with WK2. : [Attachment 85249] Patch (v1)

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Mar 16 12:10:26 PDT 2011


Darin Adler <darin at apple.com> has denied jpu at apple.com's request for review:
Bug 56055: Hook up new AppKit autocorrection UI with WK2.
https://bugs.webkit.org/show_bug.cgi?id=56055

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

------- Additional Comments from Darin Adler <darin at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=85249&action=review

Looking pretty good. Still needs a little work.

> Source/WebCore/editing/Editor.h:426
>      void dismissCorrectionPanel(ReasonForDismissingCorrectionPanel);
> +    void dismissCorrectionPanel(ReasonForDismissingCorrectionPanel, String&
result);

A more usual idiom for this would be to name the asynchronous version
dismissCorrectionPanelSoon and use a normal return value for the synchronous
version. Overloading based on an out parameter seems a little awkward to me.

> Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.h:37
> +class CorrectionPanelMac {

Not sure this class needs the word Mac in its name.

Should be marked noncopyable.

> Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.h:48
> +    void doDismiss(WebCore::ReasonForDismissingCorrectionPanel, bool
dismissingExternally);

Not a great name for this function. It’s unclear how dismiss is different from
doDismiss.

> Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.h:50
> +    bool m_dismissedExternally;

Normally we would call this m_wasDismissedExternally.

> Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.h:54
> +    WebView* m_view;
> +    NSString* m_resultForSynchronousDismissal;
> +    NSCondition* m_resultCondition;

For Objective-C classes we normally use a different style of where to put the*.


> Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:40
> +	   case CorrectionPanelInfo::PanelTypeCorrection:
> +	       return NSCorrectionBubbleTypeCorrection;
> +	   case CorrectionPanelInfo::PanelTypeReversion:
> +	       return NSCorrectionBubbleTypeReversion;
> +	   case CorrectionPanelInfo::PanelTypeSpellingSuggestions:
> +	       return NSCorrectionBubbleTypeGuesses;

This is not the WebKit style of how to line up switch statements.

> Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:52
> +    m_resultCondition = [[NSCondition alloc] init];

This won’t work under GC. You need to have m_resultCondition be a RetainPtr
instead.

> Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:60
> +    [m_resultCondition release];
> +    if (m_resultForSynchronousDismissal)
> +	   [m_resultForSynchronousDismissal release];

These won’t work under GC. Both m_resultCondition and
m_resultForSynchronousDismissal should be RetainPtr.

> Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:133
> +    result = String(m_resultForSynchronousDismissal);

The explicit String() should not be needed here.

> Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:152
> +    if (reason == ReasonForDismissingCorrectionPanelAccepted)
> +	   [[NSSpellChecker sharedSpellChecker]
dismissCorrectionBubbleForView:m_view];
> +    else
> +	   [[NSSpellChecker sharedSpellChecker]
cancelCorrectionBubbleForView:m_view];
> +    m_view = 0;

What’s the guarantee that m_view is still good here? I suggest making it a
RetainPtr.

> Source/WebKit/mac/WebView/WebView.mm:5315
> +	   coreFrame->editor()->handleCorrectionPanelResult(String(result));

Should not need an explicit String() here.

> Source/WebKit2/UIProcess/API/mac/PageClientImpl.h:116
> +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) &&
!defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:446
> +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) &&
!defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:455
> +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) &&
!defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:462
> +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) &&
!defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:471
> +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) &&
!defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/API/mac/WKView.mm:2050
> +    _data->_page->handleCorrectionPanelResult(WTF::String(result));

Should not need an existing WTF::String here.

> Source/WebKit2/UIProcess/WebPageProxy.cpp:2805
> +#if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) &&
!defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/WebPageProxy.cpp:2885
> +#if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) &&
!defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/WebPageProxy.h:657
> +#if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) &&
!defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/WebPageProxy.messages.in:212
> +#if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) &&
!defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/WebPageProxy.messages.in:214
> +    ShowCorrectionPanel(WebCore::CorrectionPanelInfo::PanelType panelType,
WebCore::FloatRect boundingBoxOfReplacedString, WTF::String replacedString,
WTF::String replacementString, Vector<WTF::String>
alternativeReplacementStrings)

We normally just use integers instead of adding enums to the cross process
machinery for things like panelType.

> Source/WebKit2/UIProcess/WebPageProxy.messages.in:217
> +   
RecordAutocorrectionResponse(WebCore::EditorClient::AutocorrectionResponseType
responseType, WTF::String replacedString, WTF::String replacementString);

We normally just use integers instead of adding enums to the cross process
machinery for things like responseType.

> Source/WebKit2/UIProcess/mac/CorrectionPanelMac.h:29
> +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) &&
!defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/UIProcess/mac/CorrectionPanelMac.mm:27
> +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) &&
!defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:249
>  #if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) &&
!defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2110
> +#if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) &&
!defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/WebProcess/WebPage/WebPage.h:359
> +#if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) &&
!defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.

> Source/WebKit2/WebProcess/WebPage/WebPage.messages.in:196
> +#if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) &&
!defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them
here.


More information about the webkit-reviews mailing list