Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chromecast/browser/cast_content_browser_client.h" | 5 #include "chromecast/browser/cast_content_browser_client.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/base_switches.h" | 9 #include "base/base_switches.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 33 #include "content/public/browser/client_certificate_delegate.h" | 33 #include "content/public/browser/client_certificate_delegate.h" |
| 34 #include "content/public/browser/render_process_host.h" | 34 #include "content/public/browser/render_process_host.h" |
| 35 #include "content/public/browser/resource_dispatcher_host.h" | 35 #include "content/public/browser/resource_dispatcher_host.h" |
| 36 #include "content/public/browser/web_contents.h" | 36 #include "content/public/browser/web_contents.h" |
| 37 #include "content/public/common/content_descriptors.h" | 37 #include "content/public/common/content_descriptors.h" |
| 38 #include "content/public/common/content_switches.h" | 38 #include "content/public/common/content_switches.h" |
| 39 #include "content/public/common/url_constants.h" | 39 #include "content/public/common/url_constants.h" |
| 40 #include "content/public/common/web_preferences.h" | 40 #include "content/public/common/web_preferences.h" |
| 41 #include "gin/v8_initializer.h" | 41 #include "gin/v8_initializer.h" |
| 42 #include "net/ssl/ssl_cert_request_info.h" | 42 #include "net/ssl/ssl_cert_request_info.h" |
| 43 #include "net/url_request/url_request_context_getter.h" | |
| 43 #include "ui/gl/gl_switches.h" | 44 #include "ui/gl/gl_switches.h" |
| 44 | 45 |
| 45 #if defined(OS_ANDROID) | 46 #if defined(OS_ANDROID) |
| 46 #include "chromecast/browser/android/external_video_surface_container_impl.h" | 47 #include "chromecast/browser/android/external_video_surface_container_impl.h" |
| 47 #endif // defined(OS_ANDROID) | 48 #endif // defined(OS_ANDROID) |
| 48 | 49 |
| 49 #if defined(OS_ANDROID) | 50 #if defined(OS_ANDROID) |
| 50 #include "components/crash/browser/crash_dump_manager_android.h" | 51 #include "components/crash/browser/crash_dump_manager_android.h" |
| 51 #endif // defined(OS_ANDROID) | 52 #endif // defined(OS_ANDROID) |
| 52 | 53 |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 67 } | 68 } |
| 68 | 69 |
| 69 content::BrowserMainParts* CastContentBrowserClient::CreateBrowserMainParts( | 70 content::BrowserMainParts* CastContentBrowserClient::CreateBrowserMainParts( |
| 70 const content::MainFunctionParams& parameters) { | 71 const content::MainFunctionParams& parameters) { |
| 71 return new CastBrowserMainParts(parameters, | 72 return new CastBrowserMainParts(parameters, |
| 72 url_request_context_factory_.get()); | 73 url_request_context_factory_.get()); |
| 73 } | 74 } |
| 74 | 75 |
| 75 void CastContentBrowserClient::RenderProcessWillLaunch( | 76 void CastContentBrowserClient::RenderProcessWillLaunch( |
| 76 content::RenderProcessHost* host) { | 77 content::RenderProcessHost* host) { |
| 77 scoped_refptr<content::BrowserMessageFilter> network_hints_message_filter( | |
| 78 new network_hints::NetworkHintsMessageFilter( | |
| 79 url_request_context_factory_->host_resolver())); | |
| 80 host->AddFilter(network_hints_message_filter.get()); | |
| 81 #if !defined(OS_ANDROID) | 78 #if !defined(OS_ANDROID) |
| 82 scoped_refptr<media::CmaMessageFilterHost> cma_message_filter( | 79 scoped_refptr<media::CmaMessageFilterHost> cma_message_filter( |
| 83 new media::CmaMessageFilterHost(host->GetID())); | 80 new media::CmaMessageFilterHost(host->GetID())); |
| 84 host->AddFilter(cma_message_filter.get()); | 81 host->AddFilter(cma_message_filter.get()); |
| 85 #endif // !defined(OS_ANDROID) | 82 #endif // !defined(OS_ANDROID) |
| 86 | 83 |
| 84 // Forcibly trigger I/O-thread URLRequestContext initialization before | |
| 85 // getting HostResolver. | |
| 86 content::BrowserThread::PostTask( | |
| 87 content::BrowserThread::IO, | |
| 88 FROM_HERE, | |
| 89 base::Bind(base::IgnoreResult( | |
| 90 &net::URLRequestContextGetter::GetURLRequestContext), | |
| 91 base::Unretained( | |
| 92 url_request_context_factory_->GetSystemGetter()))); | |
| 93 content::BrowserThread::PostTaskAndReplyWithResult( | |
| 94 content::BrowserThread::IO, FROM_HERE, | |
| 95 base::Bind(&URLRequestContextFactory::host_resolver, | |
| 96 base::Unretained(url_request_context_factory_.get())), | |
| 97 base::Bind(&CastContentBrowserClient::AddExtraFilter, | |
| 98 base::Unretained(this), host->GetID())); | |
|
byungchul
2015/04/21 00:24:30
I am fine with this, but you can merge 2 posttasks
gunsch
2015/04/21 17:10:46
I like that idea, done.
| |
| 99 | |
| 87 auto extra_filters = PlatformGetBrowserMessageFilters(); | 100 auto extra_filters = PlatformGetBrowserMessageFilters(); |
| 88 for (auto const& filter : extra_filters) { | 101 for (auto const& filter : extra_filters) { |
| 89 host->AddFilter(filter.get()); | 102 host->AddFilter(filter.get()); |
| 90 } | 103 } |
| 91 } | 104 } |
| 92 | 105 |
| 106 void CastContentBrowserClient::AddExtraFilter( | |
| 107 int render_process_id, net::HostResolver* host_resolver) { | |
| 108 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | |
| 109 | |
| 110 content::RenderProcessHost* host = | |
| 111 content::RenderProcessHost::FromID(render_process_id); | |
| 112 if (!host) | |
| 113 return; | |
| 114 | |
| 115 scoped_refptr<content::BrowserMessageFilter> network_hints_message_filter( | |
| 116 new network_hints::NetworkHintsMessageFilter(host_resolver)); | |
| 117 host->AddFilter(network_hints_message_filter.get()); | |
| 118 } | |
| 119 | |
| 93 net::URLRequestContextGetter* CastContentBrowserClient::CreateRequestContext( | 120 net::URLRequestContextGetter* CastContentBrowserClient::CreateRequestContext( |
| 94 content::BrowserContext* browser_context, | 121 content::BrowserContext* browser_context, |
| 95 content::ProtocolHandlerMap* protocol_handlers, | 122 content::ProtocolHandlerMap* protocol_handlers, |
| 96 content::URLRequestInterceptorScopedVector request_interceptors) { | 123 content::URLRequestInterceptorScopedVector request_interceptors) { |
| 97 return url_request_context_factory_->CreateMainGetter( | 124 return url_request_context_factory_->CreateMainGetter( |
| 98 browser_context, | 125 browser_context, |
| 99 protocol_handlers, | 126 protocol_handlers, |
| 100 request_interceptors.Pass()); | 127 request_interceptors.Pass()); |
| 101 } | 128 } |
| 102 | 129 |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 398 process_type, dumps_path, false /* upload */); | 425 process_type, dumps_path, false /* upload */); |
| 399 // StartUploaderThread() even though upload is diferred. | 426 // StartUploaderThread() even though upload is diferred. |
| 400 // Breakpad-related memory is freed in the uploader thread. | 427 // Breakpad-related memory is freed in the uploader thread. |
| 401 crash_handler->StartUploaderThread(); | 428 crash_handler->StartUploaderThread(); |
| 402 return crash_handler; | 429 return crash_handler; |
| 403 } | 430 } |
| 404 #endif // !defined(OS_ANDROID) | 431 #endif // !defined(OS_ANDROID) |
| 405 | 432 |
| 406 } // namespace shell | 433 } // namespace shell |
| 407 } // namespace chromecast | 434 } // namespace chromecast |
| OLD | NEW |