⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 168999 in webkit


Ignore:
Timestamp:
May 17, 2014, 3:31:02 PM (12 years ago)
Author:
andersca@apple.com
Message:

Replace WKContextSetDatabaseDirectory with two WKContextConfiguration parameters
https://bugs.webkit.org/show_bug.cgi?id=133033
<rdar://problem/16830143>

Reviewed by Sam Weinig.

Source/WebKit2:

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:

Rename databaseDirectory to webSQLDatabaseDirectory to better indicate the directory type.

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetDatabaseDirectory): Deleted.
This is no longer needed.

  • UIProcess/API/C/WKContextConfigurationRef.cpp:

(WKContextConfigurationCopyIndexedDBDatabaseDirectory):
(WKContextConfigurationSetIndexedDBDatabaseDirectory):
(WKContextConfigurationCopyWebSQLDatabaseDirectory):
(WKContextConfigurationSetWebSQLDatabaseDirectory):

  • UIProcess/API/C/WKContextConfigurationRef.h:

Add setters and getters.

  • UIProcess/API/C/WKContextPrivate.h:

Remove WKContextSetDatabaseDirectory.

  • UIProcess/APIContextConfiguration.cpp:

(API::ContextConfiguration::webContextConfiguration):
Set m_indexedDBDatabaseDirectory and m_webSQLDatabaseDirectory on the configuration.

  • UIProcess/APIContextConfiguration.h:

(API::ContextConfiguration::indexedDBDatabaseDirectory):
(API::ContextConfiguration::setIndexedDBDatabaseDirectory):
(API::ContextConfiguration::webSQLDatabaseDirectory):
(API::ContextConfiguration::setWebSQLDatabaseDirectory):
Add getters and setters to the C++ part of WKContextConfigurationRef.

  • UIProcess/WebContext.cpp:

(WebKit::WebContext::applyPlatformSpecificConfigurationDefaults):
Set webSQLDatabaseDirectory and indexedDBDatabaseDirectory.

(WebKit::WebContext::WebContext):
Initialize m_webSQLDatabaseDirectory and m_indexedDBDatabaseDirectory.

(WebKit::WebContext::ensureDatabaseProcess):
Set parameters.indexedDatabaseDirectory from m_indexedDBDatabaseDirectory.

(WebKit::WebContext::createNewWebProcess):
Set parameters.webSQLDatabaseDirectory from m_webSQLDatabaseDirectory.

  • UIProcess/mac/WebContextMac.mm:

(WebKit::WebContext::platformDefaultWebSQLDatabaseDirectory):
Rename this to indicate that it's about WebSQL databases.

(WebKit::WebContext::platformDefaultIndexedDBDatabaseDirectory):
Add this.

  • WebProcess/WebCoreSupport/WebDatabaseManager.cpp:

(WebKit::WebDatabaseManager::initialize):
Update for WebProcessCreationParameters rename.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):
Update for WebProcessCreationParameters rename.

Tools:
Set up the WebSQL and IndexedDB directories.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):

