// 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. #include "Stdafx.h" #include "Internals\CefFrameWrapper.h" #include "Internals\CefBrowserWrapper.h" #include "Internals\CefBrowserHostWrapper.h" /// // Returns the browser host object. This method can only be called in the // browser process. /// /*--cef()--*/ IBrowserHost^ CefBrowserWrapper::GetHost() { ThrowIfDisposed(); if (_browserHost == nullptr) { _browserHost = gcnew CefBrowserHostWrapper(_browser->GetHost()); } return _browserHost; } /// // Returns true if the browser can navigate backwards. /// /*--cef()--*/ bool CefBrowserWrapper::CanGoBack::get() { ThrowIfDisposed(); return _browser->CanGoBack(); } /// // Navigate backwards. /// /*--cef()--*/ void CefBrowserWrapper::GoBack() { ThrowIfDisposed(); _browser->GoBack(); } /// // Returns true if the browser can navigate forwards. /// /*--cef()--*/ bool CefBrowserWrapper::CanGoForward::get() { ThrowIfDisposed(); return _browser->CanGoForward(); } /// // Navigate forwards. /// /*--cef()--*/ void CefBrowserWrapper::GoForward() { ThrowIfDisposed(); _browser->GoForward(); } /// // Returns true if the browser is currently loading. /// /*--cef()--*/ bool CefBrowserWrapper::IsLoading::get() { ThrowIfDisposed(); return _browser->IsLoading(); } void CefBrowserWrapper::CloseBrowser(bool forceClose) { ThrowIfDisposed(); _browser->GetHost()->CloseBrowser(forceClose); } /// // Reload the current page. /// /*--cef()--*/ void CefBrowserWrapper::Reload(bool ignoreCache) { ThrowIfDisposed(); if (ignoreCache) { _browser->ReloadIgnoreCache(); } else { _browser->Reload(); } } /// // Stop loading the page. /// /*--cef()--*/ void CefBrowserWrapper::StopLoad() { ThrowIfDisposed(); _browser->StopLoad(); } /// // Returns the globally unique identifier for this browser. /// /*--cef()--*/ int CefBrowserWrapper::Identifier::get() { ThrowIfDisposed(); return _browser->GetIdentifier(); } /// // Returns true if this object is pointing to the same handle as |that| // object. /// /*--cef()--*/ bool CefBrowserWrapper::IsSame(IBrowser^ that) { ThrowIfDisposed(); return _browser->IsSame(dynamic_cast(that)->_browser.get()); } /// // Returns true if the window is a popup window. /// /*--cef()--*/ bool CefBrowserWrapper::IsPopup::get() { ThrowIfDisposed(); return _browser->IsPopup(); } /// // Returns true if a document has been loaded in the browser. /// /*--cef()--*/ bool CefBrowserWrapper::HasDocument::get() { ThrowIfDisposed(); return _browser->HasDocument(); } IFrame^ CefBrowserWrapper::MainFrame::get() { ThrowIfDisposed(); auto frame = _browser->GetMainFrame(); return gcnew CefFrameWrapper(frame); } /// // Returns the focused frame for the browser window. /// /*--cef()--*/ IFrame^ CefBrowserWrapper::FocusedFrame::get() { ThrowIfDisposed(); return gcnew CefFrameWrapper(_browser->GetFocusedFrame()); } /// // Returns the frame with the specified identifier, or NULL if not found. /// /*--cef(capi_name=get_frame_byident)--*/ IFrame^ CefBrowserWrapper::GetFrame(Int64 identifier) { ThrowIfDisposed(); auto frame = _browser->GetFrame(identifier); if (frame.get()) { return gcnew CefFrameWrapper(frame); } return nullptr; } /// // Returns the frame with the specified name, or NULL if not found. /// /*--cef(optional_param=name)--*/ IFrame^ CefBrowserWrapper::GetFrame(String^ name) { ThrowIfDisposed(); auto frame = _browser->GetFrame(StringUtils::ToNative(name)); if (frame.get()) { return gcnew CefFrameWrapper(frame); } return nullptr; } /// // Returns the number of frames that currently exist. /// /*--cef()--*/ int CefBrowserWrapper::GetFrameCount() { ThrowIfDisposed(); return _browser->GetFrameCount(); } /// // Returns the identifiers of all existing frames. /// /*--cef(count_func=identifiers:GetFrameCount)--*/ List^ CefBrowserWrapper::GetFrameIdentifiers() { ThrowIfDisposed(); std::vector identifiers; _browser->GetFrameIdentifiers(identifiers); List^ results = gcnew List(identifiers.size()); for (UINT i = 0; i < identifiers.size(); i++) { results->Add(identifiers[i]); } return results; } /// // Returns the names of all existing frames. /// /*--cef()--*/ List^ CefBrowserWrapper::GetFrameNames() { ThrowIfDisposed(); std::vector names; _browser->GetFrameNames(names); return StringUtils::ToClr(names); } MCefRefPtr CefBrowserWrapper::Browser::get() { return _browser; }