Plumbing load progress notifications to the browser.

BUG=None
TEST=None

Review URL: http://codereview.chromium.org/4694006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69272 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/renderer/load_progress_tracker.h b/chrome/renderer/load_progress_tracker.h
new file mode 100644
index 0000000..a9455c3a
--- /dev/null
+++ b/chrome/renderer/load_progress_tracker.h
@@ -0,0 +1,46 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_RENDERER_LOAD_PROGRESS_TRACKER_H_
+#define CHROME_RENDERER_LOAD_PROGRESS_TRACKER_H_
+
+#include "base/logging.h"
+#include "base/task.h"
+#include "base/time.h"
+
+class RenderView;
+
+namespace WebKit {
+class WebFrame;
+}
+
+class LoadProgressTracker {
+ public:
+  explicit LoadProgressTracker(RenderView* render_view);
+  ~LoadProgressTracker();
+
+  void DidStopLoading();
+
+  void DidChangeLoadProgress(WebKit::WebFrame* frame, double progress);
+
+ private:
+  void ResetStates();
+
+  void SendChangeLoadProgress();
+
+  RenderView* render_view_;
+
+  WebKit::WebFrame* tracked_frame_;
+
+  double progress_;
+
+  base::TimeTicks last_time_progress_sent_;
+
+  ScopedRunnableMethodFactory<LoadProgressTracker> method_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(LoadProgressTracker);
+};
+
+#endif  // CHROME_RENDERER_LOAD_PROGRESS_TRACKER_H_
+