| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index f1cda629356adf9e8836e7ef3450068b1f84e151..ddb8f096afe1126ddd3e1e0f0365a94ec85ae02c 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -3498,22 +3498,23 @@ THREADED_TEST(UniquePersistent) {
|
| template<typename K, typename V>
|
| class WeakStdMapTraits : public v8::StdMapTraits<K, V> {
|
| public:
|
| - typedef typename v8::DefaultPersistentValueMapTraits<K, V>::Impl Impl;
|
| - static const bool kIsWeak = true;
|
| + typedef typename v8::PersistentValueMap<K, V, WeakStdMapTraits<K, V> >
|
| + MapType;
|
| + static const v8::PersistentContainerCallbackType kCallbackType = v8::kWeak;
|
| struct WeakCallbackDataType {
|
| - Impl* impl;
|
| + MapType* map;
|
| K key;
|
| };
|
| static WeakCallbackDataType* WeakCallbackParameter(
|
| - Impl* impl, const K& key, Local<V> value) {
|
| + MapType* map, const K& key, Local<V> value) {
|
| WeakCallbackDataType* data = new WeakCallbackDataType;
|
| - data->impl = impl;
|
| + data->map = map;
|
| data->key = key;
|
| return data;
|
| }
|
| - static Impl* ImplFromWeakCallbackData(
|
| + static MapType* MapFromWeakCallbackData(
|
| const v8::WeakCallbackData<V, WeakCallbackDataType>& data) {
|
| - return data.GetParameter()->impl;
|
| + return data.GetParameter()->map;
|
| }
|
| static K KeyFromWeakCallbackData(
|
| const v8::WeakCallbackData<V, WeakCallbackDataType>& data) {
|
| @@ -3523,7 +3524,7 @@ class WeakStdMapTraits : public v8::StdMapTraits<K, V> {
|
| delete data;
|
| }
|
| static void Dispose(v8::Isolate* isolate, v8::UniquePersistent<V> value,
|
| - Impl* impl, K key) { }
|
| + K key) { }
|
| };
|
|
|
|
|
| @@ -3545,6 +3546,10 @@ static void TestPersistentValueMap() {
|
| CHECK_EQ(1, static_cast<int>(map.Size()));
|
| obj = map.Get(7);
|
| CHECK_EQ(expected, obj);
|
| + {
|
| + typename Map::PersistentValueReference ref = map.GetReference(7);
|
| + CHECK_EQ(expected, ref.NewLocal(isolate));
|
| + }
|
| v8::UniquePersistent<v8::Object> removed = map.Remove(7);
|
| CHECK_EQ(0, static_cast<int>(map.Size()));
|
| CHECK(expected == removed);
|
| @@ -3554,6 +3559,15 @@ static void TestPersistentValueMap() {
|
| CHECK_EQ(1, static_cast<int>(map.Size()));
|
| map.Set(8, expected);
|
| CHECK_EQ(1, static_cast<int>(map.Size()));
|
| + {
|
| + typename Map::PersistentValueReference ref;
|
| + Local<v8::Object> expected2 = v8::Object::New(isolate);
|
| + removed = map.Set(8,
|
| + v8::UniquePersistent<v8::Object>(isolate, expected2), &ref);
|
| + CHECK_EQ(1, static_cast<int>(map.Size()));
|
| + CHECK(expected == removed);
|
| + CHECK_EQ(expected2, ref.NewLocal(isolate));
|
| + }
|
| }
|
| CHECK_EQ(initial_handle_count + 1, global_handles->global_handles_count());
|
| if (map.IsWeak()) {
|
| @@ -3572,7 +3586,7 @@ TEST(PersistentValueMap) {
|
| TestPersistentValueMap<v8::StdPersistentValueMap<int, v8::Object> >();
|
|
|
| // Custom traits with weak callbacks:
|
| - typedef v8::StdPersistentValueMap<int, v8::Object,
|
| + typedef v8::PersistentValueMap<int, v8::Object,
|
| WeakStdMapTraits<int, v8::Object> > WeakPersistentValueMap;
|
| TestPersistentValueMap<WeakPersistentValueMap>();
|
| }
|
|
|