Changeset 196779 in webkit


Ignore:
Timestamp:
Feb 18, 2016 2:42:54 PM (8 years ago)
Author:
beidson@apple.com
Message:

Modern IDB: Implement server->client operations in WK2.
https://bugs.webkit.org/show_bug.cgi?id=154411

Reviewed by Alex Christensen.

No change in behavior yet; Just laying the groundwork.
Source/WebCore:

  • Modules/indexeddb/client/IDBConnectionToServer.h:
  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/shared/IDBTransactionInfo.h:

(WebCore::IDBTransactionInfo::encode):
(WebCore::IDBTransactionInfo::decode):

Source/WebKit2:

  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:

(WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
(WebKit::WebIDBConnectionToClient::~WebIDBConnectionToClient):

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::didDeleteDatabase):
(WebKit::WebIDBConnectionToServer::didOpenDatabase):
(WebKit::WebIDBConnectionToServer::didAbortTransaction):
(WebKit::WebIDBConnectionToServer::didCommitTransaction):
(WebKit::WebIDBConnectionToServer::didCreateObjectStore):
(WebKit::WebIDBConnectionToServer::didDeleteObjectStore):
(WebKit::WebIDBConnectionToServer::didClearObjectStore):
(WebKit::WebIDBConnectionToServer::didCreateIndex):
(WebKit::WebIDBConnectionToServer::didDeleteIndex):
(WebKit::WebIDBConnectionToServer::didPutOrAdd):
(WebKit::WebIDBConnectionToServer::didGetRecord):
(WebKit::WebIDBConnectionToServer::didGetCount):
(WebKit::WebIDBConnectionToServer::didDeleteRecord):
(WebKit::WebIDBConnectionToServer::didOpenCursor):
(WebKit::WebIDBConnectionToServer::didIterateCursor):
(WebKit::WebIDBConnectionToServer::fireVersionChangeEvent):
(WebKit::WebIDBConnectionToServer::didStartTransaction):
(WebKit::WebIDBConnectionToServer::notifyOpenDBRequestBlocked):

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
  • WebProcess/Databases/WebToDatabaseProcessConnection.cpp:

(WebKit::WebToDatabaseProcessConnection::didReceiveMessage):

