[webkit-reviews] review denied: [Bug 48720] Customizable context menu support in WK2 : [Attachment 73800] Patch v1 (without ChangeLogs)

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Nov 12 17:57:12 PST 2010


Sam Weinig <sam at webkit.org> has denied Brady Eidson <beidson at apple.com>'s
request for review:
Bug 48720: Customizable context menu support in WK2
https://bugs.webkit.org/show_bug.cgi?id=48720

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

------- Additional Comments from Sam Weinig <sam at webkit.org>
View in context: https://bugs.webkit.org/attachment.cgi?id=73800&action=review

> WebKit2/Shared/API/c/WKContextMenuItem.cpp:66
> +    ImmutableArray* array = toImpl(submenuItems);
> +    size_t size = array->size();
> +    
> +    Vector<WebContextMenuItemData> webSubmenu;
> +    webSubmenu.reserveCapacity(size);
> +    
> +    for (size_t i = 0; i < size; ++i) {
> +	   WebContextMenuItem* item = array->at<WebContextMenuItem>(i);
> +	   if (item)
> +	       webSubmenu.append(*item->data());
> +    }
> +    
> +    return
toAPI(WebContextMenuItem::create(WebContextMenuItemData(ContextMenuItemTagNoAct
ion, toImpl(title)->string(), enabled, webSubmenu)).leakRef());

This should all be in WebContextMenuItem.h/cpp instead of in the API wrapper.

> WebKit2/Shared/API/c/WKContextMenuItem.cpp:72
> +    static WKContextMenuItemRef separatorItem =
toAPI(WebContextMenuItem::create(WebContextMenuItemData(SeparatorType,
ContextMenuItemTagNoAction, String(), true, false)).leakRef());
> +    return separatorItem;

This static should be too.

> WebKit2/Shared/API/c/WKContextMenuItem.cpp:117
> +    WebContextMenuItemData* data = toImpl(itemRef)->data();
> +    if (data->type() != SubmenuType)
> +	   return 0;
> +    
> +    const Vector<WebContextMenuItemData>& submenuVector(data->submenu());
> +    unsigned size = submenuVector.size();
> +    
> +    RefPtr<MutableArray> submenu = MutableArray::create();
> +    submenu->reserveCapacity(size);
> +    
> +    for (unsigned i = 0; i < size; ++i) {
> +	   RefPtr<WebContextMenuItem> item =
WebContextMenuItem::create(submenuVector[i]);
> +	   submenu->append(item.get());
> +    }
> +    
> +    return toAPI(submenu.release().leakRef());

Same here.

The WKArrayRef should probably be created by first generating a
Vector<RefPtr<WebContextMenuItem> > and then using ImmutableArray::adopt().

> WebKit2/Shared/API/c/WKContextMenuItem.h:28
> +#ifndef WKContextMenuItemTags_h
> +#define WKContextMenuItemTags_h
> +

This header guard seems wrong.

> WebKit2/Shared/API/c/WKContextMenuItem.h:54
> +#endif /* WKContextMenuItemTags_h */

This one too.

> WebKit2/Shared/API/c/WKSharedAPICast.h:413
> +	   return action;

This should probably have an explicit cast to make it clear what it is
happening.

> WebKit2/UIProcess/WebAPIContextMenuClient.h:31
> +#include <wtf/Vector.h>

Can we avoid #including <wtf/Vector.h> here in favor of <wtf/Forward.h>

> WebKit2/UIProcess/WebAPIContextMenuClient.h:40
> +class WebAPIContextMenuClient : public APIClient<WKPageContextMenuClient> {
> +public:

I don't like the API in this class name, can we replace it with Page?

> WebKit2/UIProcess/WebPageProxy.cpp:1193
> +    RefPtr<APIObject> userData;
> +    WebContextUserMessageDecoder messageDecoder(userData,
pageNamespace()->context());
> +    if (!arguments->decode(messageDecoder))
> +	   return;
> +	   

Probably best to do this as the first thing in this function.

> WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:28
> +#include "ImmutableDictionary.h"

Why is this change needed?


More information about the webkit-reviews mailing list