OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/display/screen_manager_ozone_internal.h" | 5 #include "services/ui/display/screen_manager_ozone_internal.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
12 #include "base/threading/thread_task_runner_handle.h" | 12 #include "base/threading/thread_task_runner_handle.h" |
| 13 #include "chrome/common/pref_names.h" |
13 #include "chromeos/system/devicemode.h" | 14 #include "chromeos/system/devicemode.h" |
14 #include "mojo/public/cpp/bindings/strong_binding.h" | 15 #include "mojo/public/cpp/bindings/strong_binding.h" |
15 #include "services/service_manager/public/cpp/interface_registry.h" | 16 #include "services/service_manager/public/cpp/interface_registry.h" |
16 #include "services/ui/display/output_protection.h" | 17 #include "services/ui/display/output_protection.h" |
17 #include "third_party/skia/include/core/SkColor.h" | 18 #include "third_party/skia/include/core/SkColor.h" |
18 #include "ui/display/manager/chromeos/display_change_observer.h" | 19 #include "ui/display/manager/chromeos/display_change_observer.h" |
19 #include "ui/display/manager/chromeos/touch_transform_controller.h" | 20 #include "ui/display/manager/chromeos/touch_transform_controller.h" |
20 #include "ui/display/manager/display_layout_store.h" | 21 #include "ui/display/manager/display_layout_store.h" |
21 #include "ui/display/manager/display_manager_utilities.h" | 22 #include "ui/display/manager/display_manager_utilities.h" |
22 #include "ui/display/screen.h" | 23 #include "ui/display/screen.h" |
23 #include "ui/display/screen_base.h" | 24 #include "ui/display/screen_base.h" |
24 #include "ui/display/types/display_snapshot.h" | 25 #include "ui/display/types/display_snapshot.h" |
25 #include "ui/display/types/fake_display_controller.h" | 26 #include "ui/display/types/fake_display_controller.h" |
26 #include "ui/display/types/native_display_delegate.h" | 27 #include "ui/display/types/native_display_delegate.h" |
27 #include "ui/gfx/geometry/rect.h" | 28 #include "ui/gfx/geometry/rect.h" |
28 #include "ui/ozone/public/ozone_platform.h" | 29 #include "ui/ozone/public/ozone_platform.h" |
29 | 30 |
| 31 #include "ui/display/manager/display_preferences.h" |
| 32 |
| 33 #include "services/service_manager/public/cpp/connector.h" |
| 34 |
| 35 #include "components/prefs/pref_store.h" |
| 36 #include "services/preferences/public/interfaces/preferences.mojom.h" |
| 37 |
| 38 #include "base/values.h" |
| 39 |
30 namespace display { | 40 namespace display { |
31 namespace { | 41 namespace { |
32 | 42 |
33 // Needed for DisplayConfigurator::ForceInitialConfigure. | 43 // Needed for DisplayConfigurator::ForceInitialConfigure. |
34 const SkColor kChromeOsBootColor = SkColorSetRGB(0xfe, 0xfe, 0xfe); | 44 const SkColor kChromeOsBootColor = SkColorSetRGB(0xfe, 0xfe, 0xfe); |
35 | 45 |
36 // Recursively swaps the displays in a DisplayLayout to change the primary | 46 // Recursively swaps the displays in a DisplayLayout to change the primary |
37 // display but keep the same relative display layout. | 47 // display but keep the same relative display layout. |
38 // TODO(kylechar): This is copied from WindowTreeHostManager. The concept of | 48 // TODO(kylechar): This is copied from WindowTreeHostManager. The concept of |
39 // getting the same relative display layout with a different primary display id | 49 // getting the same relative display layout with a different primary display id |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 delegate_->OnPrimaryDisplayChanged(primary_display_id_); | 152 delegate_->OnPrimaryDisplayChanged(primary_display_id_); |
143 } | 153 } |
144 | 154 |
145 void ScreenManagerOzoneInternal::AddInterfaces( | 155 void ScreenManagerOzoneInternal::AddInterfaces( |
146 service_manager::InterfaceRegistry* registry) { | 156 service_manager::InterfaceRegistry* registry) { |
147 registry->AddInterface<mojom::DisplayController>(this); | 157 registry->AddInterface<mojom::DisplayController>(this); |
148 registry->AddInterface<mojom::OutputProtection>(this); | 158 registry->AddInterface<mojom::OutputProtection>(this); |
149 registry->AddInterface<mojom::TestDisplayController>(this); | 159 registry->AddInterface<mojom::TestDisplayController>(this); |
150 } | 160 } |
151 | 161 |
152 void ScreenManagerOzoneInternal::Init(ScreenManagerDelegate* delegate) { | 162 void ScreenManagerOzoneInternal::Init(ScreenManagerDelegate* delegate, |
| 163 service_manager::Connector* connector) { |
153 DCHECK(delegate); | 164 DCHECK(delegate); |
154 delegate_ = delegate; | 165 delegate_ = delegate; |
155 | 166 |
156 // Tests may inject a NativeDisplayDelegate, otherwise get it from | 167 // Tests may inject a NativeDisplayDelegate, otherwise get it from |
157 // OzonePlatform. | 168 // OzonePlatform. |
158 if (!native_display_delegate_) { | 169 if (!native_display_delegate_) { |
159 native_display_delegate_ = | 170 native_display_delegate_ = |
160 ui::OzonePlatform::GetInstance()->CreateNativeDisplayDelegate(); | 171 ui::OzonePlatform::GetInstance()->CreateNativeDisplayDelegate(); |
161 } | 172 } |
162 | 173 |
(...skipping 22 matching lines...) Expand all Loading... |
185 display_configurator_.AddObserver(display_change_observer_.get()); | 196 display_configurator_.AddObserver(display_change_observer_.get()); |
186 display_configurator_.set_state_controller(display_change_observer_.get()); | 197 display_configurator_.set_state_controller(display_change_observer_.get()); |
187 display_configurator_.set_mirroring_controller(display_manager_.get()); | 198 display_configurator_.set_mirroring_controller(display_manager_.get()); |
188 | 199 |
189 // Perform initial configuration. | 200 // Perform initial configuration. |
190 display_configurator_.Init(std::move(native_display_delegate_), false); | 201 display_configurator_.Init(std::move(native_display_delegate_), false); |
191 display_configurator_.ForceInitialConfigure(kChromeOsBootColor); | 202 display_configurator_.ForceInitialConfigure(kChromeOsBootColor); |
192 | 203 |
193 touch_transform_controller_ = base::MakeUnique<TouchTransformController>( | 204 touch_transform_controller_ = base::MakeUnique<TouchTransformController>( |
194 &display_configurator_, display_manager_.get()); | 205 &display_configurator_, display_manager_.get()); |
| 206 |
| 207 // base::Value pref_kDisplayRotationLock(prefs::kDisplayRotationLock); |
| 208 // base::Value pref_kSecondaryDisplays(prefs::kSecondaryDisplays); |
| 209 // base::Value pref_kDisplayProperties(prefs::kDisplayProperties); |
| 210 // base::Value pref_kDisplayPowerState(prefs::kDisplayPowerState); |
| 211 |
| 212 // auto prefs = base::MakeUnique<base::DictionaryValue>(); |
| 213 |
| 214 // prefs->Set(prefs::kDisplayRotationLock, |
| 215 // pref_kDisplayRotationLock.CreateDeepCopy()); |
| 216 // prefs->Set(prefs::kSecondaryDisplays, |
| 217 // pref_kSecondaryDisplays.CreateDeepCopy()); |
| 218 // prefs->Set(prefs::kDisplayProperties, |
| 219 // pref_kDisplayProperties.CreateDeepCopy()); |
| 220 // prefs->Set(prefs::kDisplayPowerState, |
| 221 // pref_kDisplayPowerState.CreateDeepCopy()); |
| 222 |
| 223 connector_ = connector; |
| 224 connector_->BindInterface(prefs::mojom::kServiceName, &pref_factory_ptr); |
| 225 pref_client_store_ = |
| 226 new preferences::PrefClientStore(std::move(pref_factory_ptr)); |
| 227 |
| 228 pref_client_store_->AddObserver(this); |
| 229 |
| 230 //display::LoadDisplayPreferences(true, &display_configurator_, |
| 231 //display_manager_.get(), pref_client_store_.get()); |
| 232 |
| 233 pref_client_store_->Subscribe( |
| 234 {prefs::kDisplayRotationLock, prefs::kSecondaryDisplays, |
| 235 prefs::kDisplayProperties, prefs::kDisplayProperties}); |
| 236 |
| 237 // if (pref_client_store_->IsInitializationComplete()) { |
| 238 // LOG(ERROR) << "display::ScreenManagerOzoneInternal::Init() 6"; |
| 239 // OnInitializationCompleted(true); |
| 240 //} |
| 241 // OnPrefValueChanged(prefs::kDisplayRotationLock); |
| 242 // OnPrefValueChanged(prefs::kSecondaryDisplays); |
| 243 // OnPrefValueChanged(prefs::kDisplayProperties); |
| 244 // OnPrefValueChanged(prefs::kDisplayPowerState); |
| 245 } |
| 246 |
| 247 void ScreenManagerOzoneInternal::OnInitializationCompleted(bool succeeded) { |
| 248 DCHECK(!initialization_completed_); |
| 249 DCHECK(succeeded); |
| 250 DCHECK(pref_client_store_->IsInitializationComplete()); |
| 251 initialization_completed_ = true; |
| 252 |
| 253 LOG(ERROR) |
| 254 << "OnInitializationCompleted true----------------------------------"; |
| 255 pref_client_store_->SetValue(prefs::kDisplayRotationLock, |
| 256 base::MakeUnique<base::Value>(10), 1); |
| 257 // LOG(ERROR) << "-------- |
| 258 // pref_client_store_->GetValue(prefs::kDisplayRotationLock):" << temp; |
| 259 // display::LoadDisplayPreferences(true, &display_configurator_, |
| 260 // display_manager_.get(), pref_client_store_.get()); |
| 261 } |
| 262 |
| 263 void ScreenManagerOzoneInternal::OnPrefValueChanged(const std::string& key) { |
| 264 const base::Value* value = NULL; |
| 265 DCHECK(pref_client_store_->GetValue(key, &value)); |
| 266 LOG(ERROR) << "-------- ScreenManagerOzoneInternal::OnPrefValueChanged: " |
| 267 << value; |
| 268 changed_prefs_.Set(key, value->DeepCopy()); |
195 } | 269 } |
196 | 270 |
197 void ScreenManagerOzoneInternal::RequestCloseDisplay(int64_t display_id) { | 271 void ScreenManagerOzoneInternal::RequestCloseDisplay(int64_t display_id) { |
198 if (!fake_display_controller_) | 272 if (!fake_display_controller_) |
199 return; | 273 return; |
200 | 274 |
201 // Tell the NDD to remove the display. ScreenManager will get an update | 275 // Tell the NDD to remove the display. ScreenManager will get an update |
202 // that the display configuration has changed and the display will be gone. | 276 // that the display configuration has changed and the display will be gone. |
203 fake_display_controller_->RemoveDisplay(display_id); | 277 fake_display_controller_->RemoveDisplay(display_id); |
204 } | 278 } |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 std::move(request)); | 471 std::move(request)); |
398 } | 472 } |
399 | 473 |
400 void ScreenManagerOzoneInternal::Create( | 474 void ScreenManagerOzoneInternal::Create( |
401 const service_manager::Identity& remote_identity, | 475 const service_manager::Identity& remote_identity, |
402 mojom::TestDisplayControllerRequest request) { | 476 mojom::TestDisplayControllerRequest request) { |
403 test_bindings_.AddBinding(this, std::move(request)); | 477 test_bindings_.AddBinding(this, std::move(request)); |
404 } | 478 } |
405 | 479 |
406 } // namespace display | 480 } // namespace display |
OLD | NEW |