They appear to fail because TrayRotationLock thinks they are not on the primary display:
gfx::NativeView native_view = system_tray()->GetWidget()->GetNativeView();
display::Display parent_display =
display::Screen::GetScreen()->GetDisplayNearestWindow(native_view);
return parent_display.IsInternal();
isInternal() returns false here. This likely indicates we haven't wired up isinternal for the displays mash creates.
Comment 1 by bugdroid1@chromium.org
, Feb 27 2017