[webkit-reviews] review denied: [Bug 166682] Add initial implementation of WebDriver process to run the HTTP server : [Attachment 315417] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Fri Jul 14 16:19:29 PDT 2017
Brian Burg <bburg at apple.com> has denied Carlos Garcia Campos
<cgarcia at igalia.com>'s request for review:
Bug 166682: Add initial implementation of WebDriver process to run the HTTP
server
https://bugs.webkit.org/show_bug.cgi?id=166682
Attachment 315417: Patch
https://bugs.webkit.org/attachment.cgi?id=315417&action=review
--- Comment #29 from Brian Burg <bburg at apple.com> ---
Comment on attachment 315417
--> https://bugs.webkit.org/attachment.cgi?id=315417
Patch
View in context: https://bugs.webkit.org/attachment.cgi?id=315417&action=review
Overall this looks quite good. My remaining concerns are about capability
handling, and current behavior seems wrong so marking r- for that part. Please
post another patch and I'll sign off.
I didn't spend as much time looking over Session command implementations as
they are kinda mechanical and will change a lot when generated code is adopted.
Let me know if you want specific feedback about some of them.
> Source/WebDriver/Session.cpp:98
> + m_host->startAutomationSession(m_id, [this, protectedThis =
makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
I was kinda expecting this call to happen externally to the Session
abstraction. I guess it's okay this way, since you don't make the session
active unless this completes normally.
> Source/WebDriver/Session.cpp:122
> + RefPtr<InspectorObject> parameters = InspectorObject::create();
To reiterate: the medium term goal should be to remove details about the
protocol encoding from the session commands, like this one. It will make things
a lot less boilerplate.
> Source/WebDriver/Session.cpp:130
> + m_browsingContext = emptyString();
Please make this an optional<String>, then the line can me
m_browsingContext.clear()
> Source/WebDriver/WebDriverService.cpp:619
> +String WebDriverService::findElementOrCompleteWithError(InspectorObject&
parameters, Function<void (CommandResult&&)>& completionHandler)
Should be a static method. I'm ambivalent about doing the completion handlers
here vs. inline. Are you sure that the same errors are expected in all callers?
> Source/WebDriver/WebDriverService.cpp:629
> +bool
WebDriverService::findStrategyAndSelectorOrCompleteWithError(InspectorObject&
parameters, Function<void (CommandResult&&)>& completionHandler, String&
strategy, String& selector)
Should be a static method.
> Source/WebDriver/WebDriverService.cpp:827
> + auto session = findSessionOrCompleteWithError(*parameters,
completionHandler);
I meant to add comments with the section numbers in the implementations here,
so it's easy to cross-reference the error conditions. Right now it's in the
method table, which is something but not particularly useful for code
inspection.
> Source/WebDriver/WebDriverService.cpp:876
> +bool
WebDriverService::findScriptAndArgumentsOrCompleteWithError(InspectorObject&
parameters, Function<void (CommandResult&&)>& completionHandler, String&
script, RefPtr<InspectorArray>& arguments)
This could (should?) be a static method.
> Source/WebDriver/glib/SessionHostGlib.cpp:1
> +/*
You'll probably want a GTK reviewer to look over the dbus/glib parts of the
patch. It looks OK to me, but it's rather obscure :)
> Source/cmake/WebKitFeatures.cmake:185
> + WEBKIT_OPTION_DEFINE(ENABLE_WEBDRIVER "Whether to enable WebDriver
compilation" PRIVATE OFF)
Nit: "Toggle building the WebDriver REST API service" or similar.
More information about the webkit-reviews
mailing list