Changeset 81000 in webkit


Ignore:
Timestamp:
Mar 13, 2011 10:47:55 PM (13 years ago)
Author:
beidson@apple.com
Message:

<rdar://problem/9127270> and https://bugs.webkit.org/show_bug.cgi?id=56282

Reviewed by Sam Weinig.

Pass the path along with creation parameters:

  • Shared/WebProcessCreationParameters.cpp:

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

  • Shared/WebProcessCreationParameters.h:

Add SPI to set the path:

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetLocalStorageDirectory):

  • UIProcess/API/C/WKContextPrivate.h:

Pass the path along in the process creation parameters:

  • UIProcess/WebContext.cpp:

(WebKit::WebContext::ensureWebProcess):
(WebKit::WebContext::localStorageDirectory):

  • UIProcess/WebContext.h:

(WebKit::WebContext::setLocalStorageDirectory):

  • UIProcess/gtk/WebContextGtk.cpp:

(WebKit::WebContext::platformDefaultLocalStorageDirectory):

  • UIProcess/mac/WebContextMac.mm:

(WebKit::WebContext::platformDefaultLocalStorageDirectory):

  • UIProcess/qt/WebContextQt.cpp:

(WebKit::WebContext::platformDefaultLocalStorageDirectory):

  • UIProcess/win/WebContextWin.cpp:

(WebKit::WebContext::platformDefaultLocalStorageDirectory):

Include the path with settings updates, because WebCore needs it set on the Settings object:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

  • WebProcess/WebProcess.h:

(WebKit::WebProcess::localStorageDirectory):

Sandboxing stuff:

  • WebProcess/com.apple.WebProcess.sb:
  • WebProcess/mac/WebProcessMac.mm:

(WebKit::initializeSandbox):

