WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
70873
[EFL] Invalidation request outside of visible area doesn't seem to occur when tiled view is used.
https://bugs.webkit.org/show_bug.cgi?id=70873
Summary
[EFL] Invalidation request outside of visible area doesn't seem to occur when...
KwangHyuk
Reported
2011-10-25 23:17:07 PDT
Created
attachment 112454
[details]
Refer the right edge side of attached image. In order to allow pre-render or keeping of dirty rect outside of visible area, ewk_tiled_view is now using ewk_frame_paint_full_set api for the main_frame. But, this doesn't seem effective for some sites like naver.com. After the scroll, there was no dirty rect for the area outside of viewport. so unpainted area seems to occur when page tries to scroll by itself. In order to help you be understood this issue, I attached two screenshots for naver.com. To fix this, I think that ewk_frame_paint_full_set is better to be called from ewk_frame_view_create_for_view as soon as frame would be created. In addition, single view doesn't need to call this api, view type check routine would be required to fix this.
Attachments
Refer the right edge side of attached image.
(147.66 KB, image/png)
2011-10-25 23:17 PDT
,
KwangHyuk
no flags
Details
patch.
(3.90 KB, patch)
2011-11-13 20:59 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Patch.
(4.14 KB, patch)
2011-11-15 02:15 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
patch.
(4.91 KB, patch)
2011-11-15 22:13 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Patch updated.
(4.89 KB, patch)
2011-11-16 00:24 PST
,
KwangHyuk
gyuyoung.kim
: commit-queue-
Details
Formatted Diff
Diff
Patch updated.
(4.89 KB, patch)
2011-11-16 16:37 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Refer the right edge side of attached image.
(167.91 KB, image/png)
2011-11-16 17:45 PST
,
KwangHyuk
no flags
Details
Unpainted area is shown at daum.net after the scroll.
(260.52 KB, image/png)
2011-11-16 18:25 PST
,
KwangHyuk
no flags
Details
There is no unpainted area after the patch.
(198.52 KB, image/png)
2011-11-16 18:26 PST
,
KwangHyuk
no flags
Details
Patch.
(5.05 KB, patch)
2011-11-16 21:49 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Patch updated.
(5.05 KB, patch)
2011-11-16 21:56 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Simple html file for the test.
(2.83 KB, application/octet-stream)
2011-11-24 23:12 PST
,
KwangHyuk
no flags
Details
Patch rebased.
(5.06 KB, patch)
2011-11-29 02:50 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Patch updated.
(5.05 KB, patch)
2011-11-29 03:00 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Patch rebased.
(5.04 KB, patch)
2011-12-07 21:46 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Patch updated.
(5.05 KB, patch)
2011-12-08 03:35 PST
,
KwangHyuk
gyuyoung.kim
: commit-queue-
Details
Formatted Diff
Diff
Patch updated.
(5.05 KB, patch)
2011-12-08 04:22 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Patch rebased.
(5.05 KB, patch)
2011-12-14 17:35 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Patch rebased.
(5.08 KB, patch)
2011-12-19 17:33 PST
,
KwangHyuk
andersca
: review+
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Patch rebased.
(5.11 KB, application/octet-stream)
2011-12-22 01:01 PST
,
KwangHyuk
no flags
Details
Patch rebased.
(5.11 KB, patch)
2011-12-22 01:01 PST
,
KwangHyuk
no flags
Details
Formatted Diff
Diff
Show Obsolete
(19)
View All
Add attachment
proposed patch, testcase, etc.
KwangHyuk
Comment 1
2011-11-13 20:59:27 PST
Created
attachment 114874
[details]
patch.
Gyuyoung Kim
Comment 2
2011-11-15 00:45:47 PST
Comment on
attachment 114874
[details]
patch. View in context:
https://bugs.webkit.org/attachment.cgi?id=114874&action=review
> Source/WebKit/efl/ewk/ewk_view.cpp:3932 > +
Is it better to add documentation for this new internal function ?
KwangHyuk
Comment 3
2011-11-15 02:15:22 PST
Created
attachment 115129
[details]
Patch. Apply documentation comment for new internal api.
Grzegorz Czajkowski
Comment 4
2011-11-15 06:58:07 PST
View in context:
https://bugs.webkit.org/attachment.cgi?id=115129&action=review
> Source/WebKit/efl/ewk/ewk_view.cpp:3927 > +#define EWK_VIEW_TILED_TYPE_CHECK_OR_RETURN(ewkView, ...) \
Can you move this to the define section, please?
> Source/WebKit/efl/ewk/ewk_view.cpp:3933 > +/**
Please move this function where internal functions are defined.
> Source/WebKit/efl/ewk/ewk_view.cpp:3935 > + * Reports it to him that FrameView is created.
I'd rather write: Reports that FrameView object has been created. Please add empty line before detailed descriptions (started with *).
> Source/WebKit/efl/ewk/ewk_view.cpp:3936 > + * Paint area is set for full contents rect if view is an instance of ewk_view_tiled
Please describe it similar to ewk_frame_paint_full_set's doc.
> Source/WebKit/efl/ewk/ewk_view.cpp:3939 > + * @param ewkView View.
I would rather use "view object" instead of View (as we are using it in ewk_view's doc). And please do not use dot at the end of params' doc.
> Source/WebKit/efl/ewk/ewk_view.cpp:3940 > + *
Please remove unneeded line.
> Source/WebKit/efl/ewk/ewk_view.cpp:3946 > + ewk_frame_paint_full_set(smartData->main_frame, true);
Do we have a guarantee that for single backing store paintsEntireContents flag is set to false before creating FrameView as you wrote in doc? I am sorry for asking this I am not familiar with backing store. Or should we set it on false in case of single backing store. Do we need to call ewk_frame_paint_full_set(smartData->main_frame, true) in _ewk_view_tiled_smart_add() (ewk_view_tiled.cpp) too ?
KwangHyuk
Comment 5
2011-11-15 17:43:39 PST
(In reply to
comment #4
)
> View in context:
https://bugs.webkit.org/attachment.cgi?id=115129&action=review
> > > Source/WebKit/efl/ewk/ewk_view.cpp:3927 > > +#define EWK_VIEW_TILED_TYPE_CHECK_OR_RETURN(ewkView, ...) \ > > Can you move this to the define section, please? >
OK,
> > Source/WebKit/efl/ewk/ewk_view.cpp:3933 > > +/** > > Please move this function where internal functions are defined. >
Ok too.
> > Source/WebKit/efl/ewk/ewk_view.cpp:3935 > > + * Reports it to him that FrameView is created. > > I'd rather write: Reports that FrameView object has been created. > Please add empty line before detailed descriptions (started with *). > > > Source/WebKit/efl/ewk/ewk_view.cpp:3936 > > + * Paint area is set for full contents rect if view is an instance of ewk_view_tiled > > Please describe it similar to ewk_frame_paint_full_set's doc. > > > Source/WebKit/efl/ewk/ewk_view.cpp:3939 > > + * @param ewkView View. > > I would rather use "view object" instead of View (as we are using it in ewk_view's doc). > And please do not use dot at the end of params' doc. > > > Source/WebKit/efl/ewk/ewk_view.cpp:3940 > > + * > > Please remove unneeded line. >
Ok, I will.
> > Source/WebKit/efl/ewk/ewk_view.cpp:3946 > > + ewk_frame_paint_full_set(smartData->main_frame, true); > > Do we have a guarantee that for single backing store paintsEntireContents flag is set to false before creating FrameView as you wrote in doc? I am sorry for asking this I am not familiar with backing store. Or should we set it on false in case of single backing store. >
Sure, parent of FrameView (ScrollView) set it as false when it created and nobody calls it. But if TILED_BACKING_STORE is enabled, it can be enabled although ewk_view_single is used. TILED_BACKING_STORE is not enabled for webkit-efl yet.
> Do we need to call ewk_frame_paint_full_set(smartData->main_frame, true) in _ewk_view_tiled_smart_add() (ewk_view_tiled.cpp) too ?
Good point, let me check it too.
KwangHyuk
Comment 6
2011-11-15 22:13:04 PST
Created
attachment 115321
[details]
patch.
Grzegorz Czajkowski
Comment 7
2011-11-15 23:48:29 PST
Thanks for your changes. View in context:
https://bugs.webkit.org/attachment.cgi?id=115321&action=review
> Source/WebKit/efl/ewk/ewk_view.cpp:3203 > + * Function sets if dirty areas should be repainted even if they are out of the screen
I would rather write: * Allows to repaint the frame completely even if the areas are out of the screen * when @ewkView is an instance of ewk_view_tiled.
> Source/WebKit/efl/ewk/ewk_view.cpp:3206 > + * @param ewkView view object.
Please do not use dot at the end of parameters' description.
> Source/WebKit/efl/ewk/ewk_view.cpp:3208 > +void ewk_view_frame_view_creation_notify(const Evas_Object* ewkView)
In my opinion ewkView shouldn't have const modifier here because ewkView will be changed by ewk_frame_paint_full_set. As you can see this function doesn't have const. I should mention about this in my previous review. I am sorry for this.
KwangHyuk
Comment 8
2011-11-16 00:13:51 PST
(In reply to
comment #7
)
> Thanks for your changes. > > View in context:
https://bugs.webkit.org/attachment.cgi?id=115321&action=review
> > > Source/WebKit/efl/ewk/ewk_view.cpp:3203 > > + * Function sets if dirty areas should be repainted even if they are out of the screen > > I would rather write: > * Allows to repaint the frame completely even if the areas are out of the screen > * when @ewkView is an instance of ewk_view_tiled. > > > Source/WebKit/efl/ewk/ewk_view.cpp:3206 > > + * @param ewkView view object. > > Please do not use dot at the end of parameters' description.
Ok, it looks fine.
> > > Source/WebKit/efl/ewk/ewk_view.cpp:3208 > > +void ewk_view_frame_view_creation_notify(const Evas_Object* ewkView) > > In my opinion ewkView shouldn't have const modifier here because ewkView will be changed by ewk_frame_paint_full_set. As you can see this function doesn't have const. > I should mention about this in my previous review. I am sorry for this.
Looks reasonable.
KwangHyuk
Comment 9
2011-11-16 00:24:07 PST
Created
attachment 115341
[details]
Patch updated.
Grzegorz Czajkowski
Comment 10
2011-11-16 00:34:36 PST
LGTM
Gyuyoung Kim
Comment 11
2011-11-16 01:48:38 PST
Comment on
attachment 115341
[details]
Patch updated.
Attachment 115341
[details]
did not pass efl-ews (efl): Output:
http://queues.webkit.org/results/10486688
KwangHyuk
Comment 12
2011-11-16 16:37:49 PST
Created
attachment 115480
[details]
Patch updated.
Raphael Kubo da Costa (:rakuco)
Comment 13
2011-11-16 17:21:12 PST
I don't like the approach taken by the patch -- it makes ewk_frame access ewk_view and also makes ewk_view aware of a specific subclass of itself. This is really wrong in terms of OOP.
Comment #0
mentions two screenshots were going to be attached, but I can only see one. It's hard for me to understand the problem, is it the two white blocks on the right side which seem to be shown over some other content?
Comment #0
also mentions this happens when a "page tries to scroll by itself". Is this the only way to trigger the issue? Is it possible to come up with a reduced test case?
KwangHyuk
Comment 14
2011-11-16 17:45:45 PST
Created
attachment 115494
[details]
Refer the right edge side of attached image. This is the screenshot after applying this patch.
KwangHyuk
Comment 15
2011-11-16 17:49:43 PST
(In reply to
comment #13
)
> I don't like the approach taken by the patch -- it makes ewk_frame access ewk_view and also makes ewk_view aware of a specific subclass of itself. This is really wrong in terms of OOP. >
Ok, I will try to find other way, may be, do you have any idea for this ?
>
Comment #0
mentions two screenshots were going to be attached, but I can only see one. It's hard for me to understand the problem, is it the two white blocks on the right side which seem to be shown over some other content?
Comment #0
also mentions this happens when a "page tries to scroll by itself". Is this the only way to trigger the issue? Is it possible to come up with a reduced test case?
I have attached 2nd screenshot which the problem is fixed by this patch. I think that you can compare both of two. And there is one more site that you can check. Would you visit www.daum.net and then scroll down as soon as page load is finished you can see some blank area which must be filled with images. (I will attach new screenshot for it soon) And of course, need to use -b=tiled option for this test.
KwangHyuk
Comment 16
2011-11-16 18:25:20 PST
Created
attachment 115505
[details]
Unpainted area is shown at daum.net after the scroll.
KwangHyuk
Comment 17
2011-11-16 18:26:04 PST
Created
attachment 115506
[details]
There is no unpainted area after the patch.
KwangHyuk
Comment 18
2011-11-16 18:31:01 PST
(In reply to
comment #15
)
> (In reply to
comment #13
) > > I don't like the approach taken by the patch -- it makes ewk_frame access ewk_view and also makes ewk_view aware of a specific subclass of itself. This is really wrong in terms of OOP. > > > Ok, I will try to find other way, may be, do you have any idea for this ? >
Hi, Kubo, As I think that view type must be checked to solve this matter properly, it must be notified to ewk_view when frame view is created. It's the reason why ewk_frame calls ewk_view's api. As a result, I would like to get your idea in order to remove ewk_view access from ewk_frame.
KwangHyuk
Comment 19
2011-11-16 21:49:29 PST
Created
attachment 115520
[details]
Patch.
WebKit Review Bot
Comment 20
2011-11-16 21:52:51 PST
Attachment 115520
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebKit/efl/ChangeLog', u'Source/Web..." exit_code: 1 Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:946: Tab found; better to use spaces [whitespace/tab] [1] Total errors found: 1 in 5 files If any of these errors are false positives, please file a bug against check-webkit-style.
KwangHyuk
Comment 21
2011-11-16 21:56:58 PST
Created
attachment 115522
[details]
Patch updated.
Raphael Kubo da Costa (:rakuco)
Comment 22
2011-11-17 06:15:27 PST
OK, I think I got what the patch is supposed to fix. ewk_frame_paint_full_set is only called once when the frame is created by ewk_view's smart add, however FrameLoaderClient::transitionToCommittedForNewPage can be called more than once with the same frame, but since each time it is called a new view is created. This should be as easy as calling ewk_frame_paint_full_set with the boolean parameter depending on some ewk_frame or ewk_view (or even FrameLoaderClientEfl, I haven't thought of it a lot) that is persistent across the many FrameViews created. There are many ways to solve this, among them having subclasses of ewk_view setting some flag for this. My point is that it can be done in a better way, OOP-wise. But even more important than this is a reduced test case. It is impossible to properly debug this kind of thing with a full-fledged, huge site such as naver or daum. We just need a small html page which triggers the same behavior so we can always make sure this never regresses.
KwangHyuk
Comment 23
2011-11-17 17:20:36 PST
(In reply to
comment #22
)
> OK, I think I got what the patch is supposed to fix. ewk_frame_paint_full_set is only called once when the frame is created by ewk_view's smart add, however FrameLoaderClient::transitionToCommittedForNewPage can be called more than once with the same frame, but since each time it is called a new view is created. > > This should be as easy as calling ewk_frame_paint_full_set with the boolean parameter depending on some ewk_frame or ewk_view (or even FrameLoaderClientEfl, I haven't thought of it a lot) that is persistent across the many FrameViews created. There are many ways to solve this, among them having subclasses of ewk_view setting some flag for this. My point is that it can be done in a better way, OOP-wise. > > But even more important than this is a reduced test case. It is impossible to properly debug this kind of thing with a full-fledged, huge site such as naver or daum. We just need a small html page which triggers the same behavior so we can always make sure this never regresses.
(In reply to
comment #22
)
> OK, I think I got what the patch is supposed to fix. ewk_frame_paint_full_set is only called once when the frame is created by ewk_view's smart add, however FrameLoaderClient::transitionToCommittedForNewPage can be called more than once with the same frame, but since each time it is called a new view is created. > > This should be as easy as calling ewk_frame_paint_full_set with the boolean parameter depending on some ewk_frame or ewk_view (or even FrameLoaderClientEfl, I haven't thought of it a lot) that is persistent across the many FrameViews created. There are many ways to solve this, among them having subclasses of ewk_view setting some flag for this. My point is that it can be done in a better way, OOP-wise. > > But even more important than this is a reduced test case. It is impossible to properly debug this kind of thing with a full-fledged, huge site such as naver or daum. We just need a small html page which triggers the same behavior so we can always make sure this never regresses.
Ok, I see, let me generate some simple test site sooner or later. :)
KwangHyuk
Comment 24
2011-11-24 23:12:43 PST
Created
attachment 116568
[details]
Simple html file for the test. - Just decompress test.tgz - run EWebLauncher by use -b=tiled file:///home/test/testpage/index.html. - As soon as EWebLauncher displays the page, move horizontal scrollbar to the right direction. You will see unpainted area out of viewport without this patch. After applying this patch, it will make sure the well rendered page for the same step.
KwangHyuk
Comment 25
2011-11-29 02:50:02 PST
Created
attachment 116931
[details]
Patch rebased.
WebKit Review Bot
Comment 26
2011-11-29 02:51:29 PST
Attachment 116931
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebKit/efl/ChangeLog', u'Source/Web..." exit_code: 1 Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:946: Tab found; better to use spaces [whitespace/tab] [1] Total errors found: 1 in 5 files If any of these errors are false positives, please file a bug against check-webkit-style.
KwangHyuk
Comment 27
2011-11-29 03:00:45 PST
Created
attachment 116932
[details]
Patch updated.
KwangHyuk
Comment 28
2011-12-07 21:46:13 PST
Created
attachment 118329
[details]
Patch rebased.
Gyuyoung Kim
Comment 29
2011-12-08 00:15:07 PST
Comment on
attachment 118329
[details]
Patch rebased. View in context:
https://bugs.webkit.org/attachment.cgi?id=118329&action=review
> Source/WebKit/efl/ewk/ewk_view_tiled.cpp:244 > + api->sc.parent = (Evas_Smart_Class *)&_parent_sc;
Do not use C casting. Use static_cast<...>.
KwangHyuk
Comment 30
2011-12-08 03:35:47 PST
Created
attachment 118358
[details]
Patch updated.
KwangHyuk
Comment 31
2011-12-08 03:36:44 PST
(In reply to
comment #30
)
> Created an attachment (id=118358) [details] > Patch updated.
Done. :)
Gyuyoung Kim
Comment 32
2011-12-08 03:48:49 PST
Comment on
attachment 118358
[details]
Patch updated.
Attachment 118358
[details]
did not pass efl-ews (efl): Output:
http://queues.webkit.org/results/10781249
KwangHyuk
Comment 33
2011-12-08 04:22:39 PST
Created
attachment 118361
[details]
Patch updated.
Gyuyoung Kim
Comment 34
2011-12-08 16:18:01 PST
Comment on
attachment 118361
[details]
Patch updated. I'm not a specialist for tiled backing store. But, LGTM.
KwangHyuk
Comment 35
2011-12-14 17:35:35 PST
Created
attachment 119349
[details]
Patch rebased.
KwangHyuk
Comment 36
2011-12-19 17:33:10 PST
Created
attachment 119960
[details]
Patch rebased.
WebKit Review Bot
Comment 37
2011-12-22 00:30:51 PST
Comment on
attachment 119960
[details]
Patch rebased. Rejecting
attachment 119960
[details]
from commit-queue. New failing tests: platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html media/track/track-cue-rendering.html Full output:
http://queues.webkit.org/results/10996365
KwangHyuk
Comment 38
2011-12-22 01:01:04 PST
Created
attachment 120285
[details]
Patch rebased.
KwangHyuk
Comment 39
2011-12-22 01:01:59 PST
Created
attachment 120286
[details]
Patch rebased.
WebKit Review Bot
Comment 40
2011-12-22 03:38:03 PST
Comment on
attachment 120286
[details]
Patch rebased. Clearing flags on attachment: 120286 Committed
r103520
: <
http://trac.webkit.org/changeset/103520
>
WebKit Review Bot
Comment 41
2011-12-22 03:38:11 PST
All reviewed patches have been landed. Closing bug.
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