Notify normalizing input filters on blur.

Previously, ReleaseAllKeys was not notifying the normalizing input filter
because that filter exists above InputEventTracker in the input pipeline.
In fact, the input "pipeline" was more like a tree, with both the touch
input scaler and the pepper input handler feeding into the input tracker.

This CL establishes a linear pipeline, as described in the header comment.

BUG=590404

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

Cr-Commit-Position: refs/heads/master@{#379398}
diff --git a/remoting/protocol/input_event_tracker.cc b/remoting/protocol/input_event_tracker.cc
index 60c4bfd..c232c013 100644
--- a/remoting/protocol/input_event_tracker.cc
+++ b/remoting/protocol/input_event_tracker.cc
@@ -10,9 +10,10 @@
 namespace remoting {
 namespace protocol {
 
+InputEventTracker::InputEventTracker() {}
+
 InputEventTracker::InputEventTracker(InputStub* input_stub)
-    : input_stub_(input_stub),
-      mouse_button_state_(0) {
+    : input_stub_(input_stub) {
 }
 
 InputEventTracker::~InputEventTracker() {}
@@ -26,6 +27,8 @@
 }
 
 void InputEventTracker::ReleaseAll() {
+  DCHECK(input_stub_);
+
   // Release all pressed keys.
   for (auto keycode : pressed_keys_) {
     KeyEvent event;
@@ -91,6 +94,8 @@
 }
 
 void InputEventTracker::InjectKeyEvent(const KeyEvent& event) {
+  DCHECK(input_stub_);
+
   // We don't need to track the keyboard lock states of key down events.
   // Pressed keys will be released with |lock_states| set to 0.
   // The lock states of auto generated key up events don't matter as long as
@@ -108,10 +113,13 @@
 }
 
 void InputEventTracker::InjectTextEvent(const TextEvent& event) {
+  DCHECK(input_stub_);
   input_stub_->InjectTextEvent(event);
 }
 
 void InputEventTracker::InjectMouseEvent(const MouseEvent& event) {
+  DCHECK(input_stub_);
+
   if (event.has_x() && event.has_y()) {
     mouse_pos_ = webrtc::DesktopVector(event.x(), event.y());
   }
@@ -130,6 +138,7 @@
 }
 
 void InputEventTracker::InjectTouchEvent(const TouchEvent& event) {
+  DCHECK(input_stub_);
   // We only need the IDs to cancel all touch points in ReleaseAll(). Other
   // fields do not have to be tracked here as long as the host keeps track of
   // them.