Add [Search] modifier key to sticky keys overlay.

This CL also adds a new test exercising the visibility of the overlay.

BUG=421570
TEST=modified existing tests and added a new one

Review URL: https://codereview.chromium.org/638253003

Cr-Commit-Position: refs/heads/master@{#298959}
diff --git a/chrome/browser/chromeos/events/event_rewriter_unittest.cc b/chrome/browser/chromeos/events/event_rewriter_unittest.cc
index a7be1dd..79845a6 100644
--- a/chrome/browser/chromeos/events/event_rewriter_unittest.cc
+++ b/chrome/browser/chromeos/events/event_rewriter_unittest.cc
@@ -17,7 +17,7 @@
 #include "base/strings/stringprintf.h"
 #include "chrome/browser/chromeos/input_method/input_method_configuration.h"
 #include "chrome/browser/chromeos/input_method/mock_input_method_manager.h"
-#include "chrome/browser/chromeos/login/users/mock_user_manager.h"
+#include "chrome/browser/chromeos/login/users/fake_user_manager.h"
 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
 #include "chrome/browser/chromeos/preferences.h"
 #include "chrome/common/pref_names.h"
@@ -222,15 +222,12 @@
 class EventRewriterTest : public ash::test::AshTestBase {
  public:
   EventRewriterTest()
-      : mock_user_manager_(new chromeos::MockUserManager),
-        user_manager_enabler_(mock_user_manager_),
+      : fake_user_manager_(new chromeos::FakeUserManager),
+        user_manager_enabler_(fake_user_manager_),
         input_method_manager_mock_(NULL) {}
   virtual ~EventRewriterTest() {}
 
   virtual void SetUp() {
-    // Mocking user manager because the real one needs to be called on UI thread
-    EXPECT_CALL(*mock_user_manager_, IsLoggedInAsGuest())
-        .WillRepeatedly(testing::Return(false));
     input_method_manager_mock_ =
         new chromeos::input_method::MockInputMethodManager;
     chromeos::input_method::InitializeForTesting(
@@ -258,7 +255,7 @@
                       : &event;
   }
 
-  chromeos::MockUserManager* mock_user_manager_;  // Not owned.
+  chromeos::FakeUserManager* fake_user_manager_;  // Not owned.
   chromeos::ScopedUserManagerEnabler user_manager_enabler_;
   chromeos::input_method::MockInputMethodManager* input_method_manager_mock_;
 };
@@ -1826,8 +1823,8 @@
  public:
   EventRewriterAshTest()
       : source_(&buffer_),
-        mock_user_manager_(new chromeos::MockUserManager),
-        user_manager_enabler_(mock_user_manager_) {}
+        fake_user_manager_(new chromeos::FakeUserManager),
+        user_manager_enabler_(fake_user_manager_) {}
   virtual ~EventRewriterAshTest() {}
 
   bool RewriteFunctionKeys(const ui::Event& event,
@@ -1885,7 +1882,7 @@
   EventBuffer buffer_;
   TestEventSource source_;
 
-  chromeos::MockUserManager* mock_user_manager_;  // Not owned.
+  chromeos::FakeUserManager* fake_user_manager_;  // Not owned.
   chromeos::ScopedUserManagerEnabler user_manager_enabler_;
   TestingPrefServiceSyncable prefs_;
 
@@ -2421,12 +2418,16 @@
             overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
   EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED,
             overlay_->GetModifierKeyState(ui::EF_ALT_DOWN));
+  EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED,
+            overlay_->GetModifierKeyState(ui::EF_COMMAND_DOWN));
 
   // Enable modifiers.
   SendActivateStickyKeyPattern(ui::VKEY_CONTROL);
   SendActivateStickyKeyPattern(ui::VKEY_SHIFT);
   SendActivateStickyKeyPattern(ui::VKEY_SHIFT);
   SendActivateStickyKeyPattern(ui::VKEY_LMENU);
+  SendActivateStickyKeyPattern(ui::VKEY_COMMAND);
+  SendActivateStickyKeyPattern(ui::VKEY_COMMAND);
 
   EXPECT_TRUE(overlay_->is_visible());
   EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED,
@@ -2435,6 +2436,8 @@
             overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
   EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED,
             overlay_->GetModifierKeyState(ui::EF_ALT_DOWN));
+  EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED,
+            overlay_->GetModifierKeyState(ui::EF_COMMAND_DOWN));
 
   // Disable modifiers and overlay should be hidden.
   SendActivateStickyKeyPattern(ui::VKEY_CONTROL);
@@ -2442,6 +2445,7 @@
   SendActivateStickyKeyPattern(ui::VKEY_SHIFT);
   SendActivateStickyKeyPattern(ui::VKEY_LMENU);
   SendActivateStickyKeyPattern(ui::VKEY_LMENU);
+  SendActivateStickyKeyPattern(ui::VKEY_COMMAND);
 
   EXPECT_FALSE(overlay_->is_visible());
   EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED,
@@ -2450,6 +2454,8 @@
             overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
   EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED,
             overlay_->GetModifierKeyState(ui::EF_ALT_DOWN));
+  EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED,
+            overlay_->GetModifierKeyState(ui::EF_COMMAND_DOWN));
 }
 
 TEST_F(StickyKeysOverlayTest, ModifierVisibility) {
@@ -2457,6 +2463,7 @@
   EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_CONTROL_DOWN));
   EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_SHIFT_DOWN));
   EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_ALT_DOWN));
+  EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_COMMAND_DOWN));
   EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
   EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
 
@@ -2465,6 +2472,7 @@
   EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_CONTROL_DOWN));
   EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_SHIFT_DOWN));
   EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_ALT_DOWN));
+  EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_COMMAND_DOWN));
   EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
   EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));