Changeset 138511 in webkit


Ignore:
Timestamp:
Dec 27, 2012, 11:13:00 AM (13 years ago)
Author:
weinig@apple.com
Message:

Add an initial stab at a generic supplemental interface for WebProcess
https://bugs.webkit.org/show_bug.cgi?id=105779

Reviewed by Darin Adler.

This starts the process of adding a mechanism to WebProcess to extend its
functionality without actually changing it (similar to the Supplement
mechanism in WebCore). This will make it possible for ports to add functionality
that might not be needed or wanted by other ports.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp:

(WebKit::WebKeyValueStorageManager::initialize):
(WebKit):

  • WebProcess/KeyValueStorage/WebKeyValueStorageManager.h:

(WebKeyValueStorageManager):
(WebKit::WebKeyValueStorageManager::localStorageDirectory):

  • WebProcess/WebCoreSupport/WebDatabaseManager.cpp:

(WebKit::WebDatabaseManager::WebDatabaseManager):
(WebKit::WebDatabaseManager::initialize):

  • WebProcess/WebCoreSupport/WebDatabaseManager.h:

(WebDatabaseManager):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::keyValueStorageManager):
(WebKit):

  • WebProcess/WebProcess.h:

(WebProcess):

  • WebProcess/WebProcessSupplement.h: Added.

(WebKit):
(WebProcessSupplement):
(WebKit::WebProcessSupplement::~WebProcessSupplement):
(WebKit::WebProcessSupplement::initialize):

