Changeset 170243 in webkit


Ignore:
Timestamp:
Jun 21, 2014 8:06:00 AM (10 years ago)
Author:
gyuyoung.kim@samsung.com
Message:

[CoordinatedGraphics][WK2][EFL] Page is moved to (0,0) position before rendering content
https://bugs.webkit.org/show_bug.cgi?id=133300

Reviewed by Csaba Osztrogonác.

When new page is loaded, PageViewportController::didCommitLoad() calls PageViewportController::syncVisibleContents()
with initial position via applyPositionAfterRenderingContents() before starting to render
new page by PageViewportController::didRenderFrame(). This call flow causes that webview shows
incomplete tiles to the user during a few milliseconds. To fix showing incomplete tiles during
the page loading, this patch adds a flag so that we don't show the incomplete tiles until showing
new page.

  • UIProcess/API/efl/EwkView.cpp:

(EwkView::EwkView):

  • UIProcess/API/efl/EwkView.h:

(EwkView::setWaitingForNewPage):
(EwkView::waitingForNewPage):

  • UIProcess/efl/PageLoadClientEfl.cpp:

(WebKit::PageLoadClientEfl::didCommitLoadForFrame):

  • UIProcess/efl/PageViewportControllerClientEfl.cpp:

(WebKit::PageViewportControllerClientEfl::didChangeVisibleContents):

  • UIProcess/efl/ViewClientEfl.cpp:

(WebKit::ViewClientEfl::didRenderFrame):
(WebKit::ViewClientEfl::didCompletePageTransition):

Location:
trunk/Source/WebKit2
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r170237 r170243  
     12014-06-21  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
     2
     3        [CoordinatedGraphics][WK2][EFL] Page is moved to (0,0) position before rendering content
     4        https://bugs.webkit.org/show_bug.cgi?id=133300
     5
     6        Reviewed by Csaba Osztrogonác.
     7
     8        When new page is loaded, PageViewportController::didCommitLoad() calls PageViewportController::syncVisibleContents()
     9        with initial position via applyPositionAfterRenderingContents() before starting to render
     10        new page by PageViewportController::didRenderFrame(). This call flow causes that webview shows
     11        incomplete tiles to the user during a few milliseconds. To fix showing incomplete tiles during
     12        the page loading, this patch adds a flag so that we don't show the incomplete tiles until showing
     13        new page.
     14
     15        * UIProcess/API/efl/EwkView.cpp:
     16        (EwkView::EwkView):
     17        * UIProcess/API/efl/EwkView.h:
     18        (EwkView::setWaitingForNewPage):
     19        (EwkView::waitingForNewPage):
     20        * UIProcess/efl/PageLoadClientEfl.cpp:
     21        (WebKit::PageLoadClientEfl::didCommitLoadForFrame):
     22        * UIProcess/efl/PageViewportControllerClientEfl.cpp:
     23        (WebKit::PageViewportControllerClientEfl::didChangeVisibleContents):
     24        * UIProcess/efl/ViewClientEfl.cpp:
     25        (WebKit::ViewClientEfl::didRenderFrame):
     26        (WebKit::ViewClientEfl::didCompletePageTransition):
     27
    1282014-06-21  Ryosuke Niwa  <rniwa@webkit.org>
    229
  • trunk/Source/WebKit2/UIProcess/API/efl/EwkView.cpp

    r168961 r170243  
    294294    , m_pageViewportController(page(), &m_pageViewportControllerClient)
    295295    , m_isAccelerated(true)
     296    , m_isWaitingForNewPage(false)
    296297{
    297298    ASSERT(m_evasObject);
  • trunk/Source/WebKit2/UIProcess/API/efl/EwkView.h

    r168961 r170243  
    185185    void didFindZoomableArea(const WKPoint&, const WKRect&);
    186186
     187    // FIXME: PageViewportController needs to fix a problem that current page is shown in (0,0) position when starting to load new page.
     188    // Below functions are to fix this problem for now.
     189    void setWaitingForNewPage() { m_isWaitingForNewPage = true; }
     190    bool didCommitNewPage() { return m_isWaitingForNewPage = false; }
     191
    187192    static const char smartClassName[];
    188193
     
    286291
    287292    bool m_isAccelerated;
     293    bool m_isWaitingForNewPage;
    288294
    289295    static Evas_Smart_Class parentSmartClass;
  • trunk/Source/WebKit2/UIProcess/efl/PageLoadClientEfl.cpp

    r166155 r170243  
    118118
    119119    EwkView* view = toPageLoadClientEfl(clientInfo)->view();
    120     if (WKPageUseFixedLayout(view->wkPage())) {
     120    if (WKPageUseFixedLayout(view->wkPage()))
    121121        view->pageViewportController().didCommitLoad();
    122         return;
    123     }
     122    else
     123        view->scheduleUpdateDisplay();
    124124
    125     view->scheduleUpdateDisplay();
     125    view->setWaitingForNewPage();
    126126}
    127127
  • trunk/Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp

    r169003 r170243  
    6161void PageViewportControllerClientEfl::didChangeVisibleContents()
    6262{
     63    if (m_view->didCommitNewPage())
     64        return;
     65
    6366    m_view->scheduleUpdateDisplay();
    6467}
  • trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp

    r168961 r170243  
    111111{
    112112    EwkView* ewkView = toEwkView(clientInfo);
    113     if (WKPageUseFixedLayout(ewkView->wkPage())) {
     113    if (WKPageUseFixedLayout(ewkView->wkPage()))
    114114        ewkView->pageViewportController().didRenderFrame(toIntSize(contentsSize), toIntRect(coveredRect));
    115         return;
    116     }
    117 
    118     ewkView->scheduleUpdateDisplay();
     115    else
     116        ewkView->scheduleUpdateDisplay();
     117
     118    ewkView->didCommitNewPage();
    119119}
    120120
     
    122122{
    123123    EwkView* ewkView = toEwkView(clientInfo);
    124     if (WKPageUseFixedLayout(ewkView->wkPage())) {
     124    if (WKPageUseFixedLayout(ewkView->wkPage()))
    125125        ewkView->pageViewportController().pageTransitionViewportReady();
    126         return;
    127     }
    128 
    129     ewkView->scheduleUpdateDisplay();
    130126}
    131127
Note: See TracChangeset for help on using the changeset viewer.