[webkit-reviews] review granted: [Bug 217783] [Cocoa] Inspector Extensions: Add _WKInspectorExtension and related plumbing : [Attachment 413110] Patch v2.0

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Nov 3 17:17:53 PST 2020


Devin Rousso <drousso at apple.com> has granted Brian Burg <bburg at apple.com>'s
request for review:
Bug 217783: [Cocoa] Inspector Extensions: Add _WKInspectorExtension and related
plumbing
https://bugs.webkit.org/show_bug.cgi?id=217783

Attachment 413110: Patch v2.0

https://bugs.webkit.org/attachment.cgi?id=413110&action=review




--- Comment #9 from Devin Rousso <drousso at apple.com> ---
Comment on attachment 413110
  --> https://bugs.webkit.org/attachment.cgi?id=413110
Patch v2.0

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

r=me, nice work!

>
Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController
.js:34
> +

missing `// Public`

>
Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController
.js:45
> +	   console.log("Registered extension: ", extensionID, displayName);

please remove all `console` other than `console.assert` as they are not
stripped from production builds

>
Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController
.js:51
> +	   if (!this._extensionIDMap.has(extensionID)) {

you could rework this to avoid the double (triple) lookup
```
    let extension = this._extensionIDMap.take(extensionID);
    if (!extension) {
	WI.reportInternalError("Unable to unregister extension with ID: ",
extensionID);
	return WI.WebInspectorExtension.ErrorCode.InvalidRequest;
    }

   
this.dispatchEventToListeners(WI.WebInspectorExtensionController.Event.Extensio
nRemoved, {extension});
```

>
Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController
.js:57
> +	   let extension = this._extensionIDMap.get(extensionID);
> +	   this._extensionIDMap.delete(extensionID);

`this._extensionIDMap.take(extensionID)`

>
Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController
.js:59
> +	   console.log("Unregistered extension: ", extensionID);

ditto (:45)

> Source/WebInspectorUI/UserInterface/Models/WebInspectorExtension.js:26
> +WI.WebInspectorExtension = class WebInspectorExtension extends WI.Object

this doesn't need to extend `WI.Object` if it's not dispatching any events

> Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js:211
>      }

Style: missing comma

> Source/WebKit/Shared/InspectorExtensionTypes.cpp:35
> +WTF::String inspectorExtensionErrorToString(InspectorExtensionError error)

NIT: is the `WTF::` necessary?

> Source/WebKit/Shared/InspectorExtensionTypes.cpp:53
> +    return "InternalError";

`_s`

> Source/WebKit/Shared/InspectorExtensionTypes.h:35
> +using InspectorExtensionTabID = WTF::String;
> +using InspectorExtensionID = WTF::String;

NIT: I think the extension ID should go before the tab ID (both alphabetically
and conceptually)

> Source/WebKit/Shared/InspectorExtensionTypes.h:38
> +    InternalError,

This doesn't appear to be used anywhere.  Can we defer adding it until it's
actually needed?

> Source/WebKit/Shared/InspectorExtensionTypes.h:40
> +    InvalidState,

ditto (:38)

> Source/WebKit/Shared/InspectorExtensionTypes.h:43
> +    ResourceLoadFailed,

ditto (:38)

> Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:42
> +    , public CanMakeWeakPtr<WebInspectorUIExtensionControllerProxy> {

i dunno what WebKit style is, but I'd personally put the `{` on a newline
(unindented) when there are multiple lines for inheritance

> Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:60
> +    bool m_frontendLoaded { false };

NIT: can we move this below `m_frontendLoadedCallbackQueue` for (potentially)
better packing?

> Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:44
> +    Page* page = inspectorFrontend.frontendPage();
> +    ASSERT(page);

If we expect this to always be valid, can we use `Page&` instead?

> Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:63
> +	   if (resultString == "InternalError")

`_s` (below too)

> Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:75
> +	   // If the evaluation result is a string, the frontend returned an
error string.
> +	   // Anything else (falsy values, objects, arrays, DOM, etc.) is
interpreted as success.

NIT: I'd move this right before the `if (result.isString()) {`

> Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:107
> +	   completionHandler(true);

If you're only ever sending back `true`, then the `bool` is kinda pointless. 
Could you `void(Optional<InspectorExtensionError>)` instead (i.e.
`WTF::nullopt` is "no problem")?

> Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:130
> +	   completionHandler(true);

ditto (:107)

> Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h:49
> +    , public CanMakeWeakPtr<WebInspectorUIExtensionController> {

ditto (WebInspectorUIExtensionControllerProxy.h:42)

> Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h:64
> +    Optional<InspectorExtensionError>
parseInspectorExtensionErrorFromResult(JSC::JSValue result);

forward declare `JSC::JSValue`?

> Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h:66
> +    WeakPtr<WebCore::InspectorFrontendClient> m_inspectorFrontend;

NIT: shouldn't this really be called `m_inspectorFrontendClient` (or just
`m_frontendClient`)?


More information about the webkit-reviews mailing list