2018-09-10 02:41:13 +02:00
|
|
|
// Copyright © 2015 The CefSharp Authors. All rights reserved.
|
2015-03-08 13:11:09 +01:00
|
|
|
//
|
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "JavascriptCallbackRegistry.h"
|
|
|
|
|
|
|
|
|
|
using namespace System::Threading;
|
2021-02-27 12:11:35 +10:00
|
|
|
using namespace CefSharp::BrowserSubprocess;
|
2015-03-08 13:11:09 +01:00
|
|
|
|
|
|
|
|
namespace CefSharp
|
|
|
|
|
{
|
2021-02-27 12:11:35 +10:00
|
|
|
namespace BrowserSubprocess
|
2015-03-08 13:11:09 +01:00
|
|
|
{
|
2015-08-07 13:42:46 +10:00
|
|
|
JavascriptCallback^ JavascriptCallbackRegistry::Register(const CefRefPtr<CefV8Context>& context, const CefRefPtr<CefV8Value>& value)
|
2015-03-08 13:11:09 +01:00
|
|
|
{
|
2015-03-09 23:35:17 +01:00
|
|
|
Int64 newId = Interlocked::Increment(_lastId);
|
|
|
|
|
JavascriptCallbackWrapper^ wrapper = gcnew JavascriptCallbackWrapper(value, context);
|
2015-03-11 13:23:00 +10:00
|
|
|
_callbacks->TryAdd(newId, wrapper);
|
2015-03-08 13:11:09 +01:00
|
|
|
|
2015-03-12 11:29:14 +10:00
|
|
|
auto result = gcnew JavascriptCallback();
|
2015-03-08 13:11:09 +01:00
|
|
|
result->Id = newId;
|
2015-03-09 20:23:13 +01:00
|
|
|
result->BrowserId = _browserId;
|
2024-03-09 06:55:27 +10:00
|
|
|
result->FrameId = StringUtils::ToClr(context->GetFrame()->GetIdentifier());
|
2015-03-08 13:11:09 +01:00
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-16 06:32:58 +10:00
|
|
|
JavascriptCallbackWrapper^ JavascriptCallbackRegistry::FindWrapper(int64_t id)
|
2015-07-07 08:12:04 +02:00
|
|
|
{
|
|
|
|
|
JavascriptCallbackWrapper^ callback;
|
|
|
|
|
_callbacks->TryGetValue(id, callback);
|
|
|
|
|
return callback;
|
|
|
|
|
}
|
|
|
|
|
|
2015-03-11 13:52:32 +10:00
|
|
|
void JavascriptCallbackRegistry::Deregister(Int64 id)
|
2015-03-08 13:11:09 +01:00
|
|
|
{
|
2015-03-11 13:23:00 +10:00
|
|
|
JavascriptCallbackWrapper^ callback;
|
2018-09-10 02:41:13 +02:00
|
|
|
if (_callbacks->TryRemove(id, callback))
|
2015-03-08 13:11:09 +01:00
|
|
|
{
|
|
|
|
|
delete callback;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2021-02-27 12:11:35 +10:00
|
|
|
}
|