| Index: tonic/dart_persistent_value.h
|
| diff --git a/tonic/dart_persistent_value.h b/tonic/dart_persistent_value.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c6215c4b077a42f11febc19f94f0846e591118bd
|
| --- /dev/null
|
| +++ b/tonic/dart_persistent_value.h
|
| @@ -0,0 +1,43 @@
|
| +// 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.
|
| +
|
| +#ifndef SKY_ENGINE_TONIC_DART_PERSISTENT_VALUE_H_
|
| +#define SKY_ENGINE_TONIC_DART_PERSISTENT_VALUE_H_
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "dart/runtime/include/dart_api.h"
|
| +
|
| +namespace blink {
|
| +class DartState;
|
| +
|
| +// DartPersistentValue is a bookkeeping class to help pair calls to
|
| +// Dart_NewPersistentHandle with Dart_DeletePersistentHandle. Consider using
|
| +// this class instead of holding a Dart_PersistentHandle directly so that you
|
| +// don't leak the Dart_PersistentHandle.
|
| +class DartPersistentValue {
|
| + public:
|
| + DartPersistentValue();
|
| + DartPersistentValue(DartState* dart_state, Dart_Handle value);
|
| + ~DartPersistentValue();
|
| +
|
| + Dart_PersistentHandle value() const { return value_; }
|
| + bool is_empty() const { return !value_; }
|
| +
|
| + void Set(DartState* dart_state, Dart_Handle value);
|
| + void Clear();
|
| + Dart_Handle Release();
|
| +
|
| + const base::WeakPtr<DartState>& dart_state() const { return dart_state_; }
|
| +
|
| + private:
|
| + base::WeakPtr<DartState> dart_state_;
|
| + Dart_PersistentHandle value_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DartPersistentValue);
|
| +};
|
| +
|
| +} // namespace blink
|
| +
|
| +#endif // SKY_ENGINE_TONIC_DART_PERSISTENT_VALUE_H_
|
|
|