<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>70594</bug_id>
          
          <creation_ts>2011-10-21 03:34:22 -0700</creation_ts>
          <short_desc>[GTK] Add helper function to set the loader client in WebKitWebView</short_desc>
          <delta_ts>2011-10-24 08:16:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pnormand</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>488292</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-21 03:34:22 -0700</bug_when>
    <thetext>It&apos;s set in two places, the constructed method and the public method set_loader_client(). In the constructor we don&apos;t need to check that view is actually a WebView and loader client is a LoaderClient, and that current client is not the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488295</commentid>
    <comment_count>1</comment_count>
      <attachid>111934</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-21 03:38:12 -0700</bug_when>
    <thetext>Created attachment 111934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488358</commentid>
    <comment_count>2</comment_count>
      <attachid>111934</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-21 07:01:35 -0700</bug_when>
    <thetext>Comment on attachment 111934
Patch

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

&gt; Source/WebKit2/ChangeLog:5
&gt; +        [GTK] Add helper function to set the loader client in WebKitWebView
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=70594
&gt; +

These checks are incredibly cheap. Is there some other problem?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:68
&gt; -
&gt; -    webkitWebViewBaseCreateWebPage(WEBKIT_WEB_VIEW_BASE(webView), webkitWebContextGetWKContext(priv-&gt;context), 0);
&gt; +    WebPageProxy* page = webkitWebViewBaseCreateWebPage(WEBKIT_WEB_VIEW_BASE(webView), webkitWebContextGetWKContext(priv-&gt;context), 0);
&gt;  

It seems like instead of doing this manually we should be chaining up to the parent constructor. It&apos;s mentioned here that you should always chain up to the parent constructor: http://developer.gnome.org/gobject/stable/chapter-gobject.html#gobject-instantiation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488394</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-21 08:12:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 111934 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111934&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:5
&gt; &gt; +        [GTK] Add helper function to set the loader client in WebKitWebView
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=70594
&gt; &gt; +
&gt; 
&gt; These checks are incredibly cheap. Is there some other problem?

g_return macros are not so cheap.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:68
&gt; &gt; -
&gt; &gt; -    webkitWebViewBaseCreateWebPage(WEBKIT_WEB_VIEW_BASE(webView), webkitWebContextGetWKContext(priv-&gt;context), 0);
&gt; &gt; +    WebPageProxy* page = webkitWebViewBaseCreateWebPage(WEBKIT_WEB_VIEW_BASE(webView), webkitWebContextGetWKContext(priv-&gt;context), 0);
&gt; &gt;  
&gt; 
&gt; It seems like instead of doing this manually we should be chaining up to the parent constructor. It&apos;s mentioned here that you should always chain up to the parent constructor: http://developer.gnome.org/gobject/stable/chapter-gobject.html#gobject-instantiation

This method is constructed, not constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488432</commentid>
    <comment_count>4</comment_count>
      <attachid>111934</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-21 09:21:05 -0700</bug_when>
    <thetext>Comment on attachment 111934
Patch

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

Okay. Looks fine, but I have a minor change requested below. Thank for cleaning this up.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:60
&gt; +    webView-&gt;priv-&gt;loaderClient = loaderClient;
&gt; +    webkitWebLoaderClientAttachLoaderClientToPage(loaderClient, wkPage);

Instead of passing the page as an argument, I think it&apos;d be better to get it here with:

WebPageProxy* page = webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView));

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:68
&gt;&gt;&gt;  
&gt;&gt; 
&gt;&gt; It seems like instead of doing this manually we should be chaining up to the parent constructor. It&apos;s mentioned here that you should always chain up to the parent constructor: http://developer.gnome.org/gobject/stable/chapter-gobject.html#gobject-instantiation
&gt; 
&gt; This method is constructed, not constructor.

