[webkit-changes] [WebKit/WebKit] c9b695: [iOS][WK2] Add initial implementation for the Scre...
Chris Dumez
noreply at github.com
Tue Oct 4 23:03:57 PDT 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c9b695e3635533e21568064262dc1bca261c51ae
https://github.com/WebKit/WebKit/commit/c9b695e3635533e21568064262dc1bca261c51ae
Author: Chris Dumez <cdumez at apple.com>
Date: 2022-10-04 (Tue, 04 Oct 2022)
Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/PAL/pal/ios/UIKitSoftLink.h
M Source/WebCore/PAL/pal/ios/UIKitSoftLink.mm
M Source/WebCore/Sources.txt
M Source/WebCore/SourcesCocoa.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/dom/Exception.h
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/Page.h
M Source/WebCore/page/PageConfiguration.cpp
M Source/WebCore/page/PageConfiguration.h
M Source/WebCore/page/ScreenOrientation.cpp
M Source/WebCore/page/ScreenOrientation.h
M Source/WebCore/page/ScreenOrientationLockType.h
M Source/WebCore/page/ScreenOrientationType.h
A Source/WebCore/platform/ScreenOrientationManager.h
A Source/WebCore/platform/ScreenOrientationProvider.cpp
A Source/WebCore/platform/ScreenOrientationProvider.h
A Source/WebCore/platform/ios/ScreenOrientationProviderIOS.mm
M Source/WebKit/CMakeLists.txt
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/Sources.txt
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/UIProcess/API/APIUIClient.h
M Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h
M Source/WebKit/UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.mm
M Source/WebKit/UIProcess/Cocoa/UIDelegate.h
M Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
A Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.cpp
A Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.h
A Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.messages.in
A Source/WebKit/UIProcess/ios/WebScreenOrientationManagerProxyIOS.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
A Source/WebKit/WebProcess/WebCoreSupport/WebScreenOrientationManager.cpp
A Source/WebKit/WebProcess/WebCoreSupport/WebScreenOrientationManager.h
A Source/WebKit/WebProcess/WebCoreSupport/WebScreenOrientationManager.messages.in
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
Log Message:
-----------
[iOS][WK2] Add initial implementation for the Screen Orientation API
https://bugs.webkit.org/show_bug.cgi?id=245999
Reviewed by Wenson Hsieh.
Add initial implementation for the Screen Orientation API on WebKit2 / iOS:
- https://w3c.github.io/screen-orientation/#dom-screenorientation-type
- https://w3c.github.io/screen-orientation/#angle-attribute-get-orientation-angle
- https://w3c.github.io/screen-orientation/#Screen-orientation-change
I tested manually on device that the API is working as intended.
The feature is still behind an experimental feature flag, off by defaut.
Things that are missing and will be implemented in a follow-up:
- Test harness changes for automated testing
- Pre-conditions for locking / unlocking (e.g. user gesture, full screen)
* Source/WebCore/Headers.cmake:
* Source/WebCore/PAL/pal/ios/UIKitSoftLink.h:
* Source/WebCore/PAL/pal/ios/UIKitSoftLink.mm:
* Source/WebCore/Sources.txt:
* Source/WebCore/SourcesCocoa.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/Exception.h:
(WebCore::Exception::encode const):
(WebCore::Exception::decode):
* Source/WebCore/page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::screenOrientationManager const):
* Source/WebCore/page/Page.h:
* Source/WebCore/page/PageConfiguration.cpp:
* Source/WebCore/page/PageConfiguration.h:
* Source/WebCore/page/ScreenOrientation.cpp:
(WebCore::ScreenOrientation::ScreenOrientation):
(WebCore::ScreenOrientation::~ScreenOrientation):
(WebCore::ScreenOrientation::manager const):
(WebCore::ScreenOrientation::lock):
(WebCore::ScreenOrientation::unlock):
(WebCore::ScreenOrientation::type const):
(WebCore::ScreenOrientation::angle const):
(WebCore::ScreenOrientation::visibilityStateChanged):
(WebCore::ScreenOrientation::shouldListenForChangeNotification const):
(WebCore::ScreenOrientation::screenOrientationDidChange):
(WebCore::ScreenOrientation::suspend):
(WebCore::ScreenOrientation::resume):
(WebCore::ScreenOrientation::stop):
* Source/WebCore/page/ScreenOrientation.h:
* Source/WebCore/page/ScreenOrientationLockType.h:
* Source/WebCore/page/ScreenOrientationType.h:
* Source/WebCore/platform/ScreenOrientationManager.h: Copied from Source/WebCore/page/ScreenOrientationLockType.h.
(WebCore::ScreenOrientationManager::~ScreenOrientationManager):
(WebCore::ScreenOrientationManager::Observer::~Observer):
* Source/WebCore/platform/ScreenOrientationProvider.cpp: Added.
(WebCore::globalProvider):
(WebCore::ScreenOrientationProvider::getOrCreate):
(WebCore::ScreenOrientationProvider::~ScreenOrientationProvider):
(WebCore::ScreenOrientationProvider::addObserver):
(WebCore::ScreenOrientationProvider::removeObserver):
(WebCore::ScreenOrientationProvider::screenOrientationDidChange):
(WebCore::ScreenOrientationProvider::currentOrientation):
(WebCore::ScreenOrientationProvider::platformCurrentOrientation):
(WebCore::ScreenOrientationProvider::platformStartListeningForChanges):
(WebCore::ScreenOrientationProvider::platformStopListeningForChanges):
(WebCore::ScreenOrientationProvider::platformDestroy):
* Source/WebCore/platform/ScreenOrientationProvider.h: Copied from Source/WebCore/page/ScreenOrientation.h.
(WebCore::ScreenOrientationProvider::Observer::~Observer):
* Source/WebCore/platform/ios/ScreenOrientationProviderIOS.mm: Added.
(currentOrientationFromCurrentUIDevice):
(-[WebScreenOrientationObserver initWithProvider:]):
(-[WebScreenOrientationObserver dealloc]):
(-[WebScreenOrientationObserver _screenOrientationDidChange]):
(WebCore::ScreenOrientationProvider::platformCurrentOrientation):
(WebCore::ScreenOrientationProvider::platformStartListeningForChanges):
(WebCore::ScreenOrientationProvider::platformStopListeningForChanges):
(WebCore::ScreenOrientationProvider::platformDestroy):
* Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Sources.txt:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didAttachToRunningProcess):
(WebKit::WebPageProxy::resetState):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.cpp: Added.
(WebKit::WebScreenOrientationManagerProxy::WebScreenOrientationManagerProxy):
(WebKit::WebScreenOrientationManagerProxy::~WebScreenOrientationManagerProxy):
(WebKit::WebScreenOrientationManagerProxy::currentOrientation):
(WebKit::WebScreenOrientationManagerProxy::lock):
(WebKit::WebScreenOrientationManagerProxy::unlock):
(WebKit::WebScreenOrientationManagerProxy::screenOrientationDidChange):
(WebKit::WebScreenOrientationManagerProxy::setShouldSendChangeNotification):
* Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.h: Copied from Source/WebCore/page/ScreenOrientation.h.
* Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.messages.in: Copied from Source/WebCore/page/ScreenOrientationType.h.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebCoreSupport/WebScreenOrientationManager.cpp: Added.
(WebKit::WebScreenOrientationManager::WebScreenOrientationManager):
(WebKit::WebScreenOrientationManager::~WebScreenOrientationManager):
(WebKit::WebScreenOrientationManager::currentOrientation):
(WebKit::WebScreenOrientationManager::orientationDidChange):
(WebKit::WebScreenOrientationManager::lock):
(WebKit::WebScreenOrientationManager::unlock):
(WebKit::WebScreenOrientationManager::addObserver):
(WebKit::WebScreenOrientationManager::removeObserver):
* Source/WebKit/WebProcess/WebCoreSupport/WebScreenOrientationManager.h: Copied from Source/WebCore/page/ScreenOrientationLockType.h.
* Source/WebKit/WebProcess/WebCoreSupport/WebScreenOrientationManager.messages.in: Copied from Source/WebCore/page/ScreenOrientationType.h.
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_appHighlightsVisible):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
Canonical link: https://commits.webkit.org/255155@main
More information about the webkit-changes
mailing list