Index: ash/shell.cc |
diff --git a/ash/shell.cc b/ash/shell.cc |
index 505e943e336ea8cda7d0bb667d8638340b9e2284..33ced2ef402428d468238c8a9cf622420793486a 100644 |
--- a/ash/shell.cc |
+++ b/ash/shell.cc |
@@ -128,6 +128,7 @@ |
#include "ash/system/chromeos/power/video_activity_notifier.h" |
#include "ash/touch/touch_transformer_controller.h" |
#include "ash/virtual_keyboard_controller.h" |
+#include "ash/wm/stylus_metrics_recorder.h" |
#include "base/bind_helpers.h" |
#include "base/sys_info.h" |
#include "chromeos/audio/audio_a11y_controller.h" |
@@ -552,6 +553,9 @@ Shell::~Shell() { |
RemovePostTargetHandler(toplevel_window_event_handler_.get()); |
RemovePreTargetHandler(system_gesture_filter_.get()); |
RemovePreTargetHandler(mouse_cursor_filter_.get()); |
+#if defined(OS_CHROMEOS) |
+ RemovePreTargetHandler(stylus_metrics_recorder_.get()); |
+#endif |
RemovePreTargetHandler(modality_filter_.get()); |
// TooltipController is deleted with the Shell so removing its references. |
@@ -640,9 +644,7 @@ Shell::~Shell() { |
#if defined(OS_CHROMEOS) |
touch_transformer_controller_.reset(); |
-#endif // defined(OS_CHROMEOS) |
- |
-#if defined(OS_CHROMEOS) |
+ stylus_metrics_recorder_.reset(); |
audio_a11y_controller_.reset(); |
#endif // defined(OS_CHROMEOS) |
@@ -864,6 +866,14 @@ void Shell::Init(const ShellInitParams& init_params) { |
mouse_cursor_filter_.reset(new MouseCursorEventFilter()); |
PrependPreTargetHandler(mouse_cursor_filter_.get()); |
+#if defined(OS_CHROMEOS) |
+ // |stylus_metrics_recorder| records stylus metrics for certain events. |
+ // It does not handle/consume any events, so prepend it as a pre-target hander |
+ // before events are consumed elsewhere. |
+ stylus_metrics_recorder_.reset(new StylusMetricsRecorder()); |
+ PrependPreTargetHandler(stylus_metrics_recorder_.get()); |
+#endif |
+ |
// Create Controllers that may need root window. |
// TODO(oshima): Move as many controllers before creating |
// RootWindowController as possible. |