Changeset 73808 in webkit


Ignore:
Timestamp:
Dec 10, 2010 3:12:15 PM (13 years ago)
Author:
jberlin@webkit.org
Message:

WebKit2: Need a WebKit2 equivalent of the WebKit1 WebDatabaseManager
https://bugs.webkit.org/show_bug.cgi?id=50606

Reviewed by Adam Roben and Sam Weinig.

Add a WebDatabaseManagerProxy owned by the WebContext.

Expose API (similar to the WebKit1 API) to get a list of origins for which there are
Databases, delete all the databases for a given origin, and delete all the databases.

Add WebDatabaseManager and WebDatabaseManagerProxy as messages receivers.

  • DerivedSources.make:
  • Platform/CoreIPC/MessageID.h:

Add the WebDatabaseManagerProxy as a UIProcess type (DatabaseManager).

  • Shared/API/c/WKBase.h:
  • Shared/APIObject.h:
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextGetDatabaseManager):
Expose API to get the DatabaseManager.

  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/C/WKDatabaseManager.cpp: Added.

(WKDatabaseManagerGetTypeID):
(WKDatabaseManagerGetDatabaseOrigins):
(callGetDatabaseOriginsBlockBlockAndDispose):
(WKDatabaseManagerGetDatabaseOrigins_b):
(WKDatabaseManagerDeleteDatabasesForOrigin):
(WKDatabaseManagerDeleteAllDatabases):

  • UIProcess/API/C/WKDatabaseManager.h: Added.
  • UIProcess/WebContext.cpp:

(WebKit::WebContext::WebContext):
Create the WebDatabaseManagerProxy.
(WebKit::WebContext::processDidClose):
Invalidate the WebDatabaseManagerProxy.
(WebKit::WebContext::didReceiveMessage):
Forward messages to the WebDatabaseManagerProxy.

  • UIProcess/WebContext.h:

(WebKit::WebContext::databaseManagerProxy):

  • UIProcess/WebDatabaseManagerProxy.cpp: Added.

(WebKit::WebDatabaseManagerProxy::create):
(WebKit::WebDatabaseManagerProxy::WebDatabaseManagerProxy):
(WebKit::WebDatabaseManagerProxy::~WebDatabaseManagerProxy):
(WebKit::WebDatabaseManagerProxy::invalidate):
Invalidate the map of callbacks for getDatabaseOrigins.
(WebKit::WebDatabaseManagerProxy::getDatabaseOrigins):
Store the callback and send the request for the origins which have databases to the
WebProcess.
(WebKit::WebDatabaseManagerProxy::didGetDatabaseOrigins):
Call the callback function with the SecurityOrigins created from the identifiers received.
(WebKit::WebDatabaseManagerProxy::deleteDatabasesForOrigin):
If the origin exists, send the message on to the WebProcess to delete the databases
associated with that origin.
(WebKit::WebDatabaseManagerProxy::deleteAllDatabases):
Send the message to the WebProcess to delete all the databases.

  • UIProcess/WebDatabaseManagerProxy.h: Added.

(WebKit::WebDatabaseManagerProxy::type):

  • UIProcess/WebDatabaseManagerProxy.messages.in: Added.
  • UIProcess/WebPageProxy.cpp:

Move invalidateCallbackMap from here ...

  • UIProcess/GenericCallback.h:

(WebKit::invalidateCallbackMap):
.. to here so that it can be used elsewhere (e.g. by WebDatabaseManagerProxy).

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didReceiveMessage):
Forward on all messages destined for the WebDatabaseManagerProxy to the WebContext.

  • WebProcess/WebCoreSupport/WebDatabaseManager.cpp:

(WebKit::WebDatabaseManager::didReceiveMessage):
(WebKit::WebDatabaseManager::getDatabaseOrigins):
Send an array of the identifiers for the SecurityOrigins for which there are databases to
the UIProcess.
(WebKit::WebDatabaseManager::deleteDatabasesForOrigin):
If the SecurityOrigin with that identifier exists, tell the DatabaseTracker to delete the
databases for that origin.
(WebKit::WebDatabaseManager::deleteAllDatabases):
Tell the DatabaseTracker to delete the databases for that origin.

  • WebProcess/WebCoreSupport/WebDatabaseManager.h:
  • WebProcess/WebCoreSupport/WebDatabaseManager.messages.in: Added.
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::didReceiveMessage):

  • WebKit2.pro:

