<?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>146199</bug_id>
          
          <creation_ts>2015-06-22 00:54:05 -0700</creation_ts>
          <short_desc>[EFL][CustomProtocol] Do not add duplicated custom scheme</short_desc>
          <delta_ts>2015-06-23 00:01:15 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1103781</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-22 00:54:05 -0700</bug_when>
    <thetext>Current WebSoupCustomProtocolRequestManager::registerSchemeForCustomProtocol generates a crash when duplicated scheme is registered. However application can register duplicate scheme by mistake or on purpose. Thus IMO it would be good if we don&apos;t register it instead of registering it or generating a crash on debug mode when duplicated scheme is registered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103783</commentid>
    <comment_count>1</comment_count>
      <attachid>255340</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-22 00:57:31 -0700</bug_when>
    <thetext>Created attachment 255340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103786</commentid>
    <comment_count>2</comment_count>
      <attachid>255340</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-22 01:17:01 -0700</bug_when>
    <thetext>Comment on attachment 255340
Patch

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

&gt; Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp:85
&gt; +    ASSERT(!scheme.isNull());
&gt; +    if (m_registeredSchemes.contains(scheme))
&gt; +        return;

I don&apos;t think this is the right place to check this. I think APIs should check it earlier. Registering the same scheme twice is a programmer error, at least in GTK+ API, but with this patch, there could be a change in behaviour, I mean, imagine you do:

ewk_context_url_scheme_register(ewk_view_context_get(webView()), &quot;fooscheme&quot;, schemeRequestCallback1, nullptr);
ewk_context_url_scheme_register(ewk_view_context_get(webView()), &quot;fooscheme&quot;, schemeRequestCallback2, nullptr);

With this patch, the scheme will not be registered again, but the handler will be replaced with the second callback. If that&apos;s the desired behaviour for EFL, then the patch is correct. I&apos;ll add a g_return_if_fail protector to GTK+ API anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103787</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-22 01:32:03 -0700</bug_when>
    <thetext>I&apos;m thinking that maybe replacing the callback is indeed the best approach. We would just need to document it, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103793</commentid>
    <comment_count>4</comment_count>
      <attachid>255340</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-22 02:27:08 -0700</bug_when>
    <thetext>Comment on attachment 255340
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp:85
&gt;&gt; +        return;
&gt; 
&gt; I don&apos;t think this is the right place to check this. I think APIs should check it earlier. Registering the same scheme twice is a programmer error, at least in GTK+ API, but with this patch, there could be a change in behaviour, I mean, imagine you do:
&gt; 
&gt; ewk_context_url_scheme_register(ewk_view_context_get(webView()), &quot;fooscheme&quot;, schemeRequestCallback1, nullptr);
&gt; ewk_context_url_scheme_register(ewk_view_context_get(webView()), &quot;fooscheme&quot;, schemeRequestCallback2, nullptr);
&gt; 
&gt; With this patch, the scheme will not be registered again, but the handler will be replaced with the second callback. If that&apos;s the desired behaviour for EFL, then the patch is correct. I&apos;ll add a g_return_if_fail protector to GTK+ API anyway.

I would like to suggest a feature that user can change registered callback for same scheme. If GTK port don&apos;t mind to check same scheme in this place, I upload a patch which modifies callback as you mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103795</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-22 02:32:52 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 255340 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255340&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp:85
&gt; &gt;&gt; +        return;
&gt; &gt; 
&gt; &gt; I don&apos;t think this is the right place to check this. I think APIs should check it earlier. Registering the same scheme twice is a programmer error, at least in GTK+ API, but with this patch, there could be a change in behaviour, I mean, imagine you do:
&gt; &gt; 
&gt; &gt; ewk_context_url_scheme_register(ewk_view_context_get(webView()), &quot;fooscheme&quot;, schemeRequestCallback1, nullptr);
&gt; &gt; ewk_context_url_scheme_register(ewk_view_context_get(webView()), &quot;fooscheme&quot;, schemeRequestCallback2, nullptr);
&gt; &gt; 
&gt; &gt; With this patch, the scheme will not be registered again, but the handler will be replaced with the second callback. If that&apos;s the desired behaviour for EFL, then the patch is correct. I&apos;ll add a g_return_if_fail protector to GTK+ API anyway.
&gt; 
&gt; I would like to suggest a feature that user can change registered callback
&gt; for same scheme. If GTK port don&apos;t mind to check same scheme in this place,
&gt; I upload a patch which modifies callback as you mentioned.

