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 "ResourceHandleTypes.h" 35 36namespace WebCore { 37 38enum SendCallbackPolicy { 39 SendCallbacks, 40 DoNotSendCallbacks 41}; 42 43enum ContentSniffingPolicy { 44 SniffContent, 45 DoNotSniffContent 46}; 47 48enum DataBufferingPolicy { 49 BufferData, 50 DoNotBufferData 51}; 52 53enum SecurityCheckPolicy { 54 SkipSecurityCheck, 55 DoSecurityCheck 56}; 57 58enum RequestOriginPolicy { 59 UseDefaultOriginRestrictionsForType, 60 RestrictToSameOrigin, 61 PotentiallyCrossOriginEnabled // Indicates "potentially CORS-enabled fetch" in HTML standard. 62}; 63 64struct ResourceLoaderOptions { 65 ResourceLoaderOptions() 66 : m_sendLoadCallbacks(DoNotSendCallbacks) 67 , m_sniffContent(DoNotSniffContent) 68 , m_dataBufferingPolicy(BufferData) 69 , m_allowCredentials(DoNotAllowStoredCredentials) 70 , m_clientCredentialPolicy(DoNotAskClientForAnyCredentials) 71 , m_securityCheck(DoSecurityCheck) 72 , m_requestOriginPolicy(UseDefaultOriginRestrictionsForType) 73 { 74 } 75 76 ResourceLoaderOptions(SendCallbackPolicy sendLoadCallbacks, ContentSniffingPolicy sniffContent, DataBufferingPolicy dataBufferingPolicy, StoredCredentials allowCredentials, ClientCredentialPolicy credentialPolicy, SecurityCheckPolicy securityCheck, RequestOriginPolicy requestOriginPolicy) 77 : m_sendLoadCallbacks(sendLoadCallbacks) 78 , m_sniffContent(sniffContent) 79 , m_dataBufferingPolicy(dataBufferingPolicy) 80 , m_allowCredentials(allowCredentials) 81 , m_clientCredentialPolicy(credentialPolicy) 82 , m_securityCheck(securityCheck) 83 , m_requestOriginPolicy(requestOriginPolicy) 84 { 85 } 86 87 SendCallbackPolicy sendLoadCallbacks() const { return static_cast<SendCallbackPolicy>(m_sendLoadCallbacks); } 88 void setSendLoadCallbacks(SendCallbackPolicy allow) { m_sendLoadCallbacks = allow; } 89 ContentSniffingPolicy sniffContent() const { return static_cast<ContentSniffingPolicy>(m_sniffContent); } 90 void setSniffContent(ContentSniffingPolicy policy) { m_sniffContent = policy; } 91 DataBufferingPolicy dataBufferingPolicy() const { return static_cast<DataBufferingPolicy>(m_dataBufferingPolicy); } 92 void setDataBufferingPolicy(DataBufferingPolicy policy) { m_dataBufferingPolicy = policy; } 93 StoredCredentials allowCredentials() const { return static_cast<StoredCredentials>(m_allowCredentials); } 94 void setAllowCredentials(StoredCredentials allow) { m_allowCredentials = allow; } 95 ClientCredentialPolicy clientCredentialPolicy() const { return static_cast<ClientCredentialPolicy>(m_clientCredentialPolicy); } 96 void setClientCredentialPolicy(ClientCredentialPolicy policy) { m_clientCredentialPolicy = policy; } 97 SecurityCheckPolicy securityCheck() const { return static_cast<SecurityCheckPolicy>(m_securityCheck); } 98 void setSecurityCheck(SecurityCheckPolicy check) { m_securityCheck = check; } 99 RequestOriginPolicy requestOriginPolicy() const { return static_cast<RequestOriginPolicy>(m_requestOriginPolicy); } 100 void setRequestOriginPolicy(RequestOriginPolicy policy) { m_requestOriginPolicy = policy; } 101 102 unsigned m_sendLoadCallbacks : 1; 103 unsigned m_sniffContent : 1; 104 unsigned m_dataBufferingPolicy : 1; 105 unsigned m_allowCredentials : 1; // Whether HTTP credentials and cookies are sent with the request. 106 unsigned m_clientCredentialPolicy : 2; // When we should ask the client for credentials (if we allow credentials at all). 107 unsigned m_securityCheck : 1; 108 unsigned m_requestOriginPolicy : 2; 109}; 110 111} // namespace WebCore 112 113#endif // ResourceLoaderOptions_h 114