2014-05-08 20:12:57 +02:00
|
|
|
// Copyright © 2010-2014 The CefSharp Project. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
|
2014-05-08 22:21:06 +02:00
|
|
|
#pragma once
|
2014-05-08 20:12:57 +02:00
|
|
|
|
|
|
|
|
#include "Stdafx.h"
|
|
|
|
|
#include "JavascriptObjectWrapper.h"
|
2014-05-08 22:21:06 +02:00
|
|
|
#include "JavascriptMethodHandler.h"
|
2014-05-08 20:12:57 +02:00
|
|
|
|
|
|
|
|
using namespace CefSharp::Internals;
|
2014-06-12 04:58:41 +03:00
|
|
|
using namespace System::Runtime::Serialization;
|
2014-05-08 20:12:57 +02:00
|
|
|
|
|
|
|
|
namespace CefSharp
|
|
|
|
|
{
|
2014-08-28 14:47:11 +10:00
|
|
|
private ref class JavascriptMethodWrapper : IBindableJavascriptMember
|
2014-05-08 20:12:57 +02:00
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
MCefRefPtr<JavascriptMethodHandler> _javascriptMethodHandler;
|
2014-06-12 06:29:25 +03:00
|
|
|
JavascriptObjectWrapper^ _owner;
|
2014-08-28 14:47:11 +10:00
|
|
|
JavascriptMethod^ _method;
|
2014-05-08 20:12:57 +02:00
|
|
|
|
|
|
|
|
public:
|
2014-08-28 14:47:11 +10:00
|
|
|
JavascriptMethodWrapper(JavascriptMethod^ method)
|
2014-05-08 20:12:57 +02:00
|
|
|
{
|
2014-08-28 14:47:11 +10:00
|
|
|
_method = method;
|
2014-05-08 22:21:06 +02:00
|
|
|
_javascriptMethodHandler = new JavascriptMethodHandler(gcnew Func<array<Object^>^, Object^>(this, &JavascriptMethodWrapper::Execute));
|
2014-05-08 20:12:57 +02:00
|
|
|
}
|
|
|
|
|
|
2014-06-12 06:29:25 +03:00
|
|
|
virtual void Bind(JavascriptObject^ owner)
|
2014-05-08 20:12:57 +02:00
|
|
|
{
|
2014-05-08 22:21:06 +02:00
|
|
|
_owner = static_cast<JavascriptObjectWrapper^>(owner);
|
2014-06-12 06:29:25 +03:00
|
|
|
|
2014-08-28 14:47:11 +10:00
|
|
|
auto methodName = StringUtils::ToNative(_method->JavascriptName);
|
2014-05-08 20:12:57 +02:00
|
|
|
auto v8Value = CefV8Value::CreateFunction(methodName, _javascriptMethodHandler.get());
|
|
|
|
|
|
2014-07-11 12:50:33 +10:00
|
|
|
_owner->V8Value->SetValue(methodName, v8Value, V8_PROPERTY_ATTRIBUTE_NONE);
|
2014-05-08 20:12:57 +02:00
|
|
|
};
|
2014-05-08 22:21:06 +02:00
|
|
|
|
2014-06-12 06:29:25 +03:00
|
|
|
Object^ Execute(array<Object^>^ parameters);
|
2014-05-08 20:12:57 +02:00
|
|
|
};
|
|
|
|
|
}
|