Bug 110066 - [EFL][Qt][WK2] Meta bug for not using ScrollView::m_fixedVisibleContentRect.
Summary: [EFL][Qt][WK2] Meta bug for not using ScrollView::m_fixedVisibleContentRect.
Status: RESOLVED WONTFIX
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Dongseong Hwang
URL:
Keywords:
Depends on: 111407 111408 111413 109033 110197 110298 110299 110311 110450 110847 111401 111405 111406
Blocks: 103105
  Show dependency treegraph
 
Reported: 2013-02-17 18:06 PST by Dongseong Hwang
Modified: 2017-03-11 10:43 PST (History)
11 users (show)

See Also:


Attachments
Not for Review: WIP to share the direction (23.81 KB, patch)
2013-02-17 18:10 PST, Dongseong Hwang
no flags Details | Formatted Diff | Diff
I'll separate this patch and file several bug. I submitted this patch to share my WIP until now. (49.41 KB, patch)
2013-02-19 02:32 PST, Dongseong Hwang
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Dongseong Hwang 2013-02-17 18:06:33 PST
Kenneth raised a question that we still need to use ScrollView::m_fixedVisibleContentRect.

Currently, we used fixedVisibleContentRect to make WebCore know actual scroll position and viewport size that PageViewportController deals with.
After Bug 105978 and Bug 107424, ScrollView can trace actual viewport size of PageViewportController. So if we make ScrollView know actual scroll position, we can remove fixedVisibleContentRect as well as delegates scrolling.

This huge changes have benefits as follow:
1. We share more code with other ports
2. It would be an intermediate step to go with scrolling coordinator (AFAIK cmarcelo and MPozdnyakov are investigating)
Comment 1 Dongseong Hwang 2013-02-17 18:10:31 PST
Created attachment 188786 [details]
Not for Review: WIP to share the direction
Comment 2 Dongseong Hwang 2013-02-17 18:27:09 PST
(In reply to comment #1)
> Created an attachment (id=188786) [details]
> Not for Review: WIP to share the direction

Could you feedback this proposal? I want to discuss about it to find the best direction :)

First of all, I'm curious that could I turn off delegates scroll. In my understanding, 'useFixedLayout' does not need 'delegates scroll'. I also want qt webkit1 to not use 'delegates scroll', which allows me remove all code related to 'delegates scroll'.

Second, I need to confirm I understand correctly efl's device scale factor policy.
If we launch MiniBrowser with -r 2 option, does 800x600 EwkView want to make PageViewportController and WebProcess know the viewport size 400x300? and then EwkView finally scale x2 when rendering?
In above example, which is fixedLayoutSize: 800x600 or 400x300?

If you have any question and opinion, please let me know! :)
Comment 3 Kenneth Rohde Christiansen 2013-02-18 09:46:21 PST
Comment on attachment 188786 [details]
Not for Review: WIP to share the direction

View in context: https://bugs.webkit.org/attachment.cgi?id=188786&action=review

We really need to split this up... like maybe start by getting rid of the setViewportSize

> Source/WebCore/rendering/RenderLayerCompositor.cpp:2135
>      // This applies when the application UI handles scrolling, in which case RenderLayerCompositor doesn't need to manage it.
> -    if (m_renderView->frameView()->delegatesScrolling())
> +    if (!m_renderView->frameView()->canHaveScrollbars())
>          return false;

I am not sure this is really correct... other platforms might have canHaveScrollbars being false.

Maybe this should be another patch

> Source/WebKit2/UIProcess/WebPageProxy.cpp:2662
> -void WebPageProxy::pageDidScroll()
> +void WebPageProxy::pageDidScroll(const IntPoint& scrollPosition)
>  {
>      m_uiClient.pageDidScroll(this);
>  #if PLATFORM(MAC)
>      dismissCorrectionPanel(ReasonForDismissingAlternativeTextIgnored);
>  #endif
> +#if USE(TILED_BACKING_STORE)
> +    m_pageClient->pageDidRequestScroll(scrollPosition);
> +#endif
>  }

One is that it did scroll and the other is a request to do so... seems weird

> Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:447
> -#if PLATFORM(QT) || PLATFORM(EFL)
> -    if (m_page->useFixedLayout()) {
> -        // The below method updates the size().
> -        m_page->resizeToContentsIfNeeded();
> -        m_page->drawingArea()->layerTreeHost()->sizeDidChange(m_page->size());
> -    }
> +#if USE(COORDINATED_GRAPHICS)
> +    if (m_page->useFixedLayout())
> +        m_page->drawingArea()->layerTreeHost()->sizeDidChange(size);

You tested this on Qt?

> Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1242
> -    m_page->settings()->setEnableScrollAnimator(!fixed);
> +//    m_page->settings()->setEnableScrollAnimator(!fixed);

No... :-) please dotn add outcommented code

> Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1250
> -    view->setDelegatesScrolling(fixed);
> +//    view->setDelegatesScrolling(fixed);

same
Comment 4 Dongseong Hwang 2013-02-19 02:28:44 PST
(In reply to comment #3)
> (From update of attachment 188786 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=188786&action=review

Thank you for review!

> We really need to split this up... like maybe start by getting rid of the setViewportSize

I'll separate and file several bugs, so this bug's tile includes 'Meta'. :)

> > Source/WebCore/rendering/RenderLayerCompositor.cpp:2135
> >      // This applies when the application UI handles scrolling, in which case RenderLayerCompositor doesn't need to manage it.
> > -    if (m_renderView->frameView()->delegatesScrolling())
> > +    if (!m_renderView->frameView()->canHaveScrollbars())
> >          return false;
> 
> I am not sure this is really correct... other platforms might have canHaveScrollbars being false.
> Maybe this should be another patch

yes

> > Source/WebKit2/UIProcess/WebPageProxy.cpp:2662
> > -void WebPageProxy::pageDidScroll()
> > +void WebPageProxy::pageDidScroll(const IntPoint& scrollPosition)
> >  {
> >      m_uiClient.pageDidScroll(this);
> >  #if PLATFORM(MAC)
> >      dismissCorrectionPanel(ReasonForDismissingAlternativeTextIgnored);
> >  #endif
> > +#if USE(TILED_BACKING_STORE)
> > +    m_pageClient->pageDidRequestScroll(scrollPosition);
> > +#endif
> >  }
> 
> One is that it did scroll and the other is a request to do so... seems weird

yes, I think so. I'll make code more consistent.

> > Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:447
> > -#if PLATFORM(QT) || PLATFORM(EFL)
> > -    if (m_page->useFixedLayout()) {
> > -        // The below method updates the size().
> > -        m_page->resizeToContentsIfNeeded();
> > -        m_page->drawingArea()->layerTreeHost()->sizeDidChange(m_page->size());
> > -    }
> > +#if USE(COORDINATED_GRAPHICS)
> > +    if (m_page->useFixedLayout())
> > +        m_page->drawingArea()->layerTreeHost()->sizeDidChange(size);
> 
> You tested this on Qt?

yes, I have tested both EFL and Qt.

> > Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1242
> > -    m_page->settings()->setEnableScrollAnimator(!fixed);
> > +//    m_page->settings()->setEnableScrollAnimator(!fixed);
> 
> No... :-) please dotn add outcommented code
> same

absolutely.
Comment 5 Dongseong Hwang 2013-02-19 02:32:47 PST
Created attachment 189033 [details]
I'll separate this patch and file several bug. I submitted this patch to share my WIP until now.
Comment 6 Michael Catanzaro 2017-03-11 10:43:54 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.