// Copyright © 2015 The CefSharp Authors. All rights reserved. // // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. #pragma once #include "Stdafx.h" #include "CefWrapper.h" namespace CefSharp { namespace Internals { private ref class CefRequestCallbackWrapper : public IRequestCallback, public CefWrapper { private: MCefRefPtr _callback; IFrame^ _frame; IRequest^ _request; internal: CefRequestCallbackWrapper(CefRefPtr &callback) : _callback(callback), _frame(nullptr), _request(nullptr) { } CefRequestCallbackWrapper( CefRefPtr &callback, IFrame^ frame, IRequest^ request) : _callback(callback), _frame(frame), _request(request) { } !CefRequestCallbackWrapper() { _callback = NULL; } ~CefRequestCallbackWrapper() { this->!CefRequestCallbackWrapper(); delete _request; _request = nullptr; delete _frame; _frame = nullptr; _disposed = true; } public: virtual void Continue(bool allow) { ThrowIfDisposed(); _callback->Continue(allow); delete this; } virtual void Cancel() { ThrowIfDisposed(); _callback->Cancel(); delete this; } }; } }