| Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
 | 
| diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
 | 
| index f4c7e83df386ed4a15610eb5a054dc56e80267db..66741b9c95ff595f3a428ea51cc3ee9f68c7af34 100644
 | 
| --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
 | 
| +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
 | 
| @@ -41,6 +41,7 @@
 | 
|  #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h"
 | 
|  #include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
 | 
|  #include "chrome/browser/ui/ash/app_sync_ui_state.h"
 | 
| +#include "chrome/browser/ui/ash/ash_util.h"
 | 
|  #include "chrome/browser/ui/ash/chrome_shell_delegate.h"
 | 
|  #include "chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.h"
 | 
|  #include "chrome/browser/ui/ash/launcher/app_window_launcher_controller.h"
 | 
| @@ -538,11 +539,14 @@ void ChromeLauncherControllerImpl::ActiveUserChanged(
 | 
|    // Restore the order of running, but unpinned applications for the activated
 | 
|    // user.
 | 
|    RestoreUnpinnedRunningApplicationOrder(user_email);
 | 
| -  // Inform the system tray of the change.
 | 
| -  ash::Shell::Get()->system_tray_delegate()->ActiveUserWasChanged();
 | 
| -  // Force on-screen keyboard to reset.
 | 
| -  if (keyboard::IsKeyboardEnabled())
 | 
| -    ash::Shell::Get()->CreateKeyboard();
 | 
| +  // TODO(crbug.com/557406): Fix this interaction pattern in Mash.
 | 
| +  if (!ash_util::IsRunningInMash()) {
 | 
| +    // Inform the system tray of the change.
 | 
| +    ash::Shell::Get()->system_tray_delegate()->ActiveUserWasChanged();
 | 
| +    // Force on-screen keyboard to reset.
 | 
| +    if (keyboard::IsKeyboardEnabled())
 | 
| +      ash::Shell::Get()->CreateKeyboard();
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  void ChromeLauncherControllerImpl::AdditionalUserAddedToSession(
 | 
| @@ -1058,11 +1062,14 @@ void ChromeLauncherControllerImpl::SetVirtualKeyboardBehaviorFromPrefs() {
 | 
|          enable ? keyboard::KEYBOARD_SHOW_OVERRIDE_ENABLED
 | 
|                 : keyboard::KEYBOARD_SHOW_OVERRIDE_DISABLED);
 | 
|    }
 | 
| -  const bool is_enabled = keyboard::IsKeyboardEnabled();
 | 
| -  if (was_enabled && !is_enabled)
 | 
| -    ash::Shell::Get()->DeactivateKeyboard();
 | 
| -  else if (is_enabled && !was_enabled)
 | 
| -    ash::Shell::Get()->CreateKeyboard();
 | 
| +  // TODO(crbug.com/557406): Fix this interaction pattern in Mash.
 | 
| +  if (!ash_util::IsRunningInMash()) {
 | 
| +    const bool is_enabled = keyboard::IsKeyboardEnabled();
 | 
| +    if (was_enabled && !is_enabled)
 | 
| +      ash::Shell::Get()->DeactivateKeyboard();
 | 
| +    else if (is_enabled && !was_enabled)
 | 
| +      ash::Shell::Get()->CreateKeyboard();
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  ash::ShelfItemStatus ChromeLauncherControllerImpl::GetAppState(
 | 
| 
 |