[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