RESOLVED FIXED 84435
[EFL][DRT] EFL's DRT needs to support LayoutTestController.dumpIconChanges()
https://bugs.webkit.org/show_bug.cgi?id=84435
Summary [EFL][DRT] EFL's DRT needs to support LayoutTestController.dumpIconChanges()
Chris Dumez
Reported 2012-04-20 04:51:08 PDT
EFL's DRT needs to print information when the main frame icon is changed and LayoutTestController.dumpIconChanges() returns true. This is allow unskipping fast/dom/icon-url-property.html.
Attachments
Patch (7.71 KB, patch)
2012-04-20 04:59 PDT, Chris Dumez
no flags
Patch (7.81 KB, patch)
2012-04-22 22:33 PDT, Chris Dumez
no flags
Patch (8.79 KB, patch)
2012-04-23 22:38 PDT, Chris Dumez
no flags
Patch (10.11 KB, patch)
2012-04-26 03:37 PDT, Chris Dumez
no flags
Patch (10.95 KB, patch)
2012-05-07 00:51 PDT, Chris Dumez
no flags
Patch (9.07 KB, patch)
2012-05-07 22:41 PDT, Chris Dumez
no flags
Chris Dumez
Comment 1 2012-04-20 04:59:22 PDT
Gyuyoung Kim
Comment 2 2012-04-21 00:58:31 PDT
Comment on attachment 138071 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=138071&action=review Almost looks good to me except for trivial comments. > Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:602 > + /* report received favicon only for main frame. */ Though this is trivial nits, it looks WebKit coding style tends to use '//' instead of '/*..*/' basically. > Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp:110 > + evas_object_smart_callback_add(mainFrame, "icon,changed", onFrameIconChanged, 0); Though I'm not sure this is correct in this case, is it better to register this callback by alphabetical order ?
Chris Dumez
Comment 3 2012-04-22 22:33:39 PDT
Created attachment 138291 [details] Patch Updated patch to take feedback into consideration.
Raphael Kubo da Costa (:rakuco)
Comment 4 2012-04-23 19:33:23 PDT
Comment on attachment 138291 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=138291&action=review > Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:600 > void FrameLoaderClientEfl::dispatchDidChangeIcons(WebCore::IconType) Shouldn't the parameter for this method be used now so the signal can be more useful? Right now it looks like only DRT has a good use for this feature. > Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:604 > + // report received favicon only for main frame. > + if (ewk_view_frame_main_get(m_view) != m_frame) > + return; What's the reason for emitting this signal only for the main frame?
Chris Dumez
Comment 5 2012-04-23 22:38:06 PDT
Created attachment 138495 [details] Patch Update patch to pass the icon type with the "icon,changed" signal. Note that this signal is emitted only on the main frame for consistency. Indeed, the "icon,received" signal was already existing and is only emitted on the main frame.
Gyuyoung Kim
Comment 6 2012-04-26 02:09:56 PDT
Comment on attachment 138291 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=138291&action=review >> Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:604 >> + return; > > What's the reason for emitting this signal only for the main frame? If icon means favicon for main frame, it seems to me that this is reasonable. Basically, main frame only has favicon.
Gyuyoung Kim
Comment 7 2012-04-26 02:11:21 PDT
Comment on attachment 138495 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=138495&action=review > Source/WebKit/efl/ewk/ewk_view.cpp:2914 > + evas_object_smart_callback_call(frame, "icon,changed", &iconType); Don't you need to change from WebCore::IconType to Ewk_Icon_Type ?
Chris Dumez
Comment 8 2012-04-26 03:37:08 PDT
Created attachment 138965 [details] Patch Take feedback into consideration.
Raphael Kubo da Costa (:rakuco)
Comment 9 2012-04-26 07:04:37 PDT
(In reply to comment #6) > If icon means favicon for main frame, it seems to me that this is reasonable. Basically, main frame only has favicon. My point is that from the method name there's no mention that this is reported only for the main frame, so I'd like to understand the reason for adding a restriction in our layer.
Chris Dumez
Comment 10 2012-04-26 22:57:11 PDT
If you check GTK port for example: void FrameLoaderClient::dispatchDidReceiveIcon() { ASSERT(m_frame == webkit_web_view_get_main_frame(webView)); ... } But the EFL port is doing: void FrameLoaderClientEfl::dispatchDidChangeIcons(WebCore::IconType iconType) { // report received favicon only for main frame. if (ewk_view_frame_main_get(m_view) != m_frame) return; ... } So I believe that even if we removed the main_frame check in the EFL port, we would still send the "icon,received" signal for the main frame only. Now, I don't know if dispatchDidChangeIcons() is called for the main frame only or not but does it really make sense to emit the "icon,changed" signal potentially for all frame when we know for sure that we send the "icon,received" signal only for the main frame?
Chris Dumez
Comment 11 2012-05-04 00:28:20 PDT
Any update on this?
Raphael Kubo da Costa (:rakuco)
Comment 12 2012-05-06 18:35:50 PDT
(In reply to comment #10) > So I believe that even if we removed the main_frame check in the EFL port, we would still send the "icon,received" signal for the main frame only. > > Now, I don't know if dispatchDidChangeIcons() is called for the main frame only or not but does it really make sense to emit the "icon,changed" signal potentially for all frame when we know for sure that we send the "icon,received" signal only for the main frame? Nope, we should either send both signals in all cases or only for the main frame. It'd be nice if you could check whether the WebCore machinery that ends up in our FrameLoaderClient also makes this distinction between main frames and other frames or not -- from an API user point of view, it makes sense to provide as much information as possible (ie. if all frames have favicons, they should all be available for the user to query).
Gyuyoung Kim
Comment 13 2012-05-07 00:29:25 PDT
(In reply to comment #12) > (In reply to comment #10) > > So I believe that even if we removed the main_frame check in the EFL port, we would still send the "icon,received" signal for the main frame only. > > > > Now, I don't know if dispatchDidChangeIcons() is called for the main frame only or not but does it really make sense to emit the "icon,changed" signal potentially for all frame when we know for sure that we send the "icon,received" signal only for the main frame? > > Nope, we should either send both signals in all cases or only for the main frame. It'd be nice if you could check whether the WebCore machinery that ends up in our FrameLoaderClient also makes this distinction between main frames and other frames or not -- from an API user point of view, it makes sense to provide as much information as possible (ie. if all frames have favicons, they should all be available for the user to query). AFAIK, favicon is added in <head>...</head> section. http://en.wikipedia.org/wiki/Favicon#cite_note-7 So, it seems to me that a main frame is only able to have favicon. However, I take a look other port implementations to check how to process this signal in other ports. It looks that is implemented differently by each port. Some ports send a signal to all frames, gtk port sends a signal for main frame. If all frames can have favicon, I also think we should send signal for all frames. If not so, in my opinion, we can send icon,changed for only main frame.
Chris Dumez
Comment 14 2012-05-07 00:51:04 PDT
Created attachment 140487 [details] Patch Now emitting the "icon,changed" signal on all frames, not just the main one. This is consistent with what the Chromium port is doing. I also converted the main frame runtime check in FrameLoaderClientEfl::dispatchDidReceiveIcon() into an assertion since IconController loads icons only for the main frame (consistent with other ports such as Mac and GTK).
Raphael Kubo da Costa (:rakuco)
Comment 15 2012-05-07 07:58:10 PDT
Comment on attachment 140487 [details] Patch Looks good overall, but please add some documentation to Ewk_Icon_Type.
Gyuyoung Kim
Comment 16 2012-05-07 18:02:59 PDT
Comment on attachment 140487 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=140487&action=review > Source/WebKit/efl/ChangeLog:8 > + Emit a "icon,changed" signal when the frame when one of its icons has Though I'm not sure where my English is correct, I don't understand below sentence well. * when the frame when one of its icons has changed.*
Chris Dumez
Comment 17 2012-05-07 22:41:34 PDT
Created attachment 140676 [details] Patch Ok, back to the beginning :) As it turns out, the icon type is only relevant on apple (only apple has touch-icons, other ports only have favicons: Bug 59143). Therefore, I removed the iconType parameter from the "icon,changed" signal and added an assert to make sure the iconType is always WebCore::Favicon.
Gyuyoung Kim
Comment 18 2012-05-07 22:56:29 PDT
Looks fine on my side.
Antonio Gomes
Comment 19 2012-05-09 11:27:28 PDT
Comment on attachment 140676 [details] Patch rs=me
WebKit Review Bot
Comment 20 2012-05-09 11:39:40 PDT
Comment on attachment 140676 [details] Patch Clearing flags on attachment: 140676 Committed r116547: <http://trac.webkit.org/changeset/116547>
WebKit Review Bot
Comment 21 2012-05-09 11:39:46 PDT
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.