diff --git a/src/android/src/com/google/android/inputmethod/japanese/MozcMenuDialogListenerImpl.java b/src/android/src/com/google/android/inputmethod/japanese/MozcMenuDialogListenerImpl.java
index 4e21705..e5fd685 100644
--- a/src/android/src/com/google/android/inputmethod/japanese/MozcMenuDialogListenerImpl.java
+++ b/src/android/src/com/google/android/inputmethod/japanese/MozcMenuDialogListenerImpl.java
@@ -44,10 +44,13 @@
  */
 class MozcMenuDialogListenerImpl implements MenuDialogListener {
   private final InputMethodService inputMethodService;
+  private final ViewEventListener eventListener;
   private boolean showInputMethodPicker = false;
 
-  MozcMenuDialogListenerImpl(InputMethodService inputMethodService) {
+  MozcMenuDialogListenerImpl(
+    InputMethodService inputMethodService, ViewEventListener eventListener) {
     this.inputMethodService = Preconditions.checkNotNull(inputMethodService);
+    this.eventListener = Preconditions.checkNotNull(eventListener);
   }
 
   @Override
@@ -96,11 +99,11 @@
       inputConnection.setComposingText("", MozcUtil.CURSOR_POSITION_TAIL);
     }
 
+    eventListener.onShowMushroomSelectionDialog();
+
     // Launch the activity.
     Intent intent = MushroomUtil.createMushroomSelectionActivityLaunchingIntent(
         context, inputMethodService.getCurrentInputEditorInfo().fieldId, composingText);
     context.startActivity(intent);
-
-    // TODO(hidehiko): Do we need to logging?
   }
 }
diff --git a/src/android/src/com/google/android/inputmethod/japanese/MozcService.java b/src/android/src/com/google/android/inputmethod/japanese/MozcService.java
index b1e7353..fac2b70 100644
--- a/src/android/src/com/google/android/inputmethod/japanese/MozcService.java
+++ b/src/android/src/com/google/android/inputmethod/japanese/MozcService.java
@@ -383,6 +383,11 @@
           .putString(key, layoutAdjustment.toString())
           .apply();
     }
+
+    @Override
+    public void onShowMushroomSelectionDialog() {
+      sessionExecutor.sendUsageStatsEvent(UsageStatsEvent.MUSHROOM_SELECTION_DIALOG_OPEN_EVENT);
+    }
   }
 
   /**
@@ -754,7 +759,7 @@
               eventListener,
               symbolHistoryStorage,
               imeSwitcher,
-              new MozcMenuDialogListenerImpl(this));
+              new MozcMenuDialogListenerImpl(this, eventListener));
     }
 
     // Setup FeedbackManager.
diff --git a/src/android/src/com/google/android/inputmethod/japanese/ViewEventDelegator.java b/src/android/src/com/google/android/inputmethod/japanese/ViewEventDelegator.java
index 4114623..d7ee503 100644
--- a/src/android/src/com/google/android/inputmethod/japanese/ViewEventDelegator.java
+++ b/src/android/src/com/google/android/inputmethod/japanese/ViewEventDelegator.java
@@ -154,4 +154,9 @@
       ViewManagerInterface.LayoutAdjustment layoutAdjustment) {
     delegated.onUpdateKeyboardLayoutAdjustment(layoutAdjustment);
   }
+
+  @Override
+  public void onShowMushroomSelectionDialog() {
+    delegated.onShowMushroomSelectionDialog();
+  }
 }
diff --git a/src/android/src/com/google/android/inputmethod/japanese/ViewEventListener.java b/src/android/src/com/google/android/inputmethod/japanese/ViewEventListener.java
index e027d9b..9896cdf 100644
--- a/src/android/src/com/google/android/inputmethod/japanese/ViewEventListener.java
+++ b/src/android/src/com/google/android/inputmethod/japanese/ViewEventListener.java
@@ -147,4 +147,7 @@
    */
   public void onUpdateKeyboardLayoutAdjustment(
       ViewManagerInterface.LayoutAdjustment layoutAdjustment);
+
+  /** Called when the mushroom selection dialog is shown. */
+  public void onShowMushroomSelectionDialog();
 }
diff --git a/src/android/tests/src/com/google/android/inputmethod/japanese/MozcMenuDialogListenerImplTest.java b/src/android/tests/src/com/google/android/inputmethod/japanese/MozcMenuDialogListenerImplTest.java
index 0fc74ef..3f47757 100644
--- a/src/android/tests/src/com/google/android/inputmethod/japanese/MozcMenuDialogListenerImplTest.java
+++ b/src/android/tests/src/com/google/android/inputmethod/japanese/MozcMenuDialogListenerImplTest.java
@@ -59,6 +59,7 @@
 public class MozcMenuDialogListenerImplTest extends InstrumentationTestCaseWithMock {
   private Context context;
   private InputMethodService inputMethodService;
+  private ViewEventListener eventListener;
   private MenuDialogListener listener;
 
   @Override
@@ -66,7 +67,8 @@
     super.setUp();
     context = createMock(MockContext.class);
     inputMethodService = createMock(InputMethodService.class);
-    listener = new MozcMenuDialogListenerImpl(inputMethodService);
+    eventListener = createMock(ViewEventListener.class);
+    listener = new MozcMenuDialogListenerImpl(inputMethodService, eventListener);
   }
 
   @Override
@@ -75,6 +77,7 @@
     MozcUtil.cancelShowInputMethodPicker(context);
 
     listener = null;
+    eventListener = null;
     inputMethodService = null;
     context = null;
     super.tearDown();
@@ -166,6 +169,7 @@
     editorInfo.fieldId = 10;
     expect(inputMethodService.getCurrentInputEditorInfo()).andStubReturn(editorInfo);
     expect(context.getPackageName()).andStubReturn("org.mozc.android.inputmethod.japanese");
+    eventListener.onShowMushroomSelectionDialog();
     Capture<Intent> intentCapture = new Capture<Intent>();
     context.startActivity(capture(intentCapture));
     replayAll();
diff --git a/src/data/usage_stats/stats.def b/src/data/usage_stats/stats.def
index fff1dd3..676e100 100644
--- a/src/data/usage_stats/stats.def
+++ b/src/data/usage_stats/stats.def
@@ -541,6 +541,7 @@
 # The count of the fold/expand keyboard event.
 KeyboardFoldEvent
 KeyboardExpandEvent
+MushroomSelectionDialogOpen
 
 # for windows
 
diff --git a/src/mozc_version_template.txt b/src/mozc_version_template.txt
index 5e3a906..4bcf8bf 100644
--- a/src/mozc_version_template.txt
+++ b/src/mozc_version_template.txt
@@ -1,6 +1,6 @@
 MAJOR=2
 MINOR=17
-BUILD=2089
+BUILD=2090
 REVISION=102
 # NACL_DICTIONARY_VERSION is the target version of the system dictionary to be
 # downloaded by NaCl Mozc.
diff --git a/src/session/commands.proto b/src/session/commands.proto
index 7dddf8f..b44e0f1 100644
--- a/src/session/commands.proto
+++ b/src/session/commands.proto
@@ -481,6 +481,7 @@
     SUBMITTED_CANDIDATE_ROW_GE10 = 19;
     KEYBOARD_FOLD_EVENT = 20;
     KEYBOARD_EXPAND_EVENT = 21;
+    MUSHROOM_SELECTION_DIALOG_OPEN_EVENT = 22;
   }
   optional UsageStatsEvent usage_stats_event = 7;
   optional int32 usage_stats_event_int_value = 9;
diff --git a/src/session/session_usage_observer.cc b/src/session/session_usage_observer.cc
index 525503b..f10465e 100644
--- a/src/session/session_usage_observer.cc
+++ b/src/session/session_usage_observer.cc
@@ -367,8 +367,11 @@
     case commands::SessionCommand::KEYBOARD_EXPAND_EVENT:
       UsageStats::IncrementCount("KeyboardExpandEvent");
       break;
+    case commands::SessionCommand::MUSHROOM_SELECTION_DIALOG_OPEN_EVENT:
+      UsageStats::IncrementCount("MushroomSelectionDialogOpen");
+      break;
     default:
-      LOG(WARNING) << "client side usage stats event has invalid category";
+      LOG(DFATAL) << "client side usage stats event has invalid category";
       break;
   }
 }
