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 FetchResponseData_h 6197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#define FetchResponseData_h 7197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/heap/Handle.h" 9197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/weborigin/KURL.h" 10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/PassRefPtr.h" 11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/text/AtomicString.h" 12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 14197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 15197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass BlobDataHandle; 16197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass FetchHeaderList; 179e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)class WebServiceWorkerResponse; 18197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass FetchResponseData FINAL : public GarbageCollectedFinalized<FetchResponseData> { 20197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WTF_MAKE_NONCOPYABLE(FetchResponseData); 21197021e6b966cfb06891637935ef33fff06433d1Ben Murdochpublic: 22197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // "A response has an associated type which is one of basic, CORS, default, 23197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // error, and opaque. Unless stated otherwise, it is default." 24197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch enum Type { BasicType, CORSType, DefaultType, ErrorType, OpaqueType }; 25197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // "A response can have an associated termination reason which is one of 26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // end-user abort, fatal, and timeout." 27197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch enum TerminationReason { EndUserAbortTermination, FatalTermination, TimeoutTermination }; 28197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static FetchResponseData* create(); 307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static FetchResponseData* createNetworkErrorResponse(); 31197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FetchResponseData* createBasicFilteredResponse(); 337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FetchResponseData* createCORSFilteredResponse(); 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FetchResponseData* createOpaqueFilteredResponse(); 35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Type type() const { return m_type; } 37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const KURL& url() const { return m_url; } 38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch unsigned short status() const { return m_status; } 39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch AtomicString statusMessage() const { return m_statusMessage; } 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch FetchHeaderList* headerList() const { return m_headerList.get(); } 41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch PassRefPtr<BlobDataHandle> blobDataHandle() const { return m_blobDataHandle; } 42197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 43197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setURL(const KURL& url) { m_url = url; } 44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setStatus(unsigned short status) { m_status = status; } 45197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setStatusMessage(AtomicString statusMessage) { m_statusMessage = statusMessage; } 46197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setBlobDataHandle(PassRefPtr<BlobDataHandle> blobDataHandle) { m_blobDataHandle = blobDataHandle; } 47197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 48197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void populateWebServiceWorkerResponse(blink::WebServiceWorkerResponse&); 49197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 50197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void trace(Visitor*); 51197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 52197021e6b966cfb06891637935ef33fff06433d1Ben Murdochprivate: 53197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch FetchResponseData(Type, unsigned short, AtomicString); 54197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 55197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Type m_type; 56197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch OwnPtr<TerminationReason> m_terminationReason; 57197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch KURL m_url; 58197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch unsigned short m_status; 59197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch AtomicString m_statusMessage; 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Member<FetchHeaderList> m_headerList; 61197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch RefPtr<BlobDataHandle> m_blobDataHandle; 627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Member<FetchResponseData> m_internalResponse; 63197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}; 64197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 65c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 66197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 67197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#endif // FetchResponseData_h 68