Chromium Code Reviews| 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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 104 | 104 |
| 105 class CORE_EXPORT RawResourceClient : public ResourceClient { | 105 class CORE_EXPORT RawResourceClient : public ResourceClient { |
| 106 public: | 106 public: |
| 107 RawResourceClient() | 107 RawResourceClient() |
| 108 : m_weakFactory(this) { } | 108 : m_weakFactory(this) { } |
| 109 WeakPtr<RawResourceClient> createWeakPtr() { return m_weakFactory.createWeak Ptr(); } | 109 WeakPtr<RawResourceClient> createWeakPtr() { return m_weakFactory.createWeak Ptr(); } |
| 110 ~RawResourceClient() override {} | 110 ~RawResourceClient() override {} |
| 111 static bool isExpectedType(ResourceClient* client) { return client->getResou rceClientType() == RawResourceType; } | 111 static bool isExpectedType(ResourceClient* client) { return client->getResou rceClientType() == RawResourceType; } |
| 112 ResourceClientType getResourceClientType() const final { return RawResourceT ype; } | 112 ResourceClientType getResourceClientType() const final { return RawResourceT ype; } |
| 113 | 113 |
| 114 // The order of the callbacks is as follows: | |
| 115 // [Case 1] A successful load: | |
| 116 // 0+ redirectReceived() and/or dataSent() | |
| 117 // 1 responseReceived() | |
| 118 // 0-1 setSerializedCachedMetadata() | |
| 119 // 0+ dataReceived() or dataDownloaded(), but never both | |
| 120 // 1 notifyFinished() with errorOccurred() = false | |
| 121 // [Case 2] When redirect is blocked: | |
| 122 // 0+ redirectReceived() and/or dataSent() | |
| 123 // 1 redirectBlocked() | |
| 124 // 1 notifyFinished() with errorOccurred() = true | |
| 125 // [Case 3] Other failures: | |
| 126 // notifyFinished() with errorOccurred() = true is called at any time | |
| 127 // (unless notifyFinished() is already called). | |
| 128 // In all cases: | |
| 129 // No callbacks are made after notifyFinished() or | |
| 130 // removeClient() is called. | |
| 114 virtual void dataSent(Resource*, unsigned long long /* bytesSent */, unsigne d long long /* totalBytesToBeSent */) { } | 131 virtual void dataSent(Resource*, unsigned long long /* bytesSent */, unsigne d long long /* totalBytesToBeSent */) { } |
| 115 virtual void responseReceived(Resource*, const ResourceResponse&, PassOwnPtr <WebDataConsumerHandle>) { } | 132 virtual void responseReceived(Resource*, const ResourceResponse&, PassOwnPtr <WebDataConsumerHandle>) { } |
| 116 virtual void setSerializedCachedMetadata(Resource*, const char*, size_t) { } | 133 virtual void setSerializedCachedMetadata(Resource*, const char*, size_t) { } |
| 117 virtual void dataReceived(Resource*, const char* /* data */, size_t /* lengt h */) { } | 134 virtual void dataReceived(Resource*, const char* /* data */, size_t /* lengt h */) { } |
| 118 virtual void redirectReceived(Resource*, ResourceRequest&, const ResourceRes ponse&) { } | 135 virtual void redirectReceived(Resource*, ResourceRequest&, const ResourceRes ponse&) { } |
| 119 virtual void redirectBlocked() {} | 136 virtual void redirectBlocked() {} |
| 120 virtual void dataDownloaded(Resource*, int) { } | 137 virtual void dataDownloaded(Resource*, int) { } |
| 121 virtual void didReceiveResourceTiming(Resource*, const ResourceTimingInfo&) { } | 138 virtual void didReceiveResourceTiming(Resource*, const ResourceTimingInfo&) { } |
| 122 | 139 |
| 123 private: | 140 private: |
| 124 WeakPtrFactory<RawResourceClient> m_weakFactory; | 141 WeakPtrFactory<RawResourceClient> m_weakFactory; |
| 125 }; | 142 }; |
| 126 | 143 |
| 144 // Checks the sequence of callbacks of RawResourceClient. | |
| 145 // This can be used only when a RawResourceClient is added as a client to | |
| 146 // at most one RawResource. | |
| 147 class CORE_EXPORT RawResourceClientStateChecker { | |
|
yhirano
2016/06/03 07:25:13
+final
hiroshige
2016/08/03 11:50:34
Done.
| |
| 148 public: | |
| 149 RawResourceClientStateChecker(); | |
| 150 ~RawResourceClientStateChecker(); | |
| 151 | |
| 152 // Call before addClient()/removeClient() is called. | |
| 153 void willAddClient(); | |
|
yhirano
2016/06/03 07:25:13
I'm a bit concerned about the case when DocumentTh
hiroshige
2016/06/03 09:58:38
ResourceOwner::setResource() is |protected|.
Doesn
yhirano
2016/06/07 05:18:25
I didn't notice that, thank you.
But ResourceOwner
hiroshige
2016/08/03 11:50:34
Done.
| |
| 154 void willRemoveClient(); | |
| 155 | |
| 156 // Call RawResourceClientStateChecker::f() at the beginning of | |
| 157 // RawResourceClient::f(). | |
| 158 void redirectReceived(); | |
| 159 void redirectBlocked(); | |
| 160 void dataSent(); | |
| 161 void responseReceived(); | |
| 162 void setSerializedCachedMetadata(); | |
| 163 void dataReceived(); | |
| 164 void dataDownloaded(); | |
| 165 void notifyFinished(Resource*); | |
| 166 | |
| 167 private: | |
| 168 enum State { | |
| 169 NotAddedAsClient, | |
| 170 Started, | |
| 171 RedirectBlocked, | |
| 172 ResponseReceived, | |
| 173 SetSerializedCachedMetadata, | |
| 174 DataReceived, | |
| 175 DataDownloaded, | |
| 176 NotifyFinished | |
| 177 }; | |
| 178 State m_state; | |
| 179 }; | |
| 180 | |
| 127 } // namespace blink | 181 } // namespace blink |
| 128 | 182 |
| 129 #endif // RawResource_h | 183 #endif // RawResource_h |
| OLD | NEW |