Index: ash/display/window_tree_host_manager.cc |
diff --git a/ash/display/window_tree_host_manager.cc b/ash/display/window_tree_host_manager.cc |
index 7f11547024ddfca02b103ad16dc651528976d39b..bce98e78e056894aeb9fad3559837a808bcb5f3d 100644 |
--- a/ash/display/window_tree_host_manager.cc |
+++ b/ash/display/window_tree_host_manager.cc |
@@ -524,7 +524,9 @@ void WindowTreeHostManager::UpdateMouseLocationAfterDisplayChange() { |
// The cursor's native position did not change but its screen position did |
// change. This occurs when the scale factor or the rotation of the display |
// that the cursor is on changes. |
- Shell::Get()->cursor_manager()->SetDisplay(target_display); |
+ // TODO: conditional should not be necessary. http://crbug.com/631103. |
+ if (Shell::Get()->cursor_manager()) |
+ Shell::Get()->cursor_manager()->SetDisplay(target_display); |
// Update the cursor's root location. This ends up dispatching a synthetic |
// mouse move. The synthetic mouse move updates the composited cursor's |
@@ -813,22 +815,29 @@ AshWindowTreeHost* WindowTreeHostManager::AddWindowTreeHostForDisplay( |
params_with_bounds.initial_bounds = display_info.bounds_in_native(); |
params_with_bounds.offscreen = |
display.id() == display::DisplayManager::kUnifiedDisplayId; |
+ params_with_bounds.display_id = display.id(); |
+ params_with_bounds.device_scale_factor = display.device_scale_factor(); |
+ params_with_bounds.ui_scale_factor = display_info.configured_ui_scale(); |
// The AshWindowTreeHost ends up owned by the RootWindowControllers created |
// by this class. |
AshWindowTreeHost* ash_host = |
AshWindowTreeHost::Create(params_with_bounds).release(); |
aura::WindowTreeHost* host = ash_host->AsWindowTreeHost(); |
- if (!input_method_) { // Singleton input method instance for Ash. |
- input_method_ = ui::CreateInputMethod(this, host->GetAcceleratedWidget()); |
- // Makes sure the input method is focused by default when created, because |
- // Ash uses singleton InputMethod and it won't call OnFocus/OnBlur when the |
- // active window changed. |
- input_method_->OnFocus(); |
- input_method_event_handler_.reset( |
- new InputMethodEventHandler(input_method_.get())); |
+ // TODO: Config::MUS should not install an InputMethod. |
+ // http://crbug.com/706913 |
+ if (!host->has_input_method()) { |
+ if (!input_method_) { // Singleton input method instance for Ash. |
+ input_method_ = ui::CreateInputMethod(this, host->GetAcceleratedWidget()); |
+ // Makes sure the input method is focused by default when created, because |
+ // Ash uses singleton InputMethod and it won't call OnFocus/OnBlur when |
+ // the active window changed. |
+ input_method_->OnFocus(); |
+ input_method_event_handler_.reset( |
+ new InputMethodEventHandler(input_method_.get())); |
+ } |
+ host->SetSharedInputMethod(input_method_.get()); |
+ ash_host->set_input_method_handler(input_method_event_handler_.get()); |
} |
- host->SetSharedInputMethod(input_method_.get()); |
- ash_host->set_input_method_handler(input_method_event_handler_.get()); |
host->window()->SetName(base::StringPrintf( |
"%sRootWindow-%d", params_with_bounds.offscreen ? "Offscreen" : "", |