Index: services/ui/service.cc |
diff --git a/services/ui/service.cc b/services/ui/service.cc |
index f44fe0467da9605072fafb53c7615df3dc25d3f1..59b670f08c12cc24c469d0e787aa55df05a85a69 100644 |
--- a/services/ui/service.cc |
+++ b/services/ui/service.cc |
@@ -100,9 +100,9 @@ Service::~Service() { |
#endif |
} |
-void Service::InitializeResources(service_manager::Connector* connector) { |
+bool Service::InitializeResources(service_manager::Connector* connector) { |
if (ui::ResourceBundle::HasSharedInstance()) |
- return; |
+ return true; |
std::set<std::string> resource_paths; |
resource_paths.insert(kResourceFileStrings); |
@@ -112,7 +112,10 @@ void Service::InitializeResources(service_manager::Connector* connector) { |
catalog::ResourceLoader loader; |
filesystem::mojom::DirectoryPtr directory; |
connector->BindInterface(catalog::mojom::kServiceName, &directory); |
- CHECK(loader.OpenFiles(std::move(directory), resource_paths)); |
+ if (!loader.OpenFiles(std::move(directory), resource_paths)) { |
+ LOG(ERROR) << "Service failed to open resource files."; |
+ return false; |
+ } |
ui::RegisterPathProvider(); |
@@ -125,6 +128,7 @@ void Service::InitializeResources(service_manager::Connector* connector) { |
ui::SCALE_FACTOR_100P); |
rb.AddDataPackFromFile(loader.TakeFile(kResourceFile200), |
ui::SCALE_FACTOR_200P); |
+ return true; |
} |
Service::UserState* Service::GetUserState( |
@@ -156,7 +160,11 @@ void Service::OnStart() { |
if (test_config_) |
ui::test::EnableTestConfigForPlatformWindows(); |
- InitializeResources(context()->connector()); |
+ // If resources are unavailable do not complete start-up. |
+ if (!InitializeResources(context()->connector())) { |
+ context()->QuitNow(); |
+ return; |
+ } |
#if defined(USE_OZONE) |
// The ozone platform can provide its own event source. So initialize the |