[webkit-changes] [WebKit/WebKit] 65f6f1: Add support for PermissionStatus.onchange in workers

Rupin Mittal noreply at github.com
Wed Sep 14 13:12:23 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 65f6f1007c12d8371600f83bef65b52101a447f3
      https://github.com/WebKit/WebKit/commit/65f6f1007c12d8371600f83bef65b52101a447f3
  Author: Rupin Mittal <rmittal2 at apple.com>
  Date:   2022-09-14 (Wed, 14 Sep 2022)

  Changed paths:
    M LayoutTests/TestExpectations
    A LayoutTests/http/tests/permissions/service-worker-permission-status-onchange-event-expected.txt
    A LayoutTests/http/tests/permissions/service-worker-permission-status-onchange-event.html
    A LayoutTests/http/tests/permissions/service-worker-permission-status-onchange-event.js
    A LayoutTests/http/tests/permissions/shared-worker-permission-status-onchange-event-expected.txt
    A LayoutTests/http/tests/permissions/shared-worker-permission-status-onchange-event.html
    A LayoutTests/http/tests/permissions/shared-worker-permission-status-onchange-event.js
    A LayoutTests/http/tests/permissions/worker-permission-status-onchange-event-expected.txt
    A LayoutTests/http/tests/permissions/worker-permission-status-onchange-event.html
    A LayoutTests/http/tests/permissions/worker-permission-status-onchange-event.js
    M LayoutTests/imported/w3c/web-platform-tests/permissions/permissions-cg.https-expected.txt
    M LayoutTests/platform/wk2/TestExpectations
    M Source/WebCore/Headers.cmake
    A Source/WebCore/Modules/permissions/MainThreadPermissionObserver.cpp
    A Source/WebCore/Modules/permissions/MainThreadPermissionObserver.h
    A Source/WebCore/Modules/permissions/MainThreadPermissionObserverIdentifier.h
    M Source/WebCore/Modules/permissions/PermissionController.h
    M Source/WebCore/Modules/permissions/PermissionObserver.h
    M Source/WebCore/Modules/permissions/PermissionStatus.cpp
    M Source/WebCore/Modules/permissions/PermissionStatus.h
    M Source/WebCore/Modules/permissions/Permissions.cpp
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h
    M Tools/WebKitTestRunner/TestController.cpp
    M Tools/WebKitTestRunner/TestController.h

  Log Message:
  -----------
  Add support for PermissionStatus.onchange in workers
https://bugs.webkit.org/show_bug.cgi?id=245090

Reviewed by Chris Dumez and Sihui Liu.

The onchange event of the PermissionStatus object is supposed to
be supported in both window and worker contexts. A previous patch
added support for window contexts and this patch adds support for
dedicated, service, and shared workers.

Since WebPermissionController::permissionChanged is only ever called
on the main thread, and it calls PermissionObserver::stateChanged,
the PermissionObserver it uses should be a main thread object.
Before this patch, when there was only support for window contexts,
all PermissionStatus objects were main thread objects. But now,
PermissionStatus objects can be created on worker threads as well.
When this happens, an associated MainThreadPermissionObserver is created
on the main thread and there is a one-to-one mapping between the worker
thread PermissionStatus object and the MainThreadPermissionObserver.
Then, when WebPermissionController::permissionChanged finds a
PermissionObserver to call stateChanged on, that PermissionObserver is
either a main thread PermissionStatus object (in the window case) or a
main thread MainThreadPermissionObserver, whose stateChanged function
will jump to the relevant worker thread and invoke the stateChanged
function of the associated worker thread PermissionStatus object.

* LayoutTests/TestExpectations:
* LayoutTests/http/tests/permissions/service-worker-permission-status-onchange-event-expected.txt: Added.
* LayoutTests/http/tests/permissions/service-worker-permission-status-onchange-event.html: Added.
* LayoutTests/http/tests/permissions/service-worker-permission-status-onchange-event.js: Added.
(self.onmessage):
* LayoutTests/http/tests/permissions/shared-worker-permission-status-onchange-event-expected.txt: Added.
* LayoutTests/http/tests/permissions/shared-worker-permission-status-onchange-event.html: Added.
* LayoutTests/http/tests/permissions/shared-worker-permission-status-onchange-event.js: Added.
(port.onmessage):
(onconnect):
* LayoutTests/http/tests/permissions/worker-permission-status-onchange-event-expected.txt: Added.
* LayoutTests/http/tests/permissions/worker-permission-status-onchange-event.html: Added.
* LayoutTests/http/tests/permissions/worker-permission-status-onchange-event.js: Added.
(onmessage):
* LayoutTests/imported/w3c/web-platform-tests/permissions/permissions-cg.https-expected.txt:
* LayoutTests/platform/wk2/TestExpectations:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Modules/permissions/MainThreadPermissionObserver.cpp: Added.
(WebCore::MainThreadPermissionObserver::MainThreadPermissionObserver):
(WebCore::MainThreadPermissionObserver::~MainThreadPermissionObserver):
(WebCore::MainThreadPermissionObserver::stateChanged):
* Source/WebCore/Modules/permissions/MainThreadPermissionObserver.h: Copied from Source/WebCore/Modules/permissions/PermissionStatus.h.
* Source/WebCore/Modules/permissions/MainThreadPermissionObserverIdentifier.h: Copied from Source/WebCore/Modules/permissions/PermissionObserver.h.
* Source/WebCore/Modules/permissions/PermissionController.h:
* Source/WebCore/Modules/permissions/PermissionObserver.h:
* Source/WebCore/Modules/permissions/PermissionStatus.cpp:
(WebCore::allMainThreadPermissionObservers):
(WebCore::PermissionStatus::create):
(WebCore::PermissionStatus::PermissionStatus):
(WebCore::PermissionStatus::~PermissionStatus):
(WebCore::PermissionStatus::stateChanged):
* Source/WebCore/Modules/permissions/PermissionStatus.h:
* Source/WebCore/Modules/permissions/Permissions.cpp:
(WebCore::Permissions::query):
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp:
(WebKit::WebPermissionController::query):
(WebKit::WebPermissionController::permissionChanged):
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h:
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::handleQueryPermission):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::setGeolocationPermission):
* Tools/WebKitTestRunner/TestController.h:

Canonical link: https://commits.webkit.org/254490@main




More information about the webkit-changes mailing list