Location:
trunk/Source/WebKit2
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r138504 r138511  
     12012-12-26  Sam Weinig  <sam@webkit.org>
     2
     3        Add an initial stab at a generic supplemental interface for WebProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=105779
     5
     6        Reviewed by Darin Adler.
     7
     8        This starts the process of adding a mechanism to WebProcess to extend its
     9        functionality without actually changing it (similar to the Supplement
     10        mechanism in WebCore). This will make it possible for ports to add functionality
     11        that might not be needed or wanted by other ports.
     12
     13        * WebKit2.xcodeproj/project.pbxproj:
     14        * WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp:
     15        (WebKit::WebKeyValueStorageManager::initialize):
     16        (WebKit):
     17        * WebProcess/KeyValueStorage/WebKeyValueStorageManager.h:
     18        (WebKeyValueStorageManager):
     19        (WebKit::WebKeyValueStorageManager::localStorageDirectory):
     20        * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
     21        (WebKit::WebDatabaseManager::WebDatabaseManager):
     22        (WebKit::WebDatabaseManager::initialize):
     23        * WebProcess/WebCoreSupport/WebDatabaseManager.h:
     24        (WebDatabaseManager):
     25        * WebProcess/WebPage/WebPage.cpp:
     26        (WebKit::WebPage::updatePreferences):
     27        * WebProcess/WebProcess.cpp:
     28        (WebKit::WebProcess::initializeWebProcess):
     29        (WebKit::WebProcess::keyValueStorageManager):
     30        (WebKit):
     31        * WebProcess/WebProcess.h:
     32        (WebProcess):
     33        * WebProcess/WebProcessSupplement.h: Added.
     34        (WebKit):
     35        (WebProcessSupplement):
     36        (WebKit::WebProcessSupplement::~WebProcessSupplement):
     37        (WebKit::WebProcessSupplement::initialize):
     38
    1392012-12-27  Christophe Dumez  <christophe.dumez@intel.com>
    240
  • trunk/Source/WebKit2/GNUmakefile.list.am

    r138425 r138511  
    12081208        Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp \
    12091209        Source/WebKit2/WebProcess/WebConnectionToUIProcess.h \
     1210        Source/WebKit2/WebProcess/WebProcessSupplement.h \
    12101211        Source/WebKit2/WebProcess/WebProcess.cpp \
    12111212        Source/WebKit2/WebProcess/WebProcess.h
  • trunk/Source/WebKit2/Target.pri

    r138232 r138511  
    390390    WebProcess/WebPage/WebUndoStep.h \
    391391    WebProcess/WebConnectionToUIProcess.h \
     392    WebProcess/WebProcessSupplement.h \
    392393    WebProcess/WebProcess.h \
    393394    WebProcess/qt/QtBuiltinBundle.h \
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r138413 r138511  
    935935                BCE0937714FB128C001138D9 /* LayerHostingContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCE0937514FB128B001138D9 /* LayerHostingContext.mm */; };
    936936                BCE0937814FB128C001138D9 /* LayerHostingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE0937614FB128B001138D9 /* LayerHostingContext.h */; };
     937                BCE0E425168B7A280057E66A /* WebProcessSupplement.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE0E424168B7A280057E66A /* WebProcessSupplement.h */; };
    937938                BCE17B7D1381F1170012A641 /* WKPagePrivateMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE17B7B1381F1170012A641 /* WKPagePrivateMac.cpp */; };
    938939                BCE17B7E1381F1170012A641 /* WKPagePrivateMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE17B7C1381F1170012A641 /* WKPagePrivateMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    22032204                BCE0937514FB128B001138D9 /* LayerHostingContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LayerHostingContext.mm; sourceTree = "<group>"; };
    22042205                BCE0937614FB128B001138D9 /* LayerHostingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayerHostingContext.h; sourceTree = "<group>"; };
     2206                BCE0E424168B7A280057E66A /* WebProcessSupplement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebProcessSupplement.h; sourceTree = "<group>"; };
    22052207                BCE17B7B1381F1170012A641 /* WKPagePrivateMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WKPagePrivateMac.cpp; path = mac/WKPagePrivateMac.cpp; sourceTree = "<group>"; };
    22062208                BCE17B7C1381F1170012A641 /* WKPagePrivateMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKPagePrivateMac.h; path = mac/WKPagePrivateMac.h; sourceTree = "<group>"; };
     
    33783380                                BC111AE3112F5C2600337BAB /* WebProcess.cpp */,
    33793381                                BC032D9110F437AF0058C15A /* WebProcess.h */,
     3382                                BCE0E424168B7A280057E66A /* WebProcessSupplement.h */,
    33803383                                BC3066B9125A436300E71278 /* WebProcess.messages.in */,
    33813384                                1A6FA01F11E1528700DB1371 /* WebProcessMain.h */,
     
    50215024                                2989A414167D184B004F96D2 /* CustomProtocolManager.h in Headers */,
    50225025                                31A505FA1680025500A930EB /* WebContextClient.h in Headers */,
     5026                                BCE0E425168B7A280057E66A /* WebProcessSupplement.h in Headers */,
    50235027                        );
    50245028                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp

    r138479 r138511  
    3131#include "WebKeyValueStorageManagerProxyMessages.h"
    3232#include "WebProcess.h"
     33#include "WebProcessCreationParameters.h"
    3334#include <WebCore/SecurityOrigin.h>
    3435#include <WebCore/SecurityOriginHash.h>
     
    4344{
    4445    m_process->addMessageReceiver(Messages::WebKeyValueStorageManager::messageReceiverName(), this);
     46}
     47
     48void WebKeyValueStorageManager::initialize(const WebProcessCreationParameters& parameters)
     49{
     50    StorageTracker::initializeTracker(parameters.localStorageDirectory, this);
     51    m_localStorageDirectory = parameters.localStorageDirectory;
    4552}
    4653
  • trunk/Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.h

    r138479 r138511  
    2727#define WebKeyValueStorageManager_h
    2828
    29 #include "MessageReceiver.h"
     29#include "WebProcessSupplement.h"
    3030#include <WebCore/StorageTrackerClient.h>
    3131#include <wtf/Noncopyable.h>
    3232#include <wtf/Vector.h>
     33#include <wtf/text/WTFString.h>
    3334
    3435namespace WebKit {
     
    3738struct SecurityOriginData;
    3839
    39 class WebKeyValueStorageManager : public WebCore::StorageTrackerClient, private CoreIPC::MessageReceiver {
     40class WebKeyValueStorageManager : public WebCore::StorageTrackerClient, public WebProcessSupplement {
    4041    WTF_MAKE_NONCOPYABLE(WebKeyValueStorageManager);
    4142public:
    4243    explicit WebKeyValueStorageManager(WebProcess*);
    4344
     45    // WebProcessSupplement
     46    virtual void initialize(const WebProcessCreationParameters&) OVERRIDE;
     47
     48    const String& localStorageDirectory() const { return m_localStorageDirectory; }
     49
    4450private:
    45     void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) OVERRIDE;
     51    // CoreIPC::MessageReceiver
     52    virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) OVERRIDE;
    4653    void didReceiveWebKeyValueStorageManagerMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&);
    4754
     
    5764
    5865    Vector<uint64_t> m_originsRequestCallbackIDs;
    59 
     66    String m_localStorageDirectory;
    6067    WebProcess* m_process;
    6168};
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp

    r138471 r138511  
    3434#include "WebDatabaseManagerProxyMessages.h"
    3535#include "WebProcess.h"
     36#include "WebProcessCreationParameters.h"
    3637#include <WebCore/DatabaseDetails.h>
    3738#include <WebCore/DatabaseManager.h>
     
    4647{
    4748    m_process->addMessageReceiver(Messages::WebDatabaseManager::messageReceiverName(), this);
    48 
    4949}
    5050
    51 void WebDatabaseManager::initialize(const String& databaseDirectory)
     51void WebDatabaseManager::initialize(const WebProcessCreationParameters& parameters)
    5252{
    53     DatabaseManager::manager().initialize(databaseDirectory);
     53    DatabaseManager::manager().initialize(parameters.databaseDirectory);
    5454    DatabaseManager::manager().setClient(this);
    5555}
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h

    r138471 r138511  
    2929#if ENABLE(SQL_DATABASE)
    3030
    31 #include "MessageReceiver.h"
     31#include "WebProcessSupplement.h"
    3232#include <WebCore/DatabaseManagerClient.h>
    3333#include <stdint.h>
     
    3838class WebProcess;
    3939
    40 class WebDatabaseManager : public WebCore::DatabaseManagerClient, private CoreIPC::MessageReceiver {
     40class WebDatabaseManager : public WebCore::DatabaseManagerClient, public WebProcessSupplement {
    4141    WTF_MAKE_NONCOPYABLE(WebDatabaseManager);
    4242public:
    43     WebDatabaseManager(WebProcess*);
    44     void initialize(const String& databaseDirectory);
     43    explicit WebDatabaseManager(WebProcess*);
     44
     45    // WebProcessSupplement
     46    virtual void initialize(const WebProcessCreationParameters&) OVERRIDE;
    4547
    4648    void setQuotaForOrigin(const String& originIdentifier, unsigned long long quota) const;
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r138388 r138511  
    6969#include "WebInspectorClient.h"
    7070#include "WebInspectorMessages.h"
     71#include "WebKeyValueStorageManager.h"
    7172#include "WebNotificationClient.h"
    7273#include "WebOpenPanelResultListener.h"
     
    108109#include <WebCore/PluginDocument.h>
    109110#include <WebCore/PrintContext.h>
     111#include <WebCore/Range.h>
    110112#include <WebCore/RenderLayer.h>
    111113#include <WebCore/RenderTreeAsText.h>
     
    123125#include <WebCore/SubstituteData.h>
    124126#include <WebCore/TextIterator.h>
     127#include <WebCore/VisiblePosition.h>
    125128#include <WebCore/markup.h>
    126129#include <runtime/JSLock.h>
    127130#include <runtime/JSValue.h>
    128 
    129 #include <WebCore/Range.h>
    130 #include <WebCore/VisiblePosition.h>
    131131
    132132#if ENABLE(MHTML)
     
    23442344#endif
    23452345
    2346     settings->setLocalStorageDatabasePath(WebProcess::shared().localStorageDirectory());
     2346    settings->setLocalStorageDatabasePath(WebProcess::shared().keyValueStorageManager().localStorageDirectory());
    23472347
    23482348#if USE(AVFOUNDATION)
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r138479 r138511  
    255255
    256256#if ENABLE(SQL_DATABASE)
    257     // Make sure the WebDatabaseManager is initialized so that the Database directory is set.
    258     m_databaseManager->initialize(parameters.databaseDirectory);
     257    m_databaseManager->initialize(parameters);
    259258#endif
    260259
     
    263262#endif
    264263
    265     StorageTracker::initializeTracker(parameters.localStorageDirectory, m_keyValueStorageManager);
    266     m_localStorageDirectory = parameters.localStorageDirectory;
     264    m_keyValueStorageManager->initialize(parameters);
    267265
    268266    if (!parameters.applicationCacheDirectory.isEmpty())
     
    451449{
    452450    return *m_cookieManager;
     451}
     452
     453WebKeyValueStorageManager& WebProcess::keyValueStorageManager()
     454{
     455    return *m_keyValueStorageManager;
    453456}
    454457
  • trunk/Source/WebKit2/WebProcess/WebProcess.h

    r138479 r138511  
    184184    WebResourceCacheManager& resourceCacheManager();
    185185    WebCookieManager& cookieManager();
     186    WebKeyValueStorageManager& keyValueStorageManager();
    186187    DownloadManager& downloadManager();
    187188    AuthenticationManager& authenticationManager();
     
    205206    void clearResourceCaches(ResourceCachesToClear = AllResourceCaches);
    206207   
    207     const String& localStorageDirectory() const { return m_localStorageDirectory; }
    208 
    209208#if ENABLE(PLUGIN_PROCESS)
    210209    PluginProcessConnectionManager& pluginProcessConnectionManager();
     
    399398#endif
    400399    WebIconDatabaseProxy* m_iconDatabaseProxy;
    401    
    402     String m_localStorageDirectory;
    403400
    404401#if ENABLE(NETWORK_PROCESS)
  • trunk/Source/WebKit2/win/WebKit2.vcproj

    r138096 r138511  
    16201620                        </File>
    16211621                        <File
     1622                                RelativePath="..\WebProcess\WebProcessSupplement.h"
     1623                                >
     1624                        </File>
     1625                        <File
    16221626                                RelativePath="..\WebProcess\WebProcess.cpp"
    16231627                                >
Note: See TracChangeset for help on using the changeset viewer.