| 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 |