⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Aug 6, 2017:

11:06 PM Changeset in webkit [220329] by Carlos Garcia Campos
  • 24 edits
    3 adds in trunk

[GTK][WPE] Add API to provide browser information required by automation
https://bugs.webkit.org/show_bug.cgi?id=175130

Source/JavaScriptCore:

Reviewed by Brian Burg.

Add browserName and browserVersion to RemoteInspector::Client::Capabilities and virtual methods to the Client to
get them.

  • inspector/remote/RemoteInspector.cpp:

(Inspector::RemoteInspector::updateClientCapabilities): Update also browserName and browserVersion.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/glib/RemoteInspectorGlib.cpp:

(Inspector::RemoteInspector::requestAutomationSession): Call updateClientCapabilities() after the session is
requested to ensure they are updated before StartAutomationSession reply is sent.

  • inspector/remote/glib/RemoteInspectorServer.cpp: Add browserName and browserVersion as return values of

StartAutomationSession mesasage.

Source/WebDriver:

Reviewed by Brian Burg.

  • Session.cpp:

(WebDriver::Session::createTopLevelBrowsingContext): Check if startAutomationSession and complete the command
with error in that case.

  • SessionHost.h:
  • glib/SessionHostGlib.cpp:

(WebDriver::SessionHost::matchCapabilities): Match the capabilities that are known only after the browser has
been launched.
(WebDriver::SessionHost::startAutomationSession): Handle the StartAutomationSession response, extracting the
capabilities and calling matchCapabilities() to match them.
(WebDriver::SessionHost::setTargetList): Return early if the session was rejected before due to invalid
capabilities.

Source/WebKit:

Reviewed by Michael Catanzaro.

When a new automation session is started, the web driver receives some required capabilities from the client,
like browser name and version. The session should be rejected if those required capabilities don't match with
the actual browser that is launched. We don't know that information in WebKit, so we need to add API so that
users can provide it when a new session request is made. This patch adds boxed object WebKitApplicationInfo that
can be used to set the application name and version. This object can be set to a WebKitAutomationSession when
WebKitWebContext::automation-started signal is emitted.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • UIProcess/API/glib/WebKitApplicationInfo.cpp: Added.

(webkit_application_info_new):
(webkit_application_info_ref):
(webkit_application_info_unref):
(webkit_application_info_set_name):
(webkit_application_info_get_name):
(webkit_application_info_set_version):
(webkit_application_info_get_version):

  • UIProcess/API/glib/WebKitAutomationSession.cpp:

(webkitAutomationSessionDispose):
(webkit_automation_session_class_init):
(webkitAutomationSessionGetBrowserName):
(webkitAutomationSessionGetBrowserVersion):
(webkit_automation_session_set_application_info):
(webkit_automation_session_get_application_info):

  • UIProcess/API/glib/WebKitAutomationSessionPrivate.h:
  • UIProcess/API/glib/WebKitWebContext.cpp:
  • UIProcess/API/gtk/WebKitApplicationInfo.h: Added.
  • UIProcess/API/gtk/WebKitAutomationSession.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
  • UIProcess/API/gtk/webkit2.h:
  • UIProcess/API/wpe/WebKitApplicationInfo.h: Added.
  • UIProcess/API/wpe/WebKitAutomationSession.h:
  • UIProcess/API/wpe/webkit.h:

Tools:

Reviewed by Michael Catanzaro.

  • MiniBrowser/gtk/main.c:

(automationStartedCallback): Set browser information when a new automation session is started.

  • TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp:

(testAutomationSessionApplicationInfo):
(beforeAll):

8:24 PM Changeset in webkit [220328] by Ryan Haddad
  • 6 edits
    1 delete in trunk/Tools

Unreviewed, rolling out r220295.

This change introduced 4 errors in webkitpy tests.

Reverted changeset:

"[XCode] webkit-patch should run sort-Xcode-project-file"
https://bugs.webkit.org/show_bug.cgi?id=174036
http://trac.webkit.org/changeset/220295

8:00 PM Changeset in webkit [220327] by Ryan Haddad
  • 2 edits in trunk/Tools

Disable API test NowPlayingControlsTests.NowPlayingControlsIOS.

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKit2Cocoa/NowPlayingControlsTests.mm:

(TestWebKitAPI::TEST):

