blob: ae15e53d8fce812ba0dd4763ae4821d7c63c2fd3 [file] [log] [blame]
// Copyright 2015 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 "net/proxy/load_state_change_coalescer.h"
namespace net {
LoadStateChangeCoalescer::LoadStateChangeCoalescer(
const base::Callback<void(LoadState)>& callback,
const base::TimeDelta& timeout,
LoadState initial_load_state)
: callback_(callback),
timeout_(timeout),
committed_load_state_(initial_load_state),
pending_load_state_(initial_load_state) {
}
void LoadStateChangeCoalescer::LoadStateChanged(LoadState load_state) {
if (load_state == committed_load_state_) {
timer_.Stop();
return;
}
pending_load_state_ = load_state;
timer_.Start(FROM_HERE, timeout_, this,
&LoadStateChangeCoalescer::SendLoadStateChanged);
}
LoadStateChangeCoalescer::~LoadStateChangeCoalescer() = default;
void LoadStateChangeCoalescer::SendLoadStateChanged() {
committed_load_state_ = pending_load_state_;
callback_.Run(pending_load_state_);
}
} // namespace net