Location:
trunk/Source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r196773 r196779  
     12016-02-18  Brady Eidson  <beidson@apple.com>
     2
     3        Modern IDB: Implement server->client operations in WK2.
     4        https://bugs.webkit.org/show_bug.cgi?id=154411
     5
     6        Reviewed by Alex Christensen.
     7
     8        No change in behavior yet; Just laying the groundwork.
     9   
     10        * Modules/indexeddb/client/IDBConnectionToServer.h:
     11        * Modules/indexeddb/server/IDBServer.h:
     12        * Modules/indexeddb/shared/IDBTransactionInfo.h:
     13        (WebCore::IDBTransactionInfo::encode):
     14        (WebCore::IDBTransactionInfo::decode):
     15
    1162016-02-18  Csaba Osztrogonác  <ossy@webkit.org>
    217
  • trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h

    r196651 r196779  
    5858
    5959    void deleteDatabase(IDBOpenDBRequest&);
    60     void didDeleteDatabase(const IDBResultData&);
     60    WEBCORE_EXPORT void didDeleteDatabase(const IDBResultData&);
    6161
    6262    void openDatabase(IDBOpenDBRequest&);
    63     void didOpenDatabase(const IDBResultData&);
     63    WEBCORE_EXPORT void didOpenDatabase(const IDBResultData&);
    6464
    6565    void createObjectStore(TransactionOperation&, const IDBObjectStoreInfo&);
    66     void didCreateObjectStore(const IDBResultData&);
     66    WEBCORE_EXPORT void didCreateObjectStore(const IDBResultData&);
    6767
    6868    void deleteObjectStore(TransactionOperation&, const String& objectStoreName);
    69     void didDeleteObjectStore(const IDBResultData&);
     69    WEBCORE_EXPORT void didDeleteObjectStore(const IDBResultData&);
    7070
    7171    void clearObjectStore(TransactionOperation&, uint64_t objectStoreIdentifier);
    72     void didClearObjectStore(const IDBResultData&);
     72    WEBCORE_EXPORT void didClearObjectStore(const IDBResultData&);
    7373
    7474    void createIndex(TransactionOperation&, const IDBIndexInfo&);
    75     void didCreateIndex(const IDBResultData&);
     75    WEBCORE_EXPORT void didCreateIndex(const IDBResultData&);
    7676
    7777    void deleteIndex(TransactionOperation&, uint64_t objectStoreIdentifier, const String& indexName);
    78     void didDeleteIndex(const IDBResultData&);
     78    WEBCORE_EXPORT void didDeleteIndex(const IDBResultData&);
    7979
    8080    void putOrAdd(TransactionOperation&, RefPtr<IDBKey>&, RefPtr<SerializedScriptValue>&, const IndexedDB::ObjectStoreOverwriteMode);
    81     void didPutOrAdd(const IDBResultData&);
     81    WEBCORE_EXPORT void didPutOrAdd(const IDBResultData&);
    8282
    8383    void getRecord(TransactionOperation&, const IDBKeyRangeData&);
    84     void didGetRecord(const IDBResultData&);
     84    WEBCORE_EXPORT void didGetRecord(const IDBResultData&);
    8585
    8686    void getCount(TransactionOperation&, const IDBKeyRangeData&);
    87     void didGetCount(const IDBResultData&);
     87    WEBCORE_EXPORT void didGetCount(const IDBResultData&);
    8888
    8989    void deleteRecord(TransactionOperation&, const IDBKeyRangeData&);
    90     void didDeleteRecord(const IDBResultData&);
     90    WEBCORE_EXPORT void didDeleteRecord(const IDBResultData&);
    9191
    9292    void openCursor(TransactionOperation&, const IDBCursorInfo&);
    93     void didOpenCursor(const IDBResultData&);
     93    WEBCORE_EXPORT void didOpenCursor(const IDBResultData&);
    9494
    9595    void iterateCursor(TransactionOperation&, const IDBKeyData&, unsigned long count);
    96     void didIterateCursor(const IDBResultData&);
     96    WEBCORE_EXPORT void didIterateCursor(const IDBResultData&);
    9797
    9898    void commitTransaction(IDBTransaction&);
    99     void didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&);
     99    WEBCORE_EXPORT void didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&);
    100100
    101101    void didFinishHandlingVersionChangeTransaction(IDBTransaction&);
    102102
    103103    void abortTransaction(IDBTransaction&);
    104     void didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&);
     104    WEBCORE_EXPORT void didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&);
    105105
    106     void fireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion);
     106    WEBCORE_EXPORT void fireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion);
    107107    void didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier);
    108108
    109     void didStartTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&);
    110     void notifyOpenDBRequestBlocked(const IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion);
     109    WEBCORE_EXPORT void didStartTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&);
     110    WEBCORE_EXPORT void notifyOpenDBRequestBlocked(const IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion);
    111111
    112112    void establishTransaction(IDBTransaction&);
  • trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.h

    r196771 r196779  
    5454    WEBCORE_EXPORT static Ref<IDBServer> create(const String& databaseDirectoryPath);
    5555
    56     void registerConnection(IDBConnectionToClient&);
    57     void unregisterConnection(IDBConnectionToClient&);
     56    WEBCORE_EXPORT void registerConnection(IDBConnectionToClient&);
     57    WEBCORE_EXPORT void unregisterConnection(IDBConnectionToClient&);
    5858
    5959    // Operations requested by the client.
  • trunk/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h

    r196715 r196779  
    8686    encoder << m_identifier << m_newVersion << m_objectStores;
    8787    encoder.encodeEnum(m_mode);
     88
     89    encoder << !!m_originalDatabaseInfo;
     90    if (m_originalDatabaseInfo)
     91        encoder << *m_originalDatabaseInfo;
    8892}
    8993
     
    103107        return false;
    104108
     109    bool hasObject;
     110    if (!decoder.decode(hasObject))
     111        return false;
     112
     113    if (hasObject) {
     114        std::unique_ptr<IDBDatabaseInfo> object = std::make_unique<IDBDatabaseInfo>();
     115        if (!decoder.decode(*object))
     116            return false;
     117        info.m_originalDatabaseInfo = WTFMove(object);
     118    }
     119
    105120    return true;
    106121}
  • trunk/Source/WebKit2/ChangeLog

    r196774 r196779  
     12016-02-18  Brady Eidson  <beidson@apple.com>
     2
     3        Modern IDB: Implement server->client operations in WK2.
     4        https://bugs.webkit.org/show_bug.cgi?id=154411
     5
     6        Reviewed by Alex Christensen.
     7
     8        No change in behavior yet; Just laying the groundwork.
     9
     10        * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:
     11        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
     12        (WebKit::WebIDBConnectionToClient::~WebIDBConnectionToClient):
     13
     14        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
     15        (WebKit::WebIDBConnectionToServer::didDeleteDatabase):
     16        (WebKit::WebIDBConnectionToServer::didOpenDatabase):
     17        (WebKit::WebIDBConnectionToServer::didAbortTransaction):
     18        (WebKit::WebIDBConnectionToServer::didCommitTransaction):
     19        (WebKit::WebIDBConnectionToServer::didCreateObjectStore):
     20        (WebKit::WebIDBConnectionToServer::didDeleteObjectStore):
     21        (WebKit::WebIDBConnectionToServer::didClearObjectStore):
     22        (WebKit::WebIDBConnectionToServer::didCreateIndex):
     23        (WebKit::WebIDBConnectionToServer::didDeleteIndex):
     24        (WebKit::WebIDBConnectionToServer::didPutOrAdd):
     25        (WebKit::WebIDBConnectionToServer::didGetRecord):
     26        (WebKit::WebIDBConnectionToServer::didGetCount):
     27        (WebKit::WebIDBConnectionToServer::didDeleteRecord):
     28        (WebKit::WebIDBConnectionToServer::didOpenCursor):
     29        (WebKit::WebIDBConnectionToServer::didIterateCursor):
     30        (WebKit::WebIDBConnectionToServer::fireVersionChangeEvent):
     31        (WebKit::WebIDBConnectionToServer::didStartTransaction):
     32        (WebKit::WebIDBConnectionToServer::notifyOpenDBRequestBlocked):
     33        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
     34       
     35        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
     36        (WebKit::WebToDatabaseProcessConnection::didReceiveMessage):
     37
    1382016-02-18  Brian Burg  <bburg@apple.com>
    239
  • trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp

    r196771 r196779  
    4949WebIDBConnectionToClient::WebIDBConnectionToClient(DatabaseToWebProcessConnection& connection, uint64_t serverConnectionIdentifier)
    5050    : m_connection(connection)
     51    , m_identifier(serverConnectionIdentifier)
    5152{
    5253    relaxAdoptionRequirement();
    5354    m_connectionToClient = IDBServer::IDBConnectionToClient::create(*this);
     55    DatabaseProcess::singleton().idbServer().registerConnection(*m_connectionToClient);
    5456}
    5557
    5658WebIDBConnectionToClient::~WebIDBConnectionToClient()
    5759{
     60    DatabaseProcess::singleton().idbServer().unregisterConnection(*m_connectionToClient);
    5861}
    5962
  • trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp

    r196725 r196779  
    190190}
    191191
    192 void WebIDBConnectionToServer::didDeleteDatabase(const IDBResultData&)
    193 {
    194 }
    195 
    196 void WebIDBConnectionToServer::didOpenDatabase(const IDBResultData&)
    197 {
    198 }
    199 
    200 void WebIDBConnectionToServer::didAbortTransaction(const IDBResourceIdentifier&, const IDBError&)
    201 {
    202 }
    203 
    204 void WebIDBConnectionToServer::didCommitTransaction(const IDBResourceIdentifier&, const IDBError&)
    205 {
    206 }
    207 
    208 void WebIDBConnectionToServer::didCreateObjectStore(const IDBResultData&)
    209 {
    210 }
    211 
    212 void WebIDBConnectionToServer::didDeleteObjectStore(const IDBResultData&)
    213 {
    214 }
    215 
    216 void WebIDBConnectionToServer::didClearObjectStore(const IDBResultData&)
    217 {
    218 }
    219 
    220 void WebIDBConnectionToServer::didCreateIndex(const IDBResultData&)
    221 {
    222 }
    223 
    224 void WebIDBConnectionToServer::didDeleteIndex(const IDBResultData&)
    225 {
    226 }
    227 
    228 void WebIDBConnectionToServer::didPutOrAdd(const IDBResultData&)
    229 {
    230 }
    231 
    232 void WebIDBConnectionToServer::didGetRecord(const IDBResultData&)
    233 {
    234 }
    235 
    236 void WebIDBConnectionToServer::didGetCount(const IDBResultData&)
    237 {
    238 }
    239 
    240 void WebIDBConnectionToServer::didDeleteRecord(const IDBResultData&)
    241 {
    242 }
    243 
    244 void WebIDBConnectionToServer::didOpenCursor(const IDBResultData&)
    245 {
    246 }
    247 
    248 void WebIDBConnectionToServer::didIterateCursor(const IDBResultData&)
    249 {
    250 }
    251 
    252 void WebIDBConnectionToServer::fireVersionChangeEvent(uint64_t, const WebCore::IDBResourceIdentifier&, uint64_t)
    253 {
    254 }
    255 
    256 void WebIDBConnectionToServer::didStartTransaction(const WebCore::IDBResourceIdentifier&, const WebCore::IDBError&)
    257 {
    258 }
    259 
    260 void WebIDBConnectionToServer::notifyOpenDBRequestBlocked(const WebCore::IDBResourceIdentifier&, uint64_t, uint64_t)
    261 {
     192void WebIDBConnectionToServer::didDeleteDatabase(const IDBResultData& result)
     193{
     194    m_connectionToServer->didDeleteDatabase(result);
     195}
     196
     197void WebIDBConnectionToServer::didOpenDatabase(const IDBResultData& result)
     198{
     199    m_connectionToServer->didOpenDatabase(result);
     200}
     201
     202void WebIDBConnectionToServer::didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error)
     203{
     204    m_connectionToServer->didAbortTransaction(transactionIdentifier, error);
     205}
     206
     207void WebIDBConnectionToServer::didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error)
     208{
     209    m_connectionToServer->didCommitTransaction(transactionIdentifier, error);
     210}
     211
     212void WebIDBConnectionToServer::didCreateObjectStore(const IDBResultData& result)
     213{
     214    m_connectionToServer->didCreateObjectStore(result);
     215}
     216
     217void WebIDBConnectionToServer::didDeleteObjectStore(const IDBResultData& result)
     218{
     219    m_connectionToServer->didDeleteObjectStore(result);
     220}
     221
     222void WebIDBConnectionToServer::didClearObjectStore(const IDBResultData& result)
     223{
     224    m_connectionToServer->didClearObjectStore(result);
     225}
     226
     227void WebIDBConnectionToServer::didCreateIndex(const IDBResultData& result)
     228{
     229    m_connectionToServer->didCreateIndex(result);
     230}
     231
     232void WebIDBConnectionToServer::didDeleteIndex(const IDBResultData& result)
     233{
     234    m_connectionToServer->didDeleteIndex(result);
     235}
     236
     237void WebIDBConnectionToServer::didPutOrAdd(const IDBResultData& result)
     238{
     239    m_connectionToServer->didPutOrAdd(result);
     240}
     241
     242void WebIDBConnectionToServer::didGetRecord(const IDBResultData& result)
     243{
     244    m_connectionToServer->didGetRecord(result);
     245}
     246
     247void WebIDBConnectionToServer::didGetCount(const IDBResultData& result)
     248{
     249    m_connectionToServer->didGetCount(result);
     250}
     251
     252void WebIDBConnectionToServer::didDeleteRecord(const IDBResultData& result)
     253{
     254    m_connectionToServer->didDeleteRecord(result);
     255}
     256
     257void WebIDBConnectionToServer::didOpenCursor(const IDBResultData& result)
     258{
     259    m_connectionToServer->didOpenCursor(result);
     260}
     261
     262void WebIDBConnectionToServer::didIterateCursor(const IDBResultData& result)
     263{
     264    m_connectionToServer->didIterateCursor(result);
     265}
     266
     267void WebIDBConnectionToServer::fireVersionChangeEvent(uint64_t uniqueDatabaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion)
     268{
     269    m_connectionToServer->fireVersionChangeEvent(uniqueDatabaseConnectionIdentifier, requestIdentifier, requestedVersion);
     270}
     271
     272void WebIDBConnectionToServer::didStartTransaction(const IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError& error)
     273{
     274    m_connectionToServer->didStartTransaction(transactionIdentifier, error);
     275}
     276
     277void WebIDBConnectionToServer::notifyOpenDBRequestBlocked(const IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion)
     278{
     279    m_connectionToServer->notifyOpenDBRequestBlocked(requestIdentifier, oldVersion, newVersion);
    262280}
    263281
  • trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h

    r196725 r196779  
    8989    void notifyOpenDBRequestBlocked(const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion);
    9090
     91    void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&);
     92
    9193private:
    9294    WebIDBConnectionToServer();
    9395
    9496    virtual IPC::Connection* messageSenderConnection() override final;
    95     void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&);
    9697
    9798    uint64_t m_identifier;
  • trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.cpp

    r196651 r196779  
    2929
    3030#include "DatabaseToWebProcessConnectionMessages.h"
     31#include "WebIDBConnectionToServerMessages.h"
    3132#include "WebIDBServerConnection.h"
    3233#include "WebIDBServerConnectionMessages.h"
     
    5354{
    5455#if ENABLE(INDEXED_DATABASE)
     56    if (decoder.messageReceiverName() == Messages::WebIDBConnectionToServer::messageReceiverName()) {
     57        auto iterator = m_webIDBConnections.find(decoder.destinationID());
     58        if (iterator != m_webIDBConnections.end())
     59            iterator->value->didReceiveMessage(connection, decoder);
     60        return;
     61    }
     62
    5563    if (decoder.messageReceiverName() == Messages::WebIDBServerConnection::messageReceiverName()) {
    5664        HashMap<uint64_t, WebIDBServerConnection*>::iterator connectionIterator = m_webIDBServerConnections.find(decoder.destinationID());
Note: See TracChangeset for help on using the changeset viewer.