I&apos;m not sure I get what you mean, this patch already modifies the callback if I understood it correctly. If that was your intention and the desired behaviour for EFL API, I suggest you to update the unit test to not only check you can register the same scheme twice without crashing, but also that the second callback is the one called after the second register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103797</commentid>
    <comment_count>6</comment_count>
      <attachid>255340</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-22 02:36:25 -0700</bug_when>
    <thetext>Comment on attachment 255340
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp:85
&gt;&gt;&gt;&gt; +        return;
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t think this is the right place to check this. I think APIs should check it earlier. Registering the same scheme twice is a programmer error, at least in GTK+ API, but with this patch, there could be a change in behaviour, I mean, imagine you do:
&gt;&gt;&gt; 
&gt;&gt;&gt; ewk_context_url_scheme_register(ewk_view_context_get(webView()), &quot;fooscheme&quot;, schemeRequestCallback1, nullptr);
&gt;&gt;&gt; ewk_context_url_scheme_register(ewk_view_context_get(webView()), &quot;fooscheme&quot;, schemeRequestCallback2, nullptr);
&gt;&gt;&gt; 
&gt;&gt;&gt; With this patch, the scheme will not be registered again, but the handler will be replaced with the second callback. If that&apos;s the desired behaviour for EFL, then the patch is correct. I&apos;ll add a g_return_if_fail protector to GTK+ API anyway.
&gt;&gt; 
&gt;&gt; I would like to suggest a feature that user can change registered callback for same scheme. If GTK port don&apos;t mind to check same scheme in this place, I upload a patch which modifies callback as you mentioned.
&gt; 
&gt; I&apos;m not sure I get what you mean, this patch already modifies the callback if I understood it correctly. If that was your intention and the desired behaviour for EFL API, I suggest you to update the unit test to not only check you can register the same scheme twice without crashing, but also that the second callback is the one called after the second register.

yes, you understand what I meant correctly. I&apos;m modifying this test now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103836</commentid>
    <comment_count>7</comment_count>
      <attachid>255352</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-22 07:38:08 -0700</bug_when>
    <thetext>Created attachment 255352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103843</commentid>
    <comment_count>8</comment_count>
      <attachid>255352</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-22 08:42:06 -0700</bug_when>
    <thetext>Comment on attachment 255352
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp:155
&gt;      ASSERT_TRUE(waitUntilTrue(finishTest, testTimeoutSeconds));

How do you know it was the second callback the one finishing the test and not the first one if both change the same variable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103964</commentid>
    <comment_count>9</comment_count>
      <attachid>255352</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-22 17:40:41 -0700</bug_when>
    <thetext>Comment on attachment 255352
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp:155
&gt;&gt;      ASSERT_TRUE(waitUntilTrue(finishTest, testTimeoutSeconds));
&gt; 
&gt; How do you know it was the second callback the one finishing the test and not the first one if both change the same variable?

To check if second callback is called correctly, I change custom scheme&apos;s url with *MyNewPath* in 154 line. Then the second callback(:= schemeRequestCallback2()) checks the changed url as below,

    static void schemeRequestCallback2(Ewk_Url_Scheme_Request* request, void* userData)
    {
        ...
        ASSERT_STREQ(&quot;fooscheme:MyNewPath&quot;, url);
        const char* path = ewk_url_scheme_request_path_get(request);
        ASSERT_STREQ(&quot;MyNewPath&quot;, path);
    }

Besides *finishTest* flag is reset to test second callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104025</commentid>
    <comment_count>10</comment_count>
      <attachid>255352</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-22 22:36:24 -0700</bug_when>
    <thetext>Comment on attachment 255352
Patch

Ah, ok, I didn&apos;t notice the paths detail, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104029</commentid>
    <comment_count>11</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-22 23:11:34 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 255352 [details]
&gt; Patch
&gt; 
&gt; Ah, ok, I didn&apos;t notice the paths detail, sorry.

