[webkit-reviews] review requested: [Bug 22720] Make XMLHttpRequest work in Workers : [Attachment 27070] Part 5a: Add the GenericWorkTask infrastructure needed for WorkerThreadableLoader.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Jan 27 02:29:07 PST 2009

David Levin <levin at chromium.org> has asked  for review:
Bug 22720: Make XMLHttpRequest work in Workers

Attachment 27070: Part 5a: Add the GenericWorkTask infrastructure needed for

------- Additional Comments from David Levin <levin at chromium.org>
Addressed these comments from part 5:

> > +		 return !m_messagingProxy ||
> For tasks that do not need MessageProxy to operate, it's better not to have
it in the structure at all.

> > +	 template<typename T> struct CrossThreadAdapter { static T& adapt(T&
parameter) { return parameter; } };
> > +	 template<> struct CrossThreadAdapter<String> { static String
parameter) { return parameter.copy(); } };

> Can this be made to fail on unknown types? I think you'd need specializations

> for all integral types that can be copied directly, but there aren't too many

> in C++.

I wish I had is_enum.  I couldn't figure out any easy way to do it -- (fwiw,
boost has one so it is possible).  Without is_enum, I had to include files that
had enum's and create specializations for each enum that are used.

In order to make the copying just work, I had to be able to modify the type
being returned from adapt (due to ResourceRequest becoming

Along these same lines, different type needed to be treated differently in the
static create constructor.  Ideally they could all be const T& but that doesn't
work for auto_ptr which needs to avoid const, but T& doesn't work for returned
types (from adapt), so auto_ptr<> needs to be passed in as a auto_ptr<>.

Similar things happened for other types with the goal being to avoid doing an
expensive/complex copy during this process.

More information about the webkit-reviews mailing list