diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-06 06:55:25 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-06 06:55:25 +0000 |
commit | bf3dd3cc6b32fd98b82f5e22a9ab1fddbe38f8d9 (patch) | |
tree | a5f3d7b91e1b0f5a70660ab80d6c4c1d8f5a33c8 /gin/wrappable_unittest.cc | |
parent | c80725d518df535f6e08e61d5bab47600046a646 (diff) | |
download | chromium_src-bf3dd3cc6b32fd98b82f5e22a9ab1fddbe38f8d9.zip chromium_src-bf3dd3cc6b32fd98b82f5e22a9ab1fddbe38f8d9.tar.gz chromium_src-bf3dd3cc6b32fd98b82f5e22a9ab1fddbe38f8d9.tar.bz2 |
Gin: Add support for binding JS methods to C++ instance methods.
Also:
- Added support for computed properties to ObjectTemplateBuilder
- Realized it was possible for CreateFunctionTemplate to be just one template
BUG=
R=abarth@chromium.org, jyasskin@chromium.org
Review URL: https://codereview.chromium.org/103703002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@239126 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gin/wrappable_unittest.cc')
-rw-r--r-- | gin/wrappable_unittest.cc | 39 |
1 files changed, 8 insertions, 31 deletions
diff --git a/gin/wrappable_unittest.cc b/gin/wrappable_unittest.cc index ad47e28..d6ec19e 100644 --- a/gin/wrappable_unittest.cc +++ b/gin/wrappable_unittest.cc @@ -5,9 +5,11 @@ #include "base/logging.h" #include "gin/arguments.h" #include "gin/handle.h" +#include "gin/object_template_builder.h" #include "gin/per_isolate_data.h" #include "gin/public/isolate_holder.h" #include "gin/test/v8_test.h" +#include "gin/try_catch.h" #include "gin/wrappable.h" #include "testing/gtest/include/gtest/gtest.h" @@ -48,41 +50,14 @@ struct Converter<MyObject*> : public WrappableConverter<MyObject> {}; namespace { -// TODO(abarth): This is too much typing. - -void MyObjectGetValue(const v8::FunctionCallbackInfo<v8::Value>& info) { - Arguments args(info); - - MyObject* obj = 0; - CHECK(args.Holder(&obj)); - - args.Return(obj->value()); -} - -void MyObjectSetValue(const v8::FunctionCallbackInfo<v8::Value>& info) { - Arguments args(info); - - MyObject* obj = 0; - CHECK(args.Holder(&obj)); - - int val = 0; - if (!args.GetNext(&val)) - return args.ThrowError(); - - obj->set_value(val); -} - void RegisterTemplate(v8::Isolate* isolate) { PerIsolateData* data = PerIsolateData::From(isolate); DCHECK(data->GetObjectTemplate(&MyObject::kWrapperInfo).IsEmpty()); - v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate); + v8::Handle<v8::ObjectTemplate> templ = ObjectTemplateBuilder(isolate) + .SetProperty("value", &MyObject::value, &MyObject::set_value) + .Build(); templ->SetInternalFieldCount(kNumberOfInternalFields); - templ->SetAccessorProperty( - StringToSymbol(isolate, "value"), - v8::FunctionTemplate::New(isolate, MyObjectGetValue), - v8::FunctionTemplate::New(isolate, MyObjectSetValue)); - data->SetObjectTemplate(&MyObject::kWrapperInfo, templ); } @@ -119,7 +94,7 @@ TEST_F(WrappableTest, GetAndSetProperty) { " else obj.value = 191; })"); EXPECT_FALSE(source.IsEmpty()); - v8::TryCatch try_catch; + gin::TryCatch try_catch; v8::Handle<v8::Script> script = v8::Script::New(source); EXPECT_FALSE(script.IsEmpty()); v8::Handle<v8::Value> val = script->Run(); @@ -130,6 +105,8 @@ TEST_F(WrappableTest, GetAndSetProperty) { ConvertToV8(isolate, obj.get()), }; func->Call(v8::Undefined(isolate), 1, argv); + EXPECT_FALSE(try_catch.HasCaught()); + EXPECT_EQ("", try_catch.GetStackTrace()); EXPECT_EQ(191, obj->value()); } |