No problem. Your review is nice !</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104047</commentid>
    <comment_count>12</comment_count>
      <attachid>255352</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-23 00:01:10 -0700</bug_when>
    <thetext>Comment on attachment 255352
Patch

Clearing flags on attachment: 255352

Committed r185866: &lt;http://trac.webkit.org/changeset/185866&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104048</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-23 00:01:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255340</attachid>
            <date>2015-06-22 00:57:31 -0700</date>
            <delta_ts>2015-06-22 07:38:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146199-20150622165650.patch</filename>
            <type>text/plain</type>
            <size>3233</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDMyODY2YzkzMTAyOGZk
N2Q1OGM5Nzc1MDZjYTEyODIyZmFjMDE4Ny4uMTQyYTA2ZDI3ZTNlMGY2NDc3NDlkNTFhZGY5NmU2
ZjI5ODQ1ODZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA2LTIyICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbRUZMXVtDdXN0
b21Qcm90b2NvbF0gRG8gbm90IGFkZCBkdXBsaWNhdGVkIGN1c3RvbSBzY2hlbWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjE5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnQgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9j
b2wgZ2VuZXJhdGVzCisgICAgICAgIGEgY3Jhc2ggd2hlbiBkdXBsaWNhdGVkIHNjaGVtZSBpcyBy
ZWdpc3RlcmVkIG9uIGRlYnVnIG1vZGUsIG9yIGp1c3QgcmVnaXN0ZXJzIGl0IG9uIHJlbGVhc2Ug
bW9kZS4KKyAgICAgICAgSG93ZXZlciBhcHBsaWNhdGlvbiBjYW4gcmVnaXN0ZXIgZHVwbGljYXRl
IHNjaGVtZSBieSBtaXN0YWtlIG9yIG9uIHB1cnBvc2UuIFRodXMgaXQgd291bGQgYmUgZ29vZAor
ICAgICAgICBpZiB3ZSBkb24ndCByZWdpc3RlciBpdCBpbnN0ZWFkIG9mIHJlZ2lzdGVyaW5nIGl0
IG9yIGdlbmVyYXRpbmcgYSBjcmFzaCBvbiBkZWJ1ZyBtb2RlLgorCisgICAgICAgIFRlc3Q6IGV3
a19jb250ZXh0X3VybF9zY2hlbWVfcmVnaXN0ZXIoKSBpbiB0ZXN0X2V3azJfY29udGV4dC5jcHAu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5j
cHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnJl
Z2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOgorCiAyMDE1LTA2LTIxICBEYW4gQmVybnN0
ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIxNDQ0NzYy
PiBSRUdSRVNTSU9OIChyMTg0MjE1KTogUGx1Zy1pbiBzZXJ2aWNlcyBjcmFzaCBvbiBsYXVuY2gg
b24gWW9zZW1pdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcAppbmRleCA1MzBmOWZjYjlkZDA3ZTVh
ODhiNzI3MjFhZDYwZGFiODJkOWMwNjExLi4wNDkxMmY4ZDQzMDg2MmEwYjczYjA2YmExODljZjQ0
OGM3ZmQ2MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCkBAIC0xMzYsNiArMTM2LDExIEBA
IFRFU1RfRihFV0syQ29udGV4dFRlc3QsIGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVnaXN0ZXIp
CiAgICAgZXdrX3ZpZXdfdXJsX3NldCh3ZWJWaWV3KCksICJmb29zY2hlbWU6TXlQYXRoIik7CiAK
ICAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKGZpbmlzaFRlc3QsIHRlc3RUaW1lb3V0U2Vj
b25kcykpOworCisgICAgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZWdpc3Rlcihld2tfdmlld19j
b250ZXh0X2dldCh3ZWJWaWV3KCkpLCAiZm9vc2NoZW1lIiwgc2NoZW1lUmVxdWVzdENhbGxiYWNr
LCBudWxscHRyKTsKKyAgICBld2tfdmlld191cmxfc2V0KHdlYlZpZXcoKSwgImZvb3NjaGVtZTpN
eVBhdGgiKTsKKworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRydWUoZmluaXNoVGVzdCwgdGVz
dFRpbWVvdXRTZWNvbmRzKSk7CiB9CiAKIFRFU1RfRihFV0syQ29udGV4dFRlc3QsIGV3a19jb250
ZXh0X2NhY2hlX21vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IGQw
YmIyMDQyMDYzN2ZhM2E1OTdjMzk5M2ZhMGVkYzc3NzY3NWJmYzEuLmI2NTVlNDM1MTNkNWU0MTNl
MWI4ZjVjNjIyZDg4YTM5NjViMDZhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5j
cHAKQEAgLTgwLDEyICs4MCwxNSBAQCB2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyOjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChj
b25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKKyAgICBBU1NFUlQoIXNjaGVtZS5pc051bGwoKSk7Cisg
ICAgaWYgKG1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBw
cm9jZXNzUG9vbCgpLT5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKHNjaGVtZSk7CiAK
LSAgICBBU1NFUlQoIW1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKSk7CiAgICAg
bV9yZWdpc3RlcmVkU2NoZW1lcy5hcHBlbmQoc2NoZW1lKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255352</attachid>
            <date>2015-06-22 07:38:08 -0700</date>
            <delta_ts>2015-06-23 00:01:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146199-20150622233725.patch</filename>
            <type>text/plain</type>
            <size>5957</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDMyODY2YzkzMTAyOGZk
