1197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// found in the LICENSE file. 4197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 5197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#ifndef FetchRequestData_h 6197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#define FetchRequestData_h 7197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/heap/Handle.h" 9197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/weborigin/KURL.h" 10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/weborigin/Referrer.h" 11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/PassOwnPtr.h" 12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/PassRefPtr.h" 13197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/text/AtomicString.h" 14197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/text/WTFString.h" 15197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 16197021e6b966cfb06891637935ef33fff06433d1Ben Murdochnamespace blink { 17197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 189e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)class BlobDataHandle; 19197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass ExecutionContext; 20197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass FetchHeaderList; 21197021e6b966cfb06891637935ef33fff06433d1Ben Murdochstruct ResourceLoaderOptions; 22197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass ResourceRequest; 23197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass SecurityOrigin; 24197021e6b966cfb06891637935ef33fff06433d1Ben Murdochstruct ThreadableLoaderOptions; 259e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)class WebServiceWorkerRequest; 26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass FetchRequestData FINAL : public GarbageCollectedFinalized<FetchRequestData> { 28197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WTF_MAKE_NONCOPYABLE(FetchRequestData); 29197021e6b966cfb06891637935ef33fff06433d1Ben Murdochpublic: 30197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch enum Mode { SameOriginMode, NoCORSMode, CORSMode, CORSWithForcedPreflight }; 31197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch enum Credentials { OmitCredentials, SameOriginCredentials, IncludeCredentials }; 32197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch enum Context { ChildContext, ConnectContext, DownloadContext, FontContext, FormContext, ImageContext, ManifestContext, MediaContext, NavigateContext, ObjectContext, PingContext, PopupContext, PrefetchContext, ScriptContext, ServiceWorkerContext, SharedWorkerContext, StyleContext, WorkerContext, NullContext }; 33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch enum Tainting { BasicTainting, CORSTainting, OpaqueTainting }; 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 359e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) class Referrer FINAL { 36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch public: 37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Referrer() : m_type(ClientReferrer) { } 38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool isNone() const { return m_type == NoneReferrer; } 39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool isClient() const { return m_type == ClientReferrer; } 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool isURL() const { return m_type == URLReferrer; } 41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setNone() 42197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 43c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) m_referrer = blink::Referrer(); 44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch m_type = NoneReferrer; 45197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 46c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void setClient(const blink::Referrer& referrer) 47197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 48197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch m_referrer = referrer; 49197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch m_type = ClientReferrer; 50197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 51c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void setURL(const blink::Referrer& referrer) 52197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 53197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch m_referrer = referrer; 54197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch m_type = URLReferrer; 55197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 56c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) blink::Referrer referrer() const { return m_referrer; } 57197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch private: 58197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch enum Type { NoneReferrer, ClientReferrer, URLReferrer }; 59197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Type m_type; 60c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) blink::Referrer m_referrer; 61197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }; 62197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static FetchRequestData* create(ExecutionContext*); 647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static FetchRequestData* create(const blink::WebServiceWorkerRequest&); 657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FetchRequestData* createRestrictedCopy(ExecutionContext*, PassRefPtr<SecurityOrigin>) const; 667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FetchRequestData* createCopy() const; 67197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch ~FetchRequestData(); 68197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 69197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setMethod(AtomicString method) { m_method = method; } 70197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const AtomicString method() const { return m_method; } 71197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setURL(const KURL& url) { m_url = url; } 72197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const KURL& url() const { return m_url; } 73197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool unsafeRequestFlag() const { return m_unsafeRequestFlag; } 74197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch PassRefPtr<SecurityOrigin> origin() { return m_origin; } 75197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool sameOriginDataURLFlag() { return m_sameOriginDataURLFlag; } 76197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const Referrer& referrer() const { return m_referrer; } 77197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setMode(Mode mode) { m_mode = mode; } 78197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Mode mode() const { return m_mode; } 79197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setCredentials(Credentials credentials) { m_credentials = credentials; } 80197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Credentials credentials() const { return m_credentials; } 81197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setResponseTainting(Tainting tainting) { m_responseTainting = tainting; } 82197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Tainting tainting() const { return m_responseTainting; } 83197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch FetchHeaderList* headerList() { return m_headerList.get(); } 849e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) PassRefPtr<BlobDataHandle> blobDataHandle() const { return m_blobDataHandle; } 857242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setBlobDataHandle(PassRefPtr<BlobDataHandle> blobHandle) { m_blobDataHandle = blobHandle; } 86197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 87197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void trace(Visitor*); 88197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 89197021e6b966cfb06891637935ef33fff06433d1Ben Murdochprivate: 90197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch FetchRequestData(); 91197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 927242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static FetchRequestData* create(); 93197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 94197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch AtomicString m_method; 95197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch KURL m_url; 967242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Member<FetchHeaderList> m_headerList; 979e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) RefPtr<BlobDataHandle> m_blobDataHandle; 98197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool m_unsafeRequestFlag; 99197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // FIXME: Support m_skipServiceWorkerFlag; 100197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Context m_context; 101197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch RefPtr<SecurityOrigin> m_origin; 102197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // FIXME: Support m_forceOriginHeaderFlag; 103197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool m_sameOriginDataURLFlag; 104197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Referrer m_referrer; 105197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // FIXME: Support m_authenticationFlag; 106197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // FIXME: Support m_synchronousFlag; 107197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Mode m_mode; 108197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Credentials m_credentials; 109197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // FIXME: Support m_useURLCredentialsFlag; 110197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // FIXME: Support m_manualRedirectFlag; 111197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // FIXME: Support m_redirectCount; 112197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Tainting m_responseTainting; 113197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}; 114197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 115c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 116197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 117197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#endif // FetchRequestData_h 118