<?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>39204</bug_id>
          
          <creation_ts>2010-05-17 01:07:04 -0700</creation_ts>
          <short_desc>schedule/unscheduleAll API in ResourceHandleMac</short_desc>
          <delta_ts>2011-02-15 03:14:47 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>39202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>hyatt</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>226670</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-05-17 01:07:04 -0700</bug_when>
    <thetext>For the GStreamer support in mac os, the WebKitWebSource element needs to pause/unpause the HTTP download depending on the status of buffered/consumed data in the pipeline. So we&apos;d need 2 new methods in ResourceHandleMac to schedule or unschedule all the current scheduledPairs at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226673</commentid>
    <comment_count>1</comment_count>
      <attachid>56220</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-05-17 01:14:29 -0700</bug_when>
    <thetext>Created attachment 56220
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226817</commentid>
    <comment_count>2</comment_count>
      <attachid>56220</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-17 10:53:40 -0700</bug_when>
    <thetext>Comment on attachment 56220
proposed patch

It&apos;s a very bad idea to add a Page pointer to the ResourceHandle class. This goes against the layering, where the resource handle is the low level mechanism in the platform layer that is not tied to the page loading mechanism. We should look for another way to do this. I need to know more about the big picture here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227147</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-05-17 23:16:32 -0700</bug_when>
    <thetext>Thanks Darin for looking at the patch.

Would it be ok to pass the Page pointer in parameter of the new methods then? This would work for my use-case as well.

About the big picture, I tried to explain it in the bug description but it wasn&apos;t probably clear enough :)

The gstreamer framework is based on the concept of pipelines where data flow between elements (source elements, demuxers, decoders, sink elements,...). Our pipeline uses a custom source element that does the HTTP data downloading with the ResourceHandle &quot;low level&quot; API. It has a custom ResourceHandleClient. The element is using appsrc [1]. Appsrc has an internal queue that manages the data buffering. When it&apos;s full appsrc will ask the application (ResourceHandle) to 
pause the download because it has enough data for now to feed the pipeline. When the queue reaches a low level appsrc will ask ResourceHandle to resume the download so the queue can fill again.

The source code of this element is in WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp

[1] http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-appsrc.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231161</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-05-27 00:59:41 -0700</bug_when>
    <thetext>Darin can you please reply to comment 3? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231547</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-27 20:13:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Would it be ok to pass the Page pointer in parameter of the new methods then? This would work for my use-case as well.

Not really OK. The layering issue is that things in the platform directory can&apos;t know about things at a higher level at all. So they can’t even mention Page in their definitions.

We have to think about how to structure this so the higher level loader can set up these resource handles appropriately, but the whole point of the ResourceHandle abstraction is a low level one that does not involve things like Frame and Page.

I don’t immediately know what the right solution is. Maciej Stachoiwak might have some ideas. He’s currently on vacation. Since the platform directory was originally conceived in its current form by Hyatt, he might have ideas too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236717</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-06-11 00:45:37 -0700</bug_when>
    <thetext>Is Maciej back? Hyatt? ;)

Another thing I can do without touching the ResourceHandleMac code is to get the SchedulePairs and internal connection instance from my side and do the scheduling/unscheduling there. This feels nasty but could maybe be acceptable in the short term. Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258551</commentid>
    <comment_count>7</comment_count>
      <attachid>56220</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-30 23:01:30 -0700</bug_when>
    <thetext>Comment on attachment 56220
proposed patch

r-, because of the layering violation.

I have no clue about this particular part of the code, but you could avoid passing Page, by just querying Page* from the call site, and pass in a SchedulePairHashSet* pointer to your scheduleAll/unscheduleAll functions.
Not sure if this design is good at all, other reviewers could comment better than me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266001</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-08-18 02:25:29 -0700</bug_when>
    <thetext>It seems using  ResourceHandle::setDefersLoading in the WebKitWebSource gstreamer element is a better approach. See bug 44157</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56220</attachid>
            <date>2010-05-17 01:14:29 -0700</date>
            <delta_ts>2010-07-30 23:01:30 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>4749</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0OWZhOGM5NzA5ODk1OTMwMWQyOTYxNDZjODAzMDg0NmViNDJhYjJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDE3IE1heSAyMDEwIDEwOjE0OjExICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cHJvcG9zZWQgcGF0Y2gKCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjAgKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHAgICAgICAgfCAgICAzICsrCiBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaCAgICAgICAgIHwgICAgNiArKysKIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gfCAgIDM2ICsrKysrKysrKysrKysr
KysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGY3YTk4MS4uNzE0ZjQ0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNS0xNyAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgc2NoZWR1bGUvdW5zY2hlZHVsZUFsbCBBUEkgaW4gUmVz
b3VyY2VIYW5kbGVNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5MjA0CisKKyAgICAgICAgTmV3IEFQSSB0byB1bnNjaGVkdWxlL3NjaGVkdWxlIGFs
bCB0aGUgY3VycmVudCBzaGVkdWxlZFBhaXJzIGF0CisgICAgICAgIG9uY2UuIFRoaXMgYWxsb3dz
IHRvIGVhc2lseSBwYXVzZS9yZXN1bWUgdGhlIEhUVFAgZG93bmxvYWQuCisKKyAgICAgICAgVGhp
cyBBUEkgaXMgbm90IHVzZWQgeWV0LCBzbyBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzY2hlZHVsZUFsbCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZUFsbCk6CisKIDIwMTAtMDUtMTYg
IENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgPUFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmNwcAppbmRleCBkZTQxNmZlLi5jYWRiNzFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTQwLDYgKzQwLDkgQEAgc3RhdGljIGJvb2wgc2hv
dWxkRm9yY2VDb250ZW50U25pZmZpbmc7CiBSZXNvdXJjZUhhbmRsZTo6UmVzb3VyY2VIYW5kbGUo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xp
ZW50LCBib29sIGRlZmVyc0xvYWRpbmcsCiAgICAgICAgICBib29sIHNob3VsZENvbnRlbnRTbmlm
ZikKICAgICA6IGQobmV3IFJlc291cmNlSGFuZGxlSW50ZXJuYWwodGhpcywgcmVxdWVzdCwgY2xp
ZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYpKQorI2lmIFBMQVRGT1JNKE1B
QykKKyAgICAsIG1fcGFnZSgwKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZTEwODY1ZC4uOTI3MTY0YyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTgyLDYgKzgyLDcgQEAgY2xhc3Mg
Q3JlZGVudGlhbDsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBLVVJMOwor
Y2xhc3MgUGFnZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKQEAgLTE0Myw2ICsxNDQsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciopOwogICAgIHZvaWQgdW5zY2hlZHVs
ZShTY2hlZHVsZVBhaXIqKTsKKyAgICB2b2lkIHNjaGVkdWxlQWxsKCk7CisgICAgdm9pZCB1bnNj
aGVkdWxlQWxsKCk7CiAjZWxpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENGVVJMQ29ubmVjdGlvblJl
ZiBjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgQ0ZVUkxDb25uZWN0aW9uUmVmIHJlbGVhc2VDb25u
ZWN0aW9uRm9yRG93bmxvYWQoKTsKQEAgLTIxNCw2ICsyMTcsOSBAQCBwcml2YXRlOgogCiAgICAg
ZnJpZW5kIGNsYXNzIFJlc291cmNlSGFuZGxlSW50ZXJuYWw7CiAgICAgT3duUHRyPFJlc291cmNl
SGFuZGxlSW50ZXJuYWw+IGQ7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIFBhZ2UqIG1fcGFnZTsK
KyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0KaW5kZXggMDQ1NGRkNi4uZTIzZTA1NCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC0xOTgsNiAr
MTk4LDggQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoRnJhbWUqIGZyYW1lKQogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgbV9wYWdlID0gcGFnZTsKKwog
I2lmbmRlZiBOREVCVUcKICAgICBpc0luaXRpYWxpemluZ0Nvbm5lY3Rpb24gPSBZRVM7CiAjZW5k
aWYKQEAgLTM2MCw2ICszNjIsNDAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShT
Y2hlZHVsZVBhaXIqIHBhaXIpCiAjZW5kaWYKIH0KIAordm9pZCBSZXNvdXJjZUhhbmRsZTo6c2No
ZWR1bGVBbGwoKQoreworI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIGlmICghbV9wYWdl
KQorICAgICAgICByZXR1cm47CisgICAgTlNVUkxDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gZC0+
bV9jb25uZWN0aW9uLmdldCgpOworICAgIGlmIChTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVs
ZWRQYWlycyA9IG1fcGFnZS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkpIHsKKyAgICAgICAgU2No
ZWR1bGVQYWlySGFzaFNldDo6aXRlcmF0b3IgZW5kID0gc2NoZWR1bGVkUGFpcnMtPmVuZCgpOwor
ICAgICAgICBmb3IgKFNjaGVkdWxlUGFpckhhc2hTZXQ6Oml0ZXJhdG9yIGl0ID0gc2NoZWR1bGVk
UGFpcnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKE5TUnVu
TG9vcCAqcnVuTG9vcCA9ICgqaXQpLT5uc1J1bkxvb3AoKSkKKyAgICAgICAgICAgICAgICBbY29u
bmVjdGlvbiBzY2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopKCpp
dCktPm1vZGUoKV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBbY29ubmVjdGlvbiBzdGFydF07
CisjZW5kaWYKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZUFsbCgpCit7Cisj
aWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVy
bjsKKyAgICBOU1VSTENvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCk7CisgICAgaWYgKFNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFBhaXJzID0gbV9wYWdl
LT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSkgeworICAgICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0
OjppdGVyYXRvciBlbmQgPSBzY2hlZHVsZWRQYWlycy0+ZW5kKCk7CisgICAgICAgIGZvciAoU2No
ZWR1bGVQYWlySGFzaFNldDo6aXRlcmF0b3IgaXQgPSBzY2hlZHVsZWRQYWlycy0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoTlNSdW5Mb29wICpydW5Mb29wID0g
KCppdCktPm5zUnVuTG9vcCgpKQorICAgICAgICAgICAgICAgIFtjb25uZWN0aW9uIHVuc2NoZWR1
bGVGcm9tUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopKCppdCktPm1vZGUoKV07
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKwogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZSAqUmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKCkKIHsKICAgICBpZiAoIWQtPm1fZGVs
ZWdhdGUpIHsKLS0gCjEuNy4x
</data>
<flag name="review"
          id="40614"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>