| Index: chrome/renderer/load_progress_tracker.cc
|
| ===================================================================
|
| --- chrome/renderer/load_progress_tracker.cc (revision 78620)
|
| +++ chrome/renderer/load_progress_tracker.cc (working copy)
|
| @@ -1,86 +0,0 @@
|
| -// 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.
|
| -
|
| -#include "chrome/renderer/load_progress_tracker.h"
|
| -
|
| -#include "base/message_loop.h"
|
| -#include "chrome/common/render_messages.h"
|
| -#include "chrome/renderer/render_view.h"
|
| -
|
| -namespace {
|
| -
|
| -const int kMinimumDelayBetweenUpdatesMS = 100;
|
| -
|
| -}
|
| -
|
| -LoadProgressTracker::LoadProgressTracker(RenderView* render_view)
|
| - : render_view_(render_view),
|
| - tracked_frame_(NULL),
|
| - progress_(0.0),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {
|
| -}
|
| -
|
| -LoadProgressTracker::~LoadProgressTracker() {
|
| -}
|
| -
|
| -void LoadProgressTracker::DidStopLoading() {
|
| - if (!tracked_frame_)
|
| - return;
|
| -
|
| - // Load stoped while we were still tracking load. Make sure we notify the
|
| - // browser that load is complete.
|
| - progress_ = 1.0;
|
| - SendChangeLoadProgress();
|
| - // Then we clean-up our states.
|
| - ResetStates();
|
| -}
|
| -
|
| -void LoadProgressTracker::DidChangeLoadProgress(WebKit::WebFrame* frame,
|
| - double progress) {
|
| - if (tracked_frame_ && frame != tracked_frame_)
|
| - return;
|
| -
|
| - if (!tracked_frame_)
|
| - tracked_frame_ = frame;
|
| -
|
| - progress_ = progress;
|
| -
|
| - // We send the progress change to the browser immediately for the first and
|
| - // last updates. Also, since the message loop may be pretty busy when a page
|
| - // is loaded, it might not execute a posted task in a timely manner so we make
|
| - // sure to immediately send progress report if enough time has passed.
|
| - if (progress == 1.0 || last_time_progress_sent_.is_null() ||
|
| - (base::TimeTicks::Now() - last_time_progress_sent_).InMilliseconds() >
|
| - kMinimumDelayBetweenUpdatesMS) {
|
| - // If there is a pending task to send progress, it is now obsolete.
|
| - method_factory_.RevokeAll();
|
| - SendChangeLoadProgress();
|
| - if (progress == 1.0)
|
| - ResetStates();
|
| - return;
|
| - }
|
| -
|
| - if (!method_factory_.empty())
|
| - return;
|
| -
|
| - MessageLoop::current()->PostDelayedTask(
|
| - FROM_HERE,
|
| - method_factory_.NewRunnableMethod(
|
| - &LoadProgressTracker::SendChangeLoadProgress),
|
| - kMinimumDelayBetweenUpdatesMS);
|
| -}
|
| -
|
| -void LoadProgressTracker::SendChangeLoadProgress() {
|
| - last_time_progress_sent_ = base::TimeTicks::Now();
|
| - render_view_->Send(
|
| - new ViewHostMsg_DidChangeLoadProgress(render_view_->routing_id(),
|
| - progress_));
|
| -}
|
| -
|
| -void LoadProgressTracker::ResetStates() {
|
| - tracked_frame_ = NULL;
|
| - progress_ = 0.0;
|
| - method_factory_.RevokeAll();
|
| - last_time_progress_sent_ = base::TimeTicks();
|
| -}
|
|
|