[Webkit-unassigned] [Bug 174672] WebDriver: implement page load timeout
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Fri Jul 21 10:32:31 PDT 2017
https://bugs.webkit.org/show_bug.cgi?id=174672
Brian Burg <bburg at apple.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #315982| |review+
Flags| |
--- Comment #5 from Brian Burg <bburg at apple.com> ---
Comment on attachment 315982
--> https://bugs.webkit.org/attachment.cgi?id=315982
Patch
View in context: https://bugs.webkit.org/attachment.cgi?id=315982&action=review
r=me with a few questions
> Source/WebDriver/ChangeLog:8
> + Handle timeout errors and pass the pageLoadtimeout to waitForNavigationToComplete and all other navigation
Nit: pageLoadTimeout (or just in English)
> Source/WebKit/ChangeLog:8
> + Always start a timer when waiting for a navigation to complete. When the timer fired callbacks pending to be
"when the timer fires, pending callbacks for navigations are removed and invoked with a timeout error."
> Source/WebKit/ChangeLog:11
> + not provided the default timeout (300 seconds) is used.
Nice. I really like the stateless/explicit arguments to each command approach, as you may have figured out.
> Source/WebKit/UIProcess/Automation/Automation.json:282
> + { "name": "pageLoadTimeout", "type": "integer", "optional": true, "description": "The timeout in milliseconds that the navigation is expected to be completed in, otherwise a <code>Timeout</code> error is returned." }
It would be okay to use a "type": "number" here and pass as a double. If we are using int milliseconds elsewhere, then it's probably better to be consistent though.
> Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:52
> +static const Seconds defaultPageLoadTimeout = 300_s;
I love these new duration classes, so much easier to use than std::chrono!
> Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:407
> + ASSERT(!m_loadTimer.isActive());
I had to think about this change for a minute, but I think it's okay.
> Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:431
> + for (auto frameID : m_pendingNavigationInBrowsingContextCallbacksPerFrame.keys()) {
Now I'm wondering how we could have multiple callbacks at all. Is there a way that one command can enqueue multiple pending navigation callbacks, aside from a programming error like calling this protocol method twice? It seems that the duration of two calls to this method shouldn't really overlap inside a command's implementation, and the timer should either be cleared or fire only once at a time. Am I missing something?
> Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:450
> + waitForNavigationToCompleteOnPage(*page, optionalPageLoadTimeout ? Seconds::fromMilliseconds(*optionalPageLoadTimeout) : defaultPageLoadTimeout, WTFMove(callback));
Yuck, hopefully I'll find time to make optional parameters use std::optional in generated code.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20170721/65c7f360/attachment.html>
More information about the webkit-unassigned
mailing list