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

Side by Side Diff: chromecast/browser/cast_browser_main_parts.cc

Issue 893303002: Chromecast Android: fix for 100% crash when child process is launched. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updates commit msg Created 5 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_browser_main_parts.h" 5 #include "chromecast/browser/cast_browser_main_parts.h"
6 6
7 #include <signal.h> 7 #include <signal.h>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 void CastBrowserMainParts::PostMainMessageLoopStart() { 161 void CastBrowserMainParts::PostMainMessageLoopStart() {
162 cast_browser_process_->SetMetricsHelper(make_scoped_ptr( 162 cast_browser_process_->SetMetricsHelper(make_scoped_ptr(
163 new metrics::CastMetricsHelper(base::MessageLoopProxy::current()))); 163 new metrics::CastMetricsHelper(base::MessageLoopProxy::current())));
164 164
165 #if defined(OS_ANDROID) 165 #if defined(OS_ANDROID)
166 base::MessageLoopForUI::current()->Start(); 166 base::MessageLoopForUI::current()->Start();
167 #endif // defined(OS_ANDROID) 167 #endif // defined(OS_ANDROID)
168 } 168 }
169 169
170 int CastBrowserMainParts::PreCreateThreads() { 170 int CastBrowserMainParts::PreCreateThreads() {
171 #if !defined(OS_ANDROID) 171 #if defined(OS_ANDROID)
172 // GPU process is started immediately after threads are created, requiring
173 // CrashDumpManager to be initialized beforehand.
174 base::FilePath crash_dumps_dir;
175 if (!chromecast::CrashHandler::GetCrashDumpLocation(&crash_dumps_dir)) {
176 LOG(ERROR) << "Could not find crash dump location.";
177 }
178 cast_browser_process_->SetCrashDumpManager(
179 make_scoped_ptr(new breakpad::CrashDumpManager(crash_dumps_dir)));
180 #else
172 base::FilePath home_dir; 181 base::FilePath home_dir;
173 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir)); 182 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir));
174 if (!base::CreateDirectory(home_dir)) 183 if (!base::CreateDirectory(home_dir))
175 return 1; 184 return 1;
176 #endif // !defined(OS_ANDROID) 185 #endif
177 return 0; 186 return 0;
178 } 187 }
179 188
180 void CastBrowserMainParts::PreMainMessageLoopRun() { 189 void CastBrowserMainParts::PreMainMessageLoopRun() {
181 scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple()); 190 scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple());
182 metrics::RegisterPrefs(pref_registry.get()); 191 metrics::RegisterPrefs(pref_registry.get());
183 cast_browser_process_->SetPrefService( 192 cast_browser_process_->SetPrefService(
184 PrefServiceHelper::CreatePrefService(pref_registry.get())); 193 PrefServiceHelper::CreatePrefService(pref_registry.get()));
185 194
186 #if !defined(OS_ANDROID) 195 #if !defined(OS_ANDROID)
187 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); 196 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
188 if (cmd_line->HasSwitch(switches::kEnableCmaMediaPipeline)) 197 if (cmd_line->HasSwitch(switches::kEnableCmaMediaPipeline))
189 ::media::SetBrowserCdmFactory(new media::CastBrowserCdmFactory); 198 ::media::SetBrowserCdmFactory(new media::CastBrowserCdmFactory);
190 #endif // !defined(OS_ANDROID) 199 #endif // !defined(OS_ANDROID)
191 200
192 url_request_context_factory_->InitializeOnUIThread(); 201 url_request_context_factory_->InitializeOnUIThread();
193 202
194 cast_browser_process_->SetBrowserContext( 203 cast_browser_process_->SetBrowserContext(
195 make_scoped_ptr(new CastBrowserContext(url_request_context_factory_))); 204 make_scoped_ptr(new CastBrowserContext(url_request_context_factory_)));
196 cast_browser_process_->SetMetricsServiceClient( 205 cast_browser_process_->SetMetricsServiceClient(
197 metrics::CastMetricsServiceClient::Create( 206 metrics::CastMetricsServiceClient::Create(
198 content::BrowserThread::GetBlockingPool(), 207 content::BrowserThread::GetBlockingPool(),
199 cast_browser_process_->pref_service(), 208 cast_browser_process_->pref_service(),
200 cast_browser_process_->browser_context()->GetRequestContext())); 209 cast_browser_process_->browser_context()->GetRequestContext()));
201 210
202 #if defined(OS_ANDROID)
203 base::FilePath crash_dumps_dir;
204 if (!chromecast::CrashHandler::GetCrashDumpLocation(&crash_dumps_dir)) {
205 LOG(ERROR) << "Could not find crash dump location.";
206 }
207 cast_browser_process_->SetCrashDumpManager(
208 make_scoped_ptr(new breakpad::CrashDumpManager(crash_dumps_dir)));
209 #endif
210
211 if (!PlatformClientAuth::Initialize()) 211 if (!PlatformClientAuth::Initialize())
212 LOG(ERROR) << "PlatformClientAuth::Initialize failed."; 212 LOG(ERROR) << "PlatformClientAuth::Initialize failed.";
213 213
214 cast_browser_process_->SetRemoteDebuggingServer( 214 cast_browser_process_->SetRemoteDebuggingServer(
215 make_scoped_ptr(new RemoteDebuggingServer())); 215 make_scoped_ptr(new RemoteDebuggingServer()));
216 216
217 cast_browser_process_->SetCastService(CastService::Create( 217 cast_browser_process_->SetCastService(CastService::Create(
218 cast_browser_process_->browser_context(), 218 cast_browser_process_->browser_context(),
219 cast_browser_process_->pref_service(), 219 cast_browser_process_->pref_service(),
220 cast_browser_process_->metrics_service_client(), 220 cast_browser_process_->metrics_service_client(),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 } 252 }
253 253
254 void CastBrowserMainParts::PostMainMessageLoopRun() { 254 void CastBrowserMainParts::PostMainMessageLoopRun() {
255 cast_browser_process_->cast_service()->Finalize(); 255 cast_browser_process_->cast_service()->Finalize();
256 cast_browser_process_->metrics_service_client()->Finalize(); 256 cast_browser_process_->metrics_service_client()->Finalize();
257 cast_browser_process_.reset(); 257 cast_browser_process_.reset();
258 } 258 }
259 259
260 } // namespace shell 260 } // namespace shell
261 } // namespace chromecast 261 } // namespace chromecast
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698