| 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 "services/ui/service.h" | 5 #include "services/ui/service.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 // Destroy |window_server_| first, since it depends on |event_source_|. | 93 // Destroy |window_server_| first, since it depends on |event_source_|. |
| 94 // WindowServer (or more correctly its Displays) may have state that needs to | 94 // WindowServer (or more correctly its Displays) may have state that needs to |
| 95 // be destroyed before GpuState as well. | 95 // be destroyed before GpuState as well. |
| 96 window_server_.reset(); | 96 window_server_.reset(); |
| 97 | 97 |
| 98 #if defined(USE_OZONE) | 98 #if defined(USE_OZONE) |
| 99 OzonePlatform::Shutdown(); | 99 OzonePlatform::Shutdown(); |
| 100 #endif | 100 #endif |
| 101 } | 101 } |
| 102 | 102 |
| 103 void Service::InitializeResources(service_manager::Connector* connector) { | 103 bool Service::InitializeResources(service_manager::Connector* connector) { |
| 104 if (ui::ResourceBundle::HasSharedInstance()) | 104 if (ui::ResourceBundle::HasSharedInstance()) |
| 105 return; | 105 return true; |
| 106 | 106 |
| 107 std::set<std::string> resource_paths; | 107 std::set<std::string> resource_paths; |
| 108 resource_paths.insert(kResourceFileStrings); | 108 resource_paths.insert(kResourceFileStrings); |
| 109 resource_paths.insert(kResourceFile100); | 109 resource_paths.insert(kResourceFile100); |
| 110 resource_paths.insert(kResourceFile200); | 110 resource_paths.insert(kResourceFile200); |
| 111 | 111 |
| 112 catalog::ResourceLoader loader; | 112 catalog::ResourceLoader loader; |
| 113 filesystem::mojom::DirectoryPtr directory; | 113 filesystem::mojom::DirectoryPtr directory; |
| 114 connector->BindInterface(catalog::mojom::kServiceName, &directory); | 114 connector->BindInterface(catalog::mojom::kServiceName, &directory); |
| 115 CHECK(loader.OpenFiles(std::move(directory), resource_paths)); | 115 if (!loader.OpenFiles(std::move(directory), resource_paths)) { |
| 116 LOG(ERROR) << "Service failed to open resource files."; |
| 117 return false; |
| 118 } |
| 116 | 119 |
| 117 ui::RegisterPathProvider(); | 120 ui::RegisterPathProvider(); |
| 118 | 121 |
| 119 // Initialize resource bundle with 1x and 2x cursor bitmaps. | 122 // Initialize resource bundle with 1x and 2x cursor bitmaps. |
| 120 ui::ResourceBundle::InitSharedInstanceWithPakFileRegion( | 123 ui::ResourceBundle::InitSharedInstanceWithPakFileRegion( |
| 121 loader.TakeFile(kResourceFileStrings), | 124 loader.TakeFile(kResourceFileStrings), |
| 122 base::MemoryMappedFile::Region::kWholeFile); | 125 base::MemoryMappedFile::Region::kWholeFile); |
| 123 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 126 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| 124 rb.AddDataPackFromFile(loader.TakeFile(kResourceFile100), | 127 rb.AddDataPackFromFile(loader.TakeFile(kResourceFile100), |
| 125 ui::SCALE_FACTOR_100P); | 128 ui::SCALE_FACTOR_100P); |
| 126 rb.AddDataPackFromFile(loader.TakeFile(kResourceFile200), | 129 rb.AddDataPackFromFile(loader.TakeFile(kResourceFile200), |
| 127 ui::SCALE_FACTOR_200P); | 130 ui::SCALE_FACTOR_200P); |
| 131 return true; |
| 128 } | 132 } |
| 129 | 133 |
| 130 Service::UserState* Service::GetUserState( | 134 Service::UserState* Service::GetUserState( |
| 131 const service_manager::Identity& remote_identity) { | 135 const service_manager::Identity& remote_identity) { |
| 132 const ws::UserId& user_id = remote_identity.user_id(); | 136 const ws::UserId& user_id = remote_identity.user_id(); |
| 133 auto it = user_id_to_user_state_.find(user_id); | 137 auto it = user_id_to_user_state_.find(user_id); |
| 134 if (it != user_id_to_user_state_.end()) | 138 if (it != user_id_to_user_state_.end()) |
| 135 return it->second.get(); | 139 return it->second.get(); |
| 136 user_id_to_user_state_[user_id] = base::WrapUnique(new UserState); | 140 user_id_to_user_state_[user_id] = base::WrapUnique(new UserState); |
| 137 return user_id_to_user_state_[user_id].get(); | 141 return user_id_to_user_state_[user_id].get(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 149 test_config_ = base::CommandLine::ForCurrentProcess()->HasSwitch( | 153 test_config_ = base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 150 switches::kUseTestConfig); | 154 switches::kUseTestConfig); |
| 151 #if defined(USE_X11) | 155 #if defined(USE_X11) |
| 152 XInitThreads(); | 156 XInitThreads(); |
| 153 ui::SetDefaultX11ErrorHandlers(); | 157 ui::SetDefaultX11ErrorHandlers(); |
| 154 #endif | 158 #endif |
| 155 | 159 |
| 156 if (test_config_) | 160 if (test_config_) |
| 157 ui::test::EnableTestConfigForPlatformWindows(); | 161 ui::test::EnableTestConfigForPlatformWindows(); |
| 158 | 162 |
| 159 InitializeResources(context()->connector()); | 163 // If resources are unavailable do not complete start-up. |
| 164 if (!InitializeResources(context()->connector())) { |
| 165 context()->QuitNow(); |
| 166 return; |
| 167 } |
| 160 | 168 |
| 161 #if defined(USE_OZONE) | 169 #if defined(USE_OZONE) |
| 162 // The ozone platform can provide its own event source. So initialize the | 170 // The ozone platform can provide its own event source. So initialize the |
| 163 // platform before creating the default event source. | 171 // platform before creating the default event source. |
| 164 // Because GL libraries need to be initialized before entering the sandbox, | 172 // Because GL libraries need to be initialized before entering the sandbox, |
| 165 // in MUS, |InitializeForUI| will load the GL libraries. | 173 // in MUS, |InitializeForUI| will load the GL libraries. |
| 166 ui::OzonePlatform::InitParams params; | 174 ui::OzonePlatform::InitParams params; |
| 167 params.connector = context()->connector(); | 175 params.connector = context()->connector(); |
| 168 params.single_process = false; | 176 params.single_process = false; |
| 169 ui::OzonePlatform::InitializeForUI(params); | 177 ui::OzonePlatform::InitializeForUI(params); |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 mojom::WindowServerTestRequest request) { | 430 mojom::WindowServerTestRequest request) { |
| 423 if (!test_config_) | 431 if (!test_config_) |
| 424 return; | 432 return; |
| 425 mojo::MakeStrongBinding( | 433 mojo::MakeStrongBinding( |
| 426 base::MakeUnique<ws::WindowServerTestImpl>(window_server_.get()), | 434 base::MakeUnique<ws::WindowServerTestImpl>(window_server_.get()), |
| 427 std::move(request)); | 435 std::move(request)); |
| 428 } | 436 } |
| 429 | 437 |
| 430 | 438 |
| 431 } // namespace ui | 439 } // namespace ui |
| OLD | NEW |