5:06 PM WebKitGTK/2.16.x edited by clopez@igalia.com
(diff)
4:34 PM Changeset in webkit [220326] by clopez@igalia.com
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] CFLAGS from pkg-config for (E)GL are not passed to WebKit
https://bugs.webkit.org/show_bug.cgi?id=175125

Reviewed by Michael Catanzaro.

Some platforms define cflags on the (E)GL pkg-config files that we
need to pass to the build system when including the (E)GL headers.
And we are already doing this when building WebCore (after r184954).

But now we need to do this also on WebKit (former WebKit2) because
we include (E)GL headers (and make use of them) on the UIProcess.

  • CMakeLists.txt:
4:24 PM Changeset in webkit [220325] by jcraig@apple.com
  • 3 edits in trunk/Websites/webkit.org

2017-08-06 James Craig <jcraig@apple.com>

Update prefers-reduced-motion demos to link back to blog post
https://bugs.webkit.org/show_bug.cgi?id=175251

Unreviewed, added some cross links to older demo files.

  • blog-files/prefers-reduced-motion/axi.htm:
  • blog-files/prefers-reduced-motion/prm.htm:
10:57 AM Changeset in webkit [220324] by Yusuke Suzuki
  • 4 edits
    1 add in trunk

Promise resolve and reject function should have length = 1
https://bugs.webkit.org/show_bug.cgi?id=175242

Reviewed by Saam Barati.

JSTests:

  • stress/builtin-function-length.js: Added.

(shouldBe):
(shouldThrow):
(shouldBe.JSON.stringify.Object.getOwnPropertyDescriptor):
(shouldBe.JSON.stringify.Object.getOwnPropertyNames.Array.prototype.filter.sort):

Source/JavaScriptCore:

Previously we have separate system for "length" and "name" for builtin functions.
The builtin functions do not use lazy reifying system. Instead, they have direct
properties when instantiating it. While the function created for properties (like
Array.prototype.filter) is created by JSFunction::createBuiltin(), function inside
these builtin functions are just created by JSFunction::create(). Since it does
not set any values for "length", these functions do not have "length" property.
So, the resolve and reject functions passed to Promise's executor do not have
"length" property.

This patch make builtin functions use standard lazy reifying system for "length".
So, "length" property of the builtin function just works as if the normal functions
do.

  • runtime/JSFunction.cpp:

(JSC::JSFunction::createBuiltinFunction):
(JSC::JSFunction::getOwnPropertySlot):
(JSC::JSFunction::getOwnNonIndexPropertyNames):
(JSC::JSFunction::put):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::defineOwnProperty):
(JSC::JSFunction::reifyLazyPropertyIfNeeded):
(JSC::JSFunction::reifyLazyPropertyForHostOrBuiltinIfNeeded):
(JSC::JSFunction::reifyLazyLengthIfNeeded):
(JSC::JSFunction::reifyLazyBoundNameIfNeeded):
(JSC::JSFunction::reifyBoundNameIfNeeded): Deleted.

  • runtime/JSFunction.h:
6:04 AM Changeset in webkit [220323] by gskachkov@gmail.com
  • 8 edits
    1 add in trunk

[Next] Async iteration - Implement Async Generator - parser
https://bugs.webkit.org/show_bug.cgi?id=175210

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/async-await-syntax.js:

(testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntax):

  • stress/async-iteration-syntax.js: Added.

(assert):
(checkSyntax):
(checkSyntaxError):
(checkSimpleAsyncGeneratorSloppyMode):
(checkSimpleAsyncGeneratorStrictMode):
(checkNestedAsyncGenerators):
(checkSimpleAsyncGeneratorSyntaxErrorInStrictMode):

  • stress/generator-class-methods-syntax.js:

Source/JavaScriptCore:

Current implementation is draft version of Async Iteration.
Link to spec https://tc39.github.io/proposal-async-iteration/

Current patch implement only parser part of the Async generator
Runtime part will be in next ptches

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createFunctionMetadata):

  • parser/Parser.cpp:

(JSC::getAsynFunctionBodyParseMode):
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseAsyncFunctionSourceElements):
(JSC::Parser<LexerType>::parseAsyncGeneratorFunctionSourceElements):
(JSC::stringArticleForFunctionMode):
(JSC::stringForFunctionMode):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseAsyncFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::parsePropertyMethod):
(JSC::Parser<LexerType>::parseAsyncFunctionExpression):

  • parser/Parser.h:

(JSC::Scope::setSourceParseMode):

  • parser/ParserModes.h:

(JSC::isFunctionParseMode):
(JSC::isAsyncFunctionParseMode):
(JSC::isAsyncArrowFunctionParseMode):
(JSC::isAsyncGeneratorFunctionParseMode):
(JSC::isAsyncFunctionOrAsyncGeneratorWrapperParseMode):
(JSC::isAsyncFunctionWrapperParseMode):
(JSC::isAsyncFunctionBodyParseMode):
(JSC::isGeneratorMethodParseMode):
(JSC::isAsyncMethodParseMode):
(JSC::isAsyncGeneratorMethodParseMode):
(JSC::isMethodParseMode):
(JSC::isGeneratorOrAsyncFunctionBodyParseMode):
(JSC::isGeneratorOrAsyncFunctionWrapperParseMode):

Aug 5, 2017:

9:43 PM Changeset in webkit [220322] by fpizlo@apple.com
  • 18 edits
    2 adds in trunk

REGRESSION (r219895-219897): Number of leaks on Open Source went from 9240 to 235983 and is now at 302372
https://bugs.webkit.org/show_bug.cgi?id=175083

Reviewed by Oliver Hunt.

Source/JavaScriptCore:

This fixes the leak by making MarkedBlock::specializedSweep call destructors when the block is empty,
even if we are using the pop path.

Also, this fixes HeapCellInlines.h to no longer include MarkedBlockInlines.h. That's pretty
important, since MarkedBlockInlines.h is the GC's internal guts - we don't want to have to recompile
the world just because we changed it.

Finally, this adds a new testing SPI for waiting for all VMs to finish destructing. This makes it
easier to debug leaks.

  • bytecode/AccessCase.cpp:
  • bytecode/PolymorphicAccess.cpp:
  • heap/HeapCell.cpp:

(JSC::HeapCell::isLive):

  • heap/HeapCellInlines.h:

(JSC::HeapCell::isLive): Deleted.

  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::tryAllocateWithoutCollecting):
(JSC::MarkedAllocator::endMarking):

  • heap/MarkedBlockInlines.h:

(JSC::MarkedBlock::Handle::specializedSweep):

  • jit/AssemblyHelpers.cpp:
  • jit/Repatch.cpp:
  • runtime/TestRunnerUtils.h:
  • runtime/VM.cpp:

(JSC::waitForVMDestruction):
(JSC::VM::~VM):

Source/WTF:

Adds a classic ReadWriteLock class. I wrote my own because I can never remember if the pthread one is
guaranted to bias in favor of writers or not.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/Condition.h:

(WTF::ConditionBase::construct):
(WTF::Condition::Condition):

  • wtf/Lock.h:

(WTF::LockBase::construct):
(WTF::Lock::Lock):

  • wtf/ReadWriteLock.cpp: Added.

(WTF::ReadWriteLockBase::construct):
(WTF::ReadWriteLockBase::readLock):
(WTF::ReadWriteLockBase::readUnlock):
(WTF::ReadWriteLockBase::writeLock):
(WTF::ReadWriteLockBase::writeUnlock):

  • wtf/ReadWriteLock.h: Added.

(WTF::ReadWriteLockBase::ReadLock::tryLock):
(WTF::ReadWriteLockBase::ReadLock::lock):
(WTF::ReadWriteLockBase::ReadLock::unlock):
(WTF::ReadWriteLockBase::WriteLock::tryLock):
(WTF::ReadWriteLockBase::WriteLock::lock):
(WTF::ReadWriteLockBase::WriteLock::unlock):
(WTF::ReadWriteLockBase::read):
(WTF::ReadWriteLockBase::write):
(WTF::ReadWriteLock::ReadWriteLock):

Tools:

Leaks results are super confusing if leaks runs while some VMs are destructing. This calls a new SPI
to wait for VM destructions to finish before running the next test. This makes it easier to
understand leaks results from workers tests, and leads to fewer reported leaks.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(runTest):

4:48 PM Changeset in webkit [220321] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

check-webkit-style: fix path-specific rules for WebKit2 rename
https://bugs.webkit.org/show_bug.cgi?id=175182

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> on 2017-08-05
Reviewed by David Kilzer.

  • Scripts/webkitpy/style/checker.py:
