Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: third_party/WebKit/Source/modules/fetch/BytesConsumerForDataConsumerHandle.h

Issue 2269953004: Implment BytesConsumer::tee (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BytesConsumerForDataConsumerHandle_h 5 #ifndef BytesConsumerForDataConsumerHandle_h
6 #define BytesConsumerForDataConsumerHandle_h 6 #define BytesConsumerForDataConsumerHandle_h
7 7
8 #include "modules/ModulesExport.h" 8 #include "modules/ModulesExport.h"
9 #include "modules/fetch/BytesConsumer.h" 9 #include "modules/fetch/BytesConsumer.h"
10 #include "modules/fetch/FetchFormDataConsumerHandle.h" 10 #include "modules/fetch/FetchFormDataConsumerHandle.h"
11 #include "platform/heap/Handle.h" 11 #include "platform/heap/Handle.h"
12 #include "public/platform/WebDataConsumerHandle.h" 12 #include "public/platform/WebDataConsumerHandle.h"
13 #include "wtf/PassRefPtr.h" 13 #include "wtf/PassRefPtr.h"
14 #include "wtf/text/WTFString.h" 14 #include "wtf/text/WTFString.h"
15 15
16 #include <memory> 16 #include <memory>
17 17
18 namespace blink { 18 namespace blink {
19 19
20 class ExecutionContext;
21
20 class MODULES_EXPORT BytesConsumerForDataConsumerHandle final : public BytesCons umer, public WebDataConsumerHandle::Client { 22 class MODULES_EXPORT BytesConsumerForDataConsumerHandle final : public BytesCons umer, public WebDataConsumerHandle::Client {
21 EAGERLY_FINALIZE(); 23 EAGERLY_FINALIZE();
22 DECLARE_EAGER_FINALIZATION_OPERATOR_NEW(); 24 DECLARE_EAGER_FINALIZATION_OPERATOR_NEW();
23 public: 25 public:
24 explicit BytesConsumerForDataConsumerHandle(std::unique_ptr<FetchDataConsume rHandle>); 26 BytesConsumerForDataConsumerHandle(ExecutionContext*, std::unique_ptr<FetchD ataConsumerHandle>);
25 ~BytesConsumerForDataConsumerHandle() override; 27 ~BytesConsumerForDataConsumerHandle() override;
26 28
27 Result read(char* buffer, size_t /* size */, size_t* readSize) override; 29 Result read(char* buffer, size_t /* size */, size_t* readSize) override;
28 Result beginRead(const char** buffer, size_t* available) override; 30 Result beginRead(const char** buffer, size_t* available) override;
29 PassRefPtr<BlobDataHandle> drainAsBlobDataHandle(BlobSizePolicy) override; 31 PassRefPtr<BlobDataHandle> drainAsBlobDataHandle(BlobSizePolicy) override;
30 PassRefPtr<EncodedFormData> drainAsFormData() override; 32 PassRefPtr<EncodedFormData> drainAsFormData() override;
31 Result endRead(size_t readSize) override; 33 Result endRead(size_t readSize) override;
32 void setClient(BytesConsumer::Client*) override; 34 void setClient(BytesConsumer::Client*) override;
33 void clearClient() override; 35 void clearClient() override;
34 36
35 void cancel() override; 37 void cancel() override;
36 PublicState getPublicState() const override; 38 PublicState getPublicState() const override;
37 Error getError() const override 39 Error getError() const override
38 { 40 {
39 DCHECK(m_state == InternalState::Errored); 41 DCHECK(m_state == InternalState::Errored);
40 return m_error; 42 return m_error;
41 } 43 }
42 String debugName() const override { return "BytesConsumerForDataConsumerHand le"; } 44 String debugName() const override { return "BytesConsumerForDataConsumerHand le"; }
43 45
44 // WebDataConsumerHandle::Client 46 // WebDataConsumerHandle::Client
45 void didGetReadable() override; 47 void didGetReadable() override;
46 48
47 DECLARE_TRACE(); 49 DECLARE_TRACE();
48 50
49 private: 51 private:
50 void close(); 52 void close();
51 void error(); 53 void error();
54 void notify();
52 55
56 Member<ExecutionContext> m_executionContext;
53 std::unique_ptr<FetchDataConsumerHandle::Reader> m_reader; 57 std::unique_ptr<FetchDataConsumerHandle::Reader> m_reader;
54 Member<BytesConsumer::Client> m_client; 58 Member<BytesConsumer::Client> m_client;
55 InternalState m_state = InternalState::Waiting; 59 InternalState m_state = InternalState::Waiting;
56 Error m_error; 60 Error m_error;
61 bool m_isInTwoPhaseRead = false;
62 bool m_hasPendingNotification = false;
57 }; 63 };
58 64
59 } // namespace blink 65 } // namespace blink
60 66
61 #endif // BytesConsumerForDataConsumerHandle_h 67 #endif // BytesConsumerForDataConsumerHandle_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698