OOBE does not start in MD mode |
||||||
Issue description
I have a fresh checkout and OOBE does not start with material design.
I added small patch (attached) to log the state controlling MD. As you can see below (in the strings of ERROR level with DRC:), there is a path where the netwok screen is launched but the local state is not set.
I use these:
out/Debug/chrome --login-manager --user-data-dir=/tmp/chronos --enterprise-enable-zero-touch-enrollment
with the /tmp/chronos directory empty (i.e. like fresh out of the box).
I have tracked the issue to the use of the zero-touch flag.
I am afraid there are more paths that may lead to this. It would be better to have the local state store the preference to NOT use material design rather than the opposite.
Here's a log:
[78607:78633:0915/124138:WARNING:freezer_cgroup_process_manager.cc(59)] Cgroup freezer does not exist or is not writable. Unable to freeze renderer processes.
[78607:78607:0915/124138:ERROR:oobe_ui.cc(496)] DRC: Setting string newOobeUI to off
[78607:78607:0915/124138:ERROR:wizard_controller.cc(190)] DRC: UseMDOobe() => true
[78645:78645:0915/124138:ERROR:interface_registry.cc(99)] Failed to locate a binder for interface: mojom::ResourceUsageReporter
[78607:78633:0915/124139:WARNING:extension_user_script_loader.cc(77)] Failed to get file path to js/content_script_head.js from /usr/share/chromeos-assets/helpapp
[78607:78633:0915/124139:WARNING:extension_user_script_loader.cc(77)] Failed to get file path to js/content_script_foot.js from /usr/share/chromeos-assets/helpapp
[78607:78607:0915/124139:ERROR:oobe_ui.cc(496)] DRC: Setting string newOobeUI to off
[78607:78607:0915/124140:WARNING:CONSOLE(1)] "This file is deprecated. Please use `iron-flex-layout/iron-flex-layout-classes.html`, and one of the specific dom-modules instead", source: chrome://resources/polymer/v1_0/iron-flex-layout/classes/iron-shadow-flex-layout-extracted.js (1)
[78607:78607:0915/124141:WARNING:CONSOLE(1)] "This file is deprecated. Please use `iron-flex-layout/iron-flex-layout-classes.html`, and one of the specific dom-modules instead", source: chrome://resources/polymer/v1_0/iron-flex-layout/classes/iron-flex-layout-extracted.js (1)
[78607:78607:0915/124144:WARNING:CONSOLE(204)] "/deep/ combinator is deprecated. See https://www.chromestatus.com/features/6750456638341120 for more details.", source: extensions::guestViewContainer (204)
[78607:78607:0915/124145:ERROR:oobe_ui.cc(496)] DRC: Setting string newOobeUI to off
[78607:78607:0915/124145:INFO:CONSOLE(7553)] "Loading asset bundle oauth-enrollment", source: chrome://oobe/oobe.js (7553)
[78607:78607:0915/124147:INFO:CONSOLE(7537)] "Finished loading asset bundle oauth-enrollment", source: chrome://oobe/oobe.js (7537)
,
Sep 15 2016
,
Sep 15 2016
When the ZTE flag is passed, we see a stack trace that shows that WizardController::Init() is called directly with the network screen name to start with, which results in a call to AdvanceToScreen() that calls ShowNetworkScreen() without an opportunity to set the local state:
Breakpoint 1, chromeos::WizardController::ShowNetworkScreen (this=0x2d5bd71162a0)
at ../../chrome/browser/chromeos/login/wizard_controller.cc:416
416 VLOG(1) << "Showing network screen.";
(gdb) bt
#0 chromeos::WizardController::ShowNetworkScreen (this=0x2d5bd71162a0)
at ../../chrome/browser/chromeos/login/wizard_controller.cc:416
#1 0x000055555727b8ba in chromeos::WizardController::AdvanceToScreen (this=0x2d5bd71162a0,
screen_name="network") at ../../chrome/browser/chromeos/login/wizard_controller.cc:952
#2 0x000055555727b4f7 in chromeos::WizardController::Init (this=0x2d5bd71162a0,
first_screen_name="network") at ../../chrome/browser/chromeos/login/wizard_controller.cc:330
#3 0x0000555557215a02 in chromeos::LoginDisplayHostImpl::StartWizard (this=0x2d5bd7f32c20,
first_screen_name="network")
at ../../chrome/browser/chromeos/login/ui/login_display_host_impl.cc:563
#4 0x0000555557218407 in chromeos::LoginDisplayHostImpl::StartPostponedWebUI (this=0x2d5bd7f32c20)
at ../../chrome/browser/chromeos/login/ui/login_display_host_impl.cc:1097
#5 0x0000555557217fa1 in chromeos::LoginDisplayHostImpl::Observe (this=0x2d5bd7f32c20, type=130,
source=..., details=...) at ../../chrome/browser/chromeos/login/ui/login_display_host_impl.cc:872
#6 0x00007ffff2223978 in content::NotificationServiceImpl::Notify (this=0x2d5bd6844ab0, type=130,
source=..., details=...) at ../../content/browser/notification_service_impl.cc:130
#7 0x0000555556f07924 in chromeos::(anonymous namespace)::WallpaperDelegate::OnWallpaperAnimationFinished (this=0x2d5bd6b1e3e0) at ../../chrome/browser/chromeos/background/ash_wallpaper_delegate.cc:120
#8 0x00007fffe9ba6e34 in ash::WmRootWindowController::OnWallpaperAnimationFinished (
this=0x2d5bd71e50b0, widget=0x2d5bd6a53b20) at ../../ash/common/wm_root_window_controller.cc:130
#9 0x00007fffe9963e08 in ash::WmRootWindowControllerAura::OnWallpaperAnimationFinished (
this=0x2d5bd71e50b0, widget=0x2d5bd6a53b20) at ../../ash/aura/wm_root_window_controller_aura.cc:118
#10 0x00007fffe9b0b61e in ash::(anonymous namespace)::ShowWallpaperAnimationObserver::OnImplicitAnimationsCompleted (this=0x2d5bd70ac140) at ../../ash/common/wallpaper/wallpaper_widget_controller.cc:47
#11 0x00007fffeb6882c0 in ui::ImplicitAnimationObserver::CheckCompleted (this=0x2d5bd70ac140)
at ../../ui/compositor/layer_animation_observer.cc:139
#12 0x00007fffeb688265 in ui::ImplicitAnimationObserver::SetActive (this=0x2d5bd70ac140, active=true)
at ../../ui/compositor/layer_animation_observer.cc:74
#13 0x00007fffeb6a832e in ui::ScopedLayerAnimationSettings::~ScopedLayerAnimationSettings (
this=0x7fffffffaf70) at ../../ui/compositor/scoped_layer_animation_settings.cc:45
#14 0x00007fffe9b0b25e in ash::WallpaperWidgetController::StartAnimating (this=0x2d5bd7f9e920,
root_window_controller=0x2d5bd71e50b0)
at ../../ash/common/wallpaper/wallpaper_widget_controller.cc:129
---Type <return> to continue, or q <return> to quit---
#15 0x00007fffe9b034d1 in ash::WallpaperController::InstallDesktopController (this=0x2d5bd7138380,
root_window=0x2d5bd6cab420) at ../../ash/common/wallpaper/wallpaper_controller.cc:203
#16 0x00007fffe9b02d55 in ash::WallpaperController::InstallDesktopControllerForAllWindows (
this=0x2d5bd7138380) at ../../ash/common/wallpaper/wallpaper_controller.cc:208
#17 0x00007fffe9b02992 in ash::WallpaperController::SetWallpaperImage (this=0x2d5bd7138380, image=...,
layout=wallpaper::WALLPAPER_LAYOUT_STRETCH) at ../../ash/common/wallpaper/wallpaper_controller.cc:85
#18 0x0000555557265510 in chromeos::(anonymous namespace)::SetWallpaper (image=...,
layout=wallpaper::WALLPAPER_LAYOUT_STRETCH)
at ../../chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc:223
#19 0x00005555572653fc in chromeos::WallpaperManager::DoSetDefaultWallpaper (this=0x2d5bd6a6f820,
account_id=...,
on_finish=std::unique_ptr<wallpaper::MovableOnDestroyCallback> containing 0x2d5bd767aea0)
at ../../chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc:689
#20 0x000055555726bf73 in chromeos::WallpaperManager::PendingWallpaper::ProcessRequest (
this=0x2d5bd761a5c0) at ../../chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc:310
#21 0x000055555726c572 in base::internal::FunctorTraits<void (chromeos::WallpaperManager::PendingWallpaper::*)(), void>::Invoke<scoped_refptr<chromeos::WallpaperManager::PendingWallpaper> const&> (
method=(void (chromeos::WallpaperManager::PendingWallpaper::*)(chromeos::WallpaperManager::PendingWallpaper * const)) 0x55555726bd60 <chromeos::WallpaperManager::PendingWallpaper::ProcessRequest()>,
receiver_ptr=...) at ../../base/bind_internal.h:214
,
Sep 15 2016
Without the ZTE flag the path to ShowNetworkScreen() is *very* different and then the local state has been set:
#0 chromeos::WizardController::ShowNetworkScreen (this=0xe34533d1f20)
at ../../chrome/browser/chromeos/login/wizard_controller.cc:416
#1 0x0000555557280cb3 in chromeos::WizardController::OnHIDScreenNecessityCheck (this=0xe34533d1f20,
screen_needed=false) at ../../chrome/browser/chromeos/login/wizard_controller.cc:946
#2 0x0000555556d8cf30 in base::internal::FunctorTraits<void (remoting::It2MeHost::Observer::*)(bool), void>::Invoke<base::WeakPtr<remoting::It2MeHost::Observer> const&, bool const&> (
method=&virtual table offset 128, receiver_ptr=..., args=@0x7fffffffba17: false)
at ../../base/bind_internal.h:214
#3 0x000055555728543f in base::internal::InvokeHelper<true, void>::MakeItSo<void (chromeos::WizardController::* const&)(bool), base::WeakPtr<chromeos::WizardController> const&, bool>(void (chromeos::WizardController::* const&)(bool), base::WeakPtr<chromeos::WizardController> const&, bool&&) (
functor=@0xe345359a2c0: &virtual chromeos::WizardController::OnHIDScreenNecessityCheck(bool),
weak_ptr=...,
args=<unknown type in /usr/local/google/home/drcrash/chromium/src/out/Debug/chrome, CU 0x0, DIE 0x2e35e>) at ../../base/bind_internal.h:305
#4 0x00005555572853b7 in base::internal::Invoker<base::internal::BindState<void (chromeos::WizardController::*)(bool), base::WeakPtr<chromeos::WizardController> >, void (bool)>::RunImpl<void (chromeos::WizardController::* const&)(bool), std::tuple<base::WeakPtr<chromeos::WizardController> > const&, 0ul>(void (chromeos::WizardController::* const&)(bool), std::tuple<base::WeakPtr<chromeos::WizardController> > const&, base::IndexSequence<0ul>, bool&&) (
functor=@0xe345359a2c0: &virtual chromeos::WizardController::OnHIDScreenNecessityCheck(bool),
bound=empty std::tuple,
unbound_args=<unknown type in /usr/local/google/home/drcrash/chromium/src/out/Debug/chrome, CU 0x0, DIE 0x1f132>) at ../../base/bind_internal.h:361
#5 0x00005555572852ec in base::internal::Invoker<base::internal::BindState<void (chromeos::WizardController::*)(bool), base::WeakPtr<chromeos::WizardController> >, void (bool)>::Run(base::internal::BindStateBase*, bool&&) (base=0xe345359a2a0,
unbound_args=<unknown type in /usr/local/google/home/drcrash/chromium/src/out/Debug/chrome, CU 0x0, DIE 0x1f0be>) at ../../base/bind_internal.h:339
#6 0x0000555555d926c4 in base::internal::RunMixin<base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> >::Run(bool) const (this=0xe345359a1d0, args=false)
at ../../base/callback.h:64
---Type <return> to continue, or q <return> to quit---
#7 0x000055555719e6c7 in chromeos::HIDDetectionScreen::OnGetInputDevicesListForCheck(base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&) (this=0xe34524d22a0, on_check_done=..., devices=std::__debug::vector of length 19, capacity 32 = {...})
at ../../chrome/browser/chromeos/login/screens/hid_detection_screen.cc:503
#8 0x0000555555fbab60 in base::internal::FunctorTraits<void (extensions::ImageLoader::*)(base::Callback<void (gfx::Image const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > const&), void>::Invoke<base::WeakPtr<extensions::ImageLoader> const&, base::Callback<void (gfx::Image const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > const&>(void (extensions::ImageLoader::*)(base::Callback<void (gfx::Image const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > const&), base::WeakPtr<extensions::ImageLoader> const&, base::Callback<void (gfx::Image const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > const&) (
method=
(void (extensions::ImageLoader::*)(extensions::ImageLoader * const, const base::Callback<void (const gfx::Image &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> &, const std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > &)) 0x55555719e5c0 <chromeos::HIDDetectionScreen::OnGetInputDevicesListForCheck(base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&)>,
receiver_ptr=..., args=std::__debug::vector of length 4, capacity 7 = {...},
args=std::__debug::vector of length 4, capacity 7 = {...}) at ../../base/bind_internal.h:214
#9 0x0000555555fbc164 in base::internal::InvokeHelper<true, void>::MakeItSo<void (extensions::ImageLoader::* const&)(base::Callback<void (gfx::ImageFamily const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > const&), base::WeakPtr<extensions::ImageLoader> const&, base::Callback<void (gfx::ImageFamily const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > const&>(void (extensions::ImageLoader::* const&)(base::Callback<void (gfx::ImageFamily const&), (base::inte---Type <return> to continue, or q <return> to quit---
rnal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > const&), base::WeakPtr<extensions::ImageLoader> const&, base::Callback<void (gfx::ImageFamily const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > const&) (functor=
@0xe345359a1c0: (void (extensions::ImageLoader::*)(extensions::ImageLoader * const, const base::Callback<void (const gfx::ImageFamily &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> &, const std::__debug::vector<extensions::ImageLoader::LoadResult, std::allocator<extensions::ImageLoader::LoadResult> > &)) 0x55555719e5c0 <chromeos::HIDDetectionScreen::OnGetInputDevicesListForCheck(base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&)>, weak_ptr=..., args=std::__debug::vector of length 4, capacity 7 = {...},
args=std::__debug::vector of length 4, capacity 7 = {...}) at ../../base/bind_internal.h:305
#10 0x00005555571a2698 in base::internal::Invoker<base::internal::BindState<void (chromeos::HIDDetectionScreen::*)(base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&), base::WeakPtr<chromeos::HIDDetectionScreen>, base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> >, void (std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&)>::RunImpl<void (chromeos::HIDDetectionScreen::* const&)(base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&), std::tuple<base::WeakPtr<chromeos::HIDDetectionScreen>, base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> > const&, 0ul, 1ul>(void (chromeos::HIDDetectionScreen::* const&)(base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&), std::tuple<base::WeakPtr<chromeos::HIDDetectionScreen>, base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> > const&, base::IndexSequence<0ul, 1ul>, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&) (functor=
@0xe345359a1c0: (void (chromeos::HIDDetectionScreen::*)(chromeos::HIDDetectionScreen * const, const base::Callback<void (bool), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> &, const std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServic---Type <return> to continue, or q <return> to quit---
eLinux::InputDeviceInfo> > &)) 0x55555719e5c0 <chromeos::HIDDetectionScreen::OnGetInputDevicesListForCheck(base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&)>, bound=empty std::tuple,
unbound_args=std::__debug::vector of length 19, capacity 32 = {...})
at ../../base/bind_internal.h:361
#11 0x00005555571a259c in base::internal::Invoker<base::internal::BindState<void (chromeos::HIDDetectionScreen::*)(base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&), base::WeakPtr<chromeos::HIDDetectionScreen>, base::Callback<void (bool), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> >, void (std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&)>::Run(base::internal::BindStateBase*, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&) (base=0xe345359a1a0,
unbound_args=std::__debug::vector of length 19, capacity 32 = {...})
at ../../base/bind_internal.h:339
#12 0x0000555555d00c96 in base::internal::RunMixin<base::Callback<void (SkBitmap const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> >::Run(SkBitmap const&) const (this=0xe3453524280,
args=...) at ../../base/callback.h:64
#13 0x0000555556f6e551 in base::internal::ReplyAdapter<std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> >, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&>(base::Callback<void (std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> > const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, std::__debug::vector<device::InputServiceLinux::InputDeviceInfo, std::allocator<device::InputServiceLinux::InputDeviceInfo> >*) (callback=..., result=0xe34535cad40)
,
Sep 15 2016
,
Sep 16 2016
The two stack traces are because of https://cs.chromium.org/chromium/src/chrome/browser/chromeos/login/ui/login_display_host_impl.cc?rcl=0&l=1301 This will be fixes by a small CL. The new MD OOBE however fails in a nunber of other circumstances, like switching to a requisition type during OOBE etc. I have a CL to handle that out for review by alemate@.
,
Sep 19 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/09be0185e0f17c0803e589861eb8518c9bd04c8a commit 09be0185e0f17c0803e589861eb8518c9bd04c8a Author: drcrash <drcrash@chromium.org> Date: Mon Sep 19 18:44:57 2016 Limit the Material Design OOBE in a way that is less fragile. Currently the MD OOBE is enabled in a few different code paths, which unfortunately breaks when using, for example, zero-touch; or any path where enterprise enrollment is a possibility (as the login controller will jump straight into the network screen, bypassing the logic to determine whether to use the MD OOBE or not). Instead, disable it for the few cases we know we have not tested (CfM and any device needing the HID screen). Moreover, let's make sure that the MD/non-MD logic works when someone uses magic keys like CTRL+ALT+H to restart setup as a CfM. This CL does not change the way local state stores whether to use MD or not, which is still a default of not showing it if state is not carefully set. BUG= 647365 TEST=manual (many combinations with and without existing local state) Review-Url: https://codereview.chromium.org/2347703002 Cr-Commit-Position: refs/heads/master@{#419518} [modify] https://crrev.com/09be0185e0f17c0803e589861eb8518c9bd04c8a/chrome/browser/chromeos/login/wizard_controller.cc [modify] https://crrev.com/09be0185e0f17c0803e589861eb8518c9bd04c8a/chrome/browser/chromeos/login/wizard_controller.h
,
Sep 19 2016
,
Sep 19 2016
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 by xiy...@chromium.org
, Sep 15 2016