Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c9b695e3635533e21568064262dc1bca261c51ae
      
https://github.com/WebKit/WebKit/commit/c9b695e3635533e21568064262dc1bca261c51ae
  Author: Chris Dumez <[email protected]>
  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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to