mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
The tonic layer is analogous to "gin" for v8. It provides wrappers and helpers around common dart types and implements the basic infrastructure for allowing dart wrappers around sky DOM objects to have proper GC behavior. R=abarth@chromium.org TBR=eseidel BUG= Review URL: https://codereview.chromium.org/924593002
44 lines
1.3 KiB
C++
44 lines
1.3 KiB
C++
// 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_
|