// Copyright © 2010 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 "include\internal\cef_types_wrappers.h"
namespace CefSharp
{
namespace Core
{
///
/// Browser initialization settings. Specify NULL or 0 to get the recommended
/// default values. The consequences of using custom values may not be well
/// tested. Many of these and other settings can also configured using command-
/// line switches.
///
[System::ComponentModel::EditorBrowsableAttribute(System::ComponentModel::EditorBrowsableState::Never)]
public ref class BrowserSettings : IBrowserSettings
{
private:
bool _isDisposed = false;
bool _ownsPointer = false;
bool _autoDispose = false;
internal:
CefBrowserSettings* _browserSettings;
///
/// Internal Constructor
///
BrowserSettings(CefBrowserSettings* browserSettings)
{
_browserSettings = browserSettings;
}
public:
///
/// Default Constructor
///
BrowserSettings() : _browserSettings(new CefBrowserSettings())
{
_ownsPointer = true;
}
BrowserSettings(bool autoDispose) : _browserSettings(new CefBrowserSettings())
{
_ownsPointer = true;
_autoDispose = autoDispose;
}
///
/// Finalizer.
///
!BrowserSettings()
{
if (_ownsPointer)
{
delete _browserSettings;
}
_browserSettings = nullptr;
_isDisposed = true;
}
///
/// Destructor.
///
~BrowserSettings()
{
this->!BrowserSettings();
}
///
/// StandardFontFamily
///
virtual property String^ StandardFontFamily
{
String^ get() { return StringUtils::ToClr(_browserSettings->standard_font_family); }
void set(String^ value) { StringUtils::AssignNativeFromClr(_browserSettings->standard_font_family, value); }
}
///
/// FixedFontFamily
///
virtual property String^ FixedFontFamily
{
String^ get() { return StringUtils::ToClr(_browserSettings->fixed_font_family); }
void set(String^ value) { StringUtils::AssignNativeFromClr(_browserSettings->fixed_font_family, value); }
}
///
/// SerifFontFamily
///
virtual property String^ SerifFontFamily
{
String^ get() { return StringUtils::ToClr(_browserSettings->serif_font_family); }
void set(String^ value) { StringUtils::AssignNativeFromClr(_browserSettings->serif_font_family, value); }
}
///
/// SansSerifFontFamily
///
virtual property String^ SansSerifFontFamily
{
String^ get() { return StringUtils::ToClr(_browserSettings->sans_serif_font_family); }
void set(String^ value) { StringUtils::AssignNativeFromClr(_browserSettings->sans_serif_font_family, value); }
}
///
/// CursiveFontFamily
///
virtual property String^ CursiveFontFamily
{
String^ get() { return StringUtils::ToClr(_browserSettings->cursive_font_family); }
void set(String^ value) { StringUtils::AssignNativeFromClr(_browserSettings->cursive_font_family, value); }
}
///
/// FantasyFontFamily
///
virtual property String^ FantasyFontFamily
{
String^ get() { return StringUtils::ToClr(_browserSettings->fantasy_font_family); }
void set(String^ value) { StringUtils::AssignNativeFromClr(_browserSettings->fantasy_font_family, value); }
}
///
/// DefaultFontSize
///
virtual property int DefaultFontSize
{
int get() { return _browserSettings->default_font_size; }
void set(int value) { _browserSettings->default_font_size = value; }
}
///
/// DefaultFixedFontSize
///
virtual property int DefaultFixedFontSize
{
int get() { return _browserSettings->default_fixed_font_size; }
void set(int value) { _browserSettings->default_fixed_font_size = value; }
}
///
/// MinimumFontSize
///
virtual property int MinimumFontSize
{
int get() { return _browserSettings->minimum_font_size; }
void set(int value) { _browserSettings->minimum_font_size = value; }
}
///
/// MinimumLogicalFontSize
///
virtual property int MinimumLogicalFontSize
{
int get() { return _browserSettings->minimum_logical_font_size; }
void set(int value) { _browserSettings->minimum_logical_font_size = value; }
}
///
/// Default encoding for Web content. If empty "ISO-8859-1" will be used. Also
/// configurable using the "default-encoding" command-line switch.
///
virtual property String^ DefaultEncoding
{
String^ get() { return StringUtils::ToClr(_browserSettings->default_encoding); }
void set(String^ value) { StringUtils::AssignNativeFromClr(_browserSettings->default_encoding, value); }
}
///
/// Controls the loading of fonts from remote sources. Also configurable using
/// the "disable-remote-fonts" command-line switch.
///
virtual property CefState RemoteFonts
{
CefState get() { return (CefState)_browserSettings->remote_fonts; }
void set(CefState value) { _browserSettings->remote_fonts = (cef_state_t)value; }
}
///
/// Controls whether JavaScript can be executed. (Used to Enable/Disable javascript)
/// Also configurable using the "disable-javascript" command-line switch.
///
virtual property CefState Javascript
{
CefState get() { return (CefState)_browserSettings->javascript; }
void set(CefState value) { _browserSettings->javascript = (cef_state_t)value; }
}
///
/// Controls whether JavaScript can be used to close windows that were not
/// opened via JavaScript. JavaScript can still be used to close windows that
/// were opened via JavaScript. Also configurable using the
/// "disable-javascript-close-windows" command-line switch.
///
virtual property CefState JavascriptCloseWindows
{
CefState get() { return (CefState)_browserSettings->javascript_close_windows; }
void set(CefState value) { _browserSettings->javascript_close_windows = (cef_state_t)value; }
}
///
/// Controls whether JavaScript can access the clipboard. Also configurable
/// using the "disable-javascript-access-clipboard" command-line switch.
///
virtual property CefState JavascriptAccessClipboard
{
CefState get() { return (CefState)_browserSettings->javascript_access_clipboard; }
void set(CefState value) { _browserSettings->javascript_access_clipboard = (cef_state_t)value; }
}
///
/// Controls whether DOM pasting is supported in the editor via
/// execCommand("paste"). The |javascript_access_clipboard| setting must also
/// be enabled. Also configurable using the "disable-javascript-dom-paste"
/// command-line switch.
///
virtual property CefState JavascriptDomPaste
{
CefState get() { return (CefState)_browserSettings->javascript_dom_paste; }
void set(CefState value) { _browserSettings->javascript_dom_paste = (cef_state_t)value; }
}
///
/// Controls whether image URLs will be loaded from the network. A cached image
/// will still be rendered if requested. Also configurable using the
/// "disable-image-loading" command-line switch.
///
virtual property CefState ImageLoading
{
CefState get() { return (CefState)_browserSettings->image_loading; }
void set(CefState value) { _browserSettings->image_loading = (cef_state_t)value; }
}
///
/// Controls whether standalone images will be shrunk to fit the page. Also
/// configurable using the "image-shrink-standalone-to-fit" command-line
/// switch.
///
virtual property CefState ImageShrinkStandaloneToFit
{
CefState get() { return (CefState)_browserSettings->image_shrink_standalone_to_fit; }
void set(CefState value) { _browserSettings->image_shrink_standalone_to_fit = (cef_state_t)value; }
}
///
/// Controls whether text areas can be resized. Also configurable using the
/// "disable-text-area-resize" command-line switch.
///
virtual property CefState TextAreaResize
{
CefState get() { return (CefState)_browserSettings->text_area_resize; }
void set(CefState value) { _browserSettings->text_area_resize = (cef_state_t)value; }
}
///
/// Controls whether the tab key can advance focus to links. Also configurable
/// using the "disable-tab-to-links" command-line switch.
///
virtual property CefState TabToLinks
{
CefState get() { return (CefState)_browserSettings->tab_to_links; }
void set(CefState value) { _browserSettings->tab_to_links = (cef_state_t)value; }
}
///
/// Controls whether local storage can be used. Also configurable using the
/// "disable-local-storage" command-line switch.
///
virtual property CefState LocalStorage
{
CefState get() { return (CefState)_browserSettings->local_storage; }
void set(CefState value) { _browserSettings->local_storage = (cef_state_t)value; }
}
///
/// Controls whether databases can be used. Also configurable using the
/// "disable-databases" command-line switch.
///
virtual property CefState Databases
{
CefState get() { return (CefState)_browserSettings->databases; }
void set(CefState value) { _browserSettings->databases = (cef_state_t)value; }
}
///
/// Controls whether WebGL can be used. Note that WebGL requires hardware
/// support and may not work on all systems even when enabled. Also
/// configurable using the "disable-webgl" command-line switch.
///
virtual property CefState WebGl
{
CefState get() { return (CefState)_browserSettings->webgl; }
void set(CefState value) { _browserSettings->webgl = (cef_state_t)value; }
}
///
/// Background color used for the browser before a document is loaded and when no document color
/// is specified. The alpha component must be either fully opaque (0xFF) or fully transparent (0x00).
/// If the alpha component is fully opaque then the RGB components will be used as the background
/// color. If the alpha component is fully transparent for a WinForms browser then the
/// CefSettings.BackgroundColor value will be used. If the alpha component is fully transparent
/// for a windowless (WPF/OffScreen) browser then transparent painting will be enabled.
///
virtual property uint32_t BackgroundColor
{
uint32_t get() { return _browserSettings->background_color; }
void set(uint32_t value) { _browserSettings->background_color = value; }
}
///
/// The maximum rate in frames per second (fps) that CefRenderHandler::OnPaint
/// will be called for a windowless browser. The actual fps may be lower if
/// the browser cannot generate frames at the requested rate. The minimum
/// value is 1 and the maximum value is 60 (default 30). This value can also be
/// changed dynamically via IBrowserHost.SetWindowlessFrameRate.
///
virtual property int WindowlessFrameRate
{
int get() { return _browserSettings->windowless_frame_rate; }
void set(int value) { _browserSettings->windowless_frame_rate = value; }
}
///
/// Gets a value indicating if the browser settings has been disposed.
///
virtual property bool IsDisposed
{
bool get() { return _isDisposed; }
}
///
/// True if dispose should be called after this object is used
///
virtual property bool AutoDispose
{
bool get() { return _autoDispose; }
}
virtual IBrowserSettings^ UnWrap()
{
return this;
}
};
}
}