// Copyright 2014 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 SKY_ENGINE_BINDINGS_SCHEDULED_ACTION_H_
#define SKY_ENGINE_BINDINGS_SCHEDULED_ACTION_H_

#include "dart/runtime/include/dart_api.h"
#include "sky/engine/tonic/dart_persistent_value.h"
#include "sky/engine/tonic/dart_state.h"
#include "sky/engine/wtf/RefPtr.h"
#include "sky/engine/wtf/PassOwnPtr.h"

namespace blink {

class ExecutionContext;

class ScheduledAction {
 public:
  static PassOwnPtr<ScheduledAction> Create(DartState* dart_state,
                                            Dart_Handle closure) {
    return adoptPtr(new ScheduledAction(dart_state, closure));
  }

  ~ScheduledAction();

  void Execute();

 private:
  ScheduledAction(DartState* dart_state, Dart_Handle closure);

  DartPersistentValue closure_;
};

}  // namespace blink

#endif  // SKY_ENGINE_BINDINGS_SCHEDULED_ACTION_H_
