WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED WONTFIX
109421
[WK2][EFL][Qt] Viewport size is affected on page reload.
https://bugs.webkit.org/show_bug.cgi?id=109421
Summary
[WK2][EFL][Qt] Viewport size is affected on page reload.
Mikhail Pozdnyakov
Reported
2013-02-11 05:48:03 PST
One of scenarios to reproduce: 1) Open ./ManualTests/fixed-position.html 2) Reload. 3) See that fixed elements have "jumped" The reason for it is that setFixedVisibleContentRect() is invoked from WebPage::sendViewportAttributesChanged() during reload with wrong 'contentFixedSize' (scaled by initial scale) => Viewport size is affected => position of relatively positioned elements affected too.
Attachments
patch
(4.60 KB, patch)
2013-02-12 08:06 PST
,
Mikhail Pozdnyakov
no flags
Details
Formatted Diff
Diff
patch v2
(4.48 KB, patch)
2013-02-12 09:38 PST
,
Mikhail Pozdnyakov
no flags
Details
Formatted Diff
Diff
patch v3
(4.49 KB, patch)
2013-02-15 06:57 PST
,
Mikhail Pozdnyakov
benjamin
: review-
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Mikhail Pozdnyakov
Comment 1
2013-02-12 08:06:48 PST
Created
attachment 187870
[details]
patch
Kenneth Rohde Christiansen
Comment 2
2013-02-12 08:21:35 PST
Comment on
attachment 187870
[details]
patch View in context:
https://bugs.webkit.org/attachment.cgi?id=187870&action=review
> Source/WebKit2/ChangeLog:17 > + Frame view's fixed visible content rectangle is updated by PageViewportController > + (via CoordinatedLayerTreeHostProxy) when page contents size is changed, > + but CoordinatedLayerTreeHostProxy did not send anything in case if the last sent rectangle > + was the same as the one to be sent. > + > + The fixed visible content rectangle is updated also by WebPage at WebPage::sendViewportAttributesChanged() > + but considering the initial scale factor obtained from page viewport arguments. > + > + So, we had following problem at page reload: fixed visible content rectangle was updated by WebPage > + (considering the initial scale) but not updated by PageViewportController (considering real contents size)
Can you try to balance the line length :-) ?
> Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:241 > +void CoordinatedLayerTreeHostProxy::reset() > +{
I hate reset(). It can mean like everything. setInitialStateForNewPageLoad() or something similar (I would look for similarly named methods) would make its use very clear
> Source/WebKit2/UIProcess/PageViewportController.cpp:155 > > +#if USE(COORDINATED_GRAPHICS) > + if (DrawingAreaProxy* drawingArea = m_webPageProxy->drawingArea()) > + if (CoordinatedLayerTreeHostProxy* coordinatedLayerTreeHostProxy = drawingArea->coordinatedLayerTreeHostProxy()) > + coordinatedLayerTreeHostProxy->reset(); > +#endif
Is this really the right place... This is a call back from somewhere else and you just propagate it.
Mikhail Pozdnyakov
Comment 3
2013-02-12 08:57:03 PST
(In reply to
comment #2
)
> (From update of
attachment 187870
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=187870&action=review
> > > Source/WebKit2/ChangeLog:17 > > + Frame view's fixed visible content rectangle is updated by PageViewportController > > + (via CoordinatedLayerTreeHostProxy) when page contents size is changed, > > + but CoordinatedLayerTreeHostProxy did not send anything in case if the last sent rectangle > > + was the same as the one to be sent. > > + > > + The fixed visible content rectangle is updated also by WebPage at WebPage::sendViewportAttributesChanged() > > + but considering the initial scale factor obtained from page viewport arguments. > > + > > + So, we had following problem at page reload: fixed visible content rectangle was updated by WebPage > > + (considering the initial scale) but not updated by PageViewportController (considering real contents size) > > Can you try to balance the line length :-) ?
I'll try :)
> > > Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:241 > > +void CoordinatedLayerTreeHostProxy::reset() > > +{ > > I hate reset(). It can mean like everything. > > setInitialStateForNewPageLoad() or something similar (I would look for similarly named methods) would make its use very clear
think didCommitLoad could be used, like PageViewportController does.
> > > Source/WebKit2/UIProcess/PageViewportController.cpp:155 > > > > +#if USE(COORDINATED_GRAPHICS) > > + if (DrawingAreaProxy* drawingArea = m_webPageProxy->drawingArea()) > > + if (CoordinatedLayerTreeHostProxy* coordinatedLayerTreeHostProxy = drawingArea->coordinatedLayerTreeHostProxy()) > > + coordinatedLayerTreeHostProxy->reset(); > > +#endif > > Is this really the right place... This is a call back from somewhere else and you just propagate it.
yeah, I guess the better place shall be inside WebPageProxy::didCommitLoadForFrame
Mikhail Pozdnyakov
Comment 4
2013-02-12 09:38:53 PST
Created
attachment 187885
[details]
patch v2 Took comments from Kenneth into consideration.
Kenneth Rohde Christiansen
Comment 5
2013-02-15 06:35:01 PST
Comment on
attachment 187885
[details]
patch v2 Looks fine, but let noam/dongsung have a look
Noam Rosenthal
Comment 6
2013-02-15 06:47:33 PST
Comment on
attachment 187885
[details]
patch v2 View in context:
https://bugs.webkit.org/attachment.cgi?id=187885&action=review
LGTM.
> Source/WebKit2/ChangeLog:23 > + This patch introduces CoordinatedLayerTreeHostProxy::reset() method
You mean didCommitNewPageLoad?
Mikhail Pozdnyakov
Comment 7
2013-02-15 06:52:11 PST
(In reply to
comment #6
)
> (From update of
attachment 187885
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=187885&action=review
> > LGTM. > > > Source/WebKit2/ChangeLog:23 > > + This patch introduces CoordinatedLayerTreeHostProxy::reset() method > > You mean didCommitNewPageLoad?
Indeed :)
Mikhail Pozdnyakov
Comment 8
2013-02-15 06:57:43 PST
Created
attachment 188559
[details]
patch v3 fixed change log.
Benjamin Poulain
Comment 9
2013-02-19 14:27:11 PST
Comment on
attachment 188559
[details]
patch v3 View in context:
https://bugs.webkit.org/attachment.cgi?id=188559&action=review
1) Why no test? 2) Despite the ChangeLog, I really don't understand why would the drawing area know anything about didCommitLoadForFrame. This looks like punching a giant hole through layers.
> Source/WebKit2/ChangeLog:10 > + but CoordinatedLayerTreeHostProxy did not send anything in case if the
"in case if the"?
Mikhail Pozdnyakov
Comment 10
2013-02-19 23:49:08 PST
(In reply to
comment #9
)
> (From update of
attachment 188559
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=188559&action=review
> > 1) Why no test?
there is already ./ManualTests/fixed-position.html, where I found this issue.
> 2) Despite the ChangeLog, I really don't understand why would the drawing area know anything about didCommitLoadForFrame. This looks like punching a giant hole through layers.
> well maybe didCommitLoadForFrame() is not the best name, but drawing area anyway needs a method to clear its m_lastSentVisibleRect and m_lastSentTrajectoryVector. Initially I called this method "reset()".
> > Source/WebKit2/ChangeLog:10 > > + but CoordinatedLayerTreeHostProxy did not send anything in case if the > > "in case if the"?
Michael Catanzaro
Comment 11
2017-03-11 10:47:43 PST
Closing this bug because the EFL port has been removed from trunk. If you feel this bug applies to a different upstream WebKit port and was closed in error, please either update the title and reopen the bug, or leave a comment to request this.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug