| Index: media/base/state_machine.cc
|
| diff --git a/media/base/state_machine.cc b/media/base/state_machine.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..70fbb2e8e9f3c9991fa4baab8d53be535593d0e7
|
| --- /dev/null
|
| +++ b/media/base/state_machine.cc
|
| @@ -0,0 +1,34 @@
|
| +// Copyright 2016 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 "media/base/state_machine.h"
|
| +
|
| +namespace media {
|
| +
|
| +StateMachine::StateMachine() : owner_(nullptr) {}
|
| +
|
| +StateMachine::~StateMachine() {
|
| + for (scoped_refptr<State> state : states_)
|
| + state->UnregisterClient(this);
|
| +}
|
| +
|
| +void StateMachine::SetOwner(Owner* owner) {
|
| + owner_ = owner;
|
| +}
|
| +
|
| +void StateMachine::OnStateChanged() {
|
| + DCHECK(owner_);
|
| + owner_->RequestRun(this);
|
| +}
|
| +
|
| +void StateMachine::UsingState(scoped_refptr<State> state) {
|
| + // TODO(liberato): check for duplicates. Not sure why set doesn't work,
|
| + // since it seems like there should be a default hash defined for refptr.
|
| + // maybe define one if not, but probably i just forgot to tell the set
|
| + // about it.
|
| + state->RegisterClient(this);
|
| + states_.push_back(state);
|
| +}
|
| +
|
| +} // namespace media
|
|
|