Changeset 76559 in webkit


Ignore:
Timestamp:
Jan 24, 2011 6:08:52 PM (13 years ago)
Author:
mjs@apple.com
Message:

2011-01-24 Maciej Stachowiak <mjs@apple.com>

Reviewed by Anders Carlsson.

Use designated temp directory for the database for WebKit2
https://bugs.webkit.org/show_bug.cgi?id=53052


Adopt the new WK2 API for this.

  • WebKitTestRunner/TestController.cpp: (WTR::TestController::libraryPathForTesting): (WTR::TestController::initialize):
  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/mac/TestControllerMac.mm: (WTR::TestController::platformLibraryPathForTesting):
  • WebKitTestRunner/qt/TestControllerQt.cpp: (WTR::TestController::platformLibraryPathForTesting):
  • WebKitTestRunner/win/TestControllerWin.cpp: (WTR::TestController::platformLibraryPathForTesting):

2011-01-24 Maciej Stachowiak <mjs@apple.com>

Reviewed by Anders Carlsson.

Use designated temp directory for the database for WebKit2
https://bugs.webkit.org/show_bug.cgi?id=53052


Add the API necessary to support this. Database path is now
determined on the UI process side and passed to the Web process.
Reviewed by Anders Carlsson.

  • GNUmakefile.am:
  • Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): (WebKit::WebProcessCreationParameters::decode):
  • Shared/WebProcessCreationParameters.h:
  • UIProcess/API/C/WKContext.cpp: (WKContextSetDatabaseDirectory):
  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/WebContext.cpp: (WebKit::WebContext::ensureWebProcess): (WebKit::WebContext::databaseDirectory):
  • UIProcess/WebContext.h: (WebKit::WebContext::setDatabaseDirectory):
  • UIProcess/mac/WebContextMac.mm: (WebKit::WebContext::platformDefaultDatabaseDirectory):
  • UIProcess/qt/WebContextQt.cpp: (WebKit::WebContext::platformDefaultDatabaseDirectory):
  • UIProcess/win/WebContextWin.cpp: (WebKit::WebContext::platformDefaultDatabaseDirectory):
  • WebKit2.pro:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebDatabaseManager.cpp: (WebKit::WebDatabaseManager::initialize): (WebKit::WebDatabaseManager::WebDatabaseManager):
  • WebProcess/WebCoreSupport/WebDatabaseManager.h:
  • WebProcess/WebCoreSupport/gtk/WebDatabaseManagerGtk.cpp: Removed.
  • WebProcess/WebCoreSupport/mac/WebDatabaseManagerMac.mm: Removed.
  • WebProcess/WebCoreSupport/qt/WebDatabaseManagerQt.cpp: Removed.
  • WebProcess/WebCoreSupport/win/WebDatabaseManagerWin.cpp: Removed.
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::WebProcess): (WebKit::WebProcess::initializeWebProcess):
  • WebProcess/com.apple.WebProcess.sb:
  • WebProcess/mac/WebProcessMac.mm: (WebKit::initializeSandbox):
  • win/WebKit2.vcproj:
