Home | History | Annotate | Download | only in loader
      1 /*
      2  * Copyright (C) 2011 Google 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 are
      6  * met:
      7  *
      8  *     * Redistributions of source code must retain the above copyright
      9  * notice, this list of conditions and the following disclaimer.
     10  *     * Redistributions in binary form must reproduce the above
     11  * copyright notice, this list of conditions and the following disclaimer
     12  * in the documentation and/or other materials provided with the
     13  * distribution.
     14  *     * Neither the name of Google Inc. nor the names of its
     15  * contributors may be used to endorse or promote products derived from
     16  * this software without specific prior written permission.
     17  *
     18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29  */
     30 
     31 #ifndef ResourceLoaderOptions_h
     32 #define ResourceLoaderOptions_h
     33 
     34 #include "core/loader/cache/FetchInitiatorInfo.h"
     35 
     36 namespace WebCore {
     37 
     38 enum SendCallbackPolicy {
     39     SendCallbacks,
     40     DoNotSendCallbacks
     41 };
     42 
     43 enum ContentSniffingPolicy {
     44     SniffContent,
     45     DoNotSniffContent
     46 };
     47 
     48 enum DataBufferingPolicy {
     49     BufferData,
     50     DoNotBufferData
     51 };
     52 
     53 enum ClientCrossOriginCredentialPolicy {
     54     AskClientForCrossOriginCredentials,
     55     DoNotAskClientForCrossOriginCredentials
     56 };
     57 
     58 enum SecurityCheckPolicy {
     59     SkipSecurityCheck,
     60     DoSecurityCheck
     61 };
     62 
     63 enum ContentSecurityPolicyCheck {
     64     CheckContentSecurityPolicy,
     65     DoNotCheckContentSecurityPolicy
     66 };
     67 
     68 enum RequestOriginPolicy {
     69     UseDefaultOriginRestrictionsForType,
     70     RestrictToSameOrigin,
     71     PotentiallyCrossOriginEnabled // Indicates "potentially CORS-enabled fetch" in HTML standard.
     72 };
     73 
     74 enum RequestInitiatorContext {
     75     DocumentContext,
     76     WorkerContext,
     77 };
     78 
     79 enum StoredCredentials {
     80     AllowStoredCredentials,
     81     DoNotAllowStoredCredentials
     82 };
     83 
     84 // APIs like XMLHttpRequest and EventSource let the user decide
     85 // whether to send credentials, but they're always sent for
     86 // same-origin requests. Additional information is needed to handle
     87 // cross-origin redirects correctly.
     88 enum CredentialRequest {
     89     ClientRequestedCredentials,
     90     ClientDidNotRequestCredentials
     91 };
     92 
     93 struct ResourceLoaderOptions {
     94     ResourceLoaderOptions()
     95         : sendLoadCallbacks(DoNotSendCallbacks)
     96         , sniffContent(DoNotSniffContent)
     97         , dataBufferingPolicy(BufferData)
     98         , allowCredentials(DoNotAllowStoredCredentials)
     99         , credentialsRequested(ClientDidNotRequestCredentials)
    100         , crossOriginCredentialPolicy(DoNotAskClientForCrossOriginCredentials)
    101         , securityCheck(DoSecurityCheck)
    102         , contentSecurityPolicyOption(CheckContentSecurityPolicy)
    103         , requestOriginPolicy(UseDefaultOriginRestrictionsForType)
    104         , requestInitiatorContext(DocumentContext)
    105     {
    106     }
    107 
    108     ResourceLoaderOptions(
    109         SendCallbackPolicy sendLoadCallbacks,
    110         ContentSniffingPolicy sniffContent,
    111         DataBufferingPolicy dataBufferingPolicy,
    112         StoredCredentials allowCredentials,
    113         CredentialRequest credentialsRequested,
    114         ClientCrossOriginCredentialPolicy crossOriginCredentialPolicy,
    115         SecurityCheckPolicy securityCheck,
    116         ContentSecurityPolicyCheck contentSecurityPolicyOption,
    117         RequestOriginPolicy requestOriginPolicy,
    118         RequestInitiatorContext requestInitiatorContext)
    119         : sendLoadCallbacks(sendLoadCallbacks)
    120         , sniffContent(sniffContent)
    121         , dataBufferingPolicy(dataBufferingPolicy)
    122         , allowCredentials(allowCredentials)
    123         , credentialsRequested(credentialsRequested)
    124         , crossOriginCredentialPolicy(crossOriginCredentialPolicy)
    125         , securityCheck(securityCheck)
    126         , contentSecurityPolicyOption(contentSecurityPolicyOption)
    127         , requestOriginPolicy(requestOriginPolicy)
    128         , requestInitiatorContext(requestInitiatorContext)
    129     {
    130     }
    131     SendCallbackPolicy sendLoadCallbacks;
    132     ContentSniffingPolicy sniffContent;
    133     DataBufferingPolicy dataBufferingPolicy;
    134     StoredCredentials allowCredentials; // Whether HTTP credentials and cookies are sent with the request.
    135     CredentialRequest credentialsRequested; // Whether the client (e.g. XHR) wanted credentials in the first place.
    136     ClientCrossOriginCredentialPolicy crossOriginCredentialPolicy; // Whether we will ask the client for credentials (if we allow credentials at all).
    137     SecurityCheckPolicy securityCheck;
    138     ContentSecurityPolicyCheck contentSecurityPolicyOption;
    139     FetchInitiatorInfo initiatorInfo;
    140     RequestOriginPolicy requestOriginPolicy;
    141     RequestInitiatorContext requestInitiatorContext;
    142 };
    143 
    144 } // namespace WebCore
    145 
    146 #endif // ResourceLoaderOptions_h
    147