Chromium Code Reviews| Index: chrome/service/service_utility_process_host.cc |
| diff --git a/chrome/service/service_utility_process_host.cc b/chrome/service/service_utility_process_host.cc |
| index 0c4e88c03a49d5935afb7bbc34827030c762ffde..cb53b9e6808d7fa1176c942c0ffcbc9984e715fa 100644 |
| --- a/chrome/service/service_utility_process_host.cc |
| +++ b/chrome/service/service_utility_process_host.cc |
| @@ -20,6 +20,7 @@ |
| #if defined(OS_WIN) |
| #include "base/memory/scoped_ptr.h" |
| #include "base/win/scoped_handle.h" |
| +#include "content/common/child_process_messages.h" |
| #include "printing/emf_win.h" |
| #endif |
| @@ -28,7 +29,8 @@ ServiceUtilityProcessHost::ServiceUtilityProcessHost( |
| : ServiceChildProcessHost(ChildProcessInfo::UTILITY_PROCESS), |
| client_(client), |
| client_message_loop_proxy_(client_message_loop_proxy), |
| - waiting_for_reply_(false) { |
| + waiting_for_reply_(false), |
| + unique_process_id_(0) { |
| } |
| ServiceUtilityProcessHost::~ServiceUtilityProcessHost() { |
| @@ -92,6 +94,10 @@ bool ServiceUtilityProcessHost::StartGetPrinterCapsAndDefaults( |
| return Send(new ChromeUtilityMsg_GetPrinterCapsAndDefaults(printer_name)); |
| } |
| +int ServiceUtilityProcessHost::unique_process_id() { |
| + return unique_process_id_; |
| +} |
| + |
| bool ServiceUtilityProcessHost::StartProcess(bool no_sandbox, |
| const FilePath& exposed_dir) { |
| // Name must be set or metrics_service will crash in any test which |
| @@ -112,7 +118,12 @@ bool ServiceUtilityProcessHost::StartProcess(bool no_sandbox, |
| cmd_line.AppendSwitchASCII(switches::kProcessChannelID, channel_id()); |
| cmd_line.AppendSwitch(switches::kLang); |
| - return Launch(&cmd_line, no_sandbox, exposed_dir); |
| + if (Launch(&cmd_line, no_sandbox, exposed_dir)) { |
| + unique_process_id_ = ChildProcessInfo::GenerateChildProcessUniqueId(); |
|
jam
2011/09/19 16:31:17
we usually set this in the constructor. that way t
arthurhsu
2011/09/19 18:22:51
Done.
|
| + return true; |
| + } |
| + |
| + return false; |
| } |
| FilePath ServiceUtilityProcessHost::GetUtilityProcessCmd() { |
| @@ -145,6 +156,8 @@ bool ServiceUtilityProcessHost::OnMessageReceived(const IPC::Message& message) { |
| IPC_BEGIN_MESSAGE_MAP_EX(ServiceUtilityProcessHost, message, msg_is_ok) |
| #if defined(OS_WIN) // This hack is Windows-specific. |
| IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_PreCacheFont, OnPreCacheFont) |
| + IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ReleaseCachedFonts, |
| + OnReleaseCachedFonts) |
| #endif |
| IPC_MESSAGE_HANDLER( |
| ChromeUtilityHostMsg_RenderPDFPagesToMetafile_Succeeded, |
| @@ -166,7 +179,11 @@ bool ServiceUtilityProcessHost::MessageForClient(const IPC::Message& message) { |
| #if defined(OS_WIN) // This hack is Windows-specific. |
| void ServiceUtilityProcessHost::OnPreCacheFont(const LOGFONT& font) { |
| - PreCacheFont(font); |
| + PreCacheFont(font, unique_process_id()); |
| +} |
| + |
| +void ServiceUtilityProcessHost::OnReleaseCachedFonts() { |
| + ReleaseCachedFonts(unique_process_id()); |
| } |
| #endif // OS_WIN |