Chromium Code Reviews| Index: chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc |
| diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc b/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc |
| index 2e27016444e8ce89242338005457bd96061c09ef..1efe41c28f09b056bcaacdf093c16cd665f5be32 100644 |
| --- a/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc |
| +++ b/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc |
| @@ -4,13 +4,16 @@ |
| #include "chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.h" |
| -#include "ash/display/display_configuration_controller.h" |
| +#include "ash/display/window_tree_host_manager.h" |
| #include "ash/shell.h" |
| +#include "content/public/browser/browser_thread.h" |
| #include "ui/display/display.h" |
| #include "ui/display/display_layout.h" |
| #include "ui/display/manager/display_manager.h" |
| #include "ui/display/screen.h" |
| +using content::BrowserThread; |
| + |
| namespace chromeos { |
| namespace { |
| @@ -22,19 +25,32 @@ bool TouchSupportAvailable(const display::Display& display) { |
| } // namespace |
| -OobeDisplayChooser::OobeDisplayChooser() {} |
| +OobeDisplayChooser::OobeDisplayChooser() : weak_ptr_factory_(this) {} |
| OobeDisplayChooser::~OobeDisplayChooser() {} |
| void OobeDisplayChooser::TryToPlaceUiOnTouchDisplay() { |
| + DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| + |
| + if (display_switch_requested_) |
|
oshima
2017/05/17 16:56:18
Instead, can you check if the weak_ptr_factory_ ha
|
| + return; |
| + |
| display::Display primary_display = |
| display::Screen::GetScreen()->GetPrimaryDisplay(); |
| - if (primary_display.is_valid() && !TouchSupportAvailable(primary_display)) |
| - MoveToTouchDisplay(); |
| + if (primary_display.is_valid() && !TouchSupportAvailable(primary_display)) { |
| + display_switch_requested_ = true; |
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| + base::Bind(&OobeDisplayChooser::MoveToTouchDisplay, |
| + weak_ptr_factory_.GetWeakPtr())); |
| + } |
| } |
| void OobeDisplayChooser::MoveToTouchDisplay() { |
| + DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| + |
| + display_switch_requested_ = false; |
| + |
| const display::Displays& displays = |
| ash::Shell::Get()->display_manager()->active_only_display_list(); |
| @@ -43,9 +59,8 @@ void OobeDisplayChooser::MoveToTouchDisplay() { |
| for (const display::Display& display : displays) { |
| if (TouchSupportAvailable(display)) { |
| - ash::Shell::Get() |
| - ->display_configuration_controller() |
| - ->SetPrimaryDisplayId(display.id()); |
| + ash::Shell::Get()->window_tree_host_manager()->SetPrimaryDisplayId( |
| + display.id()); |
| break; |
| } |
| } |