OLD | NEW |
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 "content/utility/utility_process_control_impl.h" | 5 #include "content/utility/utility_process_control_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/thread_task_runner_handle.h" |
| 9 #include "content/common/mojo/existing_thread_loader.h" |
8 #include "content/common/mojo/static_loader.h" | 10 #include "content/common/mojo/static_loader.h" |
9 #include "content/public/common/content_client.h" | 11 #include "content/public/common/content_client.h" |
10 #include "content/public/utility/content_utility_client.h" | 12 #include "content/public/utility/content_utility_client.h" |
11 #include "content/public/utility/utility_thread.h" | 13 #include "content/public/utility/utility_thread.h" |
12 #include "content/utility/utility_thread_impl.h" | 14 #include "content/utility/utility_thread_impl.h" |
13 | 15 |
14 #if defined(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS) | 16 #if defined(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS) |
15 #include "media/mojo/services/mojo_media_application_factory.h" | 17 #include "media/mojo/services/mojo_media_application_factory.h" |
16 #endif | 18 #endif |
17 | 19 |
18 namespace content { | 20 namespace content { |
19 | 21 |
20 namespace { | 22 namespace { |
21 | 23 |
22 // Called when a static application terminates. | 24 // Called when a static application terminates. |
23 void QuitProcess() { | 25 void QuitProcess() { |
24 UtilityThread::Get()->ReleaseProcessIfNeeded(); | 26 UtilityThread::Get()->ReleaseProcessIfNeeded(); |
25 } | 27 } |
26 | 28 |
27 } // namespace | 29 } // namespace |
28 | 30 |
29 UtilityProcessControlImpl::UtilityProcessControlImpl() {} | 31 UtilityProcessControlImpl::UtilityProcessControlImpl() |
| 32 : test_thread_("TestThread") { |
| 33 test_thread_.Start(); |
| 34 } |
30 | 35 |
31 UtilityProcessControlImpl::~UtilityProcessControlImpl() {} | 36 UtilityProcessControlImpl::~UtilityProcessControlImpl() {} |
32 | 37 |
33 void UtilityProcessControlImpl::RegisterLoaders( | 38 void UtilityProcessControlImpl::RegisterLoaders( |
34 NameToLoaderMap* name_to_loader_map) { | 39 NameToLoaderMap* name_to_loader_map) { |
35 NameToLoaderMap& map_ref = *name_to_loader_map; | 40 NameToLoaderMap& map_ref = *name_to_loader_map; |
36 | 41 |
37 ContentUtilityClient::StaticMojoApplicationMap apps; | 42 ContentUtilityClient::StaticMojoApplicationMap apps; |
38 GetContentClient()->utility()->RegisterMojoApplications(&apps); | 43 GetContentClient()->utility()->RegisterMojoApplications(&apps); |
39 | 44 |
40 for (const auto& entry : apps) { | 45 for (const auto& entry : apps) { |
41 map_ref[entry.first] = | 46 map_ref[entry.first] = |
42 new StaticLoader(entry.second, base::Bind(&QuitProcess)); | 47 new StaticLoader(entry.second, base::Bind(&QuitProcess)); |
43 } | 48 } |
44 | 49 |
45 #if defined(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS) | 50 #if defined(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS) |
46 map_ref["mojo:media"] = new StaticLoader( | 51 map_ref["mojo:media"] = |
47 base::Bind(&media::CreateMojoMediaApplication), base::Bind(&QuitProcess)); | 52 new ExistingThreadLoader(base::Bind(&media::CreateMojoMediaApplication), |
| 53 test_thread_.task_runner()); |
48 #endif | 54 #endif |
49 } | 55 } |
50 | 56 |
51 void UtilityProcessControlImpl::OnLoadFailed() { | 57 void UtilityProcessControlImpl::OnLoadFailed() { |
52 UtilityThreadImpl* utility_thread = | 58 UtilityThreadImpl* utility_thread = |
53 static_cast<UtilityThreadImpl*>(UtilityThread::Get()); | 59 static_cast<UtilityThreadImpl*>(UtilityThread::Get()); |
54 utility_thread->Shutdown(); | 60 utility_thread->Shutdown(); |
55 utility_thread->ReleaseProcessIfNeeded(); | 61 utility_thread->ReleaseProcessIfNeeded(); |
56 } | 62 } |
57 | 63 |
58 } // namespace content | 64 } // namespace content |
OLD | NEW |