OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #include "content/browser/streams/stream_registry.h" | 5 #include "content/browser/streams/stream_registry.h" |
6 | 6 |
7 #include "content/browser/streams/stream.h" | 7 #include "content/browser/streams/stream.h" |
8 | 8 |
9 namespace content { | 9 namespace content { |
10 | 10 |
11 namespace { | 11 namespace { |
12 // The maximum size of memory each StreamRegistry instance is allowed to use | 12 // The maximum size of memory each StreamRegistry instance is allowed to use |
13 // for its Stream instances. | 13 // for its Stream instances. |
14 const size_t kDefaultMaxMemoryUsage = 1024 * 1024 * 1024U; // 1GiB | 14 const size_t kDefaultMaxMemoryUsage = 1024 * 1024 * 1024U; // 1GiB |
15 } | 15 } |
16 | 16 |
17 StreamRegistry::StreamRegistry() | 17 StreamRegistry::StreamRegistry() |
18 : total_memory_usage_(0), | 18 : total_memory_usage_(0), |
19 max_memory_usage_(kDefaultMaxMemoryUsage) { | 19 max_memory_usage_(kDefaultMaxMemoryUsage) { |
20 } | 20 } |
21 | 21 |
22 StreamRegistry::~StreamRegistry() { | 22 StreamRegistry::~StreamRegistry() { |
23 DCHECK(register_observers_.empty()); | 23 DCHECK(register_observers_.empty()); |
24 } | 24 } |
25 | 25 |
26 void StreamRegistry::RegisterStream(scoped_refptr<Stream> stream) { | 26 void StreamRegistry::RegisterStream(Stream* stream) { |
27 DCHECK(CalledOnValidThread()); | 27 DCHECK(CalledOnValidThread()); |
28 DCHECK(stream.get()); | 28 DCHECK(stream); |
29 DCHECK(!stream->url().is_empty()); | 29 DCHECK(!stream->url().is_empty()); |
| 30 |
| 31 auto aborted_url_itr = reader_aborted_urls_.find(stream->url()); |
| 32 if (aborted_url_itr != reader_aborted_urls_.end()) { |
| 33 reader_aborted_urls_.erase(aborted_url_itr); |
| 34 return; |
| 35 } |
30 streams_[stream->url()] = stream; | 36 streams_[stream->url()] = stream; |
31 | 37 |
32 auto itr = register_observers_.find(stream->url()); | 38 auto itr = register_observers_.find(stream->url()); |
33 if (itr != register_observers_.end()) | 39 if (itr != register_observers_.end()) |
34 itr->second->OnStreamRegistered(stream.get()); | 40 itr->second->OnStreamRegistered(stream); |
35 } | 41 } |
36 | 42 |
37 scoped_refptr<Stream> StreamRegistry::GetStream(const GURL& url) { | 43 scoped_refptr<Stream> StreamRegistry::GetStream(const GURL& url) { |
38 DCHECK(CalledOnValidThread()); | 44 DCHECK(CalledOnValidThread()); |
39 StreamMap::const_iterator stream = streams_.find(url); | 45 StreamMap::const_iterator stream = streams_.find(url); |
40 if (stream != streams_.end()) | 46 if (stream != streams_.end()) |
41 return stream->second; | 47 return stream->second; |
42 | 48 |
43 return NULL; | 49 return NULL; |
44 } | 50 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 DCHECK(CalledOnValidThread()); | 106 DCHECK(CalledOnValidThread()); |
101 DCHECK(register_observers_.find(url) == register_observers_.end()); | 107 DCHECK(register_observers_.find(url) == register_observers_.end()); |
102 register_observers_[url] = observer; | 108 register_observers_[url] = observer; |
103 } | 109 } |
104 | 110 |
105 void StreamRegistry::RemoveRegisterObserver(const GURL& url) { | 111 void StreamRegistry::RemoveRegisterObserver(const GURL& url) { |
106 DCHECK(CalledOnValidThread()); | 112 DCHECK(CalledOnValidThread()); |
107 register_observers_.erase(url); | 113 register_observers_.erase(url); |
108 } | 114 } |
109 | 115 |
| 116 void StreamRegistry::NotifyReaderAbortedBeforeRegistration(const GURL& url) { |
| 117 DCHECK(CalledOnValidThread()); |
| 118 reader_aborted_urls_.insert(url); |
| 119 } |
110 | 120 |
111 } // namespace content | 121 } // namespace content |
OLD | NEW |