Home | History | Annotate | Download | only in streams
      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
      3 // found in the LICENSE file.
      4 
      5 #include "content/browser/streams/stream_registry.h"
      6 
      7 #include "content/browser/streams/stream.h"
      8 
      9 namespace content {
     10 
     11 StreamRegistry::StreamRegistry() {
     12 }
     13 
     14 StreamRegistry::~StreamRegistry() {
     15 }
     16 
     17 void StreamRegistry::RegisterStream(scoped_refptr<Stream> stream) {
     18   DCHECK(CalledOnValidThread());
     19   DCHECK(stream.get());
     20   DCHECK(!stream->url().is_empty());
     21   streams_[stream->url()] = stream;
     22 }
     23 
     24 scoped_refptr<Stream> StreamRegistry::GetStream(const GURL& url) {
     25   DCHECK(CalledOnValidThread());
     26   StreamMap::const_iterator stream = streams_.find(url);
     27   if (stream != streams_.end())
     28     return stream->second;
     29 
     30   return NULL;
     31 }
     32 
     33 bool StreamRegistry::CloneStream(const GURL& url, const GURL& src_url) {
     34   DCHECK(CalledOnValidThread());
     35   scoped_refptr<Stream> stream(GetStream(src_url));
     36   if (stream.get()) {
     37     streams_[url] = stream;
     38     return true;
     39   }
     40   return false;
     41 }
     42 
     43 void StreamRegistry::UnregisterStream(const GURL& url) {
     44   DCHECK(CalledOnValidThread());
     45   streams_.erase(url);
     46 }
     47 
     48 }  // namespace content
     49