[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
jianli at chromium.org
jianli at chromium.org
Wed Dec 22 11:30:56 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 308cf9180667d7faff58e80913472b6acee6699d
Author: jianli at chromium.org <jianli at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Jul 27 21:42:31 2010 +0000
Enhance FileThreadTask to support return type.
https://bugs.webkit.org/show_bug.cgi?id=43078
Reviewed by David Levin.
This is needed to support synchronous calls of FileStream methods in
addition to asynchronous calls via FileThreadTask.
* html/FileThreadTask.h:
(WebCore::createFileThreadTask):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64162 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index e8b19f8..188b289 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,16 @@
+2010-07-27 Jian Li <jianli at chromium.org>
+
+ Reviewed by David Levin.
+
+ Enhance FileThreadTask to support return type.
+ https://bugs.webkit.org/show_bug.cgi?id=43078
+
+ This is needed to support synchronous calls of FileStream methods in
+ addition to asynchronous calls via FileThreadTask.
+
+ * html/FileThreadTask.h:
+ (WebCore::createFileThreadTask):
+
2010-07-27 James Robinson <jamesr at chromium.org>
Reviewed by Darin Fisher.
diff --git a/WebCore/html/FileThreadTask.h b/WebCore/html/FileThreadTask.h
index baf0888..de11798 100644
--- a/WebCore/html/FileThreadTask.h
+++ b/WebCore/html/FileThreadTask.h
@@ -57,10 +57,11 @@ template<typename T> struct FileThreadTaskTraits<PassOwnPtr<T> > {
typedef PassOwnPtr<T> ParamType;
};
+template<typename R>
class FileThreadTask0 : public FileThread::Task {
public:
- typedef void (FileStream::*Method)();
- typedef FileThreadTask0 FileThreadTask;
+ typedef R (FileStream::*Method)();
+ typedef FileThreadTask0<R> FileThreadTask;
static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method)
{
@@ -83,11 +84,11 @@ private:
Method m_method;
};
-template<typename P1, typename MP1>
+template<typename R, typename P1, typename MP1>
class FileThreadTask1 : public FileThread::Task {
public:
- typedef void (FileStream::*Method)(MP1);
- typedef FileThreadTask1<P1, MP1> FileThreadTask;
+ typedef R (FileStream::*Method)(MP1);
+ typedef FileThreadTask1<R, P1, MP1> FileThreadTask;
typedef typename FileThreadTaskTraits<P1>::ParamType Param1;
static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method, Param1 parameter1)
@@ -113,11 +114,11 @@ private:
P1 m_parameter1;
};
-template<typename P1, typename MP1, typename P2, typename MP2>
+template<typename R, typename P1, typename MP1, typename P2, typename MP2>
class FileThreadTask2 : public FileThread::Task {
public:
- typedef void (FileStream::*Method)(MP1, MP2);
- typedef FileThreadTask2<P1, MP1, P2, MP2> FileThreadTask;
+ typedef R (FileStream::*Method)(MP1, MP2);
+ typedef FileThreadTask2<R, P1, MP1, P2, MP2> FileThreadTask;
typedef typename FileThreadTaskTraits<P1>::ParamType Param1;
typedef typename FileThreadTaskTraits<P2>::ParamType Param2;
@@ -146,11 +147,11 @@ private:
P2 m_parameter2;
};
-template<typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
+template<typename R, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
class FileThreadTask3 : public FileThread::Task {
public:
- typedef void (FileStream::*Method)(MP1, MP2, MP3);
- typedef FileThreadTask3<P1, MP1, P2, MP2, P3, MP3> FileThreadTask;
+ typedef R (FileStream::*Method)(MP1, MP2, MP3);
+ typedef FileThreadTask3<R, P1, MP1, P2, MP2, P3, MP3> FileThreadTask;
typedef typename FileThreadTaskTraits<P1>::ParamType Param1;
typedef typename FileThreadTaskTraits<P2>::ParamType Param2;
typedef typename FileThreadTaskTraits<P3>::ParamType Param3;
@@ -182,54 +183,56 @@ private:
P3 m_parameter3;
};
+template<typename R>
PassOwnPtr<FileThread::Task> createFileThreadTask(
FileStream* const callee,
- void (FileStream::*method)());
+ R (FileStream::*method)());
+template<typename R>
PassOwnPtr<FileThread::Task> createFileThreadTask(
FileStream* const callee,
- void (FileStream::*method)())
+ R (FileStream::*method)())
{
- return FileThreadTask0::create(
+ return FileThreadTask0<R>::create(
callee,
method);
}
-template<typename P1, typename MP1>
+template<typename R, typename P1, typename MP1>
PassOwnPtr<FileThread::Task> createFileThreadTask(
FileStream* const callee,
- void (FileStream::*method)(MP1),
+ R (FileStream::*method)(MP1),
const P1& parameter1)
{
- return FileThreadTask1<typename CrossThreadCopier<P1>::Type, MP1>::create(
+ return FileThreadTask1<R, typename CrossThreadCopier<P1>::Type, MP1>::create(
callee,
method,
CrossThreadCopier<P1>::copy(parameter1));
}
-template<typename P1, typename MP1, typename P2, typename MP2>
+template<typename R, typename P1, typename MP1, typename P2, typename MP2>
PassOwnPtr<FileThread::Task> createFileThreadTask(
FileStream* const callee,
- void (FileStream::*method)(MP1, MP2),
+ R (FileStream::*method)(MP1, MP2),
const P1& parameter1,
const P2& parameter2)
{
- return FileThreadTask2<typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2>::create(
+ return FileThreadTask2<R, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2>::create(
callee,
method,
CrossThreadCopier<P1>::copy(parameter1),
CrossThreadCopier<P2>::copy(parameter2));
}
-template<typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
+template<typename R, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
PassOwnPtr<FileThread::Task> createFileThreadTask(
FileStream* const callee,
- void (FileStream::*method)(MP1, MP2, MP3),
+ R (FileStream::*method)(MP1, MP2, MP3),
const P1& parameter1,
const P2& parameter2,
const P3& parameter3)
{
- return FileThreadTask3<typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2, typename CrossThreadCopier<P3>::Type, MP3>::create(
+ return FileThreadTask3<R, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2, typename CrossThreadCopier<P3>::Type, MP3>::create(
callee,
method,
CrossThreadCopier<P1>::copy(parameter1),
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list