OLD | NEW |
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 #include "base/logging.h" | 5 #include "base/logging.h" |
6 #include "mojo/public/cpp/application/connect.h" | 6 #include "mojo/public/cpp/application/connect.h" |
7 #include "mojo/public/cpp/system/data_pipe.h" | 7 #include "mojo/public/cpp/system/data_pipe.h" |
8 #include "services/media/factory_service/network_reader_impl.h" | 8 #include "services/media/factory_service/network_reader_impl.h" |
9 | 9 |
10 namespace mojo { | 10 namespace mojo { |
11 namespace media { | 11 namespace media { |
12 | 12 |
13 const char* NetworkReaderImpl::kContentLengthHeaderName = "Content-Length"; | 13 const char* NetworkReaderImpl::kContentLengthHeaderName = "Content-Length"; |
14 const char* NetworkReaderImpl::kAcceptRangesHeaderName = "Accept-Ranges"; | 14 const char* NetworkReaderImpl::kAcceptRangesHeaderName = "Accept-Ranges"; |
15 const char* NetworkReaderImpl::kAcceptRangesHeaderBytesValue = "bytes"; | 15 const char* NetworkReaderImpl::kAcceptRangesHeaderBytesValue = "bytes"; |
16 const char* NetworkReaderImpl::kRangeHeaderName = "Range"; | 16 const char* NetworkReaderImpl::kRangeHeaderName = "Range"; |
17 | 17 |
18 // static | 18 // static |
19 std::shared_ptr<NetworkReaderImpl> NetworkReaderImpl::Create( | 19 std::shared_ptr<NetworkReaderImpl> NetworkReaderImpl::Create( |
20 const String& url, | 20 const String& url, |
21 InterfaceRequest<SeekingReader> request, | 21 InterfaceRequest<SeekingReader> request, |
22 MediaFactoryService* owner) { | 22 MediaFactoryService* owner) { |
23 return std::shared_ptr<NetworkReaderImpl>( | 23 return std::shared_ptr<NetworkReaderImpl>( |
24 new NetworkReaderImpl(url, request.Pass(), owner)); | 24 new NetworkReaderImpl(url, request.Pass(), owner)); |
25 } | 25 } |
26 | 26 |
27 NetworkReaderImpl::NetworkReaderImpl(const String& url, | 27 NetworkReaderImpl::NetworkReaderImpl(const String& url, |
28 InterfaceRequest<SeekingReader> request, | 28 InterfaceRequest<SeekingReader> request, |
29 MediaFactoryService* owner) | 29 MediaFactoryService* owner) |
30 : MediaFactoryService::Product(owner), | 30 : MediaFactoryService::Product<SeekingReader>(this, request.Pass(), owner), |
31 binding_(this, request.Pass()), | |
32 url_(url) { | 31 url_(url) { |
33 // Go away when the client is no longer connected. | |
34 binding_.set_connection_error_handler([this]() { ReleaseFromOwner(); }); | |
35 | |
36 NetworkServicePtr network_service; | 32 NetworkServicePtr network_service; |
37 | 33 |
38 ConnectToService(app()->shell(), "mojo:network_service", | 34 ConnectToService(app()->shell(), "mojo:network_service", |
39 GetProxy(&network_service)); | 35 GetProxy(&network_service)); |
40 | 36 |
41 network_service->CreateURLLoader(GetProxy(&url_loader_)); | 37 network_service->CreateURLLoader(GetProxy(&url_loader_)); |
42 | 38 |
43 URLRequestPtr url_request(URLRequest::New()); | 39 URLRequestPtr url_request(URLRequest::New()); |
44 url_request->url = url_; | 40 url_request->url = url_; |
45 url_request->method = "HEAD"; | 41 url_request->method = "HEAD"; |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 } | 111 } |
116 | 112 |
117 DCHECK(response->body.is_valid()); | 113 DCHECK(response->body.is_valid()); |
118 callback.Run(result_, response->body.Pass()); | 114 callback.Run(result_, response->body.Pass()); |
119 }); | 115 }); |
120 }); | 116 }); |
121 } | 117 } |
122 | 118 |
123 } // namespace media | 119 } // namespace media |
124 } // namespace mojo | 120 } // namespace mojo |
OLD | NEW |