Location:
trunk/Source/WebKit2
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r80999 r81000  
     12011-03-13  Brady Eidson  <beidson@apple.com>
     2
     3        Reviewed by Sam Weinig.
     4
     5        <rdar://problem/9127270> and https://bugs.webkit.org/show_bug.cgi?id=56282
     6
     7        Pass the path along with creation parameters:
     8        * Shared/WebProcessCreationParameters.cpp:
     9        (WebKit::WebProcessCreationParameters::encode):
     10        (WebKit::WebProcessCreationParameters::decode):
     11        * Shared/WebProcessCreationParameters.h:
     12
     13        Add SPI to set the path:
     14        * UIProcess/API/C/WKContext.cpp:
     15        (WKContextSetLocalStorageDirectory):
     16        * UIProcess/API/C/WKContextPrivate.h:
     17
     18        Pass the path along in the process creation parameters:
     19        * UIProcess/WebContext.cpp:
     20        (WebKit::WebContext::ensureWebProcess):
     21        (WebKit::WebContext::localStorageDirectory):
     22        * UIProcess/WebContext.h:
     23        (WebKit::WebContext::setLocalStorageDirectory):
     24
     25        * UIProcess/gtk/WebContextGtk.cpp:
     26        (WebKit::WebContext::platformDefaultLocalStorageDirectory):
     27        * UIProcess/mac/WebContextMac.mm:
     28        (WebKit::WebContext::platformDefaultLocalStorageDirectory):
     29        * UIProcess/qt/WebContextQt.cpp:
     30        (WebKit::WebContext::platformDefaultLocalStorageDirectory):
     31        * UIProcess/win/WebContextWin.cpp:
     32        (WebKit::WebContext::platformDefaultLocalStorageDirectory):
     33
     34        Include the path with settings updates, because WebCore needs it set on the Settings object:
     35        * WebProcess/WebPage/WebPage.cpp:
     36        (WebKit::WebPage::updatePreferences):
     37
     38        * WebProcess/WebProcess.cpp:
     39        (WebKit::WebProcess::initializeWebProcess):
     40        * WebProcess/WebProcess.h:
     41        (WebKit::WebProcess::localStorageDirectory):
     42
     43        Sandboxing stuff:
     44        * WebProcess/com.apple.WebProcess.sb:
     45        * WebProcess/mac/WebProcessMac.mm:
     46        (WebKit::initializeSandbox):
     47
    1482011-03-12  Jer Noble  <jer.noble@apple.com>
    249
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp

    r80281 r81000  
    5252    encoder->encode(applicationCacheDirectory);
    5353    encoder->encode(databaseDirectory);
     54    encoder->encode(localStorageDirectory);
    5455    encoder->encode(urlSchemesRegistererdAsEmptyDocument);
    5556    encoder->encode(urlSchemesRegisteredAsSecure);
     
    9293        return false;
    9394    if (!decoder->decode(parameters.databaseDirectory))
     95        return false;
     96    if (!decoder->decode(parameters.localStorageDirectory))
    9497        return false;
    9598    if (!decoder->decode(parameters.urlSchemesRegistererdAsEmptyDocument))
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h

    r80180 r81000  
    5555    String applicationCacheDirectory;
    5656    String databaseDirectory;
     57    String localStorageDirectory;
    5758    Vector<String> urlSchemesRegistererdAsEmptyDocument;
    5859    Vector<String> urlSchemesRegisteredAsSecure;
  • trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp

    r80753 r81000  
    208208    toImpl(contextRef)->setDatabaseDirectory(toImpl(databaseDirectory)->string());
    209209}
     210
     211void WKContextSetLocalStorageDirectory(WKContextRef contextRef, WKStringRef localStorageDirectory)
     212{
     213    toImpl(contextRef)->setLocalStorageDirectory(toImpl(localStorageDirectory)->string());
     214}
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h

    r76559 r81000  
    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.
     57// FIXME: These functions are only effective if called before the Web process is launched. But
     58// we should really change these settings to be on WebPreferences and changeable at runtime.
    5959WK_EXPORT void WKContextSetDatabaseDirectory(WKContextRef context, WKStringRef databaseDirectory);
     60WK_EXPORT void WKContextSetLocalStorageDirectory(WKContextRef context, WKStringRef localStorageDirectory);
    6061
    6162#ifdef __cplusplus
  • trunk/Source/WebKit2/UIProcess/WebContext.cpp

    r80884 r81000  
    223223    parameters.applicationCacheDirectory = applicationCacheDirectory();
    224224    parameters.databaseDirectory = databaseDirectory();
     225    parameters.localStorageDirectory = localStorageDirectory();
    225226    parameters.clearResourceCaches = m_clearResourceCachesForNewWebProcess;
    226227    parameters.clearApplicationCache = m_clearApplicationCacheForNewWebProcess;
     
    730731}
    731732
     733String WebContext::localStorageDirectory() const
     734{
     735    if (!m_overrideLocalStorageDirectory.isEmpty())
     736        return m_overrideLocalStorageDirectory;
     737
     738    return platformDefaultLocalStorageDirectory();
     739}
     740
    732741} // namespace WebKit
  • trunk/Source/WebKit2/UIProcess/WebContext.h

    r80753 r81000  
    154154
    155155    void setDatabaseDirectory(const String& dir) { m_overrideDatabaseDirectory = dir; }
     156    void setLocalStorageDirectory(const String& dir) { m_overrideLocalStorageDirectory = dir; }
    156157
    157158    void ensureWebProcess();
     
    190191    String platformDefaultDatabaseDirectory() const;
    191192
     193    String localStorageDirectory() const;
     194    String platformDefaultLocalStorageDirectory() const;
     195   
    192196    ProcessModel m_processModel;
    193197   
     
    238242
    239243    String m_overrideDatabaseDirectory;
     244    String m_overrideLocalStorageDirectory;
    240245};
    241246
  • trunk/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp

    r79711 r81000  
    4747}
    4848
     49String WebContext::platformDefaultLocalStorageDirectory() const
     50{
     51    return WTF::String::fromUTF8(g_build_filename(g_get_user_data_dir(), "webkit", "localstorage", NULL));
     52}
     53
    4954} // namespace WebKit
  • trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm

    r80381 r81000  
    3636NSString *WebDatabaseDirectoryDefaultsKey = @"WebDatabaseDirectory";
    3737NSString *WebKitLocalCacheDefaultsKey = @"WebKitLocalCache";
     38NSString *WebStorageDirectoryDefaultsKey = @"WebKitLocalStorageDatabasePathPreferenceKey";
    3839
    3940namespace WebKit {
     
    108109}
    109110
     111String WebContext::platformDefaultLocalStorageDirectory() const
     112{
     113    NSString *localStorageDirectory = [[NSUserDefaults standardUserDefaults] objectForKey:WebStorageDirectoryDefaultsKey];
     114    if (!localStorageDirectory || ![localStorageDirectory isKindOfClass:[NSString class]])
     115        localStorageDirectory = @"~/Library/WebKit/LocalStorage";
     116    return [localStorageDirectory stringByStandardizingPath];
     117}
     118
    110119} // namespace WebKit
    111120
  • trunk/Source/WebKit2/UIProcess/qt/WebContextQt.cpp

    r76916 r81000  
    5454}
    5555
     56String WebContext::platformDefaultLocalStorageDirectory() const
     57{
     58    // FIXME: Implement.
     59    return "";
     60}
     61
    5662} // namespace WebKit
  • trunk/Source/WebKit2/UIProcess/win/WebContextWin.cpp

    r80381 r81000  
    8282}
    8383
     84String WebContext::platformDefaultLocalStorageDirectory() const
     85{
     86    return WebCore::pathByAppendingComponent(WebCore::localUserSpecificStorageDirectory(), "LocalStorage");
     87}
     88
    8489} // namespace WebKit
    8590
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r80948 r81000  
    13931393#endif
    13941394
     1395#if ENABLE(DOM_STORAGE)
     1396    settings->setLocalStorageDatabasePath(WebProcess::shared().localStorageDirectory());
     1397#endif
     1398
    13951399    platformPreferencesDidChange(store);
    13961400}
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r80789 r81000  
    6363#include <WebCore/SecurityOrigin.h>
    6464#include <WebCore/Settings.h>
     65#include <WebCore/StorageTracker.h>
    6566#include <wtf/PassRefPtr.h>
    6667#include <wtf/RandomNumber.h>
     
    176177#endif
    177178
     179#if ENABLE(DOM_STORAGE)
     180    StorageTracker::initializeTracker(parameters.localStorageDirectory);
     181    m_localStorageDirectory = parameters.localStorageDirectory;
     182#endif
     183   
    178184#if ENABLE(OFFLINE_WEB_APPLICATIONS)
    179185    if (!parameters.applicationCacheDirectory.isEmpty())
  • trunk/Source/WebKit2/WebProcess/WebProcess.h

    r80789 r81000  
    120120
    121121    void clearResourceCaches(uint32_t cachesToClear = AllResourceCaches);
     122   
     123    const String& localStorageDirectory() const { return m_localStorageDirectory; }
    122124
    123125private:
     
    205207    TextCheckerState m_textCheckerState;
    206208    WebGeolocationManager m_geolocationManager;
     209   
     210    String m_localStorageDirectory;
    207211};
    208212
  • trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb

    r80593 r81000  
    7474    (allow file* (subpath (param "WEBKIT_DATABASE_DIR"))))
    7575
     76;; LocalStorage dir
     77(if (positive? (string-length (param "WEBKIT_LOCALSTORAGE_DIR")))
     78    (allow file* (subpath (param "WEBKIT_LOCALSTORAGE_DIR"))))
     79   
    7680;; The NSURLCache directory.
    7781(if (positive? (string-length (param "NSURL_CACHE_DIR")))
  • trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm

    r80789 r81000  
    157157    appendSandboxParameterConfPath(sandboxParameters, "DARWIN_USER_CACHE_DIR", _CS_DARWIN_USER_CACHE_DIR);
    158158    appendSandboxParameterPath(sandboxParameters, "WEBKIT_DATABASE_DIR", [(NSString *)parameters.databaseDirectory fileSystemRepresentation]);
     159    appendSandboxParameterPath(sandboxParameters, "WEBKIT_LOCALSTORAGE_DIR", [(NSString *)parameters.localStorageDirectory fileSystemRepresentation]);
    159160    appendSandboxParameterPath(sandboxParameters, "NSURL_CACHE_DIR", parameters.nsURLCachePath.data());
    160161    appendSandboxParameterPath(sandboxParameters, "UI_PROCESS_BUNDLE_RESOURCE_DIR", parameters.uiProcessBundleResourcePath.data());
Note: See TracChangeset for help on using the changeset viewer.