Still the docs suggest chaining up: &quot;the constructed function is called by g_object_new() as the final step of the object creation process. At the point of the call, all construction properties have been set on the object. The purpose of this call is to allow for object initialisation steps that can only be performed after construction properties have been set. constructed implementors should chain up to the constructed call of their parent class to allow it to complete its initialisation.&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:439
&gt; -void webkitWebViewBaseCreateWebPage(WebKitWebViewBase* webkitWebViewBase, WKContextRef context, WKPageGroupRef pageGroup)
&gt; +WebPageProxy* webkitWebViewBaseCreateWebPage(WebKitWebViewBase* webkitWebViewBase, WKContextRef context, WKPageGroupRef pageGroup)
&gt;  {
&gt;      WebKitWebViewBasePrivate* priv = webkitWebViewBase-&gt;priv;
&gt;  

I dislike this change because we ignore the return value in WebKitWebViewBase. Do you mind just getting the Page in WebKitWebViewSetLoader client?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489336</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-24 08:16:35 -0700</bug_when>
    <thetext>Committed r98241: &lt;http://trac.webkit.org/changeset/98241&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111934</attachid>
            <date>2011-10-21 03:38:12 -0700</date>
            <delta_ts>2011-10-21 09:21:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-set-loader-client-helper.diff</filename>
            <type>text/plain</type>
            <size>4787</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZDA3MzFjLi45YTYwNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQg
QEAKIDIwMTEtMTAtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEFkZCBoZWxwZXIgZnVuY3Rpb24gdG8gc2V0IHRoZSBsb2FkZXIg
Y2xpZW50IGluIFdlYktpdFdlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcwNTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdTZXRMb2FkZXJDbGllbnQpOiBIZWxwZXIgZnVuY3Rpb24gdG8g
c2V0IHRoZSBsb2FkZXIKKyAgICAgICAgY2xpZW50LgorICAgICAgICAod2Via2l0V2ViVmlld0Nv
bnN0cnVjdGVkKTogVXNlIHdlYmtpdFdlYlZpZXdTZXRMb2FkZXJDbGllbnQoKSB0bworICAgICAg
ICBhdm9pZCB1bm5lY2Vzc2FyeSBjaGVja3MuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0
X2xvYWRlcl9jbGllbnQpOiBVc2UKKyAgICAgICAgd2Via2l0V2ViVmlld1NldExvYWRlckNsaWVu
dCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSk6IFJldHVybiB0aGUgbmV3
bHkgY3JlYXRlZCBwYWdlIHRvCisgICAgICAgIGF2b2lkIGhhdmluZyB0byBjYWxsIEdldFBhZ2Uo
KSBhZnRlciBjcmVhdGluZyBpdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUuaDoKKworMjAxMS0xMC0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IFdlYktpdDIg
R1RLKyBidWlsZCBhZnRlciByOTgwODEuCiAKICAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3Lmg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDIyYjA3NTMuLjI2YzliNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC01NCwx
NSArNTQsMjAgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAKIEdfREVGSU5FX1RZ
UEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBXRUJLSVRfVFlQRV9XRUJfVklFV19C
QVNFKQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0TG9hZGVyQ2xpZW50KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYkxvYWRlckNsaWVudCogbG9hZGVyQ2xpZW50LCBXS1Bh
Z2VSZWYgd2tQYWdlKQoreworICAgIHdlYlZpZXctPnByaXYtPmxvYWRlckNsaWVudCA9IGxvYWRl
ckNsaWVudDsKKyAgICB3ZWJraXRXZWJMb2FkZXJDbGllbnRBdHRhY2hMb2FkZXJDbGllbnRUb1Bh
Z2UobG9hZGVyQ2xpZW50LCB3a1BhZ2UpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBh
Z2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldyksIHdlYmtpdFdlYkNvbnRleHRHZXRXS0Nv
bnRleHQocHJpdi0+Y29udGV4dCksIDApOworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtp
dFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSwg
d2Via2l0V2ViQ29udGV4dEdldFdLQ29udGV4dChwcml2LT5jb250ZXh0KSwgMCk7CiAKICAgICBz
dGF0aWMgR1JlZlB0cjxXZWJLaXRXZWJMb2FkZXJDbGllbnQ+IGRlZmF1bHRMb2FkZXJDbGllbnQg
PSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfTE9BREVSX0NMSUVOVCwgTlVMTCkpKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0
X2xvYWRlcl9jbGllbnQod2ViVmlldywgZGVmYXVsdExvYWRlckNsaWVudC5nZXQoKSk7CisgICAg
d2Via2l0V2ViVmlld1NldExvYWRlckNsaWVudCh3ZWJWaWV3LCBkZWZhdWx0TG9hZGVyQ2xpZW50
LmdldCgpLCB0b0FQSShwYWdlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRQ
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpAQCAtMjM1LDggKzI0MCw3IEBAIHZvaWQgd2Via2l0
X3dlYl92aWV3X3NldF9sb2FkZXJfY2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFdlYkxvYWRlckNsCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9
IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7
Ci0gICAgd2Via2l0V2ViTG9hZGVyQ2xpZW50QXR0YWNoTG9hZGVyQ2xpZW50VG9QYWdlKGxvYWRl
ckNsaWVudCwgdG9BUEkocGFnZSkpOwotICAgIHByaXYtPmxvYWRlckNsaWVudCA9IGxvYWRlckNs
aWVudDsKKyAgICB3ZWJraXRXZWJWaWV3U2V0TG9hZGVyQ2xpZW50KHdlYlZpZXcsIGxvYWRlckNs
aWVudCwgdG9BUEkocGFnZSkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA2ZGRlNjIzLi4w
MzNlMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC00MzMsMTIgKzQzMywxMyBAQCBXZWJQYWdlUHJveHkq
IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmll
d0Jhc2UpCiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHkuZ2V0
KCk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cCkKK1dlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVX
ZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV0tDb250ZXh0UmVm
IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKIHsKICAgICBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKIAogICAgIHByaXYt
PnBhZ2VQcm94eSA9IHRvSW1wbChjb250ZXh0KS0+Y3JlYXRlV2ViUGFnZShwcml2LT5wYWdlQ2xp
ZW50LmdldCgpLCB0b0ltcGwocGFnZUdyb3VwKSk7CiAgICAgcHJpdi0+cGFnZVByb3h5LT5pbml0
aWFsaXplV2ViUGFnZSgpOworICAgIHJldHVybiBwcml2LT5wYWdlUHJveHkuZ2V0KCk7CiB9CiAK
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlwVGV4dChXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlld0Jhc2UsIGNvbnN0IGNoYXIqIHRvb2x0aXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmlu
ZGV4IDNhOWE0MGIuLjlkODJmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC00Miw3ICs0
Miw3IEBAIEd0a0lNQ29udGV4dCogd2Via2l0V2ViVmlld0Jhc2VHZXRJTUNvbnRleHQoV2ViS2l0
V2ViVmlld0Jhc2UqKTsKIAogV2ViUGFnZVByb3h5KiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uo
V2ViS2l0V2ViVmlld0Jhc2UqKTsKIAotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBh
Z2UoV2ViS2l0V2ViVmlld0Jhc2UqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKK1dl
YlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdC
YXNlKiwgV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZik7CiAKIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTZXRUb29sdGlwVGV4dChXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IGNoYXIqKTsKIAo=
</data>
<flag name="review"
          id="109879"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>