N2Q1OGM5Nzc1MDZjYTEyODIyZmFjMDE4Ny4uNDAyYmVlODA0Mzg1YzMwYzk5YjM2NTJmMzNiYTJk
NGE1NmE1YTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA2LTIyICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbRUZMXVtDdXN0
b21Qcm90b2NvbF0gRG8gbm90IGFkZCBkdXBsaWNhdGVkIGN1c3RvbSBzY2hlbWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjE5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sIGdlbmVy
YXRlcworICAgICAgICBhIGNyYXNoIHdoZW4gZHVwbGljYXRlZCBzY2hlbWUgaXMgcmVnaXN0ZXJl
ZCBvbiBkZWJ1ZyBtb2RlLCBvciBqdXN0IHJlZ2lzdGVycyBpdCBvbiByZWxlYXNlIG1vZGUuCisg
ICAgICAgIEhvd2V2ZXIgYXBwbGljYXRpb24gY2FuIHJlZ2lzdGVyIGR1cGxpY2F0ZSBzY2hlbWUg
YnkgbWlzdGFrZSBvciBvbiBwdXJwb3NlLiBUaHVzIGl0IHdvdWxkIGJlIGdvb2QKKyAgICAgICAg
aWYgd2UgZG9uJ3QgcmVnaXN0ZXIgaXQgaW5zdGVhZCBvZiByZWdpc3RlcmluZyBpdCBvciBnZW5l
cmF0aW5nIGEgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gcmVnaXNldGVyCisgICAgICAgIGR1cGxpY2F0
ZWQgc2NoZW1lLgorCisgICAgICAgIEVGTCBwb3J0IHdhbnQgdG8gYWxsb3cgdXNlciB0byBjaGFu
Z2UgcmVnaXN0ZXJlZCBjYWxsYmFjaywgdGh1cyBFV0syQ29udGV4dFRlc3Q6OmV3a19jb250ZXh0
X3VybF9zY2hlbWVfcmVnaXN0ZXIoKQorICAgICAgICBpcyBtb2RpZmllZCB0byB0ZXN0IGl0Lgor
CisgICAgICAgIFRlc3Q6IGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVnaXN0ZXIoKSBpbiB0ZXN0
X2V3azJfY29udGV4dC5jcHAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oOiBBZGRlZCBhIGNvbW1lbnQgdG8gcmVwbGFjZSByZWdpc3RlcmVkIGNhbGxiYWNrLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcDoK
KyAgICAgICAgKEVXSzJDb250ZXh0VGVzdDo6c2NoZW1lUmVxdWVzdENhbGxiYWNrMSk6CisgICAg
ICAgIChFV0syQ29udGV4dFRlc3Q6OnNjaGVtZVJlcXVlc3RDYWxsYmFjazIpOgorICAgICAgICAo
VEVTVF9GKToKKyAgICAgICAgKEVXSzJDb250ZXh0VGVzdDo6c2NoZW1lUmVxdWVzdENhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKToKKwogMjAxNS0wNi0yMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpA
YXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTQ0NDc2Mj4gUkVHUkVTU0lP
TiAocjE4NDIxNSk6IFBsdWctaW4gc2VydmljZXMgY3Jhc2ggb24gbGF1bmNoIG9uIFlvc2VtaXRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRl
eCBiZWZmYzc1NjYxMzI4OWU1ZjZiYWY3ZTI3MzYzMTUyOTgzNzhhYWZkLi5iNjczOTdmOWQ3MTk4
NjgyOTcwYzVjYTFkOTdmYWZiZDRjMTU1MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTMwNCw2ICszMDQsOSBAQCBFQVBJIEV3a19T
dG9yYWdlX01hbmFnZXIgKmV3a19jb250ZXh0X3N0b3JhZ2VfbWFuYWdlcl9nZXQoY29uc3QgRXdr
X0NvbnRleHQgKmNvbgogICogI0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgYW5kIGNhbGxpbmcgZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9maW5pc2goKSBsYXRlciB3aGVuIHRoZSBkYXRhIG9mCiAgKiB0
aGUgcmVxdWVzdCBpcyBhdmFpbGFibGUuCiAgKgorICogVG8gcmVwbGFjZSByZWdpc3RlcmVkIGNh
bGxiYWNrIHdpdGggbmV3IGNhbGxiYWNrLCBjYWxscyBld2tfY29udGV4dF91cmxfc2NoZW1lX3Jl
Z2lzdGVyKCkKKyAqIHdpdGggbmV3IGNhbGxiYWNrIGFnYWluLgorICoKICAqIEBwYXJhbSBjb250
ZXh0IGEgI0V3a19Db250ZXh0IG9iamVjdC4KICAqIEBwYXJhbSBzY2hlbWUgdGhlIG5ldHdvcmsg
c2NoZW1lIHRvIHJlZ2lzdGVyCiAgKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGZ1bmN0aW9uIHRvIGJl
IGNhbGxlZCB3aGVuIGFuIFVSTCByZXF1ZXN0IHdpdGggQGEgc2NoZW1lIGlzIG1hZGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
Y29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfY29udGV4dC5jcHAKaW5kZXggNTMwZjlmY2I5ZGQwN2U1YTg4YjcyNzIxYWQ2MGRhYjgy
ZDljMDYxMS4uNDRhMGUzZWMyMjVlNWJhNTM0ZjEyMGI2ZjY2NjJmZWY0ZDg1MmQwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl9jb250ZXh0LmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgY29uc3RleHByIGRv
dWJsZSB0ZXN0VGltZW91dFNlY29uZHMgPSAyLjA7CiAKIGNsYXNzIEVXSzJDb250ZXh0VGVzdCA6
IHB1YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzY2hl
bWVSZXF1ZXN0Q2FsbGJhY2soRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCwgdm9pZCog
dXNlckRhdGEpCisgICAgc3RhdGljIHZvaWQgc2NoZW1lUmVxdWVzdENhbGxiYWNrMShFd2tfVXJs
X1NjaGVtZV9SZXF1ZXN0KiByZXF1ZXN0LCB2b2lkKiB1c2VyRGF0YSkKICAgICB7CiAgICAgICAg
IGNvbnN0IGNoYXIqIHNjaGVtZSA9IGV3a191cmxfc2NoZW1lX3JlcXVlc3Rfc2NoZW1lX2dldChy
ZXF1ZXN0KTsKICAgICAgICAgQVNTRVJUX1NUUkVRKCJmb29zY2hlbWUiLCBzY2hlbWUpOwpAQCAt
NTYsNiArNTYsMTkgQEAgcHVibGljOgogCiAgICAgICAgIGZpbmlzaFRlc3QgPSB0cnVlOwogICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIHNjaGVtZVJlcXVlc3RDYWxsYmFjazIoRXdrX1VybF9TY2hl
bWVfUmVxdWVzdCogcmVxdWVzdCwgdm9pZCogdXNlckRhdGEpCisgICAgeworICAgICAgICBjb25z
dCBjaGFyKiBzY2hlbWUgPSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3NjaGVtZV9nZXQocmVxdWVz
dCk7CisgICAgICAgIEFTU0VSVF9TVFJFUSgiZm9vc2NoZW1lIiwgc2NoZW1lKTsKKyAgICAgICAg
Y29uc3QgY2hhciogdXJsID0gZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91cmxfZ2V0KHJlcXVlc3Qp
OworICAgICAgICBBU1NFUlRfU1RSRVEoImZvb3NjaGVtZTpNeU5ld1BhdGgiLCB1cmwpOworICAg
ICAgICBjb25zdCBjaGFyKiBwYXRoID0gZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wYXRoX2dldChy
ZXF1ZXN0KTsKKyAgICAgICAgQVNTRVJUX1NUUkVRKCJNeU5ld1BhdGgiLCBwYXRoKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9maW5pc2gocmVxdWVzdCwgaHRt
bFJlcGx5LCBzdHJsZW4oaHRtbFJlcGx5KSwgInRleHQvaHRtbCIpKTsKKworICAgICAgICBmaW5p
c2hUZXN0ID0gdHJ1ZTsKKyAgICB9CiB9OwogCiBjbGFzcyBFV0syQ29udGV4dFRlc3RNdWx0aXBs
ZVByb2Nlc3NlcyA6IHB1YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKQEAgLTEzMiw5ICsxNDUsMTMg
QEAgVEVTVF9GKEVXSzJDb250ZXh0VGVzdCwgZXdrX2NvbnRleHRfc3RvcmFnZV9tYW5hZ2VyX2dl
dCkKIAogVEVTVF9GKEVXSzJDb250ZXh0VGVzdCwgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZWdp
c3RlcikKIHsKLSAgICBld2tfY29udGV4dF91cmxfc2NoZW1lX3JlZ2lzdGVyKGV3a192aWV3X2Nv
bnRleHRfZ2V0KHdlYlZpZXcoKSksICJmb29zY2hlbWUiLCBzY2hlbWVSZXF1ZXN0Q2FsbGJhY2ss
IG51bGxwdHIpOworICAgIGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVnaXN0ZXIoZXdrX3ZpZXdf
Y29udGV4dF9nZXQod2ViVmlldygpKSwgImZvb3NjaGVtZSIsIHNjaGVtZVJlcXVlc3RDYWxsYmFj
azEsIG51bGxwdHIpOwogICAgIGV3a192aWV3X3VybF9zZXQod2ViVmlldygpLCAiZm9vc2NoZW1l
Ok15UGF0aCIpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRydWUoZmluaXNoVGVzdCwgdGVz
dFRpbWVvdXRTZWNvbmRzKSk7CiAKKyAgICBmaW5pc2hUZXN0ID0gZmFsc2U7CisgICAgZXdrX2Nv
bnRleHRfdXJsX3NjaGVtZV9yZWdpc3Rlcihld2tfdmlld19jb250ZXh0X2dldCh3ZWJWaWV3KCkp
LCAiZm9vc2NoZW1lIiwgc2NoZW1lUmVxdWVzdENhbGxiYWNrMiwgbnVsbHB0cik7CisgICAgZXdr
X3ZpZXdfdXJsX3NldCh3ZWJWaWV3KCksICJmb29zY2hlbWU6TXlOZXdQYXRoIik7CiAgICAgQVNT
RVJUX1RSVUUod2FpdFVudGlsVHJ1ZShmaW5pc2hUZXN0LCB0ZXN0VGltZW91dFNlY29uZHMpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IGQwYmIyMDQyMDYzN2Zh
M2E1OTdjMzk5M2ZhMGVkYzc3NzY3NWJmYzEuLmI2NTVlNDM1MTNkNWU0MTNlMWI4ZjVjNjIyZDg4
YTM5NjViMDZhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTgwLDEy
ICs4MCwxNSBAQCB2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkZXJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSkKIHsKKyAgICBBU1NFUlQoIXNjaGVtZS5pc051bGwoKSk7CisgICAgaWYgKG1fcmVn
aXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKCFwcm9jZXNzUG9vbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBwcm9jZXNzUG9vbCgp
LT5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKHNjaGVtZSk7CiAKLSAgICBBU1NFUlQo
IW1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKSk7CiAgICAgbV9yZWdpc3RlcmVk
U2NoZW1lcy5hcHBlbmQoc2NoZW1lKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>