When viewport attribute is updated, WebPage::sendViewportAttributesChanged() changes fixed layout size of WebCore(ScrollView). However, it doesn't update fixed layout size with new fixed layout size for UIProcess. It can cause that UIProcess API (e.g. WKPageSetFixedLayoutSize()) can't change fixed layout size because WebPageProxy::m_fixedLayoutSize wasn't updated. void WebPage::sendViewportAttributesChanged() { ... // This also takes care of the relayout. setFixedLayoutSize(roundedIntSize(attr.layoutSize)); ... } void WebPage::setFixedLayoutSize(const IntSize& size) { FrameView* view = mainFrameView(); ... view->setFixedLayoutSize(size); => Change WebCore's fixed layout size ! ... } If WebPageProxy::m_fixedLayoutSize wasn't updated, WKPageSetFixedLayoutSize() can't update fixed layout size for WebCore. void WebPageProxy::setFixedLayoutSize(const IntSize& size) { ... if (size == m_fixedLayoutSize) return; m_fixedLayoutSize = size; m_process->send(Messages::WebPage::SetFixedLayoutSize(size), m_pageID); }
Created attachment 231756 [details] WIP