summaryrefslogtreecommitdiff
path: root/platform/node/src/node_map.cpp
diff options
context:
space:
mode:
authorMike Morris <mikemorris@users.noreply.github.com>2016-07-12 19:22:52 -0400
committerMike Morris <mikemorris@users.noreply.github.com>2016-07-13 00:02:14 -0400
commit43cf669c6b87dd6747e4e61d0cad53382e497be2 (patch)
treeb431121c07fbba7455aee5a7b42e10e5cb582f6d /platform/node/src/node_map.cpp
parent871152832a941d7acfea0f37e45d69dd9bb60abb (diff)
downloadqtlocation-mapboxgl-43cf669c6b87dd6747e4e61d0cad53382e497be2.tar.gz
[node] drop NodeRequest::Create, move MakeCallback to NodeRequest::Execute
Diffstat (limited to 'platform/node/src/node_map.cpp')
-rw-r--r--platform/node/src/node_map.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp
index 3c44155401..eb2ad64700 100644
--- a/platform/node/src/node_map.cpp
+++ b/platform/node/src/node_map.cpp
@@ -737,20 +737,21 @@ NodeMap::~NodeMap() {
if (map) release();
}
-std::unique_ptr<mbgl::AsyncRequest> NodeMap::request(const mbgl::Resource& resource, Callback callback_) {
- Nan::HandleScope handleScope;
+std::unique_ptr<mbgl::AsyncRequest> NodeMap::request(const mbgl::Resource& resource, mbgl::FileSource::Callback callback_) {
+ Nan::HandleScope scope;
+
+ v8::Local<v8::Value> argv[] = {
+ Nan::New<v8::External>(this),
+ Nan::New<v8::External>(&callback_)
+ };
- // Enter a new v8::Context to avoid leaking v8::FunctionTemplate
- // from Nan::New<v8::Function>
- v8::Local<v8::Context> context = v8::Context::New(v8::Isolate::GetCurrent());
- v8::Context::Scope scope(context);
+ auto instance = Nan::New(NodeRequest::constructor)->NewInstance(2, argv);
- auto requestHandle = NodeRequest::Create(resource, callback_)->ToObject();
- auto request = Nan::ObjectWrap::Unwrap<NodeRequest>(requestHandle);
- auto callbackHandle = Nan::New<v8::Function>(NodeRequest::Respond, requestHandle);
+ Nan::Set(instance, Nan::New("url").ToLocalChecked(), Nan::New(resource.url).ToLocalChecked());
+ Nan::Set(instance, Nan::New("kind").ToLocalChecked(), Nan::New<v8::Integer>(resource.kind));
- v8::Local<v8::Value> argv[] = { requestHandle, callbackHandle };
- Nan::MakeCallback(handle()->GetInternalField(1)->ToObject(), "request", 2, argv);
+ auto request = Nan::ObjectWrap::Unwrap<NodeRequest>(instance);
+ request->Execute();
return std::make_unique<NodeRequest::NodeAsyncRequest>(request);
}