Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 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 "extensions/browser/api/mime_handler/mime_handler.h" | |
| 6 | |
| 7 #include "content/public/browser/stream_handle.h" | |
| 8 #include "content/public/browser/stream_info.h" | |
| 9 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_gues t.h" | |
| 10 #include "extensions/common/constants.h" | |
| 11 #include "mojo/public/cpp/bindings/map.h" | |
| 12 #include "net/http/http_response_headers.h" | |
| 13 | |
| 14 namespace extensions { | |
| 15 namespace { | |
| 16 | |
| 17 mojo::Map<mojo::String, mojo::String> CreateResponseHeadersMap( | |
| 18 const net::HttpResponseHeaders* headers) { | |
| 19 std::map<std::string, std::string> result; | |
| 20 if (!headers) | |
| 21 return mojo::Map<mojo::String, mojo::String>::From(result); | |
| 22 | |
| 23 void* iter = nullptr; | |
| 24 std::string header_name; | |
| 25 std::string header_value; | |
| 26 while (headers->EnumerateHeaderLines(&iter, &header_name, &header_value)) { | |
| 27 auto& current_value = result[header_name]; | |
| 28 if (!current_value.empty()) | |
| 29 current_value += ", "; | |
| 30 current_value += header_value; | |
| 31 } | |
| 32 return mojo::Map<mojo::String, mojo::String>::From(result); | |
| 33 } | |
| 34 | |
| 35 } // namespace | |
| 36 | |
| 37 // static | |
| 38 void MimeHandlerServiceImpl::Create( | |
| 39 base::WeakPtr<StreamContainer> stream_container, | |
| 40 mojo::InterfaceRequest<mime_handler::MimeHandlerService> request) { | |
| 41 mojo::BindToRequest(new MimeHandlerServiceImpl(stream_container), &request); | |
| 42 } | |
| 43 | |
| 44 MimeHandlerServiceImpl::MimeHandlerServiceImpl( | |
| 45 base::WeakPtr<StreamContainer> stream_container) | |
| 46 : stream_(stream_container) { | |
| 47 } | |
| 48 | |
| 49 MimeHandlerServiceImpl::~MimeHandlerServiceImpl() { | |
| 50 } | |
| 51 | |
| 52 void MimeHandlerServiceImpl::GetStreamInfo( | |
| 53 const mojo::Callback<void(mime_handler::StreamInfoPtr)>& callback) { | |
| 54 if (!stream_ || !stream_->stream_info()->handle) { | |
| 55 callback.Run(mime_handler::StreamInfoPtr()); | |
| 56 return; | |
| 57 } | |
| 58 auto info = stream_->stream_info(); | |
|
raymes
2015/01/12 05:26:04
Please add a type converter as discussed :)
Sam McNally
2015/01/12 07:13:35
Done.
| |
| 59 auto stream_info = mime_handler::StreamInfo::New(); | |
| 60 stream_info->embedded = stream_->embedded(); | |
| 61 stream_info->tab_id = stream_->tab_id(); | |
| 62 stream_info->mime_type = info->mime_type; | |
| 63 stream_info->original_url = info->original_url.spec(); | |
| 64 stream_info->stream_url = info->handle->GetURL().spec(); | |
| 65 stream_info->expected_content_size = stream_->expected_content_size(); | |
| 66 stream_info->response_headers = | |
| 67 CreateResponseHeadersMap(stream_->stream_info()->response_headers.get()); | |
| 68 callback.Run(stream_info.Pass()); | |
| 69 } | |
| 70 | |
| 71 void MimeHandlerServiceImpl::AbortStream( | |
| 72 const mojo::Callback<void()>& callback) { | |
| 73 stream_->Abort(); | |
| 74 callback.Run(); | |
| 75 } | |
| 76 | |
| 77 } // namespace extensions | |
| OLD | NEW |