Location:
trunk
Files:
4 deleted
25 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r76551 r76559  
     12011-01-24  Maciej Stachowiak  <mjs@apple.com>
     2
     3        Reviewed by Anders Carlsson.
     4
     5        Use designated temp directory for the database for WebKit2
     6        https://bugs.webkit.org/show_bug.cgi?id=53052
     7       
     8        Add the API necessary to support this. Database path is now
     9        determined on the UI process side and passed to the Web process.
     10        Reviewed by Anders Carlsson.
     11
     12        * GNUmakefile.am:
     13        * Shared/WebProcessCreationParameters.cpp:
     14        (WebKit::WebProcessCreationParameters::encode):
     15        (WebKit::WebProcessCreationParameters::decode):
     16        * Shared/WebProcessCreationParameters.h:
     17        * UIProcess/API/C/WKContext.cpp:
     18        (WKContextSetDatabaseDirectory):
     19        * UIProcess/API/C/WKContextPrivate.h:
     20        * UIProcess/WebContext.cpp:
     21        (WebKit::WebContext::ensureWebProcess):
     22        (WebKit::WebContext::databaseDirectory):
     23        * UIProcess/WebContext.h:
     24        (WebKit::WebContext::setDatabaseDirectory):
     25        * UIProcess/mac/WebContextMac.mm:
     26        (WebKit::WebContext::platformDefaultDatabaseDirectory):
     27        * UIProcess/qt/WebContextQt.cpp:
     28        (WebKit::WebContext::platformDefaultDatabaseDirectory):
     29        * UIProcess/win/WebContextWin.cpp:
     30        (WebKit::WebContext::platformDefaultDatabaseDirectory):
     31        * WebKit2.pro:
     32        * WebKit2.xcodeproj/project.pbxproj:
     33        * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
     34        (WebKit::WebDatabaseManager::initialize):
     35        (WebKit::WebDatabaseManager::WebDatabaseManager):
     36        * WebProcess/WebCoreSupport/WebDatabaseManager.h:
     37        * WebProcess/WebCoreSupport/gtk/WebDatabaseManagerGtk.cpp: Removed.
     38        * WebProcess/WebCoreSupport/mac/WebDatabaseManagerMac.mm: Removed.
     39        * WebProcess/WebCoreSupport/qt/WebDatabaseManagerQt.cpp: Removed.
     40        * WebProcess/WebCoreSupport/win/WebDatabaseManagerWin.cpp: Removed.
     41        * WebProcess/WebProcess.cpp:
     42        (WebKit::WebProcess::WebProcess):
     43        (WebKit::WebProcess::initializeWebProcess):
     44        * WebProcess/com.apple.WebProcess.sb:
     45        * WebProcess/mac/WebProcessMac.mm:
     46        (WebKit::initializeSandbox):
     47        * win/WebKit2.vcproj:
     48
    1492011-01-24  Brent Fulgham  <bfulgham@webkit.org>
    250
  • trunk/Source/WebKit2/GNUmakefile.am

    r75979 r76559  
    324324        Source/WebKit2/UIProcess/GenericCallback.h \
    325325        Source/WebKit2/UIProcess/gtk/TextCheckerGtk.cpp \
     326        Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp \
    326327        Source/WebKit2/UIProcess/gtk/WebInspectorGtk.cpp \
    327328        Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp \
     
    505506        Source/WebKit2/WebProcess/Plugins/PluginView.h \
    506507        Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebContextMenuClientGtk.cpp \
    507         Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebDatabaseManagerGtk.cpp \
    508508        Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebFrameNetworkingContext.h \
    509509        Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebPopupMenuGtk.cpp \
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp

    r76034 r76559  
    4747    encoder->encode(injectedBundlePathExtensionHandle);
    4848    encoder->encode(applicationCacheDirectory);
     49    encoder->encode(databaseDirectory);
    4950    encoder->encode(urlSchemesRegistererdAsEmptyDocument);
    5051    encoder->encode(urlSchemesRegisteredAsSecure);
     
    7677        return false;
    7778    if (!decoder->decode(parameters.applicationCacheDirectory))
     79        return false;
     80    if (!decoder->decode(parameters.databaseDirectory))
    7881        return false;
    7982    if (!decoder->decode(parameters.urlSchemesRegistererdAsEmptyDocument))
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h

    r76034 r76559  
    5454
    5555    String applicationCacheDirectory;
     56    String databaseDirectory;
    5657    Vector<String> urlSchemesRegistererdAsEmptyDocument;
    5758    Vector<String> urlSchemesRegisteredAsSecure;
  • trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp

    r75395 r76559  
    177177    toImpl(contextRef)->stopMemorySampler();
    178178}
     179
     180void WKContextSetDatabaseDirectory(WKContextRef contextRef, WKStringRef databaseDirectory)
     181{
     182    toImpl(contextRef)->setDatabaseDirectory(toImpl(databaseDirectory)->string());
     183}
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h

    r74283 r76559  
    5555WK_EXPORT void WKContextSetDomainRelaxationForbiddenForURLScheme(WKContextRef context, WKStringRef urlScheme);
    5656
     57// FIXME: This function is only effective if called before the Web process is launched. But
     58// we should really change this setting to be on WebPreferences and changeable at runtime.
     59WK_EXPORT void WKContextSetDatabaseDirectory(WKContextRef context, WKStringRef databaseDirectory);
     60
    5761#ifdef __cplusplus
    5862}
  • trunk/Source/WebKit2/UIProcess/WebContext.cpp

    r76163 r76559  
    177177    parameters.languageCode = defaultLanguage();
    178178    parameters.applicationCacheDirectory = applicationCacheDirectory();
     179    parameters.databaseDirectory = databaseDirectory();
    179180    parameters.clearResourceCaches = m_clearResourceCachesForNewWebProcess;
    180181    parameters.clearApplicationCache = m_clearApplicationCacheForNewWebProcess;
     
    603604}
    604605
     606String WebContext::databaseDirectory() const
     607{
     608    if (!m_overrideDatabaseDirectory.isEmpty())
     609        return m_overrideDatabaseDirectory;
     610
     611    return platformDefaultDatabaseDirectory();
     612}
     613
    605614} // namespace WebKit
  • trunk/Source/WebKit2/UIProcess/WebContext.h

    r76163 r76559  
    138138    static Statistics& statistics();
    139139
     140    void setDatabaseDirectory(const String& dir) { m_overrideDatabaseDirectory = dir; }
     141
    140142private:
    141143    WebContext(ProcessModel, const String& injectedBundlePath);
     
    162164    static void languageChanged(void* context);
    163165    void languageChanged();
     166
     167    String databaseDirectory() const;
     168    String platformDefaultDatabaseDirectory() const;
    164169
    165170    ProcessModel m_processModel;
     
    204209    bool m_shouldPaintNativeControls;
    205210#endif
     211
     212    String m_overrideDatabaseDirectory;
    206213};
    207214
  • trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm

    r76418 r76559  
    9191}
    9292
     93String WebContext::platformDefaultDatabaseDirectory() const
     94{
     95    return [@"~/Library/WebKit/Databases" stringByStandardizingPath];
     96}
     97
    9398} // namespace WebKit
    9499
  • trunk/Source/WebKit2/UIProcess/qt/WebContextQt.cpp

    r76507 r76559  
    4747}
    4848
     49String WebContext::platformDefaultDatabaseDirectory() const
     50{
     51    // FIXME: Implement.
     52    return "";
     53}
     54
    4955} // namespace WebKit
  • trunk/Source/WebKit2/UIProcess/win/WebContextWin.cpp

    r69037 r76559  
    5353}
    5454
     55String WebContext::platformDefaultDatabaseDirectory() const
     56{
     57    return WebCore::pathByAppendingComponent(WebCore::localUserSpecificStorageDirectory(), "Databases");
     58}
     59
    5560} // namespace WebKit
    5661
  • trunk/Source/WebKit2/WebKit2.pro

    r76507 r76559  
    664664    WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp \
    665665    WebProcess/WebCoreSupport/qt/WebContextMenuClientQt.cpp \
    666     WebProcess/WebCoreSupport/qt/WebDatabaseManagerQt.cpp \
    667666    WebProcess/WebCoreSupport/qt/WebErrorsQt.cpp \
    668667    WebProcess/WebCoreSupport/qt/WebFrameNetworkingContext.cpp \
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r76470 r76559  
    695695                F634445D12A885E9000612D8 /* WKSecurityOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = F634445B12A885E9000612D8 /* WKSecurityOrigin.h */; settings = {ATTRIBUTES = (Public, ); }; };
    696696                F67DD7BA125E40D9007BDCB8 /* WKSerializedScriptValuePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F67DD7B9125E40D9007BDCB8 /* WKSerializedScriptValuePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    697                 F6A25FD912ADC6BD00DC40CC /* WebDatabaseManagerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6A25FD812ADC6BD00DC40CC /* WebDatabaseManagerMac.mm */; };
    698697                F6A25FDC12ADC6CC00DC40CC /* WebDatabaseManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6A25FDA12ADC6CC00DC40CC /* WebDatabaseManager.cpp */; };
    699698                F6A25FDD12ADC6CC00DC40CC /* WebDatabaseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F6A25FDB12ADC6CC00DC40CC /* WebDatabaseManager.h */; };
     
    14581457                F634445B12A885E9000612D8 /* WKSecurityOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSecurityOrigin.h; sourceTree = "<group>"; };
    14591458                F67DD7B9125E40D9007BDCB8 /* WKSerializedScriptValuePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSerializedScriptValuePrivate.h; sourceTree = "<group>"; };
    1460                 F6A25FD812ADC6BD00DC40CC /* WebDatabaseManagerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDatabaseManagerMac.mm; sourceTree = "<group>"; };
    14611459                F6A25FDA12ADC6CC00DC40CC /* WebDatabaseManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebDatabaseManager.cpp; sourceTree = "<group>"; };
    14621460                F6A25FDB12ADC6CC00DC40CC /* WebDatabaseManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseManager.h; sourceTree = "<group>"; };
     
    22802278                                C554FFA212E4E8EA002F22C0 /* WebDragClientMac.mm */,
    22812279                                51021E9B12B16788005C033C /* WebContextMenuClientMac.mm */,
    2282                                 F6A25FD812ADC6BD00DC40CC /* WebDatabaseManagerMac.mm */,
    22832280                                C5237F5F12441CA300780472 /* WebEditorClientMac.mm */,
    22842281                                BC111ADF112F5BC200337BAB /* WebErrorsMac.mm */,
     
    34823479                                512F58FB12A88A5400629530 /* WKProtectionSpace.cpp in Sources */,
    34833480                                F634445C12A885E9000612D8 /* WKSecurityOrigin.cpp in Sources */,
    3484                                 F6A25FD912ADC6BD00DC40CC /* WebDatabaseManagerMac.mm in Sources */,
    34853481                                F6A25FDC12ADC6CC00DC40CC /* WebDatabaseManager.cpp in Sources */,
    34863482                                51021E9C12B16788005C033C /* WebContextMenuClientMac.mm in Sources */,
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp

    r74693 r76559  
    4646}
    4747
     48void WebDatabaseManager::initialize(const String& databaseDirectory)
     49{
     50    DatabaseTracker::initializeTracker(databaseDirectory);
     51}
     52
    4853WebDatabaseManager::WebDatabaseManager()
    4954{
    50     DatabaseTracker::initializeTracker(databaseDirectory());
    5155    DatabaseTracker::tracker().setClient(this);
    5256}
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h

    r74693 r76559  
    4444public:
    4545    static WebDatabaseManager& shared();
     46    static void initialize(const String& databaseDirectory);
    4647
    4748    void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
     
    6465    virtual void dispatchDidModifyOrigin(WebCore::SecurityOrigin*);
    6566    virtual void dispatchDidModifyDatabase(WebCore::SecurityOrigin*, const String& databaseIdentifier);
    66 
    67     String databaseDirectory() const;
    6867};
    6968
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r75857 r76559  
    120120    WebPlatformStrategies::initialize();
    121121#endif // USE(PLATFORM_STRATEGIES)
    122 
    123 #if ENABLE(DATABASE)
    124     // Make sure the WebDatabaseManager is initialized so that the Database directory is set.
    125     WebDatabaseManager::shared();
    126 #endif
    127122}
    128123
     
    159154        }
    160155    }
     156
     157#if ENABLE(DATABASE)
     158    // Make sure the WebDatabaseManager is initialized so that the Database directory is set.
     159    WebDatabaseManager::initialize(parameters.databaseDirectory);
     160#endif
    161161
    162162#if ENABLE(OFFLINE_WEB_APPLICATIONS)
  • trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb

    r76391 r76559  
    5656(if (positive? (string-length (param "DARWIN_USER_TEMP_DIR")))
    5757    (allow file* (subpath (param "DARWIN_USER_TEMP_DIR"))))
     58
     59;; Database dir
     60(if (positive? (string-length (param "WEBKIT_DATABASE_DIR")))
     61    (allow file* (subpath (param "WEBKIT_DATABASE_DIR"))))
    5862
    5963;; The NSURLCache directory.
  • trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm

    r76418 r76559  
    136136        "DARWIN_USER_TEMP_DIR", (const char*)tmpRealPath,
    137137        "DARWIN_USER_CACHE_DIR", (const char*)cacheRealPath,
     138        "WEBKIT_DATABASE_DIR", (const char*)parameters.databaseDirectory.data(),
    138139        "NSURL_CACHE_DIR", (const char*)parameters.nsURLCachePath.data(),
    139140        "UI_PROCESS_BUNDLE_RESOURCE_DIR", (const char*)parameters.uiProcessBundleResourcePath.data(),
  • trunk/Source/WebKit2/win/WebKit2.vcproj

    r76551 r76559  
    14021402                                        </File>
    14031403                                        <File
    1404                                                 RelativePath="..\WebProcess\WebCoreSupport\win\WebDatabaseManagerWin.cpp"
    1405                                                 >
    1406                                         </File>
    1407                                         <File
    14081404                                                RelativePath="..\WebProcess\WebCoreSupport\win\WebErrorsWin.cpp"
    14091405                                                >
  • trunk/Tools/ChangeLog

    r76554 r76559  
     12011-01-24  Maciej Stachowiak  <mjs@apple.com>
     2
     3        Reviewed by Anders Carlsson.
     4
     5        Use designated temp directory for the database for WebKit2
     6        https://bugs.webkit.org/show_bug.cgi?id=53052
     7       
     8        Adopt the new WK2 API for this.
     9
     10        * WebKitTestRunner/TestController.cpp:
     11        (WTR::TestController::libraryPathForTesting):
     12        (WTR::TestController::initialize):
     13        * WebKitTestRunner/TestController.h:
     14        * WebKitTestRunner/mac/TestControllerMac.mm:
     15        (WTR::TestController::platformLibraryPathForTesting):
     16        * WebKitTestRunner/qt/TestControllerQt.cpp:
     17        (WTR::TestController::platformLibraryPathForTesting):
     18        * WebKitTestRunner/win/TestControllerWin.cpp:
     19        (WTR::TestController::platformLibraryPathForTesting):
     20
    1212011-01-24  Lucas Forschler  <lforschler@apple.com>
    222
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r76361 r76559  
    3333#include <WebKit2/WKContextPrivate.h>
    3434#include <WebKit2/WKPreferencesPrivate.h>
     35#include <WebKit2/WKRetainPtr.h>
    3536#include <wtf/PassOwnPtr.h>
    3637
     
    165166}
    166167
     168const char* TestController::libraryPathForTesting()
     169{
     170    // FIXME: This may not be sufficient to prevent interactions/crashes
     171    // when running more than one copy of DumpRenderTree.
     172    // See https://bugs.webkit.org/show_bug.cgi?id=10906
     173    char* dumpRenderTreeTemp = getenv("DUMPRENDERTREE_TEMP");
     174    if (dumpRenderTreeTemp)
     175        return dumpRenderTreeTemp;
     176    return platformLibraryPathForTesting();
     177}
     178
     179
    167180void TestController::initialize(int argc, const char* argv[])
    168181{
     
    220233
    221234    m_context.adopt(WKContextCreateWithInjectedBundlePath(injectedBundlePath()));
     235
     236    const char* path = libraryPathForTesting();
     237    if (path) {
     238        Vector<char> databaseDirectory(strlen(path) + strlen("/Databases"));
     239        sprintf(databaseDirectory.data(), "%s%s", path, "/Databases");
     240        WKRetainPtr<WKStringRef> databaseDirectoryWK(AdoptWK, WKStringCreateWithUTF8CString(databaseDirectory.data()));
     241        WKContextSetDatabaseDirectory(m_context.get(), databaseDirectoryWK.get());
     242    }
     243
    222244    platformInitializeContext();
    223245
  • trunk/Tools/WebKitTestRunner/TestController.h

    r76361 r76559  
    9191    static void runModal(PlatformWebView*);
    9292
     93    static const char* libraryPathForTesting();
     94    static const char* platformLibraryPathForTesting();
     95
    9396    OwnPtr<TestInvocation> m_currentInvocation;
    9497
  • trunk/Tools/WebKitTestRunner/mac/TestControllerMac.mm

    r76361 r76559  
    7272}
    7373
     74const char* TestController::platformLibraryPathForTesting()
     75{
     76    return [[@"~/Library/Application Support/DumpRenderTree" stringByExpandingTildeInPath] UTF8String];
     77}
     78
    7479} // namespace WTR
  • trunk/Tools/WebKitTestRunner/qt/TestControllerQt.cpp

    r76361 r76559  
    134134}
    135135
     136const char* TestController::platformLibraryPathForTesting()
     137{
     138    return 0;
     139}
     140
    136141#include "TestControllerQt.moc"
    137142
  • trunk/Tools/WebKitTestRunner/win/TestControllerWin.cpp

    r76361 r76559  
    158158}
    159159
     160const char* TestController::platformLibraryPathForTesting()
     161{
     162    return 0;
     163}
     164
    160165} // namespace WTR
Note: See TracChangeset for help on using the changeset viewer.