Home | History | Annotate | Download | only in Shared
      1 /*
      2  * Copyright (C) 2010 Apple Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
     14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
     17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     23  * THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #include "config.h"
     27 #include "WebProcessCreationParameters.h"
     28 
     29 #include "ArgumentCoders.h"
     30 
     31 namespace WebKit {
     32 
     33 WebProcessCreationParameters::WebProcessCreationParameters()
     34     : shouldTrackVisitedLinks(false)
     35     , shouldAlwaysUseComplexTextCodePath(false)
     36     , defaultRequestTimeoutInterval(INT_MAX)
     37 #if PLATFORM(MAC)
     38     , nsURLCacheMemoryCapacity(0)
     39     , nsURLCacheDiskCapacity(0)
     40 #elif PLATFORM(WIN)
     41     , shouldPaintNativeControls(false)
     42 #endif
     43 {
     44 }
     45 
     46 void WebProcessCreationParameters::encode(CoreIPC::ArgumentEncoder* encoder) const
     47 {
     48     encoder->encode(injectedBundlePath);
     49     encoder->encode(injectedBundlePathExtensionHandle);
     50     encoder->encode(applicationCacheDirectory);
     51     encoder->encode(databaseDirectory);
     52     encoder->encode(localStorageDirectory);
     53     encoder->encode(urlSchemesRegistererdAsEmptyDocument);
     54     encoder->encode(urlSchemesRegisteredAsSecure);
     55     encoder->encode(urlSchemesForWhichDomainRelaxationIsForbidden);
     56     encoder->encode(mimeTypesWithCustomRepresentation);
     57     encoder->encodeEnum(cacheModel);
     58     encoder->encode(shouldTrackVisitedLinks);
     59     encoder->encode(shouldAlwaysUseComplexTextCodePath);
     60     encoder->encode(iconDatabaseEnabled);
     61     encoder->encode(languageCode);
     62     encoder->encode(textCheckerState);
     63     encoder->encode(defaultRequestTimeoutInterval);
     64 #if USE(CFURLSTORAGESESSIONS)
     65     encoder->encode(uiProcessBundleIdentifier);
     66 #endif
     67 #if PLATFORM(MAC)
     68     encoder->encode(parentProcessName);
     69     encoder->encode(presenterApplicationPid);
     70     encoder->encode(nsURLCachePath);
     71     encoder->encode(nsURLCacheMemoryCapacity);
     72     encoder->encode(nsURLCacheDiskCapacity);
     73     encoder->encode(acceleratedCompositingPort);
     74     encoder->encode(uiProcessBundleResourcePath);
     75 #elif PLATFORM(WIN)
     76     encoder->encode(shouldPaintNativeControls);
     77     encoder->encode(cfURLCachePath);
     78     encoder->encode(cfURLCacheDiskCapacity);
     79     encoder->encode(cfURLCacheMemoryCapacity);
     80     encoder->encode(initialHTTPCookieAcceptPolicy);
     81 #endif
     82 }
     83 
     84 bool WebProcessCreationParameters::decode(CoreIPC::ArgumentDecoder* decoder, WebProcessCreationParameters& parameters)
     85 {
     86     if (!decoder->decode(parameters.injectedBundlePath))
     87         return false;
     88     if (!decoder->decode(parameters.injectedBundlePathExtensionHandle))
     89         return false;
     90     if (!decoder->decode(parameters.applicationCacheDirectory))
     91         return false;
     92     if (!decoder->decode(parameters.databaseDirectory))
     93         return false;
     94     if (!decoder->decode(parameters.localStorageDirectory))
     95         return false;
     96     if (!decoder->decode(parameters.urlSchemesRegistererdAsEmptyDocument))
     97         return false;
     98     if (!decoder->decode(parameters.urlSchemesRegisteredAsSecure))
     99         return false;
    100     if (!decoder->decode(parameters.urlSchemesForWhichDomainRelaxationIsForbidden))
    101         return false;
    102     if (!decoder->decode(parameters.mimeTypesWithCustomRepresentation))
    103         return false;
    104     if (!decoder->decodeEnum(parameters.cacheModel))
    105         return false;
    106     if (!decoder->decode(parameters.shouldTrackVisitedLinks))
    107         return false;
    108     if (!decoder->decode(parameters.shouldAlwaysUseComplexTextCodePath))
    109         return false;
    110     if (!decoder->decode(parameters.iconDatabaseEnabled))
    111         return false;
    112     if (!decoder->decode(parameters.languageCode))
    113         return false;
    114     if (!decoder->decode(parameters.textCheckerState))
    115         return false;
    116     if (!decoder->decode(parameters.defaultRequestTimeoutInterval))
    117         return false;
    118 #if USE(CFURLSTORAGESESSIONS)
    119     if (!decoder->decode(parameters.uiProcessBundleIdentifier))
    120         return false;
    121 #endif
    122 
    123 #if PLATFORM(MAC)
    124     if (!decoder->decode(parameters.parentProcessName))
    125         return false;
    126     if (!decoder->decode(parameters.presenterApplicationPid))
    127         return false;
    128     if (!decoder->decode(parameters.nsURLCachePath))
    129         return false;
    130     if (!decoder->decode(parameters.nsURLCacheMemoryCapacity))
    131         return false;
    132     if (!decoder->decode(parameters.nsURLCacheDiskCapacity))
    133         return false;
    134     if (!decoder->decode(parameters.acceleratedCompositingPort))
    135         return false;
    136     if (!decoder->decode(parameters.uiProcessBundleResourcePath))
    137         return false;
    138 #elif PLATFORM(WIN)
    139     if (!decoder->decode(parameters.shouldPaintNativeControls))
    140         return false;
    141     if (!decoder->decode(parameters.cfURLCachePath))
    142         return false;
    143     if (!decoder->decode(parameters.cfURLCacheDiskCapacity))
    144         return false;
    145     if (!decoder->decode(parameters.cfURLCacheMemoryCapacity))
    146         return false;
    147     if (!decoder->decode(parameters.initialHTTPCookieAcceptPolicy))
    148         return false;
    149 #endif
    150 
    151     return true;
    152 }
    153 
    154 } // namespace WebKit
    155