Changeset 86967 in webkit


Ignore:
Timestamp:
May 20, 2011 11:18:37 AM (13 years ago)
Author:
weinig@apple.com
Message:

2011-05-20 Sam Weinig <sam@webkit.org>

Reviewed by Anders Carlsson.

WebKit2: Media files cannot be saved in the Application Cache due to a sandbox violation
https://bugs.webkit.org/show_bug.cgi?id=61199

Instead of using a sandbox extension to give permission to the application cache directory,
initialize the sandbox with access to it like we do for other databases.

  • Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): (WebKit::WebProcessCreationParameters::decode):
  • Shared/WebProcessCreationParameters.h:
  • UIProcess/WebContext.cpp: (WebKit::WebContext::ensureWebProcess):
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess):
  • WebProcess/com.apple.WebProcess.sb:
  • WebProcess/mac/WebProcessMac.mm: (WebKit::initializeSandbox):
Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r86956 r86967  
     12011-05-20  Sam Weinig  <sam@webkit.org>
     2
     3        Reviewed by Anders Carlsson.
     4
     5        WebKit2: Media files cannot be saved in the Application Cache due to a sandbox violation
     6        https://bugs.webkit.org/show_bug.cgi?id=61199
     7
     8        Instead of using a sandbox extension to give permission to the application cache directory,
     9        initialize the sandbox with access to it like we do for other databases.
     10
     11        * Shared/WebProcessCreationParameters.cpp:
     12        (WebKit::WebProcessCreationParameters::encode):
     13        (WebKit::WebProcessCreationParameters::decode):
     14        * Shared/WebProcessCreationParameters.h:
     15        * UIProcess/WebContext.cpp:
     16        (WebKit::WebContext::ensureWebProcess):
     17        * WebProcess/WebProcess.cpp:
     18        (WebKit::WebProcess::initializeWebProcess):
     19        * WebProcess/com.apple.WebProcess.sb:
     20        * WebProcess/mac/WebProcessMac.mm:
     21        (WebKit::initializeSandbox):
     22
    1232011-05-20  Jer Noble  <jer.noble@apple.com>
    224
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp

    r86369 r86967  
    5252    encoder->encode(injectedBundlePathExtensionHandle);
    5353    encoder->encode(applicationCacheDirectory);
    54     encoder->encode(applicationCacheDirectoryExtensionHandle);
    5554    encoder->encode(databaseDirectory);
    5655    encoder->encode(localStorageDirectory);
     
    9998        return false;
    10099    if (!decoder->decode(parameters.applicationCacheDirectory))
    101         return false;
    102     if (!decoder->decode(parameters.applicationCacheDirectoryExtensionHandle))
    103100        return false;
    104101    if (!decoder->decode(parameters.databaseDirectory))
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h

    r86285 r86967  
    5454    SandboxExtension::Handle injectedBundlePathExtensionHandle;
    5555
    56     String applicationCacheDirectory;
    57     SandboxExtension::Handle applicationCacheDirectoryExtensionHandle;
    58    
     56    String applicationCacheDirectory;   
    5957    String databaseDirectory;
    6058    String localStorageDirectory;
  • trunk/Source/WebKit2/UIProcess/WebContext.cpp

    r86898 r86967  
    222222    WebProcessCreationParameters parameters;
    223223
    224     parameters.applicationCacheDirectory = applicationCacheDirectory();
    225     if (!parameters.applicationCacheDirectory.isEmpty())
    226         SandboxExtension::createHandle(parameters.applicationCacheDirectory, SandboxExtension::ReadWrite, parameters.applicationCacheDirectoryExtensionHandle);
    227 
    228224    if (!injectedBundlePath().isEmpty()) {
    229225        parameters.injectedBundlePath = injectedBundlePath();
    230 
    231226        SandboxExtension::createHandle(parameters.injectedBundlePath, SandboxExtension::ReadOnly, parameters.injectedBundlePathExtensionHandle);
    232227    }
     
    241236    parameters.presenterApplicationPid = getpid();
    242237#endif
    243    
     238
    244239    copyToVector(m_schemesToRegisterAsEmptyDocument, parameters.urlSchemesRegistererdAsEmptyDocument);
    245240    copyToVector(m_schemesToRegisterAsSecure, parameters.urlSchemesRegisteredAsSecure);
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r86812 r86967  
    195195   
    196196#if ENABLE(OFFLINE_WEB_APPLICATIONS)
    197     if (!parameters.applicationCacheDirectory.isEmpty()) {
    198         m_applicationCachePathExtension = SandboxExtension::create(parameters.applicationCacheDirectoryExtensionHandle);
    199         m_applicationCachePathExtension->consume();
    200 
     197    if (!parameters.applicationCacheDirectory.isEmpty())
    201198        cacheStorage().setCacheDirectory(parameters.applicationCacheDirectory);
    202     }
    203199#endif
    204200
  • trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb

    r86608 r86967  
    106106    (allow file* (subpath (param "DARWIN_USER_TEMP_DIR"))))
    107107
    108 ;; Database dir
     108;; Database directory.
    109109(if (positive? (string-length (param "WEBKIT_DATABASE_DIR")))
    110110    (allow file* (subpath (param "WEBKIT_DATABASE_DIR"))))
    111111
    112 ;; LocalStorage dir
     112;; LocalStorage directory.
    113113(if (positive? (string-length (param "WEBKIT_LOCALSTORAGE_DIR")))
    114114    (allow file* (subpath (param "WEBKIT_LOCALSTORAGE_DIR"))))
     115
     116;; ApplicationCache directory.
     117(if (positive? (string-length (param "WEBKIT_APPLICATION_CACHE_DIR")))
     118    (allow file* (subpath (param "WEBKIT_APPLICATION_CACHE_DIR"))))
    115119
    116120;; The NSURLCache directory.
  • trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm

    r86692 r86967  
    188188    appendReadwriteSandboxDirectory(sandboxParameters, "WEBKIT_DATABASE_DIR", parameters.databaseDirectory);
    189189    appendReadwriteSandboxDirectory(sandboxParameters, "WEBKIT_LOCALSTORAGE_DIR", parameters.localStorageDirectory);
     190    appendReadwriteSandboxDirectory(sandboxParameters, "WEBKIT_APPLICATION_CACHE_DIR", parameters.applicationCacheDirectory);
    190191    appendReadwriteSandboxDirectory(sandboxParameters, "NSURL_CACHE_DIR", parameters.nsURLCachePath);
    191192
Note: See TracChangeset for help on using the changeset viewer.