Add WKDatabaseManager.cpp/.h and WebDatabaseManagerProxy.cpp/.h

  • WebKit2.xcodeproj/project.pbxproj:

Ditto, also add WebDatabaseManagerProxy.messages.in and WebDatabaseManager.messages.in.

  • win/WebKit2.vcproj:

Ditto.

  • win/WebKit2Generated.make:

Make sure WKDatabaseManager.h is copied into WebKitBuild on Windows.

Location:
trunk/WebKit2
Files:
6 added
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit2/ChangeLog

    r73807 r73808  
     12010-12-10  Jessie Berlin  <jberlin@apple.com>
     2
     3        Reviewed by Adam Roben and Sam Weinig.
     4
     5        WebKit2: Need a WebKit2 equivalent of the WebKit1 WebDatabaseManager
     6        https://bugs.webkit.org/show_bug.cgi?id=50606
     7
     8        Add a WebDatabaseManagerProxy owned by the WebContext.
     9
     10        Expose API (similar to the WebKit1 API) to get a list of origins for which there are
     11        Databases, delete all the databases for a given origin, and delete all the databases.
     12
     13        Add WebDatabaseManager and WebDatabaseManagerProxy as messages receivers.
     14        * DerivedSources.make:
     15        * Platform/CoreIPC/MessageID.h:
     16
     17        Add the WebDatabaseManagerProxy as a UIProcess type (DatabaseManager).
     18        * Shared/API/c/WKBase.h:
     19        * Shared/APIObject.h:
     20        * UIProcess/API/C/WKAPICast.h:
     21
     22        * UIProcess/API/C/WKContext.cpp:
     23        (WKContextGetDatabaseManager):
     24        Expose API to get the DatabaseManager.
     25        * UIProcess/API/C/WKContext.h:
     26
     27        * UIProcess/API/C/WKDatabaseManager.cpp: Added.
     28        (WKDatabaseManagerGetTypeID):
     29        (WKDatabaseManagerGetDatabaseOrigins):
     30        (callGetDatabaseOriginsBlockBlockAndDispose):
     31        (WKDatabaseManagerGetDatabaseOrigins_b):
     32        (WKDatabaseManagerDeleteDatabasesForOrigin):
     33        (WKDatabaseManagerDeleteAllDatabases):
     34        * UIProcess/API/C/WKDatabaseManager.h: Added.
     35
     36        * UIProcess/WebContext.cpp:
     37        (WebKit::WebContext::WebContext):
     38        Create the WebDatabaseManagerProxy.
     39        (WebKit::WebContext::processDidClose):
     40        Invalidate the WebDatabaseManagerProxy.
     41        (WebKit::WebContext::didReceiveMessage):
     42        Forward messages to the WebDatabaseManagerProxy.
     43        * UIProcess/WebContext.h:
     44        (WebKit::WebContext::databaseManagerProxy):
     45
     46        * UIProcess/WebDatabaseManagerProxy.cpp: Added.
     47        (WebKit::WebDatabaseManagerProxy::create):
     48        (WebKit::WebDatabaseManagerProxy::WebDatabaseManagerProxy):
     49        (WebKit::WebDatabaseManagerProxy::~WebDatabaseManagerProxy):
     50        (WebKit::WebDatabaseManagerProxy::invalidate):
     51        Invalidate the map of callbacks for getDatabaseOrigins.
     52        (WebKit::WebDatabaseManagerProxy::getDatabaseOrigins):
     53        Store the callback and send the request for the origins which have databases to the
     54        WebProcess.
     55        (WebKit::WebDatabaseManagerProxy::didGetDatabaseOrigins):
     56        Call the callback function with the SecurityOrigins created from the identifiers received.
     57        (WebKit::WebDatabaseManagerProxy::deleteDatabasesForOrigin):
     58        If the origin exists, send the message on to the WebProcess to delete the databases
     59        associated with that origin.
     60        (WebKit::WebDatabaseManagerProxy::deleteAllDatabases):
     61        Send the message to the WebProcess to delete all the databases.
     62        * UIProcess/WebDatabaseManagerProxy.h: Added.
     63        (WebKit::WebDatabaseManagerProxy::type):
     64        * UIProcess/WebDatabaseManagerProxy.messages.in: Added.
     65
     66        * UIProcess/WebPageProxy.cpp:
     67        Move invalidateCallbackMap from here ...
     68        * UIProcess/GenericCallback.h:
     69        (WebKit::invalidateCallbackMap):
     70        .. to here so that it can be used elsewhere (e.g. by WebDatabaseManagerProxy).
     71
     72        * UIProcess/WebProcessProxy.cpp:
     73        (WebKit::WebProcessProxy::didReceiveMessage):
     74        Forward on all messages destined for the WebDatabaseManagerProxy to the WebContext.
     75
     76        * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
     77        (WebKit::WebDatabaseManager::didReceiveMessage):
     78        (WebKit::WebDatabaseManager::getDatabaseOrigins):
     79        Send an array of the identifiers for the SecurityOrigins for which there are databases to
     80        the UIProcess.
     81        (WebKit::WebDatabaseManager::deleteDatabasesForOrigin):
     82        If the SecurityOrigin with that identifier exists, tell the DatabaseTracker to delete the
     83        databases for that origin.
     84        (WebKit::WebDatabaseManager::deleteAllDatabases):
     85        Tell the DatabaseTracker to delete the databases for that origin.
     86        * WebProcess/WebCoreSupport/WebDatabaseManager.h:
     87        * WebProcess/WebCoreSupport/WebDatabaseManager.messages.in: Added.
     88        * WebProcess/WebProcess.cpp:
     89        (WebKit::WebProcess::didReceiveMessage):
     90
     91        * WebKit2.pro:
     92        Add WKDatabaseManager.cpp/.h and WebDatabaseManagerProxy.cpp/.h
     93        * WebKit2.xcodeproj/project.pbxproj:
     94        Ditto, also add WebDatabaseManagerProxy.messages.in and WebDatabaseManager.messages.in.
     95        * win/WebKit2.vcproj:
     96        Ditto.
     97        * win/WebKit2Generated.make:
     98        Make sure WKDatabaseManager.h is copied into WebKitBuild on Windows.
     99
    11002010-12-10  Ada Chan  <adachan@apple.com>
    2101
  • trunk/WebKit2/DerivedSources.make

    r73281 r73808  
    2626    $(WebKit2)/WebProcess/Authentication \
    2727    $(WebKit2)/WebProcess/Plugins \
     28    $(WebKit2)/WebProcess/WebCoreSupport \
    2829    $(WebKit2)/WebProcess/WebPage \
    2930    $(WebKit2)/WebProcess \
     
    4243    PluginProxy \
    4344    WebContext \
     45    WebDatabaseManager \
     46    WebDatabaseManagerProxy \
    4447    WebInspector \
    4548    WebInspectorProxy \
  • trunk/WebKit2/Platform/CoreIPC/MessageID.h

    r73281 r73808  
    3939    MessageClassDrawingArea,
    4040    MessageClassInjectedBundle,
     41    MessageClassWebDatabaseManager,
    4142    MessageClassWebInspector,
    4243    MessageClassWebPage,
     
    4849    MessageClassWebContext,
    4950    MessageClassWebContextLegacy,
     51    MessageClassWebDatabaseManagerProxy,
    5052    MessageClassWebInspectorProxy,
    5153    MessageClassWebPageProxy,
  • trunk/WebKit2/Shared/API/c/WKBase.h

    r73281 r73808  
    6767typedef const struct OpaqueWKContext* WKContextRef;
    6868typedef const struct OpaqueWKCredential* WKCredentialRef;
     69typedef const struct OpaqueWKDatabaseManager* WKDatabaseManagerRef;
    6970typedef const struct OpaqueWKDownload* WKDownloadRef;
    7071typedef const struct OpaqueWKFormSubmissionListener* WKFormSubmissionListenerRef;
  • trunk/WebKit2/Shared/APIObject.h

    r73281 r73808  
    6363        TypeBackForwardListItem,
    6464        TypeContext,
     65        TypeDatabaseManager,
    6566        TypeDownload,
    6667        TypeFormSubmissionListener,
  • trunk/WebKit2/UIProcess/API/C/WKAPICast.h

    r73614 r73808  
    4848class WebContext;
    4949class WebCredential;
     50class WebDatabaseManagerProxy;
    5051class WebFormSubmissionListenerProxy;
    5152class WebFramePolicyListenerProxy;
     
    6566WK_ADD_API_MAPPING(WKContextRef, WebContext)
    6667WK_ADD_API_MAPPING(WKCredentialRef, WebCredential)
     68WK_ADD_API_MAPPING(WKDatabaseManagerRef, WebDatabaseManagerProxy)
    6769WK_ADD_API_MAPPING(WKDownloadRef, DownloadProxy)
    6870WK_ADD_API_MAPPING(WKFormSubmissionListenerRef, WebFormSubmissionListenerProxy)
  • trunk/WebKit2/UIProcess/API/C/WKContext.cpp

    r73215 r73808  
    142142    toImpl(contextRef)->clearApplicationCache();
    143143}
     144
     145WKDatabaseManagerRef WKContextGetDatabaseManager(WKContextRef contextRef)
     146{
     147    return toAPI(toImpl(contextRef)->databaseManagerProxy());
     148}
  • trunk/WebKit2/UIProcess/API/C/WKContext.h

    r73215 r73808  
    119119WK_EXPORT void WKContextClearApplicationCache(WKContextRef context);
    120120
     121WK_EXPORT WKDatabaseManagerRef WKContextGetDatabaseManager(WKContextRef context);
     122
    121123#ifdef __cplusplus
    122124}
  • trunk/WebKit2/UIProcess/GenericCallback.h

    r69214 r73808  
    3030
    3131#include "WebError.h"
     32#include <wtf/HashMap.h>
    3233#include <wtf/PassRefPtr.h>
    3334#include <wtf/RefCounted.h>
     
    9091};
    9192
     93template<typename T>
     94void invalidateCallbackMap(HashMap<uint64_t, T>& map)
     95{
     96    Vector<T> callbacksVector;
     97    copyValuesToVector(map, callbacksVector);
     98    for (size_t i = 0, size = callbacksVector.size(); i < size; ++i)
     99        callbacksVector[i]->invalidate();
     100    map.clear();
     101}
     102
    92103} // namespace WebKit
    93104
  • trunk/WebKit2/UIProcess/WebContext.cpp

    r73569 r73808  
    3434#include "WebContextUserMessageCoders.h"
    3535#include "WebCoreArgumentCoders.h"
     36#include "WebDatabaseManagerProxy.h"
    3637#include "WebPageGroup.h"
    3738#include "WebPageNamespace.h"
     
    8586    , m_clearResourceCachesForNewWebProcess(false)
    8687    , m_clearApplicationCacheForNewWebProcess(false)
     88    , m_databaseManagerProxy(WebDatabaseManagerProxy::create(this))
    8789#if PLATFORM(WIN)
    8890    , m_shouldPaintNativeControls(true)
     
    207209    m_downloads.clear();
    208210
     211    m_databaseManagerProxy->invalidate();
     212
    209213    m_process = 0;
    210214}
     
    435439            downloadProxy->didReceiveDownloadProxyMessage(connection, messageID, arguments);
    436440       
     441        return;
     442    }
     443
     444    if (messageID.is<CoreIPC::MessageClassWebDatabaseManagerProxy>()) {
     445        m_databaseManagerProxy->didReceiveWebDatabaseManagerProxyMessage(connection, messageID, arguments);
    437446        return;
    438447    }
  • trunk/WebKit2/UIProcess/WebContext.h

    r73569 r73808  
    4848
    4949class DownloadProxy;
     50class WebDatabaseManagerProxy;
    5051class WebPageGroup;
    5152class WebPageNamespace;
     
    125126    static HashSet<String, CaseFoldingHash> pdfAndPostScriptMIMETypes();
    126127
     128    WebDatabaseManagerProxy* databaseManagerProxy() const { return m_databaseManagerProxy.get(); }
     129
    127130private:
    128131    WebContext(ProcessModel, const String& injectedBundlePath);
     
    182185    bool m_clearResourceCachesForNewWebProcess;
    183186    bool m_clearApplicationCacheForNewWebProcess;
    184    
     187
     188    RefPtr<WebDatabaseManagerProxy> m_databaseManagerProxy;
     189
    185190#if PLATFORM(WIN)
    186191    bool m_shouldPaintNativeControls;
  • trunk/WebKit2/UIProcess/WebPageProxy.cpp

    r73796 r73808  
    7979#endif
    8080
    81 template<typename T>
    82 void invalidateCallbackMap(HashMap<uint64_t, T>& map)
    83 {
    84     Vector<T> callbacksVector;
    85     copyValuesToVector(map, callbacksVector);
    86     for (size_t i = 0, size = callbacksVector.size(); i < size; ++i)
    87         callbacksVector[i]->invalidate();
    88     map.clear();
    89 }
    90 
    9181PassRefPtr<WebPageProxy> WebPageProxy::create(WebPageNamespace* pageNamespace, WebPageGroup* pageGroup, uint64_t pageID)
    9282{
  • trunk/WebKit2/UIProcess/WebProcessProxy.cpp

    r73066 r73808  
    206206    }
    207207
    208     if (messageID.is<CoreIPC::MessageClassWebContext>() || messageID.is<CoreIPC::MessageClassWebContextLegacy>() || messageID.is<CoreIPC::MessageClassDownloadProxy>()) {
     208    if (messageID.is<CoreIPC::MessageClassWebContext>()
     209        || messageID.is<CoreIPC::MessageClassWebContextLegacy>()
     210        || messageID.is<CoreIPC::MessageClassDownloadProxy>()
     211        || messageID.is<CoreIPC::MessageClassWebDatabaseManagerProxy>()) {
    209212        m_context->didReceiveMessage(connection, messageID, arguments);
    210213        return;
  • trunk/WebKit2/WebKit2.pro

    r73716 r73808  
    278278    UIProcess/API/C/WKCredential.h \
    279279    UIProcess/API/C/WKCredentialTypes.h \
     280    UIProcess/API/C/WKDatabaseManager.h \
    280281    UIProcess/API/C/WKDownload.h \
    281282    UIProcess/API/C/WKFrame.h \
     
    326327    UIProcess/WebContextMenuProxy.h \
    327328    UIProcess/WebContextUserMessageCoders.h \
     329    UIProcess/WebDatabaseManagerProxy.h \
    328330    UIProcess/WebDownloadClient.h \
    329331    UIProcess/WebEditCommandProxy.h \
     
    476478    UIProcess/API/C/WKContext.cpp \
    477479    UIProcess/API/C/WKCredential.cpp \
     480    UIProcess/API/C/WKDatabaseManager.cpp \
    478481    UIProcess/API/C/WKDownload.cpp \
    479482    UIProcess/API/C/WKFrame.cpp \
     
    516519    UIProcess/WebContextInjectedBundleClient.cpp \
    517520    UIProcess/WebContextMenuProxy.cpp \
     521    UIProcess/WebDatabaseManagerProxy.cpp \
    518522    UIProcess/WebDownloadClient.cpp \
    519523    UIProcess/WebEditCommandProxy.cpp \
  • trunk/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r73662 r73808  
    588588                F6113E28126CE19B0057D0A7 /* WKUserContentURLPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6113E26126CE19B0057D0A7 /* WKUserContentURLPattern.cpp */; };
    589589                F6113E29126CE19B0057D0A7 /* WKUserContentURLPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = F6113E27126CE19B0057D0A7 /* WKUserContentURLPattern.h */; settings = {ATTRIBUTES = (Public, ); }; };
     590                F62A765C12B1ABC30005F1B6 /* WebDatabaseManagerProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F62A765912B1ABC30005F1B6 /* WebDatabaseManagerProxy.cpp */; };
     591                F62A765D12B1ABC30005F1B6 /* WebDatabaseManagerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F62A765A12B1ABC30005F1B6 /* WebDatabaseManagerProxy.h */; };
     592                F62A766112B1ABED0005F1B6 /* WKDatabaseManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F62A765F12B1ABED0005F1B6 /* WKDatabaseManager.cpp */; };
     593                F62A766212B1ABED0005F1B6 /* WKDatabaseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F62A766012B1ABED0005F1B6 /* WKDatabaseManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
     594                F62A76B612B1B25F0005F1B6 /* WebDatabaseManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F62A76B212B1B25F0005F1B6 /* WebDatabaseManagerMessageReceiver.cpp */; };
     595                F62A76B712B1B25F0005F1B6 /* WebDatabaseManagerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = F62A76B312B1B25F0005F1B6 /* WebDatabaseManagerMessages.h */; };
     596                F62A76B812B1B25F0005F1B6 /* WebDatabaseManagerProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F62A76B412B1B25F0005F1B6 /* WebDatabaseManagerProxyMessageReceiver.cpp */; };
     597                F62A76B912B1B25F0005F1B6 /* WebDatabaseManagerProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = F62A76B512B1B25F0005F1B6 /* WebDatabaseManagerProxyMessages.h */; };
    590598                F634445612A885C8000612D8 /* WebSecurityOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = F634445512A885C8000612D8 /* WebSecurityOrigin.h */; };
    591599                F634445C12A885E9000612D8 /* WKSecurityOrigin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F634445A12A885E9000612D8 /* WKSecurityOrigin.cpp */; };
     
    12441252                F6113E26126CE19B0057D0A7 /* WKUserContentURLPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKUserContentURLPattern.cpp; sourceTree = "<group>"; };
    12451253                F6113E27126CE19B0057D0A7 /* WKUserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKUserContentURLPattern.h; sourceTree = "<group>"; };
     1254                F62A765712B1AB7D0005F1B6 /* WebDatabaseManager.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebDatabaseManager.messages.in; sourceTree = "<group>"; };
     1255                F62A765912B1ABC30005F1B6 /* WebDatabaseManagerProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebDatabaseManagerProxy.cpp; sourceTree = "<group>"; };
     1256                F62A765A12B1ABC30005F1B6 /* WebDatabaseManagerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseManagerProxy.h; sourceTree = "<group>"; };
     1257                F62A765B12B1ABC30005F1B6 /* WebDatabaseManagerProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebDatabaseManagerProxy.messages.in; sourceTree = "<group>"; };
     1258                F62A765F12B1ABED0005F1B6 /* WKDatabaseManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKDatabaseManager.cpp; sourceTree = "<group>"; };
     1259                F62A766012B1ABED0005F1B6 /* WKDatabaseManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDatabaseManager.h; sourceTree = "<group>"; };
     1260                F62A76B212B1B25F0005F1B6 /* WebDatabaseManagerMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebDatabaseManagerMessageReceiver.cpp; sourceTree = "<group>"; };
     1261                F62A76B312B1B25F0005F1B6 /* WebDatabaseManagerMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseManagerMessages.h; sourceTree = "<group>"; };
     1262                F62A76B412B1B25F0005F1B6 /* WebDatabaseManagerProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebDatabaseManagerProxyMessageReceiver.cpp; sourceTree = "<group>"; };
     1263                F62A76B512B1B25F0005F1B6 /* WebDatabaseManagerProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseManagerProxyMessages.h; sourceTree = "<group>"; };
    12461264                F634445512A885C8000612D8 /* WebSecurityOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSecurityOrigin.h; sourceTree = "<group>"; };
    12471265                F634445A12A885E9000612D8 /* WKSecurityOrigin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKSecurityOrigin.cpp; sourceTree = "<group>"; };
     
    17571775                                F6A25FDA12ADC6CC00DC40CC /* WebDatabaseManager.cpp */,
    17581776                                F6A25FDB12ADC6CC00DC40CC /* WebDatabaseManager.h */,
     1777                                F62A765712B1AB7D0005F1B6 /* WebDatabaseManager.messages.in */,
    17591778                                BC111A56112F4FBB00337BAB /* WebDragClient.cpp */,
    17601779                                BC032D6610F4378D0058C15A /* WebDragClient.h */,
     
    18491868                                BCDE059911CDA8AE00E41AF1 /* WebContextInjectedBundleClient.h */,
    18501869                                BCB0B0DB12305A2500B1341E /* WebContextUserMessageCoders.h */,
     1870                                F62A765912B1ABC30005F1B6 /* WebDatabaseManagerProxy.cpp */,
     1871                                F62A765A12B1ABC30005F1B6 /* WebDatabaseManagerProxy.h */,
     1872                                F62A765B12B1ABC30005F1B6 /* WebDatabaseManagerProxy.messages.in */,
    18511873                                1AB7D72B1288CAAD00CFD08C /* WebDownloadClient.cpp */,
    18521874                                1AB7D72A1288CAAD00CFD08C /* WebDownloadClient.h */,
     
    19301952                                512F58F212A88A5400629530 /* WKCredential.h */,
    19311953                                518ACF1012B015F800B04B83 /* WKCredentialTypes.h */,
     1954                                F62A765F12B1ABED0005F1B6 /* WKDatabaseManager.cpp */,
     1955                                F62A766012B1ABED0005F1B6 /* WKDatabaseManager.h */,
    19321956                                1AB7D78C1288CD9A00CFD08C /* WKDownload.cpp */,
    19331957                                1AB7D78B1288CD9A00CFD08C /* WKDownload.h */,
     
    23332357                                BCEE7D0B12846F69009827DA /* WebContextMessageReceiver.cpp */,
    23342358                                BCEE7D0C12846F69009827DA /* WebContextMessages.h */,
     2359                                F62A76B212B1B25F0005F1B6 /* WebDatabaseManagerMessageReceiver.cpp */,
     2360                                F62A76B312B1B25F0005F1B6 /* WebDatabaseManagerMessages.h */,
     2361                                F62A76B412B1B25F0005F1B6 /* WebDatabaseManagerProxyMessageReceiver.cpp */,
     2362                                F62A76B512B1B25F0005F1B6 /* WebDatabaseManagerProxyMessages.h */,
    23352363                                1C8E2A311277852400BC7BD0 /* WebInspectorMessageReceiver.cpp */,
    23362364                                1C8E2A321277852400BC7BD0 /* WebInspectorMessages.h */,
     
    26712699                                1AAF061412B01131008E49E2 /* PDFViewController.h in Headers */,
    26722700                                1AAF0C4A12B16334008E49E2 /* ArgumentCodersCF.h in Headers */,
     2701                                F62A765D12B1ABC30005F1B6 /* WebDatabaseManagerProxy.h in Headers */,
     2702                                F62A766212B1ABED0005F1B6 /* WKDatabaseManager.h in Headers */,
     2703                                F62A76B712B1B25F0005F1B6 /* WebDatabaseManagerMessages.h in Headers */,
     2704                                F62A76B912B1B25F0005F1B6 /* WebDatabaseManagerProxyMessages.h in Headers */,
    26732705                        );
    26742706                        runOnlyForDeploymentPostprocessing = 0;
     
    30833115                                1AAF061512B01131008E49E2 /* PDFViewController.mm in Sources */,
    30843116                                1AAF0C4B12B16334008E49E2 /* ArgumentCodersCF.cpp in Sources */,
     3117                                F62A765C12B1ABC30005F1B6 /* WebDatabaseManagerProxy.cpp in Sources */,
     3118                                F62A766112B1ABED0005F1B6 /* WKDatabaseManager.cpp in Sources */,
     3119                                F62A76B612B1B25F0005F1B6 /* WebDatabaseManagerMessageReceiver.cpp in Sources */,
     3120                                F62A76B812B1B25F0005F1B6 /* WebDatabaseManagerProxyMessageReceiver.cpp in Sources */,
    30853121                        );
    30863122                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp

    r73449 r73808  
    2626#include "WebDatabaseManager.h"
    2727
     28#include "Connection.h"
     29#include "MessageID.h"
     30#include "WebCoreArgumentCoders.h"
     31#include "WebDatabaseManagerProxyMessages.h"
     32#include "WebProcess.h"
    2833#include <WebCore/DatabaseTracker.h>
     34#include <WebCore/SecurityOrigin.h>
    2935
    3036using namespace WebCore;
     
    4349}
    4450
     51void WebDatabaseManager::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments)
     52{
     53    didReceiveWebDatabaseManagerMessage(connection, messageID, arguments);
     54}
     55
     56void WebDatabaseManager::getDatabaseOrigins(uint64_t callbackID) const
     57{
     58    Vector<RefPtr<SecurityOrigin> > origins;
     59    DatabaseTracker::tracker().origins(origins);
     60
     61    size_t numOrigins = origins.size();
     62
     63    Vector<String> identifiers(numOrigins);
     64    for (size_t i = 0; i < numOrigins; ++i)
     65        identifiers[i] = origins[i]->databaseIdentifier();
     66    WebProcess::shared().connection()->send(Messages::WebDatabaseManagerProxy::DidGetDatabaseOrigins(identifiers, callbackID), 0);
     67}
     68
     69void WebDatabaseManager::deleteDatabasesForOrigin(const String& originIdentifier) const
     70{
     71    RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromDatabaseIdentifier(originIdentifier);
     72    if (!origin)
     73        return;
     74
     75    DatabaseTracker::tracker().deleteOrigin(origin.get());
     76}
     77
     78void WebDatabaseManager::deleteAllDatabases() const
     79{
     80    DatabaseTracker::tracker().deleteAllDatabases();
     81}
     82
    4583} // namespace WebKit
  • trunk/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h

    r73449 r73808  
    2727#define WebDatabaseManager_h
    2828
     29#include "Arguments.h"
    2930#include <wtf/Noncopyable.h>
    3031#include <wtf/text/WTFString.h>
     32
     33namespace CoreIPC {
     34class ArgumentDecoder;
     35class Connection;
     36class MessageID;
     37}
    3138
    3239namespace WebKit {
     
    3643    static WebDatabaseManager& shared();
    3744
    38     // FIXME: Add methods to get the origins for which there are databases, delete the databases
    39     // for an origin, and delete all the databases.
    40     // https://bugs.webkit.org/show_bug.cgi?id=50606
     45    void getDatabaseOrigins(uint64_t callbackID) const;
     46    void deleteDatabasesForOrigin(const String& originIdentifier) const;
     47    void deleteAllDatabases() const;
     48
     49    void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
    4150
    4251private:
    4352    WebDatabaseManager();
     53
     54    void didReceiveWebDatabaseManagerMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
    4455
    4556    String databaseDirectory() const;
  • trunk/WebKit2/WebProcess/WebProcess.cpp

    r73796 r73808  
    500500    }
    501501
     502    if (messageID.is<CoreIPC::MessageClassWebDatabaseManager>()) {
     503        WebDatabaseManager::shared().didReceiveMessage(connection, messageID, arguments);
     504        return;
     505    }
     506
    502507    if (messageID.is<CoreIPC::MessageClassInjectedBundle>()) {
    503508        if (!m_injectedBundle)
  • trunk/WebKit2/win/WebKit2.vcproj

    r73643 r73808  
    11511151                                </File>
    11521152                                <File
     1153                                        RelativePath="..\WebProcess\WebCoreSupport\WebDatabaseManager.messages.in"
     1154                                        >
     1155                                </File>
     1156                                <File
    11531157                                        RelativePath="..\WebProcess\WebCoreSupport\WebDragClient.cpp"
    11541158                                        >
     
    18801884                        </File>
    18811885                        <File
     1886                                RelativePath="..\UIProcess\WebDatabaseManagerProxy.cpp"
     1887                                >
     1888                        </File>
     1889                        <File
     1890                                RelativePath="..\UIProcess\WebDatabaseManagerProxy.h"
     1891                                >
     1892                        </File>
     1893                        <File
     1894                                RelativePath="..\UIProcess\WebDatabaseManagerProxy.messages.in"
     1895                                >
     1896                        </File>
     1897                        <File
    18821898                                RelativePath="..\UIProcess\WebDownloadClient.cpp"
    18831899                                >
     
    20582074                                Name="API"
    20592075                                >
     2076                                <File
     2077                                        RelativePath="..\UIProcess\API\C\WKDatabaseManager.cpp"
     2078                                        >
     2079                                </File>
    20602080                                <Filter
    20612081                                        Name="C"
     
    21312151                                        <File
    21322152                                                RelativePath="..\UIProcess\API\C\WKCredentialTypes.h"
     2153                                                >
     2154                                        </File>
     2155                                        <File
     2156                                                RelativePath="..\UIProcess\API\C\WKDatabaseManager.h"
    21332157                                                >
    21342158                                        </File>
     
    27252749                        <File
    27262750                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\DownloadProxyMessages.h"
     2751                                >
     2752                        </File>
     2753                        <File
     2754                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\WebDatabaseManagerMessageReceiver.cpp"
     2755                                >
     2756                        </File>
     2757                        <File
     2758                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\WebDatabaseManagerMessages.h"
     2759                                >
     2760                        </File>
     2761                        <File
     2762                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\WebDatabaseManagerProxyMessageReceiver.cpp"
     2763                                >
     2764                        </File>
     2765                        <File
     2766                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\WebDatabaseManagerProxyMessages.h"
    27272767                                >
    27282768                        </File>
  • trunk/WebKit2/win/WebKit2Generated.make

    r73614 r73808  
    4242    xcopy /y /d "..\UIProcess\API\C\WKCredential.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
    4343    xcopy /y /d "..\UIProcess\API\C\WKCredentialTypes.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     44    xcopy /y /d "..\UIProcess\API\C\WKDatabaseManager.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
    4445    xcopy /y /d "..\UIProcess\API\C\WKDownload.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
    4546    xcopy /y /d "..\UIProcess\API\C\WKFormSubmissionListener.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
Note: See TracChangeset for help on using the changeset viewer.