Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(710)

Side by Side Diff: extensions/browser/api/mime_handler_private/mime_handler_private.cc

Issue 2326913003: Privatize StrongBinding lifetime management (Closed)
Patch Set: rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 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 "extensions/browser/api/mime_handler_private/mime_handler_private.h" 5 #include "extensions/browser/api/mime_handler_private/mime_handler_private.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "content/public/browser/stream_handle.h" 10 #include "content/public/browser/stream_handle.h"
11 #include "content/public/browser/stream_info.h" 11 #include "content/public/browser/stream_info.h"
12 #include "content/public/common/content_constants.h" 12 #include "content/public/common/content_constants.h"
13 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_gues t.h" 13 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_gues t.h"
14 #include "extensions/common/constants.h" 14 #include "extensions/common/constants.h"
15 #include "mojo/public/cpp/bindings/map.h" 15 #include "mojo/public/cpp/bindings/map.h"
16 #include "mojo/public/cpp/bindings/strong_binding.h"
16 #include "net/http/http_response_headers.h" 17 #include "net/http/http_response_headers.h"
17 18
18 namespace extensions { 19 namespace extensions {
19 namespace { 20 namespace {
20 21
21 mojo::Map<mojo::String, mojo::String> CreateResponseHeadersMap( 22 mojo::Map<mojo::String, mojo::String> CreateResponseHeadersMap(
22 const net::HttpResponseHeaders* headers) { 23 const net::HttpResponseHeaders* headers) {
23 std::map<std::string, std::string> result; 24 std::map<std::string, std::string> result;
24 if (!headers) 25 if (!headers)
25 return mojo::Map<mojo::String, mojo::String>::From(result); 26 return mojo::Map<mojo::String, mojo::String>::From(result);
(...skipping 14 matching lines...) Expand all
40 auto& current_value = result[header_name]; 41 auto& current_value = result[header_name];
41 if (!current_value.empty()) 42 if (!current_value.empty())
42 current_value += ", "; 43 current_value += ", ";
43 current_value += header_value; 44 current_value += header_value;
44 } 45 }
45 return mojo::Map<mojo::String, mojo::String>::From(result); 46 return mojo::Map<mojo::String, mojo::String>::From(result);
46 } 47 }
47 48
48 } // namespace 49 } // namespace
49 50
51 MimeHandlerServiceImpl::MimeHandlerServiceImpl(
52 base::WeakPtr<StreamContainer> stream_container)
53 : stream_(stream_container), weak_factory_(this) {}
54
55 MimeHandlerServiceImpl::~MimeHandlerServiceImpl() {}
56
50 // static 57 // static
51 void MimeHandlerServiceImpl::Create( 58 void MimeHandlerServiceImpl::Create(
52 base::WeakPtr<StreamContainer> stream_container, 59 base::WeakPtr<StreamContainer> stream_container,
53 mojo::InterfaceRequest<mime_handler::MimeHandlerService> request) { 60 mime_handler::MimeHandlerServiceRequest request) {
54 new MimeHandlerServiceImpl(stream_container, std::move(request)); 61 mojo::MakeStrongBinding(
55 } 62 base::MakeUnique<MimeHandlerServiceImpl>(stream_container),
56 63 std::move(request));
57 MimeHandlerServiceImpl::MimeHandlerServiceImpl(
58 base::WeakPtr<StreamContainer> stream_container,
59 mojo::InterfaceRequest<mime_handler::MimeHandlerService> request)
60 : stream_(stream_container),
61 binding_(this, std::move(request)),
62 weak_factory_(this) {}
63
64 MimeHandlerServiceImpl::~MimeHandlerServiceImpl() {
65 } 64 }
66 65
67 void MimeHandlerServiceImpl::GetStreamInfo( 66 void MimeHandlerServiceImpl::GetStreamInfo(
68 const GetStreamInfoCallback& callback) { 67 const GetStreamInfoCallback& callback) {
69 if (!stream_) { 68 if (!stream_) {
70 callback.Run(mime_handler::StreamInfoPtr()); 69 callback.Run(mime_handler::StreamInfoPtr());
71 return; 70 return;
72 } 71 }
73 callback.Run(mojo::ConvertTo<mime_handler::StreamInfoPtr>(*stream_)); 72 callback.Run(mojo::ConvertTo<mime_handler::StreamInfoPtr>(*stream_));
74 } 73 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 result->original_url = info->original_url.spec(); 114 result->original_url = info->original_url.spec();
116 } 115 }
117 116
118 result->stream_url = info->handle->GetURL().spec(); 117 result->stream_url = info->handle->GetURL().spec();
119 result->response_headers = 118 result->response_headers =
120 extensions::CreateResponseHeadersMap(info->response_headers.get()); 119 extensions::CreateResponseHeadersMap(info->response_headers.get());
121 return result; 120 return result;
122 } 121 }
123 122
124 } // namespace mojo 123 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698