blob: f7a1578bec878062d7e5b65eea33edc3c94a5111 [file] [log] [blame]
// 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.
#ifndef CC_TREES_LAYER_TREE_MUTATOR_H_
#define CC_TREES_LAYER_TREE_MUTATOR_H_
#include "base/callback_forward.h"
#include "base/time/time.h"
#include "cc/cc_export.h"
namespace cc {
class LayerTreeImpl;
class LayerTreeMutatorClient {
public:
// This is necessary because it forces an impl frame. We couldn't, for
// example, just assume that we will "always mutate" and early-out in the
// mutator if there was nothing to do because we won't always be producing
// impl frames.
virtual void SetNeedsMutate() = 0;
};
class CC_EXPORT LayerTreeMutator {
public:
virtual ~LayerTreeMutator() {}
// Returns true if the mutator should be rescheduled.
virtual bool Mutate(base::TimeTicks now, LayerTreeImpl* tree_impl) = 0;
virtual void SetClient(LayerTreeMutatorClient* client) = 0;
// Returns a callback which is responsible for applying layer tree mutations
// to DOM elements.
virtual base::Closure TakeMutations() = 0;
};
} // namespace cc
#endif // CC_TREES_LAYER_TREE_MUTATOR_H_