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#ifndef CONTENT_BROWSER_STREAMS_STREAM_HANDLE_IMPL_H_ 6#define CONTENT_BROWSER_STREAMS_STREAM_HANDLE_IMPL_H_ 7 8#include <vector> 9 10#include "base/memory/weak_ptr.h" 11#include "base/synchronization/lock.h" 12#include "content/public/browser/stream_handle.h" 13 14namespace base { 15class MessageLoopProxy; 16} 17 18namespace content { 19 20class Stream; 21 22class StreamHandleImpl : public StreamHandle { 23 public: 24 StreamHandleImpl(const base::WeakPtr<Stream>& stream, 25 const GURL& original_url, 26 const std::string& mime_type, 27 scoped_refptr<net::HttpResponseHeaders> response_headers); 28 virtual ~StreamHandleImpl(); 29 30 private: 31 // StreamHandle overrides 32 virtual const GURL& GetURL() OVERRIDE; 33 virtual const GURL& GetOriginalURL() OVERRIDE; 34 virtual const std::string& GetMimeType() OVERRIDE; 35 virtual scoped_refptr<net::HttpResponseHeaders> GetResponseHeaders() OVERRIDE; 36 virtual void AddCloseListener(const base::Closure& callback) OVERRIDE; 37 38 base::WeakPtr<Stream> stream_; 39 GURL url_; 40 GURL original_url_; 41 std::string mime_type_; 42 scoped_refptr<net::HttpResponseHeaders> response_headers_; 43 base::MessageLoopProxy* stream_message_loop_; 44 std::vector<base::Closure> close_listeners_; 45}; 46 47} // namespace content 48 49#endif // CONTENT_BROWSER_STREAMS_STREAM_HANDLE_IMPL_H_ 50 51