[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

jorlow at chromium.org jorlow at chromium.org
Wed Dec 22 15:30:55 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 372af9c76898a3b899fa1355e9ba01e1ff3f165e
Author: jorlow at chromium.org <jorlow at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Nov 5 14:01:34 2010 +0000

    2010-10-27  Jeremy Orlow  <jorlow at chromium.org>
    
            Reviewed by Steve Block.
    
            Clean up IDBTransactionBackend/Coordinator
            https://bugs.webkit.org/show_bug.cgi?id=48425
    
            Get rid of obsolete id and thus we don't need the factory method
            on IDBTransactionCoordinator that creates IDBTransactionBackends.
    
            Add an assert to IDBTransactionBackend to make sure we're not in
            the coordinator and then remove the coordinators ref counting link
            to the transaction.
    
            Have the transaction backend zero out refs to the database when its
            done using it.
    
            Existing tests provide coverage for this refactoring.
    
            * storage/IDBDatabaseBackendImpl.cpp:
            (WebCore::IDBDatabaseBackendImpl::setVersion):
            (WebCore::IDBDatabaseBackendImpl::transaction):
            * storage/IDBTransactionBackendImpl.cpp:
            (WebCore::IDBTransactionBackendImpl::create):
            (WebCore::IDBTransactionBackendImpl::IDBTransactionBackendImpl):
            (WebCore::IDBTransactionBackendImpl::~IDBTransactionBackendImpl):
            (WebCore::IDBTransactionBackendImpl::abort):
            (WebCore::IDBTransactionBackendImpl::commit):
            * storage/IDBTransactionBackendImpl.h:
            * storage/IDBTransactionBackendInterface.h:
            * storage/IDBTransactionCoordinator.cpp:
            (WebCore::IDBTransactionCoordinator::didStartTransaction):
            (WebCore::IDBTransactionCoordinator::didFinishTransaction):
            (WebCore::IDBTransactionCoordinator::isActive):
            (WebCore::IDBTransactionCoordinator::processStartedTransactions):
            * storage/IDBTransactionCoordinator.h:
    2010-10-27  Jeremy Orlow  <jorlow at chromium.org>
    
            Reviewed by Steve Block.
    
            Clean up IDBTransactionBackend/Coordinator
            https://bugs.webkit.org/show_bug.cgi?id=48425
    
            Remove obsolete ::id() method.
    
            * public/WebIDBTransaction.h:
            * src/IDBTransactionBackendProxy.cpp:
            * src/IDBTransactionBackendProxy.h:
            * src/WebIDBTransactionImpl.cpp:
            * src/WebIDBTransactionImpl.h:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71412 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index a41da6f..def4fa9 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -2,6 +2,43 @@
 
         Reviewed by Steve Block.
 
+        Clean up IDBTransactionBackend/Coordinator
+        https://bugs.webkit.org/show_bug.cgi?id=48425
+
+        Get rid of obsolete id and thus we don't need the factory method
+        on IDBTransactionCoordinator that creates IDBTransactionBackends.
+
+        Add an assert to IDBTransactionBackend to make sure we're not in
+        the coordinator and then remove the coordinators ref counting link
+        to the transaction.
+
+        Have the transaction backend zero out refs to the database when its
+        done using it.
+
+        Existing tests provide coverage for this refactoring.
+
+        * storage/IDBDatabaseBackendImpl.cpp:
+        (WebCore::IDBDatabaseBackendImpl::setVersion):
+        (WebCore::IDBDatabaseBackendImpl::transaction):
+        * storage/IDBTransactionBackendImpl.cpp:
+        (WebCore::IDBTransactionBackendImpl::create):
+        (WebCore::IDBTransactionBackendImpl::IDBTransactionBackendImpl):
+        (WebCore::IDBTransactionBackendImpl::~IDBTransactionBackendImpl):
+        (WebCore::IDBTransactionBackendImpl::abort):
+        (WebCore::IDBTransactionBackendImpl::commit):
+        * storage/IDBTransactionBackendImpl.h:
+        * storage/IDBTransactionBackendInterface.h:
+        * storage/IDBTransactionCoordinator.cpp:
+        (WebCore::IDBTransactionCoordinator::didStartTransaction):
+        (WebCore::IDBTransactionCoordinator::didFinishTransaction):
+        (WebCore::IDBTransactionCoordinator::isActive):
+        (WebCore::IDBTransactionCoordinator::processStartedTransactions):
+        * storage/IDBTransactionCoordinator.h:
+
+2010-10-27  Jeremy Orlow  <jorlow at chromium.org>
+
+        Reviewed by Steve Block.
+
         IDBFactoryBackend's reference to IDBDatabaseBackend should be weak
         https://bugs.webkit.org/show_bug.cgi?id=48416
 
diff --git a/WebCore/storage/IDBDatabaseBackendImpl.cpp b/WebCore/storage/IDBDatabaseBackendImpl.cpp
index 156a21d..004dc7b 100644
--- a/WebCore/storage/IDBDatabaseBackendImpl.cpp
+++ b/WebCore/storage/IDBDatabaseBackendImpl.cpp
@@ -34,7 +34,7 @@
 #include "IDBFactoryBackendImpl.h"
 #include "IDBObjectStoreBackendImpl.h"
 #include "IDBSQLiteDatabase.h"
-#include "IDBTransactionBackendInterface.h"
+#include "IDBTransactionBackendImpl.h"
 #include "IDBTransactionCoordinator.h"
 #include "SQLiteStatement.h"
 #include "SQLiteTransaction.h"
@@ -224,7 +224,7 @@ void IDBDatabaseBackendImpl::setVersion(const String& version, PassRefPtr<IDBCal
     RefPtr<IDBDatabaseBackendImpl> database = this;
     RefPtr<IDBCallbacks> callbacks = prpCallbacks;
     RefPtr<DOMStringList> objectStores = DOMStringList::create();
-    RefPtr<IDBTransactionBackendInterface> transaction = m_transactionCoordinator->createTransaction(objectStores.get(), IDBTransaction::VERSION_CHANGE, 0, this);
+    RefPtr<IDBTransactionBackendInterface> transaction = IDBTransactionBackendImpl::create(objectStores.get(), IDBTransaction::VERSION_CHANGE, 0, this);
     if (!transaction->scheduleTask(createCallbackTask(&IDBDatabaseBackendImpl::setVersionInternal, database, version, callbacks, transaction),
                                    createCallbackTask(&IDBDatabaseBackendImpl::resetVersion, database, m_version))) {
         ec = IDBDatabaseException::NOT_ALLOWED_ERR;
@@ -247,7 +247,7 @@ void IDBDatabaseBackendImpl::setVersionInternal(ScriptExecutionContext*, PassRef
 PassRefPtr<IDBTransactionBackendInterface> IDBDatabaseBackendImpl::transaction(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, ExceptionCode&)
 {
     // FIXME: Return not allowed err if close has been called.
-    return m_transactionCoordinator->createTransaction(objectStores, mode, timeout, this);
+    return IDBTransactionBackendImpl::create(objectStores, mode, timeout, this);
 }
 
 void IDBDatabaseBackendImpl::close()
diff --git a/WebCore/storage/IDBTransactionBackendImpl.cpp b/WebCore/storage/IDBTransactionBackendImpl.cpp
index 2b1f732..e8d864d 100644
--- a/WebCore/storage/IDBTransactionBackendImpl.cpp
+++ b/WebCore/storage/IDBTransactionBackendImpl.cpp
@@ -34,16 +34,15 @@
 
 namespace WebCore {
 
-PassRefPtr<IDBTransactionBackendImpl> IDBTransactionBackendImpl::create(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, int id, IDBDatabaseBackendImpl* database)
+PassRefPtr<IDBTransactionBackendImpl> IDBTransactionBackendImpl::create(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, IDBDatabaseBackendImpl* database)
 {
-    return adoptRef(new IDBTransactionBackendImpl(objectStores, mode, timeout, id, database));
+    return adoptRef(new IDBTransactionBackendImpl(objectStores, mode, timeout, database));
 }
 
-IDBTransactionBackendImpl::IDBTransactionBackendImpl(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, int id, IDBDatabaseBackendImpl* database)
+IDBTransactionBackendImpl::IDBTransactionBackendImpl(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, IDBDatabaseBackendImpl* database)
     : m_objectStoreNames(objectStores)
     , m_mode(mode)
     , m_timeout(timeout) // FIXME: Implement timeout.
-    , m_id(id)
     , m_state(Unused)
     , m_database(database)
     , m_transaction(new SQLiteTransaction(database->sqliteDatabase()))
@@ -51,6 +50,13 @@ IDBTransactionBackendImpl::IDBTransactionBackendImpl(DOMStringList* objectStores
     , m_taskEventTimer(this, &IDBTransactionBackendImpl::taskEventTimerFired)
     , m_pendingEvents(0)
 {
+    m_database->transactionCoordinator()->didCreateTransaction(this);
+}
+
+IDBTransactionBackendImpl::~IDBTransactionBackendImpl()
+{
+    // It shouldn't be possible for this object to get deleted until it's either complete or aborted.
+    ASSERT(m_state == Finished);
 }
 
 PassRefPtr<IDBObjectStoreBackendInterface> IDBTransactionBackendImpl::objectStore(const String& name)
@@ -94,6 +100,8 @@ void IDBTransactionBackendImpl::abort()
 
     m_callbacks->onAbort();
     m_database->transactionCoordinator()->didFinishTransaction(this);
+    ASSERT(!m_database->transactionCoordinator()->isActive(this));
+    m_database = 0;
 }
 
 void IDBTransactionBackendImpl::didCompleteTaskEvents()
@@ -133,6 +141,7 @@ void IDBTransactionBackendImpl::commit()
     m_transaction->commit();
     m_callbacks->onComplete();
     m_database->transactionCoordinator()->didFinishTransaction(this);
+    m_database = 0;
 }
 
 void IDBTransactionBackendImpl::taskTimerFired(Timer<IDBTransactionBackendImpl>*)
diff --git a/WebCore/storage/IDBTransactionBackendImpl.h b/WebCore/storage/IDBTransactionBackendImpl.h
index 5f7409b..88542f4 100644
--- a/WebCore/storage/IDBTransactionBackendImpl.h
+++ b/WebCore/storage/IDBTransactionBackendImpl.h
@@ -42,21 +42,20 @@ class IDBDatabaseBackendImpl;
 
 class IDBTransactionBackendImpl : public IDBTransactionBackendInterface {
 public:
-    static PassRefPtr<IDBTransactionBackendImpl> create(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, int id, IDBDatabaseBackendImpl*);
-    virtual ~IDBTransactionBackendImpl() { abort(); }
+    static PassRefPtr<IDBTransactionBackendImpl> create(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, IDBDatabaseBackendImpl*);
+    virtual ~IDBTransactionBackendImpl();
 
     virtual PassRefPtr<IDBObjectStoreBackendInterface> objectStore(const String& name);
     virtual unsigned short mode() const { return m_mode; }
     virtual bool scheduleTask(PassOwnPtr<ScriptExecutionContext::Task> task, PassOwnPtr<ScriptExecutionContext::Task> abortTask);
     virtual void didCompleteTaskEvents();
     virtual void abort();
-    virtual int id() const { return m_id; }
     virtual void setCallbacks(IDBTransactionCallbacks* callbacks) { m_callbacks = callbacks; }
 
     void run();
 
 private:
-    IDBTransactionBackendImpl(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, int id, IDBDatabaseBackendImpl*);
+    IDBTransactionBackendImpl(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, IDBDatabaseBackendImpl*);
 
     enum State {
         Unused, // Created, but no tasks yet.
@@ -74,7 +73,6 @@ private:
     RefPtr<DOMStringList> m_objectStoreNames;
     unsigned short m_mode;
     unsigned long m_timeout;
-    int m_id;
 
     State m_state;
     RefPtr<IDBTransactionCallbacks> m_callbacks;
diff --git a/WebCore/storage/IDBTransactionBackendInterface.h b/WebCore/storage/IDBTransactionBackendInterface.h
index 65b097d..80135f0 100644
--- a/WebCore/storage/IDBTransactionBackendInterface.h
+++ b/WebCore/storage/IDBTransactionBackendInterface.h
@@ -53,7 +53,6 @@ public:
     virtual bool scheduleTask(PassOwnPtr<ScriptExecutionContext::Task> task, PassOwnPtr<ScriptExecutionContext::Task> abortTask = 0) = 0;
     virtual void didCompleteTaskEvents() = 0;
     virtual void abort() = 0;
-    virtual int id() const = 0;
     virtual void setCallbacks(IDBTransactionCallbacks*) = 0;
 };
 
diff --git a/WebCore/storage/IDBTransactionCoordinator.cpp b/WebCore/storage/IDBTransactionCoordinator.cpp
index 0ece309..f867f42 100644
--- a/WebCore/storage/IDBTransactionCoordinator.cpp
+++ b/WebCore/storage/IDBTransactionCoordinator.cpp
@@ -36,8 +36,12 @@
 
 namespace WebCore {
 
+PassRefPtr<IDBTransactionCoordinator> IDBTransactionCoordinator::create()
+{
+    return adoptRef(new IDBTransactionCoordinator());
+}
+
 IDBTransactionCoordinator::IDBTransactionCoordinator() 
-    : m_nextID(0)
 {
 }
 
@@ -45,16 +49,15 @@ IDBTransactionCoordinator::~IDBTransactionCoordinator()
 {
 }
 
-PassRefPtr<IDBTransactionBackendInterface> IDBTransactionCoordinator::createTransaction(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, IDBDatabaseBackendImpl* database)
+void IDBTransactionCoordinator::didCreateTransaction(IDBTransactionBackendImpl* transaction)
 {
-    RefPtr<IDBTransactionBackendImpl> transaction = IDBTransactionBackendImpl::create(objectStores, mode, timeout, ++m_nextID, database);
-    m_transactions.add(m_nextID, transaction);
-    return transaction.release();
+    ASSERT(!m_transactions.contains(transaction));
+    m_transactions.add(transaction, transaction);
 }
 
 void IDBTransactionCoordinator::didStartTransaction(IDBTransactionBackendImpl* transaction)
 {
-    ASSERT(m_transactions.contains(transaction->id()));
+    ASSERT(m_transactions.contains(transaction));
 
     m_startedTransactions.add(transaction);
     processStartedTransactions();
@@ -62,7 +65,7 @@ void IDBTransactionCoordinator::didStartTransaction(IDBTransactionBackendImpl* t
 
 void IDBTransactionCoordinator::didFinishTransaction(IDBTransactionBackendImpl* transaction)
 {
-    ASSERT(m_transactions.contains(transaction->id()));
+    ASSERT(m_transactions.contains(transaction));
 
     if (m_startedTransactions.contains(transaction)) {
         ASSERT(!m_runningTransactions.contains(transaction));
@@ -70,16 +73,34 @@ void IDBTransactionCoordinator::didFinishTransaction(IDBTransactionBackendImpl*
     } else if (m_runningTransactions.contains(transaction))
         m_runningTransactions.remove(transaction);
 
-    m_transactions.remove(transaction->id());
+    m_transactions.remove(transaction);
 
     processStartedTransactions();
 }
 
+#ifndef NDEBUG
+// Verifies internal consistiency while returning whether anything is found.
+bool IDBTransactionCoordinator::isActive(IDBTransactionBackendImpl* transaction)
+{
+    bool found = false;
+    if (m_startedTransactions.contains(transaction))
+        found = true;
+    if (m_runningTransactions.contains(transaction)) {
+        ASSERT(!found);
+        found = true;
+    }
+    ASSERT(found == m_transactions.contains(transaction));
+    return found;
+}
+#endif
+
 void IDBTransactionCoordinator::processStartedTransactions()
 {
-    // FIXME: This should allocate a thread to the next transaction that's
-    // ready to run. For now we only have a single running transaction.
-    if (m_startedTransactions.isEmpty() || !m_runningTransactions.isEmpty())
+    // FIXME: For now, we only allow one transaction to run at a time.
+    if (!m_runningTransactions.isEmpty())
+        return;
+
+    if (m_startedTransactions.isEmpty())
         return;
 
     IDBTransactionBackendImpl* transaction = *m_startedTransactions.begin();
diff --git a/WebCore/storage/IDBTransactionCoordinator.h b/WebCore/storage/IDBTransactionCoordinator.h
index fddb003..ef99e73 100644
--- a/WebCore/storage/IDBTransactionCoordinator.h
+++ b/WebCore/storage/IDBTransactionCoordinator.h
@@ -39,39 +39,31 @@ class IDBTransactionBackendImpl;
 class IDBTransactionCallbacks;
 class IDBDatabaseBackendImpl;
 
-// This class manages transactions as follows. Requests for new transactions are
-// always satisfied and the new transaction is placed in a queue.
-// Transactions are not actually started until the first operation is issued.
-// Each transaction executes in a separate thread and is committed automatically
-// when there are no more operations issued in its context.
-// When starting, a transaction will attempt to lock all the object stores in its
-// scope. If this does not happen within a given timeout, an exception is raised.
-// The Coordinator maintains a pool of threads. If there are no threads available
-// the next transaction in the queue will have to wait until a thread becomes
-// available.
 // Transactions are executed in the order the were created.
 class IDBTransactionCoordinator : public RefCounted<IDBTransactionCoordinator> {
 public:
-    static PassRefPtr<IDBTransactionCoordinator> create() { return adoptRef(new IDBTransactionCoordinator()); }
+    static PassRefPtr<IDBTransactionCoordinator> create();
     virtual ~IDBTransactionCoordinator();
 
-    PassRefPtr<IDBTransactionBackendInterface> createTransaction(DOMStringList* objectStores, unsigned short mode, unsigned long timeout, IDBDatabaseBackendImpl*);
-
     // Called by transactions as they start and finish.
+    void didCreateTransaction(IDBTransactionBackendImpl*);
     void didStartTransaction(IDBTransactionBackendImpl*);
     void didFinishTransaction(IDBTransactionBackendImpl*);
 
+#ifndef NDEBUG
+    bool isActive(IDBTransactionBackendImpl*);
+#endif
+
 private:
     IDBTransactionCoordinator();
 
     void processStartedTransactions();
 
-    // This map owns all transactions known to the coordinator.
-    HashMap<int, RefPtr<IDBTransactionBackendImpl> > m_transactions;
+    // This is just an efficient way to keep references to all transactions.
+    HashMap<IDBTransactionBackendImpl*, RefPtr<IDBTransactionBackendImpl> > m_transactions;
     // Transactions in different states are grouped below.
     ListHashSet<IDBTransactionBackendImpl*> m_startedTransactions;
     HashSet<IDBTransactionBackendImpl*> m_runningTransactions;
-    int m_nextID;
 };
 
 } // namespace WebCore
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 0e0ead7..433dda8 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,18 @@
+2010-10-27  Jeremy Orlow  <jorlow at chromium.org>
+
+        Reviewed by Steve Block.
+
+        Clean up IDBTransactionBackend/Coordinator
+        https://bugs.webkit.org/show_bug.cgi?id=48425
+
+        Remove obsolete ::id() method.
+
+        * public/WebIDBTransaction.h:
+        * src/IDBTransactionBackendProxy.cpp:
+        * src/IDBTransactionBackendProxy.h:
+        * src/WebIDBTransactionImpl.cpp:
+        * src/WebIDBTransactionImpl.h:
+
 2010-11-04  usaini  <usaini08 at gmail.com>
 
         Reviewed by Antonio Gomes.
diff --git a/WebKit/chromium/public/WebIDBTransaction.h b/WebKit/chromium/public/WebIDBTransaction.h
index 385dd1e..cff7c67 100644
--- a/WebKit/chromium/public/WebIDBTransaction.h
+++ b/WebKit/chromium/public/WebIDBTransaction.h
@@ -52,11 +52,6 @@ public:
     }
     virtual void abort() { WEBKIT_ASSERT_NOT_REACHED(); }
     virtual void didCompleteTaskEvents() { WEBKIT_ASSERT_NOT_REACHED(); }
-    virtual int id() const
-    {
-        WEBKIT_ASSERT_NOT_REACHED();
-        return 0;
-    }
     virtual void setCallbacks(WebIDBTransactionCallbacks*) { WEBKIT_ASSERT_NOT_REACHED(); }
 
     // FIXME: this is never called from WebCore. Find a cleaner solution.
diff --git a/WebKit/chromium/src/IDBTransactionBackendProxy.cpp b/WebKit/chromium/src/IDBTransactionBackendProxy.cpp
index 4b19ee4..7a88b13 100644
--- a/WebKit/chromium/src/IDBTransactionBackendProxy.cpp
+++ b/WebKit/chromium/src/IDBTransactionBackendProxy.cpp
@@ -84,11 +84,6 @@ void IDBTransactionBackendProxy::didCompleteTaskEvents()
     m_webIDBTransaction->didCompleteTaskEvents();
 }
 
-int IDBTransactionBackendProxy::id() const
-{
-    return m_webIDBTransaction->id();
-}
-
 void IDBTransactionBackendProxy::setCallbacks(IDBTransactionCallbacks* callbacks)
 {
     m_webIDBTransaction->setCallbacks(new WebIDBTransactionCallbacksImpl(callbacks));
diff --git a/WebKit/chromium/src/IDBTransactionBackendProxy.h b/WebKit/chromium/src/IDBTransactionBackendProxy.h
index 0c56f19..0bf84da 100644
--- a/WebKit/chromium/src/IDBTransactionBackendProxy.h
+++ b/WebKit/chromium/src/IDBTransactionBackendProxy.h
@@ -47,7 +47,6 @@ public:
     virtual void abort();
     virtual bool scheduleTask(PassOwnPtr<ScriptExecutionContext::Task>, PassOwnPtr<ScriptExecutionContext::Task>);
     virtual void didCompleteTaskEvents();
-    virtual int id() const;
     virtual void setCallbacks(IDBTransactionCallbacks*);
 
     WebKit::WebIDBTransaction* getWebIDBTransaction() const { return m_webIDBTransaction.get(); }
diff --git a/WebKit/chromium/src/WebIDBTransactionImpl.cpp b/WebKit/chromium/src/WebIDBTransactionImpl.cpp
index f5d8748..4307cb5 100644
--- a/WebKit/chromium/src/WebIDBTransactionImpl.cpp
+++ b/WebKit/chromium/src/WebIDBTransactionImpl.cpp
@@ -69,11 +69,6 @@ void WebIDBTransactionImpl::didCompleteTaskEvents()
     m_backend->didCompleteTaskEvents();
 }
 
-int WebIDBTransactionImpl::id() const
-{
-    return m_backend->id();
-}
-
 void WebIDBTransactionImpl::setCallbacks(WebIDBTransactionCallbacks* callbacks)
 {
     RefPtr<IDBTransactionCallbacks> idbCallbacks = IDBTransactionCallbacksProxy::create(callbacks);
diff --git a/WebKit/chromium/src/WebIDBTransactionImpl.h b/WebKit/chromium/src/WebIDBTransactionImpl.h
index 24bab91..b26b3ac 100644
--- a/WebKit/chromium/src/WebIDBTransactionImpl.h
+++ b/WebKit/chromium/src/WebIDBTransactionImpl.h
@@ -45,7 +45,6 @@ public:
     virtual WebIDBObjectStore* objectStore(const WebString& name);
     virtual void abort();
     virtual void didCompleteTaskEvents();
-    virtual int id() const;
     virtual void setCallbacks(WebIDBTransactionCallbacks*);
 
     virtual WebCore::IDBTransactionBackendInterface* getIDBTransactionBackendInterface() const;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list