| OLD | NEW |
| 1 /* | 1 /* |
| 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
| 3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org> | 3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org> |
| 4 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 4 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 5 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 5 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
| 6 | 6 |
| 7 This library is free software; you can redistribute it and/or | 7 This library is free software; you can redistribute it and/or |
| 8 modify it under the terms of the GNU Library General Public | 8 modify it under the terms of the GNU Library General Public |
| 9 License as published by the Free Software Foundation; either | 9 License as published by the Free Software Foundation; either |
| 10 version 2 of the License, or (at your option) any later version. | 10 version 2 of the License, or (at your option) any later version. |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 { | 100 { |
| 101 ASSERT_WITH_SECURITY_IMPLICATION(!resource || isRawResource(*resource)); | 101 ASSERT_WITH_SECURITY_IMPLICATION(!resource || isRawResource(*resource)); |
| 102 return static_cast<RawResource*>(resource); | 102 return static_cast<RawResource*>(resource); |
| 103 } | 103 } |
| 104 | 104 |
| 105 class CORE_EXPORT RawResourceClient : public GarbageCollectedMixin, public Resou
rceClient { | 105 class CORE_EXPORT RawResourceClient : public GarbageCollectedMixin, public Resou
rceClient { |
| 106 public: | 106 public: |
| 107 static bool isExpectedType(ResourceClient* client) { return client->getResou
rceClientType() == RawResourceType; } | 107 static bool isExpectedType(ResourceClient* client) { return client->getResou
rceClientType() == RawResourceType; } |
| 108 ResourceClientType getResourceClientType() const final { return RawResourceT
ype; } | 108 ResourceClientType getResourceClientType() const final { return RawResourceT
ype; } |
| 109 | 109 |
| 110 // The order of the callbacks is as follows: |
| 111 // [Case 1] A successful load: |
| 112 // 0+ redirectReceived() and/or dataSent() |
| 113 // 1 responseReceived() |
| 114 // 0-1 setSerializedCachedMetadata() |
| 115 // 0+ dataReceived() or dataDownloaded(), but never both |
| 116 // 1 notifyFinished() with errorOccurred() = false |
| 117 // [Case 2] When redirect is blocked: |
| 118 // 0+ redirectReceived() and/or dataSent() |
| 119 // 1 redirectBlocked() |
| 120 // 1 notifyFinished() with errorOccurred() = true |
| 121 // [Case 3] Other failures: |
| 122 // notifyFinished() with errorOccurred() = true is called at any time |
| 123 // (unless notifyFinished() is already called). |
| 124 // In all cases: |
| 125 // No callbacks are made after notifyFinished() or |
| 126 // removeClient() is called. |
| 110 virtual void dataSent(Resource*, unsigned long long /* bytesSent */, unsigne
d long long /* totalBytesToBeSent */) { } | 127 virtual void dataSent(Resource*, unsigned long long /* bytesSent */, unsigne
d long long /* totalBytesToBeSent */) { } |
| 111 virtual void responseReceived(Resource*, const ResourceResponse&, std::uniqu
e_ptr<WebDataConsumerHandle>) { } | 128 virtual void responseReceived(Resource*, const ResourceResponse&, std::uniqu
e_ptr<WebDataConsumerHandle>) { } |
| 112 virtual void setSerializedCachedMetadata(Resource*, const char*, size_t) { } | 129 virtual void setSerializedCachedMetadata(Resource*, const char*, size_t) { } |
| 113 virtual void dataReceived(Resource*, const char* /* data */, size_t /* lengt
h */) { } | 130 virtual void dataReceived(Resource*, const char* /* data */, size_t /* lengt
h */) { } |
| 114 virtual void redirectReceived(Resource*, ResourceRequest&, const ResourceRes
ponse&) { } | 131 virtual void redirectReceived(Resource*, ResourceRequest&, const ResourceRes
ponse&) { } |
| 115 virtual void redirectBlocked() {} | 132 virtual void redirectBlocked() {} |
| 116 virtual void dataDownloaded(Resource*, int) { } | 133 virtual void dataDownloaded(Resource*, int) { } |
| 117 virtual void didReceiveResourceTiming(Resource*, const ResourceTimingInfo&)
{ } | 134 virtual void didReceiveResourceTiming(Resource*, const ResourceTimingInfo&)
{ } |
| 118 | 135 |
| 119 DEFINE_INLINE_VIRTUAL_TRACE() {} | 136 DEFINE_INLINE_VIRTUAL_TRACE() {} |
| 120 }; | 137 }; |
| 121 | 138 |
| 139 // Checks the sequence of callbacks of RawResourceClient. |
| 140 // This can be used only when a RawResourceClient is added as a client to |
| 141 // at most one RawResource. |
| 142 class CORE_EXPORT RawResourceClientStateChecker final { |
| 143 public: |
| 144 RawResourceClientStateChecker(); |
| 145 ~RawResourceClientStateChecker(); |
| 146 |
| 147 // Call before addClient()/removeClient() is called. |
| 148 void willAddClient(); |
| 149 void willRemoveClient(); |
| 150 |
| 151 // Call RawResourceClientStateChecker::f() at the beginning of |
| 152 // RawResourceClient::f(). |
| 153 void redirectReceived(); |
| 154 void redirectBlocked(); |
| 155 void dataSent(); |
| 156 void responseReceived(); |
| 157 void setSerializedCachedMetadata(); |
| 158 void dataReceived(); |
| 159 void dataDownloaded(); |
| 160 void notifyFinished(Resource*); |
| 161 |
| 162 private: |
| 163 enum State { |
| 164 NotAddedAsClient, |
| 165 Started, |
| 166 RedirectBlocked, |
| 167 ResponseReceived, |
| 168 SetSerializedCachedMetadata, |
| 169 DataReceived, |
| 170 DataDownloaded, |
| 171 NotifyFinished |
| 172 }; |
| 173 State m_state; |
| 174 }; |
| 175 |
| 122 } // namespace blink | 176 } // namespace blink |
| 123 | 177 |
| 124 #endif // RawResource_h | 178 #endif // RawResource_h |
| OLD | NEW |