3:11 PM Changeset in webkit [220320] by commit-queue@webkit.org
  • 15 edits in trunk

[Fetch API] Response should keep all ResourceResponse information
https://bugs.webkit.org/show_bug.cgi?id=175099

Patch by Youenn Fablet <youenn@apple.com> on 2017-08-05
Reviewed by Sam Weinig.

Source/WebCore:

No change of behavior, covered by existing tests.

Disabling filtering of resource response at DocumentThreadableLoader for fetch API and doing the filtering at FetchResponse level.
This requires passing the tainting parameter to FetchResponse. For that purpose, we store the tainting on the ResourceResponse itself.
This allows mimicking the concept of internal response from the fetch spec.
This might be useful for future developments related to caching the responses.

The body is now also stored in FetchResponse so a flag is added to ensure we only expose the body if allowed.

Changing storage of opaque redirect information to keep the redirection information in the response.

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::blob):
(WebCore::FetchBodyOwner::consumeNullBody):

  • Modules/fetch/FetchBodyOwner.h:
  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::BodyLoader::didReceiveResponse):
(WebCore::FetchResponse::consume):
(WebCore::FetchResponse::consumeBodyAsStream):
(WebCore::FetchResponse::createReadableStreamSource):

  • Modules/fetch/FetchResponse.h:
  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::responseReceived):
(WebCore::DocumentThreadableLoader::didReceiveResponse):
(WebCore::DocumentThreadableLoader::didFinishLoading):
(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/DocumentThreadableLoader.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::willSendRequestInternal):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::setBodyDataFrom):
(WebCore::CachedResource::setResponse):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::crossThreadData const):
(WebCore::ResourceResponseBase::fromCrossThreadData):
(WebCore::ResourceResponseBase::filter):

  • platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::setTainting):
(WebCore::ResourceResponseBase::tainting const):
(WebCore::ResourceResponseBase::encode const):
(WebCore::ResourceResponseBase::decode):

LayoutTests:

Updating test now that we are no longer cancelling the load in case of opaque responses.

  • http/tests/inspector/network/fetch-network-data-expected.txt:
  • http/tests/inspector/network/fetch-network-data.html:
11:59 AM Changeset in webkit [220319] by commit-queue@webkit.org
  • 10 edits in trunk/LayoutTests/imported/w3c

[Cache API] Add Cache and CacheStorage IDL definitions
https://bugs.webkit.org/show_bug.cgi?id=175201
<rdar://problem/33738001>

Unreviewed.
Rebasing test expectations after http://trac.webkit.org/changeset/220310.

Patch by Youenn Fablet <youenn@apple.com> on 2017-08-05

  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-add.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-delete.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-keys.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-matchAll.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-put.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-keys.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-match.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage.https-expected.txt:
7:10 AM Changeset in webkit [220318] by mark.lam@apple.com
  • 5 edits
    1 delete in trunk/Source/JavaScriptCore

Move DFG::OSRExitCompiler methods into DFG::OSRExit [step 3].
https://bugs.webkit.org/show_bug.cgi?id=175228
<rdar://problem/33735737>

Reviewed by Saam Barati.

Merge the 32-bit OSRExit::compileExit() method into the 64-bit version, and
delete OSRExit32_64.cpp.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGOSRExit32_64.cpp: Removed.
  • jit/GPRInfo.h:

(JSC::JSValueSource::payloadGPR const):

4:14 AM Changeset in webkit [220317] by Carlos Garcia Campos
  • 9 edits in trunk/Source

WebDriver: Implement page load strategy
https://bugs.webkit.org/show_bug.cgi?id=175183

Reviewed by Brian Burg.

Source/WebDriver:

Validate and parse page load strategy when processing capabilities.

  • Capabilities.h:
  • Session.cpp:

(WebDriver::Session::pageLoadStrategyString const): Helper to get the page load strategy as a String to be
passed to Automation.
(WebDriver::Session::go): Pass page load strategy if present.
(WebDriver::Session::back): Ditto.
(WebDriver::Session::forward): Ditto.
(WebDriver::Session::refresh): Ditto.
(WebDriver::Session::waitForNavigationToComplete): Ditto.

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::deserializePageLoadStrategy):
(WebDriver::WebDriverService::parseCapabilities const):
(WebDriver::WebDriverService::validatedCapabilities const):
(WebDriver::WebDriverService::newSession):

