<?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>108960</bug_id>
          
          <creation_ts>2013-02-05 10:44:33 -0800</creation_ts>
          <short_desc>[GTK] Remove subresource leaks from WebKit1 and WebKit2</short_desc>
          <delta_ts>2013-02-21 09:52:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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>
          <dependson>110125</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>george.mccollister</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>825627</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-05 10:44:33 -0800</bug_when>
    <thetext>Both WebKit1 and WebKit2 have an API in which you can get the subresources of a page. To do this WebKit keeps a list of all subresources. There are many pages that are just continuous JSON requests and no full-page reloads. This means that all resources will leak (with their data) until memory is filled up.

We cannot remove the WebKit1 API, but perhaps we can observe the destruction of the resource. For WebKit2, it&apos;s probably better that we remove this API completely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825630</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-05 10:45:55 -0800</bug_when>
    <thetext>We need to sort out whether or not it&apos;s possible to keep the webkit_web_view_get_subresources API in WebKit2 before we ship our first stable release. Perhaps it&apos;s better to remove the API now and re-add it when we are sure that we can do it without the memory leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825631</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-05 10:46:29 -0800</bug_when>
    <thetext>Adding cgarcia, since he probably knows whether or not it&apos;s possible to maintain the API without leaking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825637</commentid>
    <comment_count>3</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-02-05 10:52:27 -0800</bug_when>
    <thetext>FWIW, this is also what requires the injected bundle feature that was removed by apple for being considered chatty. Maybe we should reconsider storing the resources by default and make this a setting that applications that really want it can turn on, or maybe we should keep them alive only while they are being loaded. A setting to disable this seems like the only option for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825640</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-05 10:56:21 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; FWIW, this is also what requires the injected bundle feature that was removed by apple for being considered chatty. Maybe we should reconsider storing the resources by default and make this a setting that applications that really want it can turn on, or maybe we should keep them alive only while they are being loaded. A setting to disable this seems like the only option for wk1.

I think in WebKit1 we can probably just wait for them to be destroyed or modify the API to return an empty list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825649</commentid>
    <comment_count>5</comment_count>
      <attachid>186661</attachid>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-05 11:00:45 -0800</bug_when>
    <thetext>Created attachment 186661
Simple test page uses XHR to request large JSON file every second. Will exhaust most systems of memory in a few hours or less.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825697</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-05 12:22:00 -0800</bug_when>
    <thetext>WebKit2 may only be leaking the URIResponse, but get_subresources still seems to have the chance to return responses for old or invalid data (and the responses still seem to be leaked).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829584</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-11 04:53:42 -0800</bug_when>
    <thetext>The subresources API was used by ephy in webkit1 to implement the save feature, saving the main resource and then all subresources in a folder. In WebKit2 we have a specific API for that webkit_web_view_save, that allows to save in mhtml format, so get_subresources() is not used anymore. AFAIK nobody is currently using the get_subresources() method, at least the apps I&apos;ve ported so far. 

So, we could either remove the API, or try to reimplement it as an async method that reloads the page and collects the resources that would be returned transfering the ownership to the caller. This approach has several issues, though, not all resources are available after a reload (see bug https://bugs.webkit.org/show_bug.cgi?id=78510) and it&apos;s impossible to know when to finish the operation in some cases like the one attached to this bug. On the other hand, our API allows the user to collect all subresources during the load, so I think the easiest solution would be to not cache the resources, and simply remove the get_subresources() method.

For webkit1 we can do the same, but returning NULL from get_subresources() and marking it as deprecated in favor of a new save() method similar to the wk2 one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829587</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-11 04:57:48 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; WebKit2 may only be leaking the URIResponse, but get_subresources still seems to have the chance to return responses for old or invalid data (and the responses still seem to be leaked).

why only the URI response? everytime a resource load starts it&apos;s added to the loading resources map and when it finishes, it&apos;s moved to the subresources map. So all the resources are kept in memory, not only the responses. I guess I&apos;m missing something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829682</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-11 07:46:38 -0800</bug_when>
    <thetext>(In reply to comment #7)

&gt; For webkit1 we can do the same, but returning NULL from get_subresources() and marking it as deprecated in favor of a new save() method similar to the wk2 one.

It seems that in WebKit there&apos;s a getSubresources method we can call on the DocumentLoader. We&apos;ll likely use this and create new WebKitWebResources during calls to get_subresources. The resource load signals will work as usual, but the actual WebKitWebResource will change for a given WebCore resource upon calling get_subresources, since once a load finishes we&apos;ll deref the original WebKitWebResources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829687</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-11 07:51:02 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; WebKit2 may only be leaking the URIResponse, but get_subresources still seems to have the chance to return responses for old or invalid data (and the responses still seem to be leaked).
&gt; 
&gt; why only the URI response? everytime a resource load starts it&apos;s added to the loading resources map and when it finishes, it&apos;s moved to the subresources map. So all the resources are kept in memory, not only the responses. I guess I&apos;m missing something.

Hrm. I guess I meant the WebCore resource. The map stores a list of WebKitWebResources which only store a reference to the WebKitURIResponse. To get the data we call WebFrameProxy::getResourceData. I figured that we weren&apos;t actually maintaining a reference to the original resource in this case. I may be misunderstanding the code though.

This brings up the question of what happens when two of the resources have the same URL, but different data though...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829690</commentid>
    <comment_count>11</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2013-02-11 07:52:20 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; The subresources API was used by ephy in webkit1 to implement the save feature, saving the main resource and then all subresources in a folder. In WebKit2 we have a specific API for that webkit_web_view_save, that allows to save in mhtml format, so get_subresources() is not used anymore. AFAIK nobody is currently using the get_subresources() method, at least the apps I&apos;ve ported so far. 

(...)

&gt; 
&gt; For webkit1 we can do the same, but returning NULL from get_subresources() and marking it as deprecated in favor of a new save() method similar to the wk2 one.

This plan seems reasonable to me. Remove from WK2, do the same for WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829739</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-11 08:49:10 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; 
&gt; &gt; For webkit1 we can do the same, but returning NULL from get_subresources() and marking it as deprecated in favor of a new save() method similar to the wk2 one.
&gt; 
&gt; It seems that in WebKit there&apos;s a getSubresources method we can call on the DocumentLoader.

If the document loader is caching the subresources, the problem is still there, no?

&gt; We&apos;ll likely use this and create new WebKitWebResources during calls to get_subresources. The resource load signals will work as usual, but the actual WebKitWebResource will change for a given WebCore resource upon calling get_subresources, since once a load finishes we&apos;ll deref the original WebKitWebResources.

I&apos;m not sure I understand this, we would create different WebKitWebResource objects, one to wrap the resource while loading to pass it to the signals and a different one to return in get_subresources. The former would be owned by webkit and released when the resource load finishes while the latter would be owned by the caller and not cached by webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829741</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-11 08:50:40 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; WebKit2 may only be leaking the URIResponse, but get_subresources still seems to have the chance to return responses for old or invalid data (and the responses still seem to be leaked).
&gt; &gt; 
&gt; &gt; why only the URI response? everytime a resource load starts it&apos;s added to the loading resources map and when it finishes, it&apos;s moved to the subresources map. So all the resources are kept in memory, not only the responses. I guess I&apos;m missing something.
&gt; 
&gt; Hrm. I guess I meant the WebCore resource. The map stores a list of WebKitWebResources which only store a reference to the WebKitURIResponse. To get the data we call WebFrameProxy::getResourceData. I figured that we weren&apos;t actually maintaining a reference to the original resource in this case. I may be misunderstanding the code though.
&gt; 
&gt; This brings up the question of what happens when two of the resources have the same URL, but different data though...

Resources are not identified by the URI, but by their numeric identifier. Every time a resource is loaded a new identifier is assigned, even if the URI is the same, so it will always be a new resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829748</commentid>
    <comment_count>14</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-11 08:53:24 -0800</bug_when>
    <thetext>(In reply to comment #12)

&gt; If the document loader is caching the subresources, the problem is still there, no?

I haven&apos;t confirmed this, but I suspect that the DocumentLoader has an idea of when a subresource is no longer used. In WebKit we are just saving all of them without any eviction policy.

&gt; I&apos;m not sure I understand this, we would create different WebKitWebResource objects, one to wrap the resource while loading to pass it to the signals and a different one to return in get_subresources. The former would be owned by webkit and released when the resource load finishes while the latter would be owned by the caller and not cached by webkit.

That&apos;s pretty close, but it seems like that would cause the subresources to continue to leak. Applications still aren&apos;t expecting to receive a transfer=full reference. What we could do is to deref any resources we create in a timeout though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829752</commentid>
    <comment_count>15</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-11 08:54:20 -0800</bug_when>
    <thetext>(In reply to comment #13)

&gt; Resources are not identified by the URI, but by their numeric identifier. Every time a resource is loaded a new identifier is assigned, even if the URI is the 
same, so it will always be a new resource.

The call in webkit_web_resource_get_data seems to be passing the URL:

    if (resource-&gt;priv-&gt;isMainResource)
        resource-&gt;priv-&gt;frame-&gt;getMainResourceData(DataCallback::create(result, resourceDataCallback));
    else {
        String url = String::fromUTF8(resource-&gt;priv-&gt;uri.data());
        resource-&gt;priv-&gt;frame-&gt;getResourceData(WebURL::create(url).get(), DataCallback::create(result, resourceDataCallback));
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829757</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-11 08:59:57 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; 
&gt; &gt; If the document loader is caching the subresources, the problem is still there, no?
&gt; 
&gt; I haven&apos;t confirmed this, but I suspect that the DocumentLoader has an idea of when a subresource is no longer used. In WebKit we are just saving all of them without any eviction policy.

In that case get_subresources might not work, if some subresources has been deleted by the document loader.

&gt; &gt; I&apos;m not sure I understand this, we would create different WebKitWebResource objects, one to wrap the resource while loading to pass it to the signals and a different one to return in get_subresources. The former would be owned by webkit and released when the resource load finishes while the latter would be owned by the caller and not cached by webkit.
&gt; 
&gt; That&apos;s pretty close, but it seems like that would cause the subresources to continue to leak. Applications still aren&apos;t expecting to receive a transfer=full reference. What we could do is to deref any resources we create in a timeout though.

Well, I was thinking of deprecating the old api and adding a new async api to get the subresources that would transfer the ownership to the caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829761</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-11 09:02:57 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; 
&gt; &gt; Resources are not identified by the URI, but by their numeric identifier. Every time a resource is loaded a new identifier is assigned, even if the URI is the 
&gt; same, so it will always be a new resource.
&gt; 
&gt; The call in webkit_web_resource_get_data seems to be passing the URL:
&gt; 
&gt;     if (resource-&gt;priv-&gt;isMainResource)
&gt;         resource-&gt;priv-&gt;frame-&gt;getMainResourceData(DataCallback::create(result, resourceDataCallback));
&gt;     else {
&gt;         String url = String::fromUTF8(resource-&gt;priv-&gt;uri.data());
&gt;         resource-&gt;priv-&gt;frame-&gt;getResourceData(WebURL::create(url).get(), DataCallback::create(result, resourceDataCallback));
&gt;     }

Right, the identifier is only used for loading resources, while loaded we are using the URI. In that case, maybe we could just check when moving the resources from loading map to subresources map, and remove any existing subresource for the same URI. That would fix the problem without changing the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829764</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-11 09:05:44 -0800</bug_when>
    <thetext>(In reply to comment #16)

&gt; In that case get_subresources might not work, if some subresources has been deleted by the document loader.

Hrm. I&apos;m not sure what you mean here. I was thinking that maybe the loader doesn&apos;t keep a reference to subresources that aren&apos;t present somewhere in the DOM (things like AJAX replies). To be honest, I haven&apos;t confirmed this. It&apos;s the API used for [WebDataSource subresources].

&gt; Well, I was thinking of deprecating the old api and adding a new async api to get the subresources that would transfer the ownership to the caller.

Fixing the old API probably has value too, because it will fix a memory leak in pre-existing applications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829776</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-11 09:16:18 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; 
&gt; &gt; In that case get_subresources might not work, if some subresources has been deleted by the document loader.
&gt; 
&gt; Hrm. I&apos;m not sure what you mean here. I was thinking that maybe the loader doesn&apos;t keep a reference to subresources that aren&apos;t present somewhere in the DOM (things like AJAX replies). To be honest, I haven&apos;t confirmed this. It&apos;s the API used for [WebDataSource subresources].
&gt;

Ah, that makes sense, anyway we would need to look at it in more detail.

&gt; &gt; Well, I was thinking of deprecating the old api and adding a new async api to get the subresources that would transfer the ownership to the caller.
&gt; 
&gt; Fixing the old API probably has value too, because it will fix a memory leak in pre-existing applications.

My idea was to make old API return NULL and not cache resources at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831205</commentid>
    <comment_count>20</comment_count>
      <attachid>187920</attachid>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-12 13:35:48 -0800</bug_when>
    <thetext>Created attachment 187920
wk1 leak patch for discussion purposes

This patch seems to plug the leak for wk1 but unittests/testwebdatasource seems to fail, comments welcome. Incidentally the test I attached also seems to cause another leak but I&apos;ll save the details for another bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831210</commentid>
    <comment_count>21</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-12 13:38:27 -0800</bug_when>
    <thetext>Carlos brought up a good point that the old API returned borrowed references, so we&apos;d need to preserve that behavior to avoid further leaks. Perhaps you can create the resources for get_resources and then deref them in a timeout?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831873</commentid>
    <comment_count>22</comment_count>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-13 06:50:32 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Carlos brought up a good point that the old API returned borrowed references, so we&apos;d need to preserve that behavior to avoid further leaks. Perhaps you can create the resources for get_resources and then deref them in a timeout?

Looks like using a timeout might be the only option for derefing the objects although creating a race condition seems like a bad idea. How long of a timeout do you think would be required to minimize the likely hood of derefing the resources while they are still in use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831938</commentid>
    <comment_count>23</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-13 08:41:16 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; Carlos brought up a good point that the old API returned borrowed references, so we&apos;d need to preserve that behavior to avoid further leaks. Perhaps you can create the resources for get_resources and then deref them in a timeout?
&gt; 
&gt; Looks like using a timeout might be the only option for derefing the objects although creating a race condition seems like a bad idea. How long of a timeout do you think would be required to minimize the likely hood of derefing the resources while they are still in use?

That&apos;s a good question. I assumed that anyone wanting to use the resources &quot;later&quot; would have increased their reference count, but perhaps that isn&apos;t the case. Do you know if Midori uses them later?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832081</commentid>
    <comment_count>24</comment_count>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-13 10:59:33 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; Carlos brought up a good point that the old API returned borrowed references, so we&apos;d need to preserve that behavior to avoid further leaks. Perhaps you can create the resources for get_resources and then deref them in a timeout?
&gt; &gt; 
&gt; &gt; Looks like using a timeout might be the only option for derefing the objects although creating a race condition seems like a bad idea. How long of a timeout do you think would be required to minimize the likely hood of derefing the resources while they are still in use?
&gt; 
&gt; That&apos;s a good question. I assumed that anyone wanting to use the resources &quot;later&quot; would have increased their reference count, but perhaps that isn&apos;t the case. Do you know if Midori uses them later?

No, looks like it just uses them within the signal handler so I think we could  just specify an interval of 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833320</commentid>
    <comment_count>25</comment_count>
      <attachid>188401</attachid>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-14 12:26:22 -0800</bug_when>
    <thetext>Created attachment 188401
patch with timeout cleanup

Let me know if you see any problems in this revision of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833321</commentid>
    <comment_count>26</comment_count>
      <attachid>188402</attachid>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-14 12:29:06 -0800</bug_when>
    <thetext>Created attachment 188402
previous patch with indentation problem fixed

Oops, used a tab to indent one line, fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833545</commentid>
    <comment_count>27</comment_count>
      <attachid>188402</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-02-14 16:34:12 -0800</bug_when>
    <thetext>Comment on attachment 188402
previous patch with indentation problem fixed

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

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5115
&gt; +    GList* subResources = (GList*)data;
&gt; +    g_list_foreach(subResources, (GFunc) g_object_unref, NULL);
&gt; +    g_list_free(subResources);

These should use C++-style casts.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5123
&gt; +    GList* subResources = 0;
&gt; +    Vector&lt;PassRefPtr&lt;ArchiveResource&gt; &gt; subresources;

Maybe use subResources and coreSubResources, so it&apos;s easier to read, but otherwise I don&apos;t see a problem with this approach, even though there is an expectation being broken, I don&apos;t think anyone uses it so...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834149</commentid>
    <comment_count>28</comment_count>
      <attachid>188598</attachid>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-15 10:30:11 -0800</bug_when>
    <thetext>Created attachment 188598
patch with suggested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834199</commentid>
    <comment_count>29</comment_count>
      <attachid>188598</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-15 11:16:18 -0800</bug_when>
    <thetext>Comment on attachment 188598
patch with suggested changes

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

Nice. Work. I think this just a few small adjustments.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5113
&gt; +    GList* subResources = reinterpret_cast&lt;GList*&gt;(data);

You actually only need a static_cast here.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5115
&gt; +    g_list_free(subResources);

We have to be a bit careful here. The annotation for webkit_web_data_source_get_subresources: is &quot;transfer container.&quot; That means that the application owns the container and not the contents. It seems that you&apos;ll need to put the resources into a container that you own to free them. I suggest something like this:

Vector&lt;GRefPtr&lt;WebKitWebResource&gt; &gt; gCachedResources;
static gboolean cleanupTemporarilyCachedSubresources()
{
    gCachedResources.clear();
}

And then in get_subresources the code would look like this:

for (unsigned int i = 0; i &lt; coreSubResources.size(); i++) {
    WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(g_object_new(WEBKIT_TYPE_WEB_RESOURCE, NULL));
    webkit_web_resource_init_with_core_resource(webResource, coreSubResources[i]);
    subResources = g_list_append(subResources, webResource);
    gCachedResources.append(adoptGRef(webResorce));
}

Note that I&apos;m using adoptGRef to avoid a reference leak and also that cleanupTemporarilyCachedSubresources follows Webkit naming conventions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834297</commentid>
    <comment_count>30</comment_count>
      <attachid>188624</attachid>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-15 12:53:31 -0800</bug_when>
    <thetext>Created attachment 188624
patch with changed callback name and static cast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834323</commentid>
    <comment_count>31</comment_count>
      <attachid>188624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 13:22:24 -0800</bug_when>
    <thetext>Comment on attachment 188624
patch with changed callback name and static cast

Rejecting attachment 188624 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 188624, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
t/git/webkit-commit-queue/Source/WebKit/chromium/v8 --revision 13634 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
53&gt;At revision 13634.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/16580987</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834348</commentid>
    <comment_count>32</comment_count>
      <attachid>188624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 13:44:46 -0800</bug_when>
    <thetext>Comment on attachment 188624
patch with changed callback name and static cast

Rejecting attachment 188624 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 188624, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
t/git/webkit-commit-queue/Source/WebKit/chromium/v8 --revision 13634 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
53&gt;At revision 13634.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/16587287</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835464</commentid>
    <comment_count>33</comment_count>
      <attachid>188882</attachid>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-18 07:19:38 -0800</bug_when>
    <thetext>Created attachment 188882
Updated ChangeLog, no longer remove main resource

Removing the main resource in dispatchDidFinishLoading and dispatchDidFailLoading was causing unittests/testwebdatasource to fail so I changed them not to remove the main resource. I also updated the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835589</commentid>
    <comment_count>34</comment_count>
      <attachid>188882</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-18 10:03:09 -0800</bug_when>
    <thetext>Comment on attachment 188882
Updated ChangeLog, no longer remove main resource

Looks pretty good to me. Maybe Gustavo knows if there&apos;s a better way to sniff out the whether a resource is the main one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835590</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-18 10:03:31 -0800</bug_when>
    <thetext>Attachment 188882 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;]&quot; exit_code: 1
Source/WebKit/gtk/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/gtk/ChangeLog:15:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/gtk/ChangeLog:16:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/gtk/webkit/webkitwebview.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/gtk/webkit/webkitwebview.cpp:5127:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 5 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835592</commentid>
    <comment_count>36</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-18 10:04:17 -0800</bug_when>
    <thetext>Looks like there are some style errors. George, you can ensure that your patch meets the style guidelines by uploading it with webkit-patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835609</commentid>
    <comment_count>37</comment_count>
      <attachid>188917</attachid>
    <who name="George McCollister">george.mccollister</who>
    <bug_when>2013-02-18 10:35:30 -0800</bug_when>
    <thetext>Created attachment 188917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838522</commentid>
    <comment_count>38</comment_count>
      <attachid>188917</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 09:52:21 -0800</bug_when>
    <thetext>Comment on attachment 188917
Patch

Clearing flags on attachment: 188917

Committed r143619: &lt;http://trac.webkit.org/changeset/143619&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838523</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 09:52:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>186661</attachid>
            <date>2013-02-05 11:00:45 -0800</date>
            <delta_ts>2013-02-05 11:00:45 -0800</delta_ts>
            <desc>Simple test page uses XHR to request large JSON file every second. Will exhaust most systems of memory in a few hours or less.</desc>
            <filename>08_Simple_Native_AJAX.tar.gz</filename>
            <type>application/octet-stream</type>
            <size>1581</size>
            <attacher name="George McCollister">george.mccollister</attacher>
            
              <data encoding="base64">H4sIADpVEVEAA+3V0U/bRhgA8Dznr3DzFDQGTkgIWwMTWqt11dZNwAPTNEVuckCq4DDb6VpV/O+z
nUBhg/ZhiEnb73uxfd93vvvdnZN4Z3Q4Pb+YhdGrpJi+DaP9l/vHm40HjbiMQb9fXTuDflw/d3q9
+rqKRqfbiXvdfrfX7zbKZHcQN6L+w07j7ljkRZJFUeM0zLPTcP6JupDljzGhx434zv0vQl6MZkm5
IBtv8nn6T8coY3u533/f//52r7vdu97/reqcdAZbW4NGFD+I8DPxP9//D82ojFYWxvNskh+EYpGl
YdL6OuqsLzPFvEhmB8v0jeZq1Yrv00l4VzbGV43zrCgf08VstmqZTLOyoZXk49b6rZHK1l/rhio+
XN/VJdO0CKch61Q9O6t+18m8yKbpaZ07Kk9pdFg/313Vrar203lxFrJ7Cquxyn3P6tL4vuxWle3G
O/FX91X07uyfL8bjkOcni1mVbl0nL9fZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ
2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2R/dXt/91rxsNsSDRbwzOpyeX8zC6FVSTN+G0f7L/ePNaToJ7zbO
ivPZg4xRxnavV107g35cP3eWz/Vtt9dvdLqduNftdwaD7Ubc2e4OBo0ofojBPxeLvEiyKGqchnl5
Js8/URey/DEm9LgxfPLsp2+Pfvn5eVTt9l5zeHUJyWSv/uKG56FIovFZkuWh2G0tipMvd1qrVDEt
ZmFveXKi4xcH0X7+Ph0PN5ftzeHm8jXD1/PJ+/KSj7PpRbHXbL4tl7yYnof5ooh2o3Qxmz2t296d
ZdVz+CM6/vGHF0VxcRB+X5S/WO21p80ytzFPs/KF78stK0I5o/Q0lOXz9KBqPKwanzabJ4t0XEzn
aTSbJ5NnSZG015offyzrt1yEtN367vlRa71VlG8fzZJy6zfe5PP0m1b0RT1+2TG01zZOQ3FUzrO9
Vk7g5ivykE7a1bzL9ssbY96cy9W405OoXZxN843sOhXt7u5GvbXmX3/H67Lk9TyrxTcSN++nJ+3r
xXuyu1y+aO1mxe3/hlWMZyHJjpb92qv+twe5ikmYhXKOq5pbJZf3TerjbubLJatGudqB9ahTfufL
wS6vOpfL9nGHyn0bbl4fj+Hm6sBsLk/jv/2RCCHEfzD+BO/70HUA+AIA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187920</attachid>
            <date>2013-02-12 13:35:48 -0800</date>
            <delta_ts>2013-02-14 12:26:22 -0800</delta_ts>
            <desc>wk1 leak patch for discussion purposes</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>3023</size>
            <attacher name="George McCollister">george.mccollister</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDE0MjAwMikKKysrIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyMCw2ICsxMDIwLDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGaW5pcwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQt
ZmluaXNoZWQiKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgInJlc291cmNl
LWxvYWQtZmluaXNoZWQiLCB3ZWJSZXNvdXJjZSk7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KHdlYlZpZXcsICJyZXNvdXJjZS1sb2FkLWZpbmlzaGVkIiwgbV9mcmFtZSwgd2ViUmVzb3VyY2Up
OworCisgICAgd2Via2l0X3dlYl92aWV3X3JlbW92ZV9yZXNvdXJjZSh3ZWJWaWV3LCBpZGVudGlm
aWVyU3RyaW5nLmdldCgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTA0Miw2ICsx
MDQ0LDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTAogICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQtZmFpbGVkIiwgd2ViRXJyb3Iu
Z2V0KCkpOwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAicmVzb3VyY2UtbG9h
ZC1mYWlsZWQiLCB3ZWJSZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOwogICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZSh3ZWJWaWV3LCAicmVzb3VyY2UtbG9hZC1mYWlsZWQiLCBtX2ZyYW1lLCB3ZWJS
ZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOworICAgIAorICAgIHdlYmtpdF93ZWJfdmlld19yZW1v
dmVfcmVzb3VyY2Uod2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiB9CiAKIGJvb2wg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxNDIwMDIpCisrKyBTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3Lmgi
CiAKKyNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0SW1wbC5oIgogI2luY2x1ZGUgIkNhaXJvVXRp
bGl0aWVzLmgiCkBAIC0xMDUsNiArMTA2LDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0
b3Jwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJyZXNvdXJjZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnJlc291cmNlcHJp
dmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmgiCkBAIC01MTA3LDkgKzUxMDksMTkgQEAgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfY2xlYXJfcmVzb3VyY2VzKFdlYgogCiBHTGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9zdWJy
ZXNvdXJjZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgR0xpc3QqIHN1YlJlc291cmNlcyA9IGdf
aGFzaF90YWJsZV9nZXRfdmFsdWVzKHByaXYtPnN1YlJlc291cmNlcy5nZXQoKSk7Ci0gICAgcmV0
dXJuIGdfbGlzdF9yZW1vdmUoc3ViUmVzb3VyY2VzLCBwcml2LT5tYWluUmVzb3VyY2UuZ2V0KCkp
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwg
TlVMTCk7CisgICAgR0xpc3QqIHN1YlJlc291cmNlcyA9IDA7CisgICAgVmVjdG9yPFBhc3NSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiA+IHN1YnJlc291cmNlczsKKworICAgIGNvcmUod2ViVmlldykt
Pm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+Z2V0U3VicmVzb3VyY2Vz
KHN1YnJlc291cmNlcyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHN1YnJl
c291cmNlcy5zaXplKCk7IGkrKykgeworICAgICAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVz
b3VyY2UgPSBXRUJLSVRfV0VCX1JFU09VUkNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJf
UkVTT1VSQ0UsIE5VTEwpKTsKKyAgICAgICAgd2Via2l0X3dlYl9yZXNvdXJjZV9pbml0X3dpdGhf
Y29yZV9yZXNvdXJjZSh3ZWJSZXNvdXJjZSwgc3VicmVzb3VyY2VzW2ldKTsKKwlzdWJSZXNvdXJj
ZXMgPSBnX2xpc3RfYXBwZW5kKHN1YlJlc291cmNlcywgd2ViUmVzb3VyY2UpOworICAgIH0KKwor
ICAgIHJldHVybiBzdWJSZXNvdXJjZXM7CiB9CiAKIC8qIEZyb20gRXZlbnRIYW5kbGVyLmNwcCAq
Lwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188401</attachid>
            <date>2013-02-14 12:26:22 -0800</date>
            <delta_ts>2013-02-14 12:29:06 -0800</delta_ts>
            <desc>patch with timeout cleanup</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>3416</size>
            <attacher name="George McCollister">george.mccollister</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDE0Mjg5NikKKysrIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyMCw2ICsxMDIwLDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGaW5pcwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQt
ZmluaXNoZWQiKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgInJlc291cmNl
LWxvYWQtZmluaXNoZWQiLCB3ZWJSZXNvdXJjZSk7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KHdlYlZpZXcsICJyZXNvdXJjZS1sb2FkLWZpbmlzaGVkIiwgbV9mcmFtZSwgd2ViUmVzb3VyY2Up
OworCisgICAgd2Via2l0X3dlYl92aWV3X3JlbW92ZV9yZXNvdXJjZSh3ZWJWaWV3LCBpZGVudGlm
aWVyU3RyaW5nLmdldCgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTA0Miw2ICsx
MDQ0LDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTAogICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQtZmFpbGVkIiwgd2ViRXJyb3Iu
Z2V0KCkpOwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAicmVzb3VyY2UtbG9h
ZC1mYWlsZWQiLCB3ZWJSZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOwogICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZSh3ZWJWaWV3LCAicmVzb3VyY2UtbG9hZC1mYWlsZWQiLCBtX2ZyYW1lLCB3ZWJS
ZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOworICAgIAorICAgIHdlYmtpdF93ZWJfdmlld19yZW1v
dmVfcmVzb3VyY2Uod2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiB9CiAKIGJvb2wg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxNDI4OTYpCisrKyBTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3Lmgi
CiAKKyNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0SW1wbC5oIgogI2luY2x1ZGUgIkNhaXJvVXRp
bGl0aWVzLmgiCkBAIC0xMDUsNiArMTA2LDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0
b3Jwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJyZXNvdXJjZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnJlc291cmNlcHJp
dmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmgiCkBAIC01MTA2LDExICs1MTA4LDMyIEBAIHZvaWQgd2Via2l0X3dlYl92
aWV3X2NsZWFyX3Jlc291cmNlcyhXZWIKICAgICAgICAgZ19oYXNoX3RhYmxlX3JlbW92ZV9hbGwo
cHJpdi0+c3ViUmVzb3VyY2VzLmdldCgpKTsKIH0KIAorc3RhdGljIGdib29sZWFuIGNsZWFudXBf
c3VicmVzb3VyY2VzX2NiKGdwb2ludGVyIGRhdGEpCit7CisgICAgR0xpc3QqIHN1YlJlc291cmNl
cyA9IChHTGlzdCopZGF0YTsKKyAgICBnX2xpc3RfZm9yZWFjaChzdWJSZXNvdXJjZXMsIChHRnVu
YykgZ19vYmplY3RfdW5yZWYsIE5VTEwpOworICAgIGdfbGlzdF9mcmVlKHN1YlJlc291cmNlcyk7
CisgICAgcmV0dXJuIEZBTFNFOworfSAgICAKKwogR0xpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRf
c3VicmVzb3VyY2VzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIEdMaXN0KiBzdWJSZXNvdXJjZXMg
PSBnX2hhc2hfdGFibGVfZ2V0X3ZhbHVlcyhwcml2LT5zdWJSZXNvdXJjZXMuZ2V0KCkpOwotICAg
IHJldHVybiBnX2xpc3RfcmVtb3ZlKHN1YlJlc291cmNlcywgcHJpdi0+bWFpblJlc291cmNlLmdl
dCgpKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dyksIE5VTEwpOworICAgIEdMaXN0KiBzdWJSZXNvdXJjZXMgPSAwOworICAgIFZlY3RvcjxQYXNz
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBzdWJyZXNvdXJjZXM7CisKKyAgICBjb3JlKHdlYlZp
ZXcpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmdldFN1YnJlc291
cmNlcyhzdWJyZXNvdXJjZXMpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBz
dWJyZXNvdXJjZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHdl
YlJlc291cmNlID0gV0VCS0lUX1dFQl9SRVNPVVJDRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1JFU09VUkNFLCBOVUxMKSk7CisgICAgICAgIHdlYmtpdF93ZWJfcmVzb3VyY2VfaW5pdF93
aXRoX2NvcmVfcmVzb3VyY2Uod2ViUmVzb3VyY2UsIHN1YnJlc291cmNlc1tpXSk7CisJc3ViUmVz
b3VyY2VzID0gZ19saXN0X2FwcGVuZChzdWJSZXNvdXJjZXMsIHdlYlJlc291cmNlKTsKKyAgICB9
CisKKyAgICBpZiAoc3ViUmVzb3VyY2VzKQorICAgICAgICBnX3RpbWVvdXRfYWRkKDEsIGNsZWFu
dXBfc3VicmVzb3VyY2VzX2NiLCBnX2xpc3RfY29weShzdWJSZXNvdXJjZXMpKTsKKworICAgIHJl
dHVybiBzdWJSZXNvdXJjZXM7CiB9CiAKIC8qIEZyb20gRXZlbnRIYW5kbGVyLmNwcCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188402</attachid>
            <date>2013-02-14 12:29:06 -0800</date>
            <delta_ts>2013-02-15 10:30:11 -0800</delta_ts>
            <desc>previous patch with indentation problem fixed</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>3423</size>
            <attacher name="George McCollister">george.mccollister</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDE0Mjg5NikKKysrIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyMCw2ICsxMDIwLDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGaW5pcwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQt
ZmluaXNoZWQiKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgInJlc291cmNl
LWxvYWQtZmluaXNoZWQiLCB3ZWJSZXNvdXJjZSk7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KHdlYlZpZXcsICJyZXNvdXJjZS1sb2FkLWZpbmlzaGVkIiwgbV9mcmFtZSwgd2ViUmVzb3VyY2Up
OworCisgICAgd2Via2l0X3dlYl92aWV3X3JlbW92ZV9yZXNvdXJjZSh3ZWJWaWV3LCBpZGVudGlm
aWVyU3RyaW5nLmdldCgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTA0Miw2ICsx
MDQ0LDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTAogICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQtZmFpbGVkIiwgd2ViRXJyb3Iu
Z2V0KCkpOwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAicmVzb3VyY2UtbG9h
ZC1mYWlsZWQiLCB3ZWJSZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOwogICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZSh3ZWJWaWV3LCAicmVzb3VyY2UtbG9hZC1mYWlsZWQiLCBtX2ZyYW1lLCB3ZWJS
ZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOworICAgIAorICAgIHdlYmtpdF93ZWJfdmlld19yZW1v
dmVfcmVzb3VyY2Uod2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiB9CiAKIGJvb2wg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxNDI4OTYpCisrKyBTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3Lmgi
CiAKKyNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0SW1wbC5oIgogI2luY2x1ZGUgIkNhaXJvVXRp
bGl0aWVzLmgiCkBAIC0xMDUsNiArMTA2LDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0
b3Jwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJyZXNvdXJjZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnJlc291cmNlcHJp
dmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmgiCkBAIC01MTA2LDExICs1MTA4LDMyIEBAIHZvaWQgd2Via2l0X3dlYl92
aWV3X2NsZWFyX3Jlc291cmNlcyhXZWIKICAgICAgICAgZ19oYXNoX3RhYmxlX3JlbW92ZV9hbGwo
cHJpdi0+c3ViUmVzb3VyY2VzLmdldCgpKTsKIH0KIAorc3RhdGljIGdib29sZWFuIGNsZWFudXBf
c3VicmVzb3VyY2VzX2NiKGdwb2ludGVyIGRhdGEpCit7CisgICAgR0xpc3QqIHN1YlJlc291cmNl
cyA9IChHTGlzdCopZGF0YTsKKyAgICBnX2xpc3RfZm9yZWFjaChzdWJSZXNvdXJjZXMsIChHRnVu
YykgZ19vYmplY3RfdW5yZWYsIE5VTEwpOworICAgIGdfbGlzdF9mcmVlKHN1YlJlc291cmNlcyk7
CisgICAgcmV0dXJuIEZBTFNFOworfSAgICAKKwogR0xpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRf
c3VicmVzb3VyY2VzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIEdMaXN0KiBzdWJSZXNvdXJjZXMg
PSBnX2hhc2hfdGFibGVfZ2V0X3ZhbHVlcyhwcml2LT5zdWJSZXNvdXJjZXMuZ2V0KCkpOwotICAg
IHJldHVybiBnX2xpc3RfcmVtb3ZlKHN1YlJlc291cmNlcywgcHJpdi0+bWFpblJlc291cmNlLmdl
dCgpKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dyksIE5VTEwpOworICAgIEdMaXN0KiBzdWJSZXNvdXJjZXMgPSAwOworICAgIFZlY3RvcjxQYXNz
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBzdWJyZXNvdXJjZXM7CisKKyAgICBjb3JlKHdlYlZp
ZXcpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmdldFN1YnJlc291
cmNlcyhzdWJyZXNvdXJjZXMpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBz
dWJyZXNvdXJjZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHdl
YlJlc291cmNlID0gV0VCS0lUX1dFQl9SRVNPVVJDRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1JFU09VUkNFLCBOVUxMKSk7CisgICAgICAgIHdlYmtpdF93ZWJfcmVzb3VyY2VfaW5pdF93
aXRoX2NvcmVfcmVzb3VyY2Uod2ViUmVzb3VyY2UsIHN1YnJlc291cmNlc1tpXSk7CisgICAgICAg
IHN1YlJlc291cmNlcyA9IGdfbGlzdF9hcHBlbmQoc3ViUmVzb3VyY2VzLCB3ZWJSZXNvdXJjZSk7
CisgICAgfQorCisgICAgaWYgKHN1YlJlc291cmNlcykKKyAgICAgICAgZ190aW1lb3V0X2FkZCgx
LCBjbGVhbnVwX3N1YnJlc291cmNlc19jYiwgZ19saXN0X2NvcHkoc3ViUmVzb3VyY2VzKSk7CisK
KyAgICByZXR1cm4gc3ViUmVzb3VyY2VzOwogfQogCiAvKiBGcm9tIEV2ZW50SGFuZGxlci5jcHAg
Ki8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188598</attachid>
            <date>2013-02-15 10:30:11 -0800</date>
            <delta_ts>2013-02-15 12:53:31 -0800</delta_ts>
            <desc>patch with suggested changes</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>3466</size>
            <attacher name="George McCollister">george.mccollister</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDE0MzAxMCkKKysrIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyMCw2ICsxMDIwLDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGaW5pcwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQt
ZmluaXNoZWQiKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgInJlc291cmNl
LWxvYWQtZmluaXNoZWQiLCB3ZWJSZXNvdXJjZSk7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KHdlYlZpZXcsICJyZXNvdXJjZS1sb2FkLWZpbmlzaGVkIiwgbV9mcmFtZSwgd2ViUmVzb3VyY2Up
OworCisgICAgd2Via2l0X3dlYl92aWV3X3JlbW92ZV9yZXNvdXJjZSh3ZWJWaWV3LCBpZGVudGlm
aWVyU3RyaW5nLmdldCgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTA0Miw2ICsx
MDQ0LDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTAogICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQtZmFpbGVkIiwgd2ViRXJyb3Iu
Z2V0KCkpOwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAicmVzb3VyY2UtbG9h
ZC1mYWlsZWQiLCB3ZWJSZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOwogICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZSh3ZWJWaWV3LCAicmVzb3VyY2UtbG9hZC1mYWlsZWQiLCBtX2ZyYW1lLCB3ZWJS
ZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOworCisgICAgd2Via2l0X3dlYl92aWV3X3JlbW92ZV9y
ZXNvdXJjZSh3ZWJWaWV3LCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKIH0KIAogYm9vbCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MzAxMCkKKysrIFNvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKIAor
I2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIK
ICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBsLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRp
ZXMuaCIKQEAgLTEwNSw2ICsxMDYsNyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYmluc3BlY3RvcnBy
aXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnJlc291cmNlLmgiCisjaW5jbHVkZSAid2Via2l0d2VicmVzb3VyY2Vwcml2YXRl
LmgiCiAjaW5jbHVkZSAid2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Vi
a2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuaCIKQEAgLTUxMDYsMTEgKzUxMDgsMzIgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Y2xlYXJfcmVzb3VyY2VzKFdlYgogICAgICAgICBnX2hhc2hfdGFibGVfcmVtb3ZlX2FsbChwcml2
LT5zdWJSZXNvdXJjZXMuZ2V0KCkpOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gY2xlYW51cF9zdWJy
ZXNvdXJjZXNfY2IoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBHTGlzdCogc3ViUmVzb3VyY2VzID0g
cmVpbnRlcnByZXRfY2FzdDxHTGlzdCo+KGRhdGEpOworICAgIGdfbGlzdF9mb3JlYWNoKHN1YlJl
c291cmNlcywgcmVpbnRlcnByZXRfY2FzdDxHRnVuYz4oZ19vYmplY3RfdW5yZWYpLCBOVUxMKTsK
KyAgICBnX2xpc3RfZnJlZShzdWJSZXNvdXJjZXMpOworICAgIHJldHVybiBGQUxTRTsKK30KKwog
R0xpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfc3VicmVzb3VyY2VzKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiB7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2
OwotICAgIEdMaXN0KiBzdWJSZXNvdXJjZXMgPSBnX2hhc2hfdGFibGVfZ2V0X3ZhbHVlcyhwcml2
LT5zdWJSZXNvdXJjZXMuZ2V0KCkpOwotICAgIHJldHVybiBnX2xpc3RfcmVtb3ZlKHN1YlJlc291
cmNlcywgcHJpdi0+bWFpblJlc291cmNlLmdldCgpKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOworICAgIEdMaXN0KiBzdWJSZXNv
dXJjZXMgPSAwOworICAgIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBjb3Jl
U3ViUmVzb3VyY2VzOworCisgICAgY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCktPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpLT5nZXRTdWJyZXNvdXJjZXMoY29yZVN1YlJlc291cmNlcyk7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvcmVTdWJSZXNvdXJjZXMuc2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHdlYlJlc291cmNlID0gV0VCS0lU
X1dFQl9SRVNPVVJDRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1JFU09VUkNFLCBOVUxM
KSk7CisgICAgICAgIHdlYmtpdF93ZWJfcmVzb3VyY2VfaW5pdF93aXRoX2NvcmVfcmVzb3VyY2Uo
d2ViUmVzb3VyY2UsIGNvcmVTdWJSZXNvdXJjZXNbaV0pOworICAgICAgICBzdWJSZXNvdXJjZXMg
PSBnX2xpc3RfYXBwZW5kKHN1YlJlc291cmNlcywgd2ViUmVzb3VyY2UpOworICAgIH0KKworICAg
IGlmIChzdWJSZXNvdXJjZXMpCisgICAgICAgIGdfdGltZW91dF9hZGQoMSwgY2xlYW51cF9zdWJy
ZXNvdXJjZXNfY2IsIGdfbGlzdF9jb3B5KHN1YlJlc291cmNlcykpOworCisgICAgcmV0dXJuIHN1
YlJlc291cmNlczsKIH0KIAogLyogRnJvbSBFdmVudEhhbmRsZXIuY3BwICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188624</attachid>
            <date>2013-02-15 12:53:31 -0800</date>
            <delta_ts>2013-02-18 07:19:38 -0800</delta_ts>
            <desc>patch with changed callback name and static cast</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>3487</size>
            <attacher name="George McCollister">george.mccollister</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDE0MzAxMCkKKysrIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyMCw2ICsxMDIwLDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGaW5pcwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQt
ZmluaXNoZWQiKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgInJlc291cmNl
LWxvYWQtZmluaXNoZWQiLCB3ZWJSZXNvdXJjZSk7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KHdlYlZpZXcsICJyZXNvdXJjZS1sb2FkLWZpbmlzaGVkIiwgbV9mcmFtZSwgd2ViUmVzb3VyY2Up
OworCisgICAgd2Via2l0X3dlYl92aWV3X3JlbW92ZV9yZXNvdXJjZSh3ZWJWaWV3LCBpZGVudGlm
aWVyU3RyaW5nLmdldCgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTA0Miw2ICsx
MDQ0LDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTAogICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQtZmFpbGVkIiwgd2ViRXJyb3Iu
Z2V0KCkpOwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAicmVzb3VyY2UtbG9h
ZC1mYWlsZWQiLCB3ZWJSZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOwogICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZSh3ZWJWaWV3LCAicmVzb3VyY2UtbG9hZC1mYWlsZWQiLCBtX2ZyYW1lLCB3ZWJS
ZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOworCisgICAgd2Via2l0X3dlYl92aWV3X3JlbW92ZV9y
ZXNvdXJjZSh3ZWJWaWV3LCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKIH0KIAogYm9vbCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MzAxMCkKKysrIFNvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKIAor
I2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIK
ICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBsLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRp
ZXMuaCIKQEAgLTEwNSw2ICsxMDYsNyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYmluc3BlY3RvcnBy
aXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnJlc291cmNlLmgiCisjaW5jbHVkZSAid2Via2l0d2VicmVzb3VyY2Vwcml2YXRl
LmgiCiAjaW5jbHVkZSAid2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Vi
a2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuaCIKQEAgLTUxMDYsMTEgKzUxMDgsMzIgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Y2xlYXJfcmVzb3VyY2VzKFdlYgogICAgICAgICBnX2hhc2hfdGFibGVfcmVtb3ZlX2FsbChwcml2
LT5zdWJSZXNvdXJjZXMuZ2V0KCkpOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gY2xlYW51cFRlbXBv
cmFyaWx5Q2FjaGVkU3VicmVzb3VyY2VzKGdwb2ludGVyIGRhdGEpCit7CisgICAgR0xpc3QqIHN1
YlJlc291cmNlcyA9IHN0YXRpY19jYXN0PEdMaXN0Kj4oZGF0YSk7CisgICAgZ19saXN0X2ZvcmVh
Y2goc3ViUmVzb3VyY2VzLCByZWludGVycHJldF9jYXN0PEdGdW5jPihnX29iamVjdF91bnJlZiks
IE5VTEwpOworICAgIGdfbGlzdF9mcmVlKHN1YlJlc291cmNlcyk7CisgICAgcmV0dXJuIEZBTFNF
OworfQorCiBHTGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9zdWJyZXNvdXJjZXMoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKIHsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZp
ZXctPnByaXY7Ci0gICAgR0xpc3QqIHN1YlJlc291cmNlcyA9IGdfaGFzaF90YWJsZV9nZXRfdmFs
dWVzKHByaXYtPnN1YlJlc291cmNlcy5nZXQoKSk7Ci0gICAgcmV0dXJuIGdfbGlzdF9yZW1vdmUo
c3ViUmVzb3VyY2VzLCBwcml2LT5tYWluUmVzb3VyY2UuZ2V0KCkpOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7CisgICAgR0xpc3Qq
IHN1YlJlc291cmNlcyA9IDA7CisgICAgVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiA+IGNvcmVTdWJSZXNvdXJjZXM7CisKKyAgICBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmdldFN1YnJlc291cmNlcyhjb3JlU3ViUmVzb3Vy
Y2VzKTsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29yZVN1YlJlc291cmNl
cy5zaXplKCk7IGkrKykgeworICAgICAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3VyY2Ug
PSBXRUJLSVRfV0VCX1JFU09VUkNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfUkVTT1VS
Q0UsIE5VTEwpKTsKKyAgICAgICAgd2Via2l0X3dlYl9yZXNvdXJjZV9pbml0X3dpdGhfY29yZV9y
ZXNvdXJjZSh3ZWJSZXNvdXJjZSwgY29yZVN1YlJlc291cmNlc1tpXSk7CisgICAgICAgIHN1YlJl
c291cmNlcyA9IGdfbGlzdF9hcHBlbmQoc3ViUmVzb3VyY2VzLCB3ZWJSZXNvdXJjZSk7CisgICAg
fQorCisgICAgaWYgKHN1YlJlc291cmNlcykKKyAgICAgICAgZ190aW1lb3V0X2FkZCgxLCBjbGVh
bnVwVGVtcG9yYXJpbHlDYWNoZWRTdWJyZXNvdXJjZXMsIGdfbGlzdF9jb3B5KHN1YlJlc291cmNl
cykpOworCisgICAgcmV0dXJuIHN1YlJlc291cmNlczsKIH0KIAogLyogRnJvbSBFdmVudEhhbmRs
ZXIuY3BwICovCg==
</data>
<flag name="review"
          id="208798"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="208799"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188882</attachid>
            <date>2013-02-18 07:19:38 -0800</date>
            <delta_ts>2013-02-18 10:35:25 -0800</delta_ts>
            <desc>Updated ChangeLog, no longer remove main resource</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>4788</size>
            <attacher name="George McCollister">george.mccollister</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzIxMykKKysrIFNvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAyLTE4
ICBHZW9yZ2UgTWNDb2xsaXN0ZXIgIDxnZW9yZ2UubWNjb2xsaXN0ZXJAZ21haWwuY29tPgorCisg
ICAgICAgIFtHVEtdIFJlbW92ZSBzdWJyZXNvdXJjZSBsZWFrcyBmcm9tIFdlYktpdDEgYW5kIFdl
YktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
ODk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKTogUmVtb3ZlIHJl
c291cmNlCisJaWYgaXQgaXNuJ3QgdGhlIG1haW4gcmVzb3VyY2UgdG8gcHJldmVudCBsZWFrLgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGlu
Zyk6IERpdHRvCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAo
Y2xlYW51cFRlbXBvcmFyaWx5Q2FjaGVkU3VicmVzb3VyY2VzKTogQWRkZWQgdG8gY2xlYW51cCBz
dWJyZXNvdXJjZXMuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N1YnJlc291cmNlcyk6
IFVzZSBnZXRTdWJyZXNvdXJjZXMgZnJvbSB0aGUKKwlkb2N1bWVudExvYWRlciB0byBwcm92aWRl
IHN1YnJlc291cmNlcyBzaW5jZSByZXNvdXJjZXMgd2lsbCBiZSByZW1vdmVkCisJZnJvbSB3ZWJ2
aWV3IGFmdGVyIGxvYWRpbmcuCisKIDIwMTMtMDItMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNwcmVhZCB0aGUgZ3lwIGJ1aWxkIGZp
bGVzIHRocm91Z2hvdXQgdGhlIHRyZWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9u
IDE0MzIxMykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyMCw2ICsxMDIwLDkgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pcwogICAgIGdfc2lnbmFsX2VtaXRfYnlf
bmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQtZmluaXNoZWQiKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUobV9mcmFtZSwgInJlc291cmNlLWxvYWQtZmluaXNoZWQiLCB3ZWJSZXNvdXJjZSk7CiAg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJyZXNvdXJjZS1sb2FkLWZpbmlzaGVk
IiwgbV9mcmFtZSwgd2ViUmVzb3VyY2UpOworCisgICAgaWYgKCFnX3N0cl9lcXVhbChpZGVudGlm
aWVyU3RyaW5nLmdldCgpLCB3ZWJWaWV3LT5wcml2LT5tYWluUmVzb3VyY2VJZGVudGlmaWVyLmRh
dGEoKSkpCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19yZW1vdmVfcmVzb3VyY2Uod2ViVmlldywg
aWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEw
NDIsNiArMTA0NSw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbEwK
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViUmVzb3VyY2UsICJsb2FkLWZhaWxlZCIsIHdl
YkVycm9yLmdldCgpKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgInJlc291
cmNlLWxvYWQtZmFpbGVkIiwgd2ViUmVzb3VyY2UsIHdlYkVycm9yLmdldCgpKTsKICAgICBnX3Np
Z25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgInJlc291cmNlLWxvYWQtZmFpbGVkIiwgbV9mcmFt
ZSwgd2ViUmVzb3VyY2UsIHdlYkVycm9yLmdldCgpKTsKKworICAgIGlmICghZ19zdHJfZXF1YWwo
aWRlbnRpZmllclN0cmluZy5nZXQoKSwgd2ViVmlldy0+cHJpdi0+bWFpblJlc291cmNlSWRlbnRp
Zmllci5kYXRhKCkpKQorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVtb3ZlX3Jlc291cmNlKHdl
YlZpZXcsIGlkZW50aWZpZXJTdHJpbmcuZ2V0KCkpOwogfQogCiBib29sIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBpbnQgbGVuZ3RoKQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTQzMjEzKQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogCisjaW5jbHVkZSAi
QXJjaGl2ZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUg
IkJhY2tGb3J3YXJkTGlzdEltcGwuaCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgpAQCAt
MTA1LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9ycHJpdmF0ZS5oIgog
I2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vi
cmVzb3VyY2UuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJyZXNvdXJjZXByaXZhdGUuaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJwbHVn
aW5kYXRhYmFzZXByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5o
IgpAQCAtNTEwNiwxMSArNTEwOCwzMiBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGVhcl9yZXNv
dXJjZXMoV2ViCiAgICAgICAgIGdfaGFzaF90YWJsZV9yZW1vdmVfYWxsKHByaXYtPnN1YlJlc291
cmNlcy5nZXQoKSk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiBjbGVhbnVwVGVtcG9yYXJpbHlDYWNo
ZWRTdWJyZXNvdXJjZXMoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBHTGlzdCogc3ViUmVzb3VyY2Vz
ID0gc3RhdGljX2Nhc3Q8R0xpc3QqPihkYXRhKTsKKyAgICBnX2xpc3RfZm9yZWFjaChzdWJSZXNv
dXJjZXMsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Z1bmM+KGdfb2JqZWN0X3VucmVmKSwgTlVMTCk7Cisg
ICAgZ19saXN0X2ZyZWUoc3ViUmVzb3VyY2VzKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIEdM
aXN0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N1YnJlc291cmNlcyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogewotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsK
LSAgICBHTGlzdCogc3ViUmVzb3VyY2VzID0gZ19oYXNoX3RhYmxlX2dldF92YWx1ZXMocHJpdi0+
c3ViUmVzb3VyY2VzLmdldCgpKTsKLSAgICByZXR1cm4gZ19saXN0X3JlbW92ZShzdWJSZXNvdXJj
ZXMsIHByaXYtPm1haW5SZXNvdXJjZS5nZXQoKSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKKyAgICBHTGlzdCogc3ViUmVzb3Vy
Y2VzID0gMDsKKyAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gY29yZVN1
YlJlc291cmNlczsKKworICAgIGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+Z2V0U3VicmVzb3VyY2VzKGNvcmVTdWJSZXNvdXJjZXMpOworCisg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3JlU3ViUmVzb3VyY2VzLnNpemUoKTsg
aSsrKSB7CisgICAgICAgIFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSA9IFdFQktJVF9X
RUJfUkVTT1VSQ0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9SRVNPVVJDRSwgTlVMTCkp
OworICAgICAgICB3ZWJraXRfd2ViX3Jlc291cmNlX2luaXRfd2l0aF9jb3JlX3Jlc291cmNlKHdl
YlJlc291cmNlLCBjb3JlU3ViUmVzb3VyY2VzW2ldKTsKKyAgICAgICAgc3ViUmVzb3VyY2VzID0g
Z19saXN0X2FwcGVuZChzdWJSZXNvdXJjZXMsIHdlYlJlc291cmNlKTsKKyAgICB9CisKKyAgICBp
ZiAoc3ViUmVzb3VyY2VzKQorICAgICAgICBnX3RpbWVvdXRfYWRkKDEsIGNsZWFudXBUZW1wb3Jh
cmlseUNhY2hlZFN1YnJlc291cmNlcywgZ19saXN0X2NvcHkoc3ViUmVzb3VyY2VzKSk7CisKKyAg
ICByZXR1cm4gc3ViUmVzb3VyY2VzOwogfQogCiAvKiBGcm9tIEV2ZW50SGFuZGxlci5jcHAgKi8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188917</attachid>
            <date>2013-02-18 10:35:30 -0800</date>
            <delta_ts>2013-02-21 09:52:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108960-20130218123153.patch</filename>
            <type>text/plain</type>
            <size>4805</size>
            <attacher name="George McCollister">george.mccollister</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzIxMykKKysrIFNvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAyLTE4
ICBHZW9yZ2UgTWNDb2xsaXN0ZXIgIDxnZW9yZ2UubWNjb2xsaXN0ZXJAZ21haWwuY29tPgorCisg
ICAgICAgIFtHVEtdIFJlbW92ZSBzdWJyZXNvdXJjZSBsZWFrcyBmcm9tIFdlYktpdDEgYW5kIFdl
YktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
ODk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKTogUmVtb3ZlIHJl
c291cmNlCisgICAgICAgIGlmIGl0IGlzbid0IHRoZSBtYWluIHJlc291cmNlIHRvIHByZXZlbnQg
bGVhay4KKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFp
bExvYWRpbmcpOiBEaXR0bworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAg
ICAgICAgKGNsZWFudXBUZW1wb3JhcmlseUNhY2hlZFN1YnJlc291cmNlcyk6IEFkZGVkIHRvIGNs
ZWFudXAgc3VicmVzb3VyY2VzLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zdWJyZXNv
dXJjZXMpOiBVc2UgZ2V0U3VicmVzb3VyY2VzIGZyb20gdGhlCisgICAgICAgIGRvY3VtZW50TG9h
ZGVyIHRvIHByb3ZpZGUgc3VicmVzb3VyY2VzIHNpbmNlIHJlc291cmNlcyB3aWxsIGJlIHJlbW92
ZWQKKyAgICAgICAgZnJvbSB3ZWJ2aWV3IGFmdGVyIGxvYWRpbmcuCisKIDIwMTMtMDItMTUgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNw
cmVhZCB0aGUgZ3lwIGJ1aWxkIGZpbGVzIHRocm91Z2hvdXQgdGhlIHRyZWUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAJKHJldmlzaW9uIDE0MzIxMykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAy
MCw2ICsxMDIwLDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pcwog
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQtZmluaXNoZWQiKTsK
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgInJlc291cmNlLWxvYWQtZmluaXNo
ZWQiLCB3ZWJSZXNvdXJjZSk7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJy
ZXNvdXJjZS1sb2FkLWZpbmlzaGVkIiwgbV9mcmFtZSwgd2ViUmVzb3VyY2UpOworCisgICAgaWYg
KCFnX3N0cl9lcXVhbChpZGVudGlmaWVyU3RyaW5nLmdldCgpLCB3ZWJWaWV3LT5wcml2LT5tYWlu
UmVzb3VyY2VJZGVudGlmaWVyLmRhdGEoKSkpCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19yZW1v
dmVfcmVzb3VyY2Uod2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKQEAgLTEwNDIsNiArMTA0NSw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbEwKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViUmVzb3Vy
Y2UsICJsb2FkLWZhaWxlZCIsIHdlYkVycm9yLmdldCgpKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUobV9mcmFtZSwgInJlc291cmNlLWxvYWQtZmFpbGVkIiwgd2ViUmVzb3VyY2UsIHdlYkVy
cm9yLmdldCgpKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgInJlc291cmNl
LWxvYWQtZmFpbGVkIiwgbV9mcmFtZSwgd2ViUmVzb3VyY2UsIHdlYkVycm9yLmdldCgpKTsKKwor
ICAgIGlmICghZ19zdHJfZXF1YWwoaWRlbnRpZmllclN0cmluZy5nZXQoKSwgd2ViVmlldy0+cHJp
di0+bWFpblJlc291cmNlSWRlbnRpZmllci5kYXRhKCkpKQorICAgICAgICB3ZWJraXRfd2ViX3Zp
ZXdfcmVtb3ZlX3Jlc291cmNlKHdlYlZpZXcsIGlkZW50aWZpZXJTdHJpbmcuZ2V0KCkpOwogfQog
CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKQpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTQzMjEzKQorKysgU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogCiAjaW5jbHVkZSAi
QVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IkJhY2tGb3J3YXJkTGlzdEltcGwuaCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgpAQCAtMTA1LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAid2Via2l0d2Vi
aW5zcGVjdG9ycHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgi
CiAjaW5jbHVkZSAid2Via2l0d2VicmVzb3VyY2UuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJyZXNv
dXJjZXByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIKICNp
bmNsdWRlICJ3ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgpAQCAtNTEwNiwxMSArNTEwOCwzMiBAQCB2b2lkIHdlYmtp
dF93ZWJfdmlld19jbGVhcl9yZXNvdXJjZXMoV2ViCiAgICAgICAgIGdfaGFzaF90YWJsZV9yZW1v
dmVfYWxsKHByaXYtPnN1YlJlc291cmNlcy5nZXQoKSk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiBj
bGVhbnVwVGVtcG9yYXJpbHlDYWNoZWRTdWJyZXNvdXJjZXMoZ3BvaW50ZXIgZGF0YSkKK3sKKyAg
ICBHTGlzdCogc3ViUmVzb3VyY2VzID0gc3RhdGljX2Nhc3Q8R0xpc3QqPihkYXRhKTsKKyAgICBn
X2xpc3RfZm9yZWFjaChzdWJSZXNvdXJjZXMsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Z1bmM+KGdfb2Jq
ZWN0X3VucmVmKSwgTlVMTCk7CisgICAgZ19saXN0X2ZyZWUoc3ViUmVzb3VyY2VzKTsKKyAgICBy
ZXR1cm4gRkFMU0U7Cit9CisKIEdMaXN0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N1YnJlc291cmNl
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBw
cml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBHTGlzdCogc3ViUmVzb3VyY2VzID0gZ19oYXNoX3Rh
YmxlX2dldF92YWx1ZXMocHJpdi0+c3ViUmVzb3VyY2VzLmdldCgpKTsKLSAgICByZXR1cm4gZ19s
aXN0X3JlbW92ZShzdWJSZXNvdXJjZXMsIHByaXYtPm1haW5SZXNvdXJjZS5nZXQoKSk7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsK
KyAgICBHTGlzdCogc3ViUmVzb3VyY2VzID0gMDsKKyAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+ID4gY29yZVN1YlJlc291cmNlczsKKworICAgIGNvcmUod2ViVmlldyktPm1h
aW5GcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+Z2V0U3VicmVzb3VyY2VzKGNv
cmVTdWJSZXNvdXJjZXMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvcmVTdWJS
ZXNvdXJjZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHdlYlJl
c291cmNlID0gV0VCS0lUX1dFQl9SRVNPVVJDRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X1JFU09VUkNFLCBOVUxMKSk7CisgICAgICAgIHdlYmtpdF93ZWJfcmVzb3VyY2VfaW5pdF93aXRo
X2NvcmVfcmVzb3VyY2Uod2ViUmVzb3VyY2UsIGNvcmVTdWJSZXNvdXJjZXNbaV0pOworICAgICAg
ICBzdWJSZXNvdXJjZXMgPSBnX2xpc3RfYXBwZW5kKHN1YlJlc291cmNlcywgd2ViUmVzb3VyY2Up
OworICAgIH0KKworICAgIGlmIChzdWJSZXNvdXJjZXMpCisgICAgICAgIGdfdGltZW91dF9hZGQo
MSwgY2xlYW51cFRlbXBvcmFyaWx5Q2FjaGVkU3VicmVzb3VyY2VzLCBnX2xpc3RfY29weShzdWJS
ZXNvdXJjZXMpKTsKKworICAgIHJldHVybiBzdWJSZXNvdXJjZXM7CiB9CiAKIC8qIEZyb20gRXZl
bnRIYW5kbGVyLmNwcCAqLwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>