Location:
trunk
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r168998 r168999  
     12014-05-17  Anders Carlsson  <andersca@apple.com>
     2
     3        Replace WKContextSetDatabaseDirectory with two WKContextConfiguration parameters
     4        https://bugs.webkit.org/show_bug.cgi?id=133033
     5        <rdar://problem/16830143>
     6
     7        Reviewed by Sam Weinig.
     8
     9        * Shared/WebProcessCreationParameters.cpp:
     10        (WebKit::WebProcessCreationParameters::encode):
     11        (WebKit::WebProcessCreationParameters::decode):
     12        * Shared/WebProcessCreationParameters.h:
     13        Rename databaseDirectory to webSQLDatabaseDirectory to better indicate the directory type.
     14
     15        * UIProcess/API/C/WKContext.cpp:
     16        (WKContextSetDatabaseDirectory): Deleted.
     17        This is no longer needed.
     18
     19        * UIProcess/API/C/WKContextConfigurationRef.cpp:
     20        (WKContextConfigurationCopyIndexedDBDatabaseDirectory):
     21        (WKContextConfigurationSetIndexedDBDatabaseDirectory):
     22        (WKContextConfigurationCopyWebSQLDatabaseDirectory):
     23        (WKContextConfigurationSetWebSQLDatabaseDirectory):
     24        * UIProcess/API/C/WKContextConfigurationRef.h:
     25        Add setters and getters.
     26
     27        * UIProcess/API/C/WKContextPrivate.h:
     28        Remove WKContextSetDatabaseDirectory.
     29
     30        * UIProcess/APIContextConfiguration.cpp:
     31        (API::ContextConfiguration::webContextConfiguration):
     32        Set m_indexedDBDatabaseDirectory and m_webSQLDatabaseDirectory on the configuration.
     33
     34        * UIProcess/APIContextConfiguration.h:
     35        (API::ContextConfiguration::indexedDBDatabaseDirectory):
     36        (API::ContextConfiguration::setIndexedDBDatabaseDirectory):
     37        (API::ContextConfiguration::webSQLDatabaseDirectory):
     38        (API::ContextConfiguration::setWebSQLDatabaseDirectory):
     39        Add getters and setters to the C++ part of WKContextConfigurationRef.
     40
     41        * UIProcess/WebContext.cpp:
     42        (WebKit::WebContext::applyPlatformSpecificConfigurationDefaults):
     43        Set webSQLDatabaseDirectory and indexedDBDatabaseDirectory.
     44
     45        (WebKit::WebContext::WebContext):
     46        Initialize m_webSQLDatabaseDirectory and m_indexedDBDatabaseDirectory.
     47
     48        (WebKit::WebContext::ensureDatabaseProcess):
     49        Set parameters.indexedDatabaseDirectory from m_indexedDBDatabaseDirectory.
     50
     51        (WebKit::WebContext::createNewWebProcess):
     52        Set parameters.webSQLDatabaseDirectory from m_webSQLDatabaseDirectory.
     53
     54        * UIProcess/mac/WebContextMac.mm:
     55        (WebKit::WebContext::platformDefaultWebSQLDatabaseDirectory):
     56        Rename this to indicate that it's about WebSQL databases.
     57
     58        (WebKit::WebContext::platformDefaultIndexedDBDatabaseDirectory):
     59        Add this.
     60
     61        * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
     62        (WebKit::WebDatabaseManager::initialize):
     63        Update for WebProcessCreationParameters rename.
     64
     65        * WebProcess/cocoa/WebProcessCocoa.mm:
     66        (WebKit::WebProcess::platformInitializeWebProcess):
     67        Update for WebProcessCreationParameters rename.
     68
    1692014-05-17  Brent Fulgham  <bfulgham@apple.com>
    270
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp

    r168605 r168999  
    6161    encoder << applicationCacheDirectory;
    6262    encoder << applicationCacheDirectoryExtensionHandle;
    63     encoder << databaseDirectory;
    64     encoder << databaseDirectoryExtensionHandle;
     63    encoder << webSQLDatabaseDirectory;
     64    encoder << webSQLDatabaseDirectoryExtensionHandle;
    6565    encoder << diskCacheDirectory;
    6666    encoder << diskCacheDirectoryExtensionHandle;
     
    147147    if (!decoder.decode(parameters.applicationCacheDirectoryExtensionHandle))
    148148        return false;
    149     if (!decoder.decode(parameters.databaseDirectory))
    150         return false;
    151     if (!decoder.decode(parameters.databaseDirectoryExtensionHandle))
     149    if (!decoder.decode(parameters.webSQLDatabaseDirectory))
     150        return false;
     151    if (!decoder.decode(parameters.webSQLDatabaseDirectoryExtensionHandle))
    152152        return false;
    153153    if (!decoder.decode(parameters.diskCacheDirectory))
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h

    r168605 r168999  
    6767    String applicationCacheDirectory;   
    6868    SandboxExtension::Handle applicationCacheDirectoryExtensionHandle;
    69     String databaseDirectory;
    70     SandboxExtension::Handle databaseDirectoryExtensionHandle;
     69    String webSQLDatabaseDirectory;
     70    SandboxExtension::Handle webSQLDatabaseDirectoryExtensionHandle;
    7171    String diskCacheDirectory;
    7272    SandboxExtension::Handle diskCacheDirectoryExtensionHandle;
  • trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp

    r168625 r168999  
    488488}
    489489
    490 void WKContextSetDatabaseDirectory(WKContextRef contextRef, WKStringRef databaseDirectory)
    491 {
    492     toImpl(contextRef)->setDatabaseDirectory(toImpl(databaseDirectory)->string());
    493 }
    494 
    495490WK_EXPORT void WKContextSetDiskCacheDirectory(WKContextRef contextRef, WKStringRef diskCacheDirectory)
    496491{
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.cpp

    r168625 r168999  
    3737}
    3838
     39WKStringRef WKContextConfigurationCopyIndexedDBDatabaseDirectory(WKContextConfigurationRef configuration)
     40{
     41    return toCopiedAPI(toImpl(configuration)->indexedDBDatabaseDirectory());
     42}
     43
     44void WKContextConfigurationSetIndexedDBDatabaseDirectory(WKContextConfigurationRef configuration, WKStringRef indexedDBDatabaseDirectory)
     45{
     46    toImpl(configuration)->setIndexedDBDatabaseDirectory(toImpl(indexedDBDatabaseDirectory)->string());
     47}
     48
    3949WKStringRef WKContextConfigurationCopyInjectedBundlePath(WKContextConfigurationRef configuration)
    4050{
     
    5666    toImpl(configuration)->setLocalStorageDirectory(toImpl(localStorageDirectory)->string());
    5767}
     68
     69WKStringRef WKContextConfigurationCopyWebSQLDatabaseDirectory(WKContextConfigurationRef configuration)
     70{
     71    return toCopiedAPI(toImpl(configuration)->webSQLDatabaseDirectory());
     72}
     73
     74void WKContextConfigurationSetWebSQLDatabaseDirectory(WKContextConfigurationRef configuration, WKStringRef webSQLDatabaseDirectory)
     75{
     76    toImpl(configuration)->setWebSQLDatabaseDirectory(toImpl(webSQLDatabaseDirectory)->string());
     77}
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.h

    r168625 r168999  
    3535WK_EXPORT WKContextConfigurationRef WKContextConfigurationCreate();
    3636
     37WK_EXPORT WKStringRef WKContextConfigurationCopyIndexedDBDatabaseDirectory(WKContextConfigurationRef configuration);
     38WK_EXPORT void WKContextConfigurationSetIndexedDBDatabaseDirectory(WKContextConfigurationRef configuration, WKStringRef indexedDBDatabaseDirectory);
     39
    3740WK_EXPORT WKStringRef WKContextConfigurationCopyInjectedBundlePath(WKContextConfigurationRef configuration);
    3841WK_EXPORT void WKContextConfigurationSetInjectedBundlePath(WKContextConfigurationRef configuration, WKStringRef injectedBundlePath);
     
    4043WK_EXPORT WKStringRef WKContextConfigurationCopyLocalStorageDirectory(WKContextConfigurationRef configuration);
    4144WK_EXPORT void WKContextConfigurationSetLocalStorageDirectory(WKContextConfigurationRef configuration, WKStringRef localStorageDirectory);
     45
     46WK_EXPORT WKStringRef WKContextConfigurationCopyWebSQLDatabaseDirectory(WKContextConfigurationRef configuration);
     47WK_EXPORT void WKContextConfigurationSetWebSQLDatabaseDirectory(WKContextConfigurationRef configuration, WKStringRef webSQLDatabaseDirectory);
    4248
    4349#ifdef __cplusplus
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h

    r168625 r168999  
    6464// we should really change these settings to be on WebPreferences and changeable at runtime.
    6565WK_EXPORT void WKContextSetApplicationCacheDirectory(WKContextRef context, WKStringRef applicationCacheDirectory);
    66 WK_EXPORT void WKContextSetDatabaseDirectory(WKContextRef context, WKStringRef databaseDirectory);
    6766WK_EXPORT void WKContextSetDiskCacheDirectory(WKContextRef context, WKStringRef diskCacheDirectory);
    6867WK_EXPORT void WKContextSetCookieStorageDirectory(WKContextRef context, WKStringRef cookieStorageDirectory);
  • trunk/Source/WebKit2/UIProcess/APIContextConfiguration.cpp

    r168625 r168999  
    4343    WebKit::WebContextConfiguration configuration;
    4444
     45    configuration.indexedDBDatabaseDirectory = m_indexedDBDatabaseDirectory;
    4546    configuration.injectedBundlePath = m_injectedBundlePath;
    4647    configuration.localStorageDirectory = m_localStorageDirectory;
     48    configuration.webSQLDatabaseDirectory = m_webSQLDatabaseDirectory;
    4749
    4850    WebKit::WebContext::applyPlatformSpecificConfigurationDefaults(configuration);
  • trunk/Source/WebKit2/UIProcess/APIContextConfiguration.h

    r168625 r168999  
    4444    virtual ~ContextConfiguration();
    4545
     46    String indexedDBDatabaseDirectory() const { return m_indexedDBDatabaseDirectory; }
     47    void setIndexedDBDatabaseDirectory(const String& indexedDBDatabaseDirectory) { m_indexedDBDatabaseDirectory = indexedDBDatabaseDirectory; }
     48
    4649    String injectedBundlePath() const { return m_injectedBundlePath; }
    4750    void setInjectedBundlePath(const String& injectedBundlePath) { m_injectedBundlePath = injectedBundlePath; }
     
    5053    void setLocalStorageDirectory(const String& localStorageDirectory) { m_localStorageDirectory = localStorageDirectory; }
    5154
     55    String webSQLDatabaseDirectory() const { return m_webSQLDatabaseDirectory; }
     56    void setWebSQLDatabaseDirectory(const String& webSQLDatabaseDirectory) { m_webSQLDatabaseDirectory = webSQLDatabaseDirectory; }
     57
    5258    WebKit::WebContextConfiguration webContextConfiguration() const;
    5359
     
    5561    ContextConfiguration();
    5662
     63    String m_indexedDBDatabaseDirectory;
    5764    String m_injectedBundlePath;
    5865    String m_localStorageDirectory;
     66    String m_webSQLDatabaseDirectory;
    5967};
    6068
  • trunk/Source/WebKit2/UIProcess/WebContext.cpp

    r168628 r168999  
    125125    if (!configuration.localStorageDirectory)
    126126        configuration.localStorageDirectory = platformDefaultLocalStorageDirectory();
     127
     128    if (!configuration.webSQLDatabaseDirectory)
     129        configuration.webSQLDatabaseDirectory = platformDefaultWebSQLDatabaseDirectory();
     130
     131    if (!configuration.indexedDBDatabaseDirectory)
     132        configuration.indexedDBDatabaseDirectory = platformDefaultIndexedDBDatabaseDirectory();
    127133}
    128134
     
    165171    , m_initialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain)
    166172#endif
     173    , m_webSQLDatabaseDirectory(std::move(configuration.webSQLDatabaseDirectory))
     174    , m_indexedDBDatabaseDirectory(std::move(configuration.indexedDBDatabaseDirectory))
    167175    , m_shouldUseTestingNetworkSession(false)
    168176    , m_processTerminationEnabled(true)
     
    450458    m_databaseProcess = DatabaseProcessProxy::create(this);
    451459
     460    ASSERT(!m_indexedDBDatabaseDirectory.isEmpty());
     461
    452462    DatabaseProcessCreationParameters parameters;
    453 
    454     // Indexed databases exist in a subdirectory of the "database directory path."
    455     // Currently, the top level of that directory contains entities related to WebSQL databases.
    456     // We should fix this, and move WebSQL into a subdirectory (https://bugs.webkit.org/show_bug.cgi?id=124807)
    457     // In the meantime, an entity name prefixed with three underscores will not conflict with any WebSQL entities.
    458     parameters.indexedDatabaseDirectory = pathByAppendingComponent(databaseDirectory(), "___IndexedDB");
     463    parameters.indexedDatabaseDirectory = m_indexedDBDatabaseDirectory;
     464
    459465    SandboxExtension::createHandleForReadWriteDirectory(parameters.indexedDatabaseDirectory, parameters.indexedDatabaseDirectoryExtensionHandle);
    460466
     
    566572        SandboxExtension::createHandleForReadWriteDirectory(parameters.applicationCacheDirectory, parameters.applicationCacheDirectoryExtensionHandle);
    567573
    568     parameters.databaseDirectory = databaseDirectory();
    569     if (!parameters.databaseDirectory.isEmpty())
    570         SandboxExtension::createHandleForReadWriteDirectory(parameters.databaseDirectory, parameters.databaseDirectoryExtensionHandle);
     574    parameters.webSQLDatabaseDirectory = m_webSQLDatabaseDirectory;
     575    if (!parameters.webSQLDatabaseDirectory.isEmpty())
     576        SandboxExtension::createHandleForReadWriteDirectory(parameters.webSQLDatabaseDirectory, parameters.webSQLDatabaseDirectoryExtensionHandle);
    571577
    572578    parameters.diskCacheDirectory = diskCacheDirectory();
     
    11251131}
    11261132
    1127 String WebContext::databaseDirectory() const
    1128 {
    1129     if (!m_overrideDatabaseDirectory.isEmpty())
    1130         return m_overrideDatabaseDirectory;
    1131 
    1132     return platformDefaultDatabaseDirectory();
    1133 }
    1134 
    11351133void WebContext::setIconDatabasePath(const String& path)
    11361134{
  • trunk/Source/WebKit2/UIProcess/WebContext.h

    r168625 r168999  
    9999    String injectedBundlePath;
    100100    String localStorageDirectory;
     101    String webSQLDatabaseDirectory;
     102    String indexedDBDatabaseDirectory;
    101103};
    102104
     
    244246
    245247    void setApplicationCacheDirectory(const String& dir) { m_overrideApplicationCacheDirectory = dir; }
    246     void setDatabaseDirectory(const String& dir) { m_overrideDatabaseDirectory = dir; }
    247248    void setIconDatabasePath(const String&);
    248249    String iconDatabasePath() const;
     
    410411    String platformDefaultApplicationCacheDirectory() const;
    411412
    412     String databaseDirectory() const;
    413     String platformDefaultDatabaseDirectory() const;
    414 
    415413    String platformDefaultIconDatabasePath() const;
    416414
    417415    static String platformDefaultLocalStorageDirectory();
     416    static String platformDefaultIndexedDBDatabaseDirectory();
     417    static String platformDefaultWebSQLDatabaseDirectory();
    418418
    419419    String diskCacheDirectory() const;
     
    515515
    516516    String m_overrideApplicationCacheDirectory;
    517     String m_overrideDatabaseDirectory;
    518517    String m_overrideIconDatabasePath;
    519518    String m_overrideDiskCacheDirectory;
    520519    String m_overrideCookieStorageDirectory;
     520
     521    String m_webSQLDatabaseDirectory;
     522    String m_indexedDBDatabaseDirectory;
    521523
    522524    bool m_shouldUseTestingNetworkSession;
  • trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm

    r168625 r168999  
    260260}
    261261
    262 String WebContext::platformDefaultDatabaseDirectory() const
     262String WebContext::platformDefaultWebSQLDatabaseDirectory()
    263263{
    264264    NSString *databasesDirectory = [[NSUserDefaults standardUserDefaults] objectForKey:WebDatabaseDirectoryDefaultsKey];
     
    266266        databasesDirectory = @"~/Library/WebKit/Databases";
    267267    return [databasesDirectory stringByStandardizingPath];
     268}
     269
     270String WebContext::platformDefaultIndexedDBDatabaseDirectory()
     271{
     272    // Indexed databases exist in a subdirectory of the "database directory path."
     273    // Currently, the top level of that directory contains entities related to WebSQL databases.
     274    // We should fix this, and move WebSQL into a subdirectory (https://bugs.webkit.org/show_bug.cgi?id=124807)
     275    // In the meantime, an entity name prefixed with three underscores will not conflict with any WebSQL entities.
     276    return pathByAppendingComponent(platformDefaultWebSQLDatabaseDirectory(), "___IndexedDB");
    268277}
    269278
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp

    r160464 r168999  
    5656void WebDatabaseManager::initialize(const WebProcessCreationParameters& parameters)
    5757{
    58     DatabaseManager::manager().initialize(parameters.databaseDirectory);
     58    DatabaseManager::manager().initialize(parameters.webSQLDatabaseDirectory);
    5959    DatabaseManager::manager().setClient(this);
    6060}
  • trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm

    r168984 r168999  
    162162#if ENABLE(SANDBOX_EXTENSIONS)
    163163    SandboxExtension::consumePermanently(parameters.uiProcessBundleResourcePathExtensionHandle);
    164     SandboxExtension::consumePermanently(parameters.databaseDirectoryExtensionHandle);
     164    SandboxExtension::consumePermanently(parameters.webSQLDatabaseDirectoryExtensionHandle);
    165165    SandboxExtension::consumePermanently(parameters.applicationCacheDirectoryExtensionHandle);
    166166    SandboxExtension::consumePermanently(parameters.diskCacheDirectoryExtensionHandle);
  • trunk/Tools/ChangeLog

    r168970 r168999  
     12014-05-17  Anders Carlsson  <andersca@apple.com>
     2
     3        Replace WKContextSetDatabaseDirectory with two WKContextConfiguration parameters
     4        https://bugs.webkit.org/show_bug.cgi?id=133033
     5        <rdar://problem/16830143>
     6
     7        Reviewed by Sam Weinig.
     8
     9        Set up the WebSQL and IndexedDB directories.
     10
     11        * WebKitTestRunner/TestController.cpp:
     12        (WTR::TestController::initialize):
     13
    1142014-05-16  Martin Hock  <mhock@apple.com>
    215
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r168961 r168999  
    336336        const char separator = '/';
    337337
     338        WKContextConfigurationSetIndexedDBDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "Databases" + separator + "IndexedDB").get());
    338339        WKContextConfigurationSetLocalStorageDirectory(configuration.get(), toWK(temporaryFolder + separator + "LocalStorage").get());
     340        WKContextConfigurationSetWebSQLDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "Databases" + separator + "WebSQL").get());
    339341    }
    340342
     
    354356        // FIXME: These should be migrated to WKContextConfigurationRef.
    355357        WKContextSetApplicationCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "ApplicationCache").get());
    356         WKContextSetDatabaseDirectory(m_context.get(), toWK(temporaryFolder + separator + "Databases").get());
    357358        WKContextSetDiskCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cache").get());
    358359        WKContextSetCookieStorageDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cookies").get());
Note: See TracChangeset for help on using the changeset viewer.