diff options
author | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-13 04:34:19 +0000 |
---|---|---|
committer | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-13 04:34:19 +0000 |
commit | bb85a8c45042b238dade29ae80963153790cb491 (patch) | |
tree | 658304ab46ee87e0d8abeff8b666da078e5b62fa /content/browser/streams/stream_registry.h | |
parent | 8f9e722ee00bcbe1733b7e2163c098bf8239d516 (diff) | |
download | chromium_src-bb85a8c45042b238dade29ae80963153790cb491.zip chromium_src-bb85a8c45042b238dade29ae80963153790cb491.tar.gz chromium_src-bb85a8c45042b238dade29ae80963153790cb491.tar.bz2 |
Reland r187230: Implement the Stream registry in content
This fixes the memory leaks introduced by the original CL.
BUG=171585
Review URL: https://chromiumcodereview.appspot.com/12637006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@187777 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/streams/stream_registry.h')
-rw-r--r-- | content/browser/streams/stream_registry.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/content/browser/streams/stream_registry.h b/content/browser/streams/stream_registry.h new file mode 100644 index 0000000..eaab7ef --- /dev/null +++ b/content/browser/streams/stream_registry.h @@ -0,0 +1,51 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_BROWSER_STREAMS_STREAM_REGISTRY_H_ +#define CONTENT_BROWSER_STREAMS_STREAM_REGISTRY_H_ + +#include <map> + +#include "base/basictypes.h" +#include "base/memory/ref_counted.h" +#include "base/threading/non_thread_safe.h" +#include "content/common/content_export.h" +#include "googleurl/src/gurl.h" + +namespace content { + +class Stream; + +// Maintains a mapping of blob: URLs to active streams. +class CONTENT_EXPORT StreamRegistry : public base::NonThreadSafe { + public: + StreamRegistry(); + virtual ~StreamRegistry(); + + // Registers a stream, and sets its URL. + void RegisterStream(scoped_refptr<Stream> stream); + + // Clones a stream. Returns true on success, or false if |src_url| doesn't + // exist. + bool CloneStream(const GURL& url, const GURL& src_url); + + void UnregisterStream(const GURL& url); + + // Gets the stream associated with |url|. Returns NULL if there is no such + // stream. + scoped_refptr<Stream> GetStream(const GURL& url); + + private: + typedef std::map<GURL, scoped_refptr<Stream> > StreamMap; + + StreamMap streams_; + + DISALLOW_COPY_AND_ASSIGN(StreamRegistry); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_STREAMS_STREAM_REGISTRY_H_ + + |