Source/WebKit:

Split pending navigation maps into normal and eager, and use one or the other depending on the received page
load strategy. We need to keep different maps for every page load strategy because every command could use a
different strategy.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::waitForNavigationToComplete): Extract page load strategy from parameter and pass
it to waitForNavigationToCompleteOnPage() and waitForNavigationToCompleteOnFrame().
(WebKit::WebAutomationSession::waitForNavigationToCompleteOnPage): Return early if page load strategy is
none. Otherwise at the pening callback to the normal or eager map depeding on the page load straegy.
(WebKit::WebAutomationSession::waitForNavigationToCompleteOnFrame): Ditto.
(WebKit::respondToPendingNavigationCallbacksWithTimeout): Helper to send pening navigation callback in case of
timeout failure.
(WebKit::WebAutomationSession::loadTimerFired): Call finishPendingNavigationsWithTimeoutFailure() with all the maps.
(WebKit::WebAutomationSession::navigateBrowsingContext): Extract page load strategy from parameter and pass it
to waitForNavigationToCompleteOnPage().
(WebKit::WebAutomationSession::goBackInBrowsingContext): Ditto.
(WebKit::WebAutomationSession::goForwardInBrowsingContext): Ditto.
(WebKit::WebAutomationSession::reloadBrowsingContext): Ditto.
(WebKit::WebAutomationSession::navigationOccurredForFrame): Use the normal maps.
(WebKit::WebAutomationSession::documentLoadedForFrame): Stop timeout timer and dispatch eager pending navigations.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didFinishDocumentLoadForFrame): Notify the automation session.

3:32 AM Changeset in webkit [220316] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebDriver

Unreviewed. Try to fix build with clang after r220315.

  • WebDriverService.cpp:

(WebDriver::WebDriverService::validatedCapabilities const):
(WebDriver::WebDriverService::mergeCapabilities const):

2:27 AM Changeset in webkit [220315] by Carlos Garcia Campos
  • 7 edits in trunk/Source/WebDriver

WebDriver: properly handle capabilities and process firstMatch too
https://bugs.webkit.org/show_bug.cgi?id=174618

Reviewed by Brian Burg.

Implement processing of capabilities following the spec. This patch adds validation, merging and matching of
capabilities.

7.2 Processing Capabilities.
https://w3c.github.io/webdriver/webdriver-spec.html#processing-capabilities

  • Capabilities.h: Make all capabilities optional and move Timeouts struct here.
  • Session.h:
  • WebDriverService.cpp:

(WebDriver::deserializeTimeouts): Helper to extract timeouts from JSON object.
(WebDriver::WebDriverService::parseCapabilities const): At this point capabilities have already been validated,
so we just need to get them without checking the value type.
(WebDriver::WebDriverService::validatedCapabilities const): Validate the given capabilities, ensuring types of
values are the expected one.
(WebDriver::WebDriverService::mergeCapabilities const): Merge the alwaysMatch and firstMatch capabilities into a
single object ensuring that the same capability is not in both.
(WebDriver::WebDriverService::matchCapabilities const): Try to match the merged capabilities againt the platform
expected capabilities.
(WebDriver::WebDriverService::processCapabilities const): Validate, merge and match the capabilities.
(WebDriver::WebDriverService::newSession): Use processCapabilities(). Also initialize the timeouts from
capabilities and add all capabilities to the command result.
(WebDriver::WebDriverService::setTimeouts): Use deserializeTimeouts().

  • WebDriverService.h:
  • glib/SessionHostGlib.cpp:

(WebDriver::SessionHost::launchBrowser): Updated to properly access the capabilities that are now optional.
(WebDriver::SessionHost::startAutomationSession): Add FIXME.

  • gtk/WebDriverServiceGtk.cpp:

(WebDriver::WebDriverService::platformCapabilities): Return the Capabilities with the known required ones filled.
(WebDriver::WebDriverService::platformValidateCapability const): Validate webkitgtk:browserOptions.
(WebDriver::WebDriverService::platformMatchCapability const): This does nothing for now.
(WebDriver::WebDriverService::platformCompareBrowserVersions): Compare the given browser versions.
(WebDriver::WebDriverService::platformParseCapabilities const): Updated now that capabilites have already been
validated before.

1:11 AM Changeset in webkit [220314] by Carlos Garcia Campos
  • 17 edits in trunk/Source

WebDriver: use in-view center point for clicks instead of bounding box center point
https://bugs.webkit.org/show_bug.cgi?id=174863

Reviewed by Simon Fraser.

Source/WebCore:

Make DOMRect, and FloatPoint::narrowPrecision() available to WebKit layer. Also add
FrameView::clientToDocumentPoint().

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.h:
  • page/FrameView.h:
  • platform/graphics/FloatPoint.h:

Source/WebDriver:

The center of the element bounding box is not always part of the element, like in multiline links, for example.

11.1 Element Interactability.
https://www.w3.org/TR/webdriver/#dfn-in-view-center-point

  • CommandResult.cpp:

(WebDriver::CommandResult::httpStatusCode): Add ElementClickIntercepted and ElementNotInteractable errors.
(WebDriver::CommandResult::errorString): Ditto.

  • CommandResult.h: Ditto.
  • Session.cpp:

(WebDriver::Session::computeElementLayout): Get the in-view center point and isObscured from the result too.
(WebDriver::Session::getElementRect): Ignore in-view center point and isObscured.
(WebDriver::Session::elementClick): Fail in case the element is not interactable or is obscured.

  • Session.h:

Source/WebKit:

Change computeElementLayout to also return the in-view center point and whether it's obscured by another
element.

  • UIProcess/Automation/Automation.json: Add optional inViewCenterPoint to the result and isObscured.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::didComputeElementLayout): Handle inViewCenterPoint and isObscured.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/WebAutomationSession.messages.in:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::elementInViewClientCenterPoint): Get the client in-view center point and whether it's obscured
according to the spec.
(WebKit::WebAutomationSessionProxy::computeElementLayout): Pass inViewCenterPoint and isObscured to
DidComputeElementLayout message.

1:08 AM Changeset in webkit [220313] by Carlos Garcia Campos
  • 3 edits
    6 adds in trunk

getClientRects doesn't work with list box option elements
https://bugs.webkit.org/show_bug.cgi?id=175016

Reviewed by Darin Adler.

Source/WebCore:

Since HTMLOptionElement and HTMLOptGroupElement don't have a renderer, we are always returning an empty list
from getClientRects. This is working fine in both chromium and firefox, option elements return its own bounding
box and group elements return the bounding box of the group label and all its children items.

Test: fast/dom/HTMLSelectElement/listbox-items-client-rects.html

  • dom/Element.cpp:

(WebCore::listBoxElementBoundingBox): Helper function to return the bounding box of a HTMLOptionElement or
HTMLOptGroupElement element.
(WebCore::Element::getClientRects): Use listBoxElementBoundingBox() in case of HTMLOptionElement or
HTMLOptGroupElement.
(WebCore::Element::boundingClientRect): Ditto.

LayoutTests:

Add new test to check list box option elements client rects.

  • fast/dom/HTMLSelectElement/listbox-items-client-rects-expected.txt: Added.
  • fast/dom/HTMLSelectElement/listbox-items-client-rects.html: Added.
  • platform/ios-simulator-wk2/fast/dom/HTMLSelectElement/listbox-items-client-rects-expected.txt: Added.
12:57 AM Changeset in webkit [220312] by BJ Burg
  • 2 edits in trunk/Source/WebKit

Web Automation: files selected for upload should be matched against 'accept' attribute values case-insensitively
https://bugs.webkit.org/show_bug.cgi?id=175191
<rdar://problem/33725790>

Reviewed by Carlos Garcia Campos.

Values of the "accept" attribute are to be compared in a case-insensitive manner, per
https://html.spec.whatwg.org/multipage/input.html#file-upload-state-(type=file)

Except for converting MIME types and extensions to lowercase, most of these changes
were lost in a rebase prior to landing the patch.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::fileCanBeAcceptedForUpload): Fix some issues:

  • Handle a file ending in a period.
  • Handle MIME type inference failing.
  • Convert extensions and MIMEs to lower case, per specification.

(WebKit::WebAutomationSession::handleRunOpenPanel):

  • Strip the leading period from file extensions.
  • These range converters crash unless the API::Array is retained by a local variable.
Note: See TracTimeline for information about the timeline view.