Simplify QuicConnectionHelper by introducing a new QuicAlarm class
that encapsulates the platform-specific alarm setting/canceling
functionality.  This moves all the various alarm definition/management
code from QuicConnectionHelper to QuicConnection.  Since there are
Chrome and GFE implementations of the helper, this reduces the
risk of implementation-specific bugs, like the recent Chrome
SendAlarm bug.

Merge internal change: 50513435


BUG=

Review URL: https://chromiumcodereview.appspot.com/22545005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@216754 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/quic/test_tools/quic_test_utils.cc b/net/quic/test_tools/quic_test_utils.cc
index 5d1b3a0..810abdc 100644
--- a/net/quic/test_tools/quic_test_utils.cc
+++ b/net/quic/test_tools/quic_test_utils.cc
@@ -23,6 +23,20 @@
 
 namespace net {
 namespace test {
+namespace {
+
+// No-op alarm implementation used by MockHelper.
+class TestAlarm : public QuicAlarm {
+ public:
+  explicit TestAlarm(QuicAlarm::Delegate* delegate)
+      : QuicAlarm(delegate) {
+  }
+
+  virtual void SetImpl() OVERRIDE {}
+  virtual void CancelImpl() OVERRIDE {}
+};
+
+}  // namespace
 
 MockFramerVisitor::MockFramerVisitor() {
   // By default, we want to accept packets.
@@ -181,6 +195,10 @@
   return &random_generator_;
 }
 
+QuicAlarm* MockHelper::CreateAlarm(QuicAlarm::Delegate* delegate) {
+  return new TestAlarm(delegate);
+}
+
 void MockHelper::AdvanceTime(QuicTime::Delta delta) {
   clock_.AdvanceTime(delta);
 }