On Sep 14, 2010, at 9:58 PM, Jian Li wrote:

> Indeed when I implement BlobResourceHandle, I have taken the range request 
> support into consideration and got it work. The problem is that current media 
> element implementation does not route through ResourceHandle.
> 
> However, introducing a ResourceHandle subclass does not sound like an elegant 
> solution given that ResoucreHandle is currently treated as a wrapper class to 
> the underlying platform implementation. I agree it would be better if we 
> could find a way to avoid extra roundtrip to pop back to WebCore to do the 
> real handling. But I am not sure how this could be hooked up. The handling of 
> javascript: url is somewhat special. Probably we cannot do the similar thing 
> as it since the handling of blob: url needs to work closely with resource 
> loader and caching layer so that we can get it work in all scenarios.
> 
> Do you have any good suggestion on what is the right layer to hook into? Does 
> it make sense if I move the current implementation of BlobResourceHandle to 
> the underlying platform layer for WebKit mac so that I can fix the issue with 
> incorrect subclassing of ResourceHandle?

Subclassing ResourceHandle is somewhat inelegant. It's not a class designed to 
be subclassed, and subclassing it correctly probably requires making more 
methods virtual. In addition, since the blob: URL scheme implementation needs 
to know about other parts of WebCore outside the platform/ directory, it's a 
bit of a layering violation to have a ResouceHandle subclass dealing with it.

One (maybe slightly odd) thought that came to me is that perhaps blob: can be 
handled at the ResourceLoader level. That is the level where higher-level 
concepts are allowed to take over the load - for example, app cache hooks in at 
this layer, as does WebArchive loading, and also the ability to load a premade 
data chunk as a web page instead of loading an actual URL. So in that regard, 
it's a natural place for higher-level Web platform concepts to take over the 
load. This would be different from the way we handle any other URL scheme, but 
one way or another, blob: needs to be special, so maybe that's ok.

Regards,
Maciej


> 
> On Tue, Sep 14, 2010 at 6:21 PM, Maciej Stachowiak <m...@apple.com> wrote:
> 
> On Sep 14, 2010, at 6:02 PM, Adam Barth wrote:
> 
> > On Tue, Sep 14, 2010 at 5:56 PM, David Levin <le...@chromium.org> wrote:
> >> On Tue, Sep 14, 2010 at 5:42 PM, Adam Barth <aba...@webkit.org> wrote:
> >>> What do you think of the idea of having a re-useable BlobCore module
> >>> that all the ports can share?
> >>
> >> I don't think this is a good idea. This "re-usable module" would only be
> >> used by the Safari WebKit port. As I understand it, Chromium wouldn't be
> >> able to re-use it due to not re-using WebKit types in general. With only 
> >> one
> >> port using it, the module seems like it would not be able to have a good
> >> design.
> >>
> >> So if there is a change, it seems better to just write it for the Safari
> >> WebKit port and as other ports want to implement it, if they find
> >> commonality, it would be in their best interest to refractor the existing
> >> code for better re-use.
> >
> > Would Chromium be able to re-use the code if it were part of WebCore?
> > I guess I don't understand what's different about those two cases.
> >
> > Another question, does this design allow blob URLs to be used by the
> > <video> element?  My understanding is that <video> bypasses
> > ResourceHandle because ResourceHandle isn't smart enough to handle
> > range requests (or something like that).
> 
> At least on Mac, the media elements miss out on a number of networking 
> features due to not going through the CachedResource layer and those below. 
> For example they don't work with the app cache. It's something we'd like to 
> fix eventually.
> 
> Note: ResourceHandle would probably work and can handle range requests fine, 
> but the media APIs on Mac make it tricky to fully replace the loading that 
> the media framework likes to do for itself. If we had that, we could hook up 
> ResourceHandle pretty easily. The cache layer would need to be enhanced to 
> handle ranges though.
> 
> Regards,
> Maciej
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev@lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> 

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to