diff --git a/.gitignore b/.gitignore
index 66619bb..8be847d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,6 +30,40 @@ xcuserdata
*.suo
ipch/
+#openframeworks generated solution files
+*.solution
+*.VC.VC.opendb
+*.VC.db
+*.vcxproj.users
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+*.iobj
+*.ipdb
+*.exp
+
#Eclipse
.metadata
local.properties
diff --git a/example_ofxCEF/bin/debug.log b/example_ofxCEF/bin/debug.log
deleted file mode 100644
index 82bafcb..0000000
--- a/example_ofxCEF/bin/debug.log
+++ /dev/null
@@ -1,75 +0,0 @@
-[0424/155946:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/160021:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/160021:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/160120:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/160124:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/160126:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/160131:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/160136:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/160136:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/160153:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/160215:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/160215:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/161238:ERROR:icu_util.cc(152)] Couldn't mmap C:\Users\Hugues\Development\openFrameworks\addons\ofxCef\example_ofxCEF\bin\icudtl.dat
-[0424/161238:FATAL:content_main_runner.cc(697)] Check failed: base::i18n::InitializeICU().
-[0424/161251:ERROR:icu_util.cc(152)] Couldn't mmap C:\Users\Hugues\Development\openFrameworks\addons\ofxCef\example_ofxCEF\bin\icudtl.dat
-[0424/161251:FATAL:content_main_runner.cc(697)] Check failed: base::i18n::InitializeICU().
-[0424/161347:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/161356:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/161356:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/161932:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/161940:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/161940:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/163619:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/163701:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/163701:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/164206:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/164251:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/164251:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/164559:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/164632:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/164632:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/164651:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/164806:ERROR:audio_output_device.cc(261)] IO loop going away before the audio device has been stopped
-[0424/164807:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/164807:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/164811:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0424/164845:ERROR:audio_output_device.cc(261)] IO loop going away before the audio device has been stopped
-[0424/164846:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0424/164846:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != 0.
-
-[0428/160847:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0428/160920:ERROR:audio_output_device.cc(261)] IO loop going away before the audio device has been stopped
-[0428/160951:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0428/161241:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0429/112115:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0429/142345:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0429/142513:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0429/142536:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0429/142751:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0429/142837:ERROR:audio_output_device.cc(261)] IO loop going away before the audio device has been stopped
-[0429/150905:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0429/161036:ERROR:renderer_main.cc(200)] Running without renderer sandbox
-[0429/161104:FATAL:content_main_runner.cc(738)] Check failed: InitializeSandbox(params.sandbox_info).
-[0429/161104:FATAL:content_main_runner.cc(738)] Check failed: InitializeSandbox(params.sandbox_info).
diff --git a/example_ofxCEF/bin/example_ofxCEF.exp b/example_ofxCEF/bin/example_ofxCEF.exp
deleted file mode 100644
index 4e5a69a..0000000
Binary files a/example_ofxCEF/bin/example_ofxCEF.exp and /dev/null differ
diff --git a/example_ofxCEF/bin/example_ofxCEF_debug.exp b/example_ofxCEF/bin/example_ofxCEF_debug.exp
deleted file mode 100644
index 5782ffd..0000000
Binary files a/example_ofxCEF/bin/example_ofxCEF_debug.exp and /dev/null differ
diff --git a/example_ofxCEF/bin/example_ofxCEF_debug.ilk b/example_ofxCEF/bin/example_ofxCEF_debug.ilk
deleted file mode 100644
index bd34b81..0000000
Binary files a/example_ofxCEF/bin/example_ofxCEF_debug.ilk and /dev/null differ
diff --git a/example_ofxCEF/bin/example_ofxCEF_debug.pdb b/example_ofxCEF/bin/example_ofxCEF_debug.pdb
deleted file mode 100644
index 905b26e..0000000
Binary files a/example_ofxCEF/bin/example_ofxCEF_debug.pdb and /dev/null differ
diff --git a/example_ofxCEF/change_mach_o_flags.py b/example_ofxCEF/change_mach_o_flags.py
old mode 100755
new mode 100644
diff --git a/example_ofxCEF/compatibility.manifest b/example_ofxCEF/compatibility.manifest
new file mode 100644
index 0000000..10d10da
--- /dev/null
+++ b/example_ofxCEF/compatibility.manifest
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example_ofxCEF/example_ofxCEF.sln b/example_ofxCEF/example_ofxCEF.sln
index 9f655c8..aaee23a 100644
--- a/example_ofxCEF/example_ofxCEF.sln
+++ b/example_ofxCEF/example_ofxCEF.sln
@@ -1,40 +1,83 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2012 for Windows Desktop
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_ofxCEF", "example_ofxCEF.vcxproj", "{7FD42DF7-442E-479A-BA76-D0022F99702A}"
ProjectSection(ProjectDependencies) = postProject
{0FD57D83-9065-4DF4-888D-5E6DE5BFB65C} = {0FD57D83-9065-4DF4-888D-5E6DE5BFB65C}
+ {A525C183-14BE-3989-85EB-A7C6C1C6E1F4} = {A525C183-14BE-3989-85EB-A7C6C1C6E1F4}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openframeworksLib", "..\..\..\libs\openFrameworksCompiled\project\vs\openframeworksLib.vcxproj", "{5837595D-ACA9-485C-8E76-729040CE4B0B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "..\libs\CEF\win32\build\ZERO_CHECK.vcxproj", "{8B2CE83C-9D83-451C-853A-44DFBB7A951E}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef_dll_wrapper", "..\libs\CEF\win32\build\libcef_dll\libcef_dll_wrapper.vcxproj", "{0FD57D83-9065-4DF4-888D-5E6DE5BFB65C}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef_dll_wrapper", "..\libs\CEF\win32\build\libcef_dll_wrapper\libcef_dll_wrapper.vcxproj", "{0FD57D83-9065-4DF4-888D-5E6DE5BFB65C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "..\libs\CEF\win64\build\ZERO_CHECK.vcxproj", "{C02B4834-3CAA-3E74-9B27-44FA9F6F7B55}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef_dll_wrapper", "..\libs\CEF\win64\build\libcef_dll_wrapper\libcef_dll_wrapper.vcxproj", "{A525C183-14BE-3989-85EB-A7C6C1C6E1F4}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CEF32", "CEF32", "{FA4E8862-7D93-4826-8B0E-88F63ED07504}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CEF64", "CEF64", "{C1B45239-7717-4B39-947F-A60E25F488DE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|Win32.ActiveCfg = Debug|Win32
{7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|Win32.Build.0 = Debug|Win32
+ {7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|x64.ActiveCfg = Debug|x64
+ {7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|x64.Build.0 = Debug|x64
{7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|Win32.ActiveCfg = Release|Win32
{7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|Win32.Build.0 = Release|Win32
+ {7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|x64.ActiveCfg = Release|x64
+ {7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|x64.Build.0 = Release|x64
{5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|Win32.ActiveCfg = Debug|Win32
{5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|Win32.Build.0 = Debug|Win32
+ {5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|x64.ActiveCfg = Debug|x64
+ {5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|x64.Build.0 = Debug|x64
{5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|Win32.ActiveCfg = Release|Win32
{5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|Win32.Build.0 = Release|Win32
+ {5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|x64.ActiveCfg = Release|x64
+ {5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|x64.Build.0 = Release|x64
{8B2CE83C-9D83-451C-853A-44DFBB7A951E}.Debug|Win32.ActiveCfg = Debug|Win32
{8B2CE83C-9D83-451C-853A-44DFBB7A951E}.Debug|Win32.Build.0 = Debug|Win32
+ {8B2CE83C-9D83-451C-853A-44DFBB7A951E}.Debug|x64.ActiveCfg = Debug|Win32
{8B2CE83C-9D83-451C-853A-44DFBB7A951E}.Release|Win32.ActiveCfg = Release|Win32
{8B2CE83C-9D83-451C-853A-44DFBB7A951E}.Release|Win32.Build.0 = Release|Win32
+ {8B2CE83C-9D83-451C-853A-44DFBB7A951E}.Release|x64.ActiveCfg = Release|Win32
{0FD57D83-9065-4DF4-888D-5E6DE5BFB65C}.Debug|Win32.ActiveCfg = Debug|Win32
{0FD57D83-9065-4DF4-888D-5E6DE5BFB65C}.Debug|Win32.Build.0 = Debug|Win32
+ {0FD57D83-9065-4DF4-888D-5E6DE5BFB65C}.Debug|x64.ActiveCfg = Debug|Win32
{0FD57D83-9065-4DF4-888D-5E6DE5BFB65C}.Release|Win32.ActiveCfg = Release|Win32
{0FD57D83-9065-4DF4-888D-5E6DE5BFB65C}.Release|Win32.Build.0 = Release|Win32
+ {0FD57D83-9065-4DF4-888D-5E6DE5BFB65C}.Release|x64.ActiveCfg = Release|Win32
+ {C02B4834-3CAA-3E74-9B27-44FA9F6F7B55}.Debug|Win32.ActiveCfg = Debug|x64
+ {C02B4834-3CAA-3E74-9B27-44FA9F6F7B55}.Debug|x64.ActiveCfg = Debug|x64
+ {C02B4834-3CAA-3E74-9B27-44FA9F6F7B55}.Debug|x64.Build.0 = Debug|x64
+ {C02B4834-3CAA-3E74-9B27-44FA9F6F7B55}.Release|Win32.ActiveCfg = Release|x64
+ {C02B4834-3CAA-3E74-9B27-44FA9F6F7B55}.Release|x64.ActiveCfg = Release|x64
+ {C02B4834-3CAA-3E74-9B27-44FA9F6F7B55}.Release|x64.Build.0 = Release|x64
+ {A525C183-14BE-3989-85EB-A7C6C1C6E1F4}.Debug|Win32.ActiveCfg = Debug|x64
+ {A525C183-14BE-3989-85EB-A7C6C1C6E1F4}.Debug|x64.ActiveCfg = Debug|x64
+ {A525C183-14BE-3989-85EB-A7C6C1C6E1F4}.Debug|x64.Build.0 = Debug|x64
+ {A525C183-14BE-3989-85EB-A7C6C1C6E1F4}.Release|Win32.ActiveCfg = Release|x64
+ {A525C183-14BE-3989-85EB-A7C6C1C6E1F4}.Release|x64.ActiveCfg = Release|x64
+ {A525C183-14BE-3989-85EB-A7C6C1C6E1F4}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {8B2CE83C-9D83-451C-853A-44DFBB7A951E} = {FA4E8862-7D93-4826-8B0E-88F63ED07504}
+ {0FD57D83-9065-4DF4-888D-5E6DE5BFB65C} = {FA4E8862-7D93-4826-8B0E-88F63ED07504}
+ {C02B4834-3CAA-3E74-9B27-44FA9F6F7B55} = {C1B45239-7717-4B39-947F-A60E25F488DE}
+ {A525C183-14BE-3989-85EB-A7C6C1C6E1F4} = {C1B45239-7717-4B39-947F-A60E25F488DE}
+ EndGlobalSection
EndGlobal
diff --git a/example_ofxCEF/example_ofxCEF.vcxproj b/example_ofxCEF/example_ofxCEF.vcxproj
index 94febd2..9eb455f 100644
--- a/example_ofxCEF/example_ofxCEF.vcxproj
+++ b/example_ofxCEF/example_ofxCEF.vcxproj
@@ -1,14 +1,22 @@
-
+DebugWin32
+
+ Debug
+ x64
+ ReleaseWin32
+
+ Release
+ x64
+ {7FD42DF7-442E-479A-BA76-D0022F99702A}
@@ -19,23 +27,42 @@
ApplicationUnicode
- v110
+ v140
+
+
+ Application
+ Unicode
+ v140ApplicationUnicodetrue
- v110
+ v140
+
+
+ Application
+ Unicode
+ true
+ v140
+
+
+
+
+
+
+
+ bin\
@@ -44,11 +71,19 @@
truetrue
+
+ $(ProjectName)_debug
+ true
+ true
+ bin\obj\$(Configuration)\false
+
+ false
+ Disabled
@@ -65,9 +100,47 @@
trueConsolefalse
- ..\..\..\addons\ofxCef\libs\CEF\win32\$(Configuration)\libcef.lib;%(AdditionalDependencies)
+ ..\..\..\addons\ofxCef\libs\CEF\win32\build\libcef_dll_wrapper\$(Configuration)\libcef_dll_wrapper.lib;..\..\..\addons\ofxCef\libs\CEF\win32\$(Configuration)\libcef.lib;%(AdditionalDependencies)..\..\..\addons\ofxCef\libs\CEF\win32\$(Configuration);%(AdditionalLibraryDirectories)
+
+ echo on
+ dir
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win32/$(Configuration)/" "$(ProjectDir)bin/" "*.dll" "*.bin" /njs /njh /np /fp /bytes
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win32/Resources/" "$(ProjectDir)bin/" "*.pak" /njs /njh /np /fp /bytes
+ robocopy "$(OF_ROOT)/export/vs/$(Platform_Actual)/" "$(ProjectDir)bin/" "*.dll" /njs /njh /np /fp /bytes
+if errorlevel 1 exit 0 else exit %errorlevel%
+
+
+
+
+ Disabled
+ EnableFastChecks
+ %(PreprocessorDefinitions)
+ MultiThreadedDebugDLL
+ Level3
+ ProgramDatabase
+ %(AdditionalIncludeDirectories);..\..\..\addons\ofxCef\libs\CEF\win64\include;..\..\..\addons\ofxCef\libs\CEF\win64;..\..\..\addons\ofxCef\src;src
+ CompileAsCpp
+
+
+ true
+ Console
+ false
+ ..\..\..\addons\ofxCef\libs\CEF\win64\build\libcef_dll_wrapper\$(Configuration)\libcef_dll_wrapper.lib;..\..\..\addons\ofxCef\libs\CEF\win64\$(Configuration)\libcef.lib;%(AdditionalDependencies)
+ ..\..\..\addons\ofxCef\libs\CEF\win64\$(Configuration);%(AdditionalLibraryDirectories)
+
+
+ echo on
+ dir
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win64/$(Configuration)/" "$(ProjectDir)bin/" "*.dll" "*.bin" /njs /njh /np /fp /bytes
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win64/Resources/" "$(ProjectDir)bin/" "*.pak" /E /njs /njh /np /fp /bytes
+ robocopy "$(OF_ROOT)/export/vs/$(Platform_Actual)/" "$(ProjectDir)bin/" "*.dll" /njs /njh /np /fp /bytes
+if errorlevel 1 exit 0 else exit %errorlevel%
+
+
+ compatibility.manifest
+
@@ -85,9 +158,45 @@
truetruefalse
- ..\..\..\addons\ofxCef\libs\CEF\win32\$(Configuration)\libcef.lib;%(AdditionalDependencies)
+ ..\..\..\addons\ofxCef\libs\CEF\win32\build\libcef_dll_wrapper\$(Configuration)\libcef_dll_wrapper.lib;..\..\..\addons\ofxCef\libs\CEF\win32\$(Configuration)\libcef.lib;%(AdditionalDependencies)..\..\..\addons\ofxCef\libs\CEF\win32\$(Configuration);%(AdditionalLibraryDirectories)
+
+ echo on
+ dir
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win32/$(Configuration)/" "$(ProjectDir)bin/" "*.dll" "*.bin" /njs /njh /np /fp /bytes
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win32/Resources/" "$(ProjectDir)bin/" "*.pak" /njs /njh /np /fp /bytes
+ robocopy "$(OF_ROOT)/export/vs/$(Platform_Actual)/" "$(ProjectDir)bin/" "*.dll" /njs /njh /np /fp /bytes
+if errorlevel 1 exit 0 else exit %errorlevel%
+
+
+
+
+ false
+ %(PreprocessorDefinitions)
+ MultiThreadedDLL
+ Level3
+ %(AdditionalIncludeDirectories);..\..\..\addons\ofxCef\libs\CEF\win64\include;..\..\..\addons\ofxCef\libs\CEF\win64;..\..\..\addons\ofxCef\src;src
+ CompileAsCpp
+
+
+ false
+ false
+ Console
+ true
+ true
+ false
+ ..\..\..\addons\ofxCef\libs\CEF\win64\build\libcef_dll_wrapper\$(Configuration)\libcef_dll_wrapper.lib;..\..\..\addons\ofxCef\libs\CEF\win64\$(Configuration)\libcef.lib;%(AdditionalDependencies)
+ ..\..\..\addons\ofxCef\libs\CEF\win64\$(Configuration);%(AdditionalLibraryDirectories)
+
+
+ echo on
+ dir
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win64/$(Configuration)/" "$(ProjectDir)bin/" "*.dll" "*.bin" /njs /njh /np /fp /bytes
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win64/Resources/" "$(ProjectDir)bin/" "*.pak" /njs /njh /np /fp /bytes
+ robocopy "$(OF_ROOT)/export/vs/$(Platform_Actual)/" "$(ProjectDir)bin/" "*.dll" /njs /njh /np /fp /bytes
+if errorlevel 1 exit 0 else exit %errorlevel%
+
@@ -122,6 +231,7 @@
/D_DEBUG %(AdditionalOptions)
+ /D_DEBUG %(AdditionalOptions)
diff --git a/example_ofxCEF/example_ofxCEF.vcxproj.user b/example_ofxCEF/example_ofxCEF.vcxproj.user
index bedf919..09a332b 100644
--- a/example_ofxCEF/example_ofxCEF.vcxproj.user
+++ b/example_ofxCEF/example_ofxCEF.vcxproj.user
@@ -1,11 +1,19 @@
-
+
$(ProjectDir)/binWindowsLocalDebugger
+
+ $(ProjectDir)/bin
+ WindowsLocalDebugger
+ $(ProjectDir)/binWindowsLocalDebugger
+
+ $(ProjectDir)/bin
+ WindowsLocalDebugger
+
\ No newline at end of file
diff --git a/example_ofxCEF/make_more_helpers.sh b/example_ofxCEF/make_more_helpers.sh
old mode 100755
new mode 100644
diff --git a/example_ofxCEF/src/main.cpp b/example_ofxCEF/src/main.cpp
index c3b605b..122068d 100644
--- a/example_ofxCEF/src/main.cpp
+++ b/example_ofxCEF/src/main.cpp
@@ -23,6 +23,7 @@ int main(){
p->cefgui = cefgui;
ofRunApp( p );
+ CefShutdown();
}
diff --git a/example_ofxCEF/src/ofApp.cpp b/example_ofxCEF/src/ofApp.cpp
index 1f0bc43..36ad5a9 100644
--- a/example_ofxCEF/src/ofApp.cpp
+++ b/example_ofxCEF/src/ofApp.cpp
@@ -36,7 +36,10 @@ void ofApp::exit(){
//--------------------------------------------------------------
void ofApp::update(){
- cefgui->update();
+ if (cefgui)
+ {
+ cefgui->update();
+ }
if (ofGetFrameNum() == 1){
string path = "file://" + ofToDataPath("html/index.html", true);
@@ -56,7 +59,10 @@ void ofApp::update(){
//--------------------------------------------------------------
void ofApp::draw(){
ofBackground(255,0,255);
- cefgui->draw();
+ if (cefgui)
+ {
+ cefgui->draw();
+ }
// ofPushMatrix();
// ofTranslate(ofPoint(ofGetMouseX(), ofGetMouseY()));
diff --git a/libs/CEF/ofxCEF-README.txt b/libs/CEF/ofxCEF-README.txt
new file mode 100644
index 0000000..f473469
--- /dev/null
+++ b/libs/CEF/ofxCEF-README.txt
@@ -0,0 +1,65 @@
+###########################################################
+# WINDOWS
+###########################################################
+
+Tested with openframeworks version 0.9.3 and CEF version 11/19/2016 - CEF 3.2840.1518.gffd843c / Chromium 54.0.2840.99 (downloaded from http://opensource.spotify.com/cefbuilds/index.html)
+
+If you want to compile for both 32 and 64 bit you have to download both CEF Windows builds!
+
+
+
+Move the contents of the 32bit version of CEF to ofxCef\libs\CEF\win32 and the content of the 64bit version to ofxCef\libs\CEF\win64
+Build the CEF Visual Studio Projects AFTER copying CEF to the addon (some generated paths are absolute and not relative to the project location)
+Note if you are using CMake to perform a Windows build of CEF and are following the instructions in CEF's CMakeLists.txt you have to exclude the sandbox if you are using Visual Studio 2015 Update 3 with the argument -DUSE_SANDBOX=Off like so (else you will get build errors, though this might be fixed in newer versions of CEF):
+cmake -DUSE_SANDBOX=Off -G "Visual Studio 14" ..
+cmake -DUSE_SANDBOX=Off -G "Visual Studio 14 Win64" ..
+
+
+
+It will be easiest to work off of the provided example solution.
+If you want add ofxCEF to your existing project, the following steps have to be done:
+
+Add libcef_dll_wrapper.vcxproj and the ZERO_CHECK.vcxproj to your existing Visaul Studio solution.
+If you want to setup both 32bit and 64bit support for your project, you have to add both versions to your solution. This can be a bit tricky, because Visual Studio only accepts one project of the same name. You can however add the projects to different solution folders. It might be easier to add the projects by editing the sln file in a text editor. If in doubt check the example_ofxCef solution.
+
+Add additional include directories
+Go to your project's Configuration Properties/C/C++/General/Additional Include Directories, add:
+..\..\..\addons\ofxCef\libs\CEF\win32\include
+..\..\..\addons\ofxCef\libs\CEF\win32
+..\..\..\addons\ofxCef\src
+
+Add library directories
+Go to your project's Configuration Properties/Linker/General/Additional Library Directories, add:
+..\..\..\addons\ofxCef\libs\CEF\win32\$(Configuration)
+(for 64bit configuration replace win32 with win64)
+
+Link against libcef.lib and libcef_dll_wrapper.lib
+Go to your project's Configuration Properties/Linker/Input/Additional Dependencies, add:
+..\..\..\addons\ofxCef\libs\CEF\win32\build\libcef_dll_wrapper\$(Configuration)\libcef_dll_wrapper.lib
+..\..\..\addons\ofxCef\libs\CEF\win32\$(Configuration)\libcef.lib
+(for 64bit configuration replace win32 with win64)
+
+Add a post build event to copy the relevant dll, bin and pak files to the executable
+Go to your project's Configuration Properties/Build Events/Post-Build Event/Command Line, replace the openframeworks stuff with:
+echo on
+ dir
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win32/$(Configuration)/" "$(ProjectDir)bin/" "*.dll" "*.bin" /njs /njh /np /fp /bytes
+ robocopy "$(ProjectDir)../../../addons/ofxCef/libs/CEF/win32/Resources/" "$(ProjectDir)bin/" "*.pak" "*.dat" /E /njs /njh /np /fp /bytes
+ robocopy "$(OF_ROOT)/export/vs/$(Platform_Actual)/" "$(ProjectDir)bin/" "*.dll" /njs /njh /np /fp /bytes
+if errorlevel 1 exit 0 else exit %errorlevel%
+
+(for 64bit configuration replace win32 with win64)
+If you want to skip this step you can also just copy the relevant files yourself to the executable. Your project should build independently of this step, you might just get an error when the application starts running (because of missing files).
+
+Ensure libcef_dll_wrapper is a dependency of your own project (Project Name > Project Dependencies).
+Ensure libcef_dll_wrapper is referenced by your project (Project Name > References > Add New Reference).
+You may have to change the Runtime Library of the libcef_dll_wrapper.vcxproj to Multi-threaded DLL (Configuration Properties/C/C++/Code Generation/Runtime Library).
+
+Depending on your version of CEF, you may have to add the compatibility.manifest to your solution. Copy the file
+ofxCef\example_ofxCEF\compatibility.manifest
+to the folder your solution is in.
+Go to your project's Configuration Properties/Manifest Tool/Input and Output/Additional Manifest Files, add:
+compatibility.manifest
+(The manifest is also coming with CEF and is at tests\cefclient\resources\win\)
+
+###########################################################
\ No newline at end of file
diff --git a/libs/CEF/osx32/.gitignore b/libs/CEF/osx32/.gitignore
new file mode 100644
index 0000000..9f1dfc7
--- /dev/null
+++ b/libs/CEF/osx32/.gitignore
@@ -0,0 +1,11 @@
+# Ignore everything
+*
+
+# But not these files...
+!.gitignore
+!script.pl
+!template.latex
+# etc...
+
+# ...even if they are in subdirectories
+!*/
\ No newline at end of file
diff --git a/libs/CEF/osx32/include/base/cef_atomic_ref_count.h b/libs/CEF/osx32/include/base/cef_atomic_ref_count.h
deleted file mode 100644
index cd9b648..0000000
--- a/libs/CEF/osx32/include/base/cef_atomic_ref_count.h
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (c) 2014 Marshall A. Greenblatt. Portions copyright (c) 2011
-// Google Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the name Chromium Embedded
-// Framework nor the names of its contributors may be used to endorse
-// or promote products derived from this software without specific prior
-// written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This is a low level implementation of atomic semantics for reference
-// counting. Please use cef_ref_counted.h directly instead.
-//
-// The Chromium implementation includes annotations to avoid some false
-// positives when using data race detection tools. Annotations are not
-// currently supported by the CEF implementation.
-
-#ifndef CEF_INCLUDE_BASE_CEF_ATOMIC_REF_COUNT_H_
-#define CEF_INCLUDE_BASE_CEF_ATOMIC_REF_COUNT_H_
-#pragma once
-
-#if defined(BASE_ATOMIC_REF_COUNT_H_)
-// Do nothing if the Chromium header has already been included.
-// This can happen in cases where Chromium code is used directly by the
-// client application. When using Chromium code directly always include
-// the Chromium header first to avoid type conflicts.
-#elif defined(BUILDING_CEF_SHARED)
-// When building CEF include the Chromium header directly.
-#include "base/atomic_ref_count.h"
-#else // !BUILDING_CEF_SHARED
-// The following is substantially similar to the Chromium implementation.
-// If the Chromium implementation diverges the below implementation should be
-// updated to match.
-
-#include "include/base/cef_atomicops.h"
-
-// Annotations are not currently supported.
-#define ANNOTATE_HAPPENS_BEFORE(obj) /* empty */
-#define ANNOTATE_HAPPENS_AFTER(obj) /* empty */
-
-namespace base {
-
-typedef subtle::Atomic32 AtomicRefCount;
-
-// Increment a reference count by "increment", which must exceed 0.
-inline void AtomicRefCountIncN(volatile AtomicRefCount *ptr,
- AtomicRefCount increment) {
- subtle::NoBarrier_AtomicIncrement(ptr, increment);
-}
-
-// Decrement a reference count by "decrement", which must exceed 0,
-// and return whether the result is non-zero.
-// Insert barriers to ensure that state written before the reference count
-// became zero will be visible to a thread that has just made the count zero.
-inline bool AtomicRefCountDecN(volatile AtomicRefCount *ptr,
- AtomicRefCount decrement) {
- ANNOTATE_HAPPENS_BEFORE(ptr);
- bool res = (subtle::Barrier_AtomicIncrement(ptr, -decrement) != 0);
- if (!res) {
- ANNOTATE_HAPPENS_AFTER(ptr);
- }
- return res;
-}
-
-// Increment a reference count by 1.
-inline void AtomicRefCountInc(volatile AtomicRefCount *ptr) {
- base::AtomicRefCountIncN(ptr, 1);
-}
-
-// Decrement a reference count by 1 and return whether the result is non-zero.
-// Insert barriers to ensure that state written before the reference count
-// became zero will be visible to a thread that has just made the count zero.
-inline bool AtomicRefCountDec(volatile AtomicRefCount *ptr) {
- return base::AtomicRefCountDecN(ptr, 1);
-}
-
-// Return whether the reference count is one. If the reference count is used
-// in the conventional way, a refrerence count of 1 implies that the current
-// thread owns the reference and no other thread shares it. This call performs
-// the test for a reference count of one, and performs the memory barrier
-// needed for the owning thread to act on the object, knowing that it has
-// exclusive access to the object.
-inline bool AtomicRefCountIsOne(volatile AtomicRefCount *ptr) {
- bool res = (subtle::Acquire_Load(ptr) == 1);
- if (res) {
- ANNOTATE_HAPPENS_AFTER(ptr);
- }
- return res;
-}
-
-// Return whether the reference count is zero. With conventional object
-// referencing counting, the object will be destroyed, so the reference count
-// should never be zero. Hence this is generally used for a debug check.
-inline bool AtomicRefCountIsZero(volatile AtomicRefCount *ptr) {
- bool res = (subtle::Acquire_Load(ptr) == 0);
- if (res) {
- ANNOTATE_HAPPENS_AFTER(ptr);
- }
- return res;
-}
-
-} // namespace base
-
-#endif // !BUILDING_CEF_SHARED
-
-#endif // CEF_INCLUDE_BASE_CEF_ATOMIC_REF_COUNT_H_
diff --git a/libs/CEF/osx32/include/base/cef_atomicops.h b/libs/CEF/osx32/include/base/cef_atomicops.h
deleted file mode 100644
index cd83115..0000000
--- a/libs/CEF/osx32/include/base/cef_atomicops.h
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright (c) 2014 Marshall A. Greenblatt. Portions copyright (c) 2012
-// Google Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the name Chromium Embedded
-// Framework nor the names of its contributors may be used to endorse
-// or promote products derived from this software without specific prior
-// written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// For atomic operations on reference counts, see cef_atomic_ref_count.h.
-
-// The routines exported by this module are subtle. If you use them, even if
-// you get the code right, it will depend on careful reasoning about atomicity
-// and memory ordering; it will be less readable, and harder to maintain. If
-// you plan to use these routines, you should have a good reason, such as solid
-// evidence that performance would otherwise suffer, or there being no
-// alternative. You should assume only properties explicitly guaranteed by the
-// specifications in this file. You are almost certainly _not_ writing code
-// just for the x86; if you assume x86 semantics, x86 hardware bugs and
-// implementations on other archtectures will cause your code to break. If you
-// do not know what you are doing, avoid these routines, and use a Mutex.
-//
-// It is incorrect to make direct assignments to/from an atomic variable.
-// You should use one of the Load or Store routines. The NoBarrier
-// versions are provided when no barriers are needed:
-// NoBarrier_Store()
-// NoBarrier_Load()
-// Although there are currently no compiler enforcement, you are encouraged
-// to use these.
-//
-
-#ifndef CEF_INCLUDE_BASE_CEF_ATOMICOPS_H_
-#define CEF_INCLUDE_BASE_CEF_ATOMICOPS_H_
-#pragma once
-
-#if defined(BASE_ATOMICOPS_H_)
-// Do nothing if the Chromium header has already been included.
-// This can happen in cases where Chromium code is used directly by the
-// client application. When using Chromium code directly always include
-// the Chromium header first to avoid type conflicts.
-#elif defined(BUILDING_CEF_SHARED)
-// When building CEF include the Chromium header directly.
-#include "base/atomicops.h"
-#else // !BUILDING_CEF_SHARED
-// The following is substantially similar to the Chromium implementation.
-// If the Chromium implementation diverges the below implementation should be
-// updated to match.
-
-#include
-
-#include "include/base/cef_build.h"
-
-#if defined(OS_WIN) && defined(ARCH_CPU_64_BITS)
-// windows.h #defines this (only on x64). This causes problems because the
-// public API also uses MemoryBarrier at the public name for this fence. So, on
-// X64, undef it, and call its documented
-// (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684208.aspx)
-// implementation directly.
-#undef MemoryBarrier
-#endif
-
-namespace base {
-namespace subtle {
-
-typedef int32_t Atomic32;
-#ifdef ARCH_CPU_64_BITS
-// We need to be able to go between Atomic64 and AtomicWord implicitly. This
-// means Atomic64 and AtomicWord should be the same type on 64-bit.
-#if defined(__ILP32__) || defined(OS_NACL)
-// NaCl's intptr_t is not actually 64-bits on 64-bit!
-// http://code.google.com/p/nativeclient/issues/detail?id=1162
-typedef int64_t Atomic64;
-#else
-typedef intptr_t Atomic64;
-#endif
-#endif
-
-// Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or
-// Atomic64 routines below, depending on your architecture.
-typedef intptr_t AtomicWord;
-
-// Atomically execute:
-// result = *ptr;
-// if (*ptr == old_value)
-// *ptr = new_value;
-// return result;
-//
-// I.e., replace "*ptr" with "new_value" if "*ptr" used to be "old_value".
-// Always return the old value of "*ptr"
-//
-// This routine implies no memory barriers.
-Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value,
- Atomic32 new_value);
-
-// Atomically store new_value into *ptr, returning the previous value held in
-// *ptr. This routine implies no memory barriers.
-Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, Atomic32 new_value);
-
-// Atomically increment *ptr by "increment". Returns the new value of
-// *ptr with the increment applied. This routine implies no memory barriers.
-Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, Atomic32 increment);
-
-Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
- Atomic32 increment);
-
-// These following lower-level operations are typically useful only to people
-// implementing higher-level synchronization operations like spinlocks,
-// mutexes, and condition-variables. They combine CompareAndSwap(), a load, or
-// a store with appropriate memory-ordering instructions. "Acquire" operations
-// ensure that no later memory access can be reordered ahead of the operation.
-// "Release" operations ensure that no previous memory access can be reordered
-// after the operation. "Barrier" operations have both "Acquire" and "Release"
-// semantics. A MemoryBarrier() has "Barrier" semantics, but does no memory
-// access.
-Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value,
- Atomic32 new_value);
-Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value,
- Atomic32 new_value);
-
-void MemoryBarrier();
-void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value);
-void Acquire_Store(volatile Atomic32* ptr, Atomic32 value);
-void Release_Store(volatile Atomic32* ptr, Atomic32 value);
-
-Atomic32 NoBarrier_Load(volatile const Atomic32* ptr);
-Atomic32 Acquire_Load(volatile const Atomic32* ptr);
-Atomic32 Release_Load(volatile const Atomic32* ptr);
-
-// 64-bit atomic operations (only available on 64-bit processors).
-#ifdef ARCH_CPU_64_BITS
-Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value,
- Atomic64 new_value);
-Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, Atomic64 new_value);
-Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, Atomic64 increment);
-Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, Atomic64 increment);
-
-Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value,
- Atomic64 new_value);
-Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value,
- Atomic64 new_value);
-void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value);
-void Acquire_Store(volatile Atomic64* ptr, Atomic64 value);
-void Release_Store(volatile Atomic64* ptr, Atomic64 value);
-Atomic64 NoBarrier_Load(volatile const Atomic64* ptr);
-Atomic64 Acquire_Load(volatile const Atomic64* ptr);
-Atomic64 Release_Load(volatile const Atomic64* ptr);
-#endif // ARCH_CPU_64_BITS
-
-} // namespace subtle
-} // namespace base
-
-// Include our platform specific implementation.
-#if defined(OS_WIN) && defined(COMPILER_MSVC) && defined(ARCH_CPU_X86_FAMILY)
-#include "include/base/internal/cef_atomicops_x86_msvc.h"
-#elif defined(OS_MACOSX)
-#include "include/base/internal/cef_atomicops_mac.h"
-#elif defined(COMPILER_GCC) && defined(ARCH_CPU_X86_FAMILY)
-#include "include/base/internal/cef_atomicops_x86_gcc.h"
-#else
-#error "Atomic operations are not supported on your platform"
-#endif
-
-// On some platforms we need additional declarations to make
-// AtomicWord compatible with our other Atomic* types.
-#if defined(OS_MACOSX) || defined(OS_OPENBSD)
-#include "include/base/internal/cef_atomicops_atomicword_compat.h"
-#endif
-
-#endif // !BUILDING_CEF_SHARED
-
-#endif // CEF_INCLUDE_BASE_CEF_ATOMICOPS_H_
diff --git a/libs/CEF/osx32/include/base/cef_basictypes.h b/libs/CEF/osx32/include/base/cef_basictypes.h
deleted file mode 100644
index 80a684d..0000000
--- a/libs/CEF/osx32/include/base/cef_basictypes.h
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2014 Marshall A. Greenblatt. Portions copyright (c) 2012
-// Google Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the name Chromium Embedded
-// Framework nor the names of its contributors may be used to endorse
-// or promote products derived from this software without specific prior
-// written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef CEF_INCLUDE_BASE_CEF_BASICTYPES_H_
-#define CEF_INCLUDE_BASE_CEF_BASICTYPES_H_
-#pragma once
-
-#if defined(BUILDING_CEF_SHARED)
-// When building CEF include the Chromium header directly.
-#include "base/basictypes.h"
-#else // !BUILDING_CEF_SHARED
-// The following is substantially similar to the Chromium implementation.
-// If the Chromium implementation diverges the below implementation should be
-// updated to match.
-
-#include // For UINT_MAX
-#include // For size_t
-
-#include "include/base/cef_build.h"
-
-// The NSPR system headers define 64-bit as |long| when possible, except on
-// Mac OS X. In order to not have typedef mismatches, we do the same on LP64.
-//
-// On Mac OS X, |long long| is used for 64-bit types for compatibility with
-// format macros even in the LP64 model.
-#if defined(__LP64__) && !defined(OS_MACOSX) && !defined(OS_OPENBSD)
-typedef long int64; // NOLINT(runtime/int)
-typedef unsigned long uint64; // NOLINT(runtime/int)
-#else
-typedef long long int64; // NOLINT(runtime/int)
-typedef unsigned long long uint64; // NOLINT(runtime/int)
-#endif
-
-// TODO: Remove these type guards. These are to avoid conflicts with
-// obsolete/protypes.h in the Gecko SDK.
-#ifndef _INT32
-#define _INT32
-typedef int int32;
-#endif
-
-// TODO: Remove these type guards. These are to avoid conflicts with
-// obsolete/protypes.h in the Gecko SDK.
-#ifndef _UINT32
-#define _UINT32
-typedef unsigned int uint32;
-#endif
-
-// UTF-16 character type
-#ifndef char16
-#if defined(WIN32)
-typedef wchar_t char16;
-#else
-typedef unsigned short char16;
-#endif
-#endif
-
-#endif // !BUILDING_CEF_SHARED
-
-#endif // CEF_INCLUDE_BASE_CEF_BASICTYPES_H_
diff --git a/libs/CEF/osx32/include/base/cef_bind.h b/libs/CEF/osx32/include/base/cef_bind.h
deleted file mode 100644
index c3f56f3..0000000
--- a/libs/CEF/osx32/include/base/cef_bind.h
+++ /dev/null
@@ -1,548 +0,0 @@
-// Copyright (c) 2014 Marshall A. Greenblatt. Portions copyright (c) 2011
-// Google Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the name Chromium Embedded
-// Framework nor the names of its contributors may be used to endorse
-// or promote products derived from this software without specific prior
-// written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef CEF_INCLUDE_BASE_CEF_BIND_H_
-#define CEF_INCLUDE_BASE_CEF_BIND_H_
-#pragma once
-
-#if defined(BASE_BIND_H_)
-// Do nothing if the Chromium header has already been included.
-// This can happen in cases where Chromium code is used directly by the
-// client application. When using Chromium code directly always include
-// the Chromium header first to avoid type conflicts.
-#elif defined(BUILDING_CEF_SHARED)
-// When building CEF include the Chromium header directly.
-#include "base/bind.h"
-#else // !BUILDING_CEF_SHARED
-// The following is substantially similar to the Chromium implementation.
-// If the Chromium implementation diverges the below implementation should be
-// updated to match.
-
-#include "include/base/internal/cef_bind_internal.h"
-#include "include/base/internal/cef_callback_internal.h"
-
-// -----------------------------------------------------------------------------
-// Usage documentation
-// -----------------------------------------------------------------------------
-//
-// See base/cef_callback.h for documentation.
-//
-//
-// -----------------------------------------------------------------------------
-// Implementation notes
-// -----------------------------------------------------------------------------
-//
-// If you're reading the implementation, before proceeding further, you should
-// read the top comment of base/bind_internal.h for a definition of common
-// terms and concepts.
-//
-// RETURN TYPES
-//
-// Though Bind()'s result is meant to be stored in a Callback<> type, it
-// cannot actually return the exact type without requiring a large amount
-// of extra template specializations. The problem is that in order to
-// discern the correct specialization of Callback<>, Bind would need to
-// unwrap the function signature to determine the signature's arity, and
-// whether or not it is a method.
-//
-// Each unique combination of (arity, function_type, num_prebound) where
-// function_type is one of {function, method, const_method} would require
-// one specialization. We eventually have to do a similar number of
-// specializations anyways in the implementation (see the Invoker<>,
-// classes). However, it is avoidable in Bind if we return the result
-// via an indirection like we do below.
-//
-// TODO(ajwong): We might be able to avoid this now, but need to test.
-//
-// It is possible to move most of the COMPILE_ASSERT asserts into BindState<>,
-// but it feels a little nicer to have the asserts here so people do not
-// need to crack open bind_internal.h. On the other hand, it makes Bind()
-// harder to read.
-
-namespace base {
-
-template
-base::Callback<
- typename internal::BindState<
- typename internal::FunctorTraits::RunnableType,
- typename internal::FunctorTraits::RunType,
- void()>
- ::UnboundRunType>
-Bind(Functor functor) {
- // Typedefs for how to store and run the functor.
- typedef typename internal::FunctorTraits::RunnableType RunnableType;
- typedef typename internal::FunctorTraits::RunType RunType;
-
- typedef internal::BindState BindState;
-
-
- return Callback(
- new BindState(internal::MakeRunnable(functor)));
-}
-
-template
-base::Callback<
- typename internal::BindState<
- typename internal::FunctorTraits::RunnableType,
- typename internal::FunctorTraits::RunType,
- void(typename internal::CallbackParamTraits::StorageType)>
- ::UnboundRunType>
-Bind(Functor functor, const P1& p1) {
- // Typedefs for how to store and run the functor.
- typedef typename internal::FunctorTraits::RunnableType RunnableType;
- typedef typename internal::FunctorTraits::RunType RunType;
-
- // Use RunnableType::RunType instead of RunType above because our
- // checks should below for bound references need to know what the actual
- // functor is going to interpret the argument as.
- typedef internal::FunctionTraits
- BoundFunctorTraits;
-
- // Do not allow binding a non-const reference parameter. Non-const reference
- // parameters are disallowed by the Google style guide. Also, binding a
- // non-const reference parameter can make for subtle bugs because the
- // invoked function will receive a reference to the stored copy of the
- // argument and not the original.
- COMPILE_ASSERT(
- !(is_non_const_reference::value ),
- do_not_bind_functions_with_nonconst_ref);
-
- // For methods, we need to be careful for parameter 1. We do not require
- // a scoped_refptr because BindState<> itself takes care of AddRef() for
- // methods. We also disallow binding of an array as the method's target
- // object.
- COMPILE_ASSERT(
- internal::HasIsMethodTag::value ||
- !internal::NeedsScopedRefptrButGetsRawPtr::value,
- p1_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::HasIsMethodTag::value ||
- !is_array::value,
- first_bound_argument_to_method_cannot_be_array);
- typedef internal::BindState::StorageType)> BindState;
-
-
- return Callback(
- new BindState(internal::MakeRunnable(functor), p1));
-}
-
-template
-base::Callback<
- typename internal::BindState<
- typename internal::FunctorTraits::RunnableType,
- typename internal::FunctorTraits::RunType,
- void(typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)>
- ::UnboundRunType>
-Bind(Functor functor, const P1& p1, const P2& p2) {
- // Typedefs for how to store and run the functor.
- typedef typename internal::FunctorTraits::RunnableType RunnableType;
- typedef typename internal::FunctorTraits::RunType RunType;
-
- // Use RunnableType::RunType instead of RunType above because our
- // checks should below for bound references need to know what the actual
- // functor is going to interpret the argument as.
- typedef internal::FunctionTraits
- BoundFunctorTraits;
-
- // Do not allow binding a non-const reference parameter. Non-const reference
- // parameters are disallowed by the Google style guide. Also, binding a
- // non-const reference parameter can make for subtle bugs because the
- // invoked function will receive a reference to the stored copy of the
- // argument and not the original.
- COMPILE_ASSERT(
- !(is_non_const_reference::value ||
- is_non_const_reference::value ),
- do_not_bind_functions_with_nonconst_ref);
-
- // For methods, we need to be careful for parameter 1. We do not require
- // a scoped_refptr because BindState<> itself takes care of AddRef() for
- // methods. We also disallow binding of an array as the method's target
- // object.
- COMPILE_ASSERT(
- internal::HasIsMethodTag::value ||
- !internal::NeedsScopedRefptrButGetsRawPtr::value,
- p1_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::HasIsMethodTag::value ||
- !is_array::value,
- first_bound_argument_to_method_cannot_be_array);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p2_is_refcounted_type_and_needs_scoped_refptr);
- typedef internal::BindState::StorageType,
- typename internal::CallbackParamTraits::StorageType)> BindState;
-
-
- return Callback(
- new BindState(internal::MakeRunnable(functor), p1, p2));
-}
-
-template
-base::Callback<
- typename internal::BindState<
- typename internal::FunctorTraits::RunnableType,
- typename internal::FunctorTraits::RunType,
- void(typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)>
- ::UnboundRunType>
-Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3) {
- // Typedefs for how to store and run the functor.
- typedef typename internal::FunctorTraits::RunnableType RunnableType;
- typedef typename internal::FunctorTraits::RunType RunType;
-
- // Use RunnableType::RunType instead of RunType above because our
- // checks should below for bound references need to know what the actual
- // functor is going to interpret the argument as.
- typedef internal::FunctionTraits
- BoundFunctorTraits;
-
- // Do not allow binding a non-const reference parameter. Non-const reference
- // parameters are disallowed by the Google style guide. Also, binding a
- // non-const reference parameter can make for subtle bugs because the
- // invoked function will receive a reference to the stored copy of the
- // argument and not the original.
- COMPILE_ASSERT(
- !(is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ),
- do_not_bind_functions_with_nonconst_ref);
-
- // For methods, we need to be careful for parameter 1. We do not require
- // a scoped_refptr because BindState<> itself takes care of AddRef() for
- // methods. We also disallow binding of an array as the method's target
- // object.
- COMPILE_ASSERT(
- internal::HasIsMethodTag::value ||
- !internal::NeedsScopedRefptrButGetsRawPtr::value,
- p1_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::HasIsMethodTag::value ||
- !is_array::value,
- first_bound_argument_to_method_cannot_be_array);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p2_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p3_is_refcounted_type_and_needs_scoped_refptr);
- typedef internal::BindState::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)> BindState;
-
-
- return Callback(
- new BindState(internal::MakeRunnable(functor), p1, p2, p3));
-}
-
-template
-base::Callback<
- typename internal::BindState<
- typename internal::FunctorTraits::RunnableType,
- typename internal::FunctorTraits::RunType,
- void(typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)>
- ::UnboundRunType>
-Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
- // Typedefs for how to store and run the functor.
- typedef typename internal::FunctorTraits::RunnableType RunnableType;
- typedef typename internal::FunctorTraits::RunType RunType;
-
- // Use RunnableType::RunType instead of RunType above because our
- // checks should below for bound references need to know what the actual
- // functor is going to interpret the argument as.
- typedef internal::FunctionTraits
- BoundFunctorTraits;
-
- // Do not allow binding a non-const reference parameter. Non-const reference
- // parameters are disallowed by the Google style guide. Also, binding a
- // non-const reference parameter can make for subtle bugs because the
- // invoked function will receive a reference to the stored copy of the
- // argument and not the original.
- COMPILE_ASSERT(
- !(is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ),
- do_not_bind_functions_with_nonconst_ref);
-
- // For methods, we need to be careful for parameter 1. We do not require
- // a scoped_refptr because BindState<> itself takes care of AddRef() for
- // methods. We also disallow binding of an array as the method's target
- // object.
- COMPILE_ASSERT(
- internal::HasIsMethodTag::value ||
- !internal::NeedsScopedRefptrButGetsRawPtr::value,
- p1_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::HasIsMethodTag::value ||
- !is_array::value,
- first_bound_argument_to_method_cannot_be_array);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p2_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p3_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p4_is_refcounted_type_and_needs_scoped_refptr);
- typedef internal::BindState::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)> BindState;
-
-
- return Callback(
- new BindState(internal::MakeRunnable(functor), p1, p2, p3, p4));
-}
-
-template
-base::Callback<
- typename internal::BindState<
- typename internal::FunctorTraits::RunnableType,
- typename internal::FunctorTraits::RunType,
- void(typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)>
- ::UnboundRunType>
-Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4,
- const P5& p5) {
- // Typedefs for how to store and run the functor.
- typedef typename internal::FunctorTraits::RunnableType RunnableType;
- typedef typename internal::FunctorTraits::RunType RunType;
-
- // Use RunnableType::RunType instead of RunType above because our
- // checks should below for bound references need to know what the actual
- // functor is going to interpret the argument as.
- typedef internal::FunctionTraits
- BoundFunctorTraits;
-
- // Do not allow binding a non-const reference parameter. Non-const reference
- // parameters are disallowed by the Google style guide. Also, binding a
- // non-const reference parameter can make for subtle bugs because the
- // invoked function will receive a reference to the stored copy of the
- // argument and not the original.
- COMPILE_ASSERT(
- !(is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ),
- do_not_bind_functions_with_nonconst_ref);
-
- // For methods, we need to be careful for parameter 1. We do not require
- // a scoped_refptr because BindState<> itself takes care of AddRef() for
- // methods. We also disallow binding of an array as the method's target
- // object.
- COMPILE_ASSERT(
- internal::HasIsMethodTag::value ||
- !internal::NeedsScopedRefptrButGetsRawPtr::value,
- p1_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::HasIsMethodTag::value ||
- !is_array::value,
- first_bound_argument_to_method_cannot_be_array);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p2_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p3_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p4_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p5_is_refcounted_type_and_needs_scoped_refptr);
- typedef internal::BindState::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)> BindState;
-
-
- return Callback(
- new BindState(internal::MakeRunnable(functor), p1, p2, p3, p4, p5));
-}
-
-template
-base::Callback<
- typename internal::BindState<
- typename internal::FunctorTraits::RunnableType,
- typename internal::FunctorTraits::RunType,
- void(typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)>
- ::UnboundRunType>
-Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4,
- const P5& p5, const P6& p6) {
- // Typedefs for how to store and run the functor.
- typedef typename internal::FunctorTraits::RunnableType RunnableType;
- typedef typename internal::FunctorTraits::RunType RunType;
-
- // Use RunnableType::RunType instead of RunType above because our
- // checks should below for bound references need to know what the actual
- // functor is going to interpret the argument as.
- typedef internal::FunctionTraits
- BoundFunctorTraits;
-
- // Do not allow binding a non-const reference parameter. Non-const reference
- // parameters are disallowed by the Google style guide. Also, binding a
- // non-const reference parameter can make for subtle bugs because the
- // invoked function will receive a reference to the stored copy of the
- // argument and not the original.
- COMPILE_ASSERT(
- !(is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ),
- do_not_bind_functions_with_nonconst_ref);
-
- // For methods, we need to be careful for parameter 1. We do not require
- // a scoped_refptr because BindState<> itself takes care of AddRef() for
- // methods. We also disallow binding of an array as the method's target
- // object.
- COMPILE_ASSERT(
- internal::HasIsMethodTag::value ||
- !internal::NeedsScopedRefptrButGetsRawPtr::value,
- p1_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::HasIsMethodTag::value ||
- !is_array::value,
- first_bound_argument_to_method_cannot_be_array);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p2_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p3_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p4_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p5_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p6_is_refcounted_type_and_needs_scoped_refptr);
- typedef internal::BindState::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)> BindState;
-
-
- return Callback(
- new BindState(internal::MakeRunnable(functor), p1, p2, p3, p4, p5, p6));
-}
-
-template
-base::Callback<
- typename internal::BindState<
- typename internal::FunctorTraits::RunnableType,
- typename internal::FunctorTraits::RunType,
- void(typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)>
- ::UnboundRunType>
-Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4,
- const P5& p5, const P6& p6, const P7& p7) {
- // Typedefs for how to store and run the functor.
- typedef typename internal::FunctorTraits::RunnableType RunnableType;
- typedef typename internal::FunctorTraits::RunType RunType;
-
- // Use RunnableType::RunType instead of RunType above because our
- // checks should below for bound references need to know what the actual
- // functor is going to interpret the argument as.
- typedef internal::FunctionTraits
- BoundFunctorTraits;
-
- // Do not allow binding a non-const reference parameter. Non-const reference
- // parameters are disallowed by the Google style guide. Also, binding a
- // non-const reference parameter can make for subtle bugs because the
- // invoked function will receive a reference to the stored copy of the
- // argument and not the original.
- COMPILE_ASSERT(
- !(is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ||
- is_non_const_reference::value ),
- do_not_bind_functions_with_nonconst_ref);
-
- // For methods, we need to be careful for parameter 1. We do not require
- // a scoped_refptr because BindState<> itself takes care of AddRef() for
- // methods. We also disallow binding of an array as the method's target
- // object.
- COMPILE_ASSERT(
- internal::HasIsMethodTag::value ||
- !internal::NeedsScopedRefptrButGetsRawPtr::value,
- p1_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::HasIsMethodTag::value ||
- !is_array::value,
- first_bound_argument_to_method_cannot_be_array);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p2_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p3_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p4_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p5_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p6_is_refcounted_type_and_needs_scoped_refptr);
- COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr::value,
- p7_is_refcounted_type_and_needs_scoped_refptr);
- typedef internal::BindState::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType,
- typename internal::CallbackParamTraits::StorageType)> BindState;
-
-
- return Callback(
- new BindState(internal::MakeRunnable(functor), p1, p2, p3, p4, p5, p6,
- p7));
-}
-
-} // namespace base
-
-#endif // !BUILDING_CEF_SHARED
-
-#endif // CEF_INCLUDE_BASE_CEF_BIND_H_
diff --git a/libs/CEF/osx32/include/base/cef_bind_helpers.h b/libs/CEF/osx32/include/base/cef_bind_helpers.h
deleted file mode 100644
index 8edac5c..0000000
--- a/libs/CEF/osx32/include/base/cef_bind_helpers.h
+++ /dev/null
@@ -1,586 +0,0 @@
-// Copyright (c) 2014 Marshall A. Greenblatt. Portions copyright (c) 2011
-// Google Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the name Chromium Embedded
-// Framework nor the names of its contributors may be used to endorse
-// or promote products derived from this software without specific prior
-// written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This defines a set of argument wrappers and related factory methods that
-// can be used specify the refcounting and reference semantics of arguments
-// that are bound by the Bind() function in base/bind.h.
-//
-// It also defines a set of simple functions and utilities that people want
-// when using Callback<> and Bind().
-//
-//
-// ARGUMENT BINDING WRAPPERS
-//
-// The wrapper functions are base::Unretained(), base::Owned(), base::Passed(),
-// base::ConstRef(), and base::IgnoreResult().
-//
-// Unretained() allows Bind() to bind a non-refcounted class, and to disable
-// refcounting on arguments that are refcounted objects.
-//
-// Owned() transfers ownership of an object to the Callback resulting from
-// bind; the object will be deleted when the Callback is deleted.
-//
-// Passed() is for transferring movable-but-not-copyable types (eg. scoped_ptr)
-// through a Callback. Logically, this signifies a destructive transfer of
-// the state of the argument into the target function. Invoking
-// Callback::Run() twice on a Callback that was created with a Passed()
-// argument will CHECK() because the first invocation would have already
-// transferred ownership to the target function.
-//
-// ConstRef() allows binding a constant reference to an argument rather
-// than a copy.
-//
-// IgnoreResult() is used to adapt a function or Callback with a return type to
-// one with a void return. This is most useful if you have a function with,
-// say, a pesky ignorable bool return that you want to use with PostTask or
-// something else that expect a Callback with a void return.
-//
-// EXAMPLE OF Unretained():
-//
-// class Foo {
-// public:
-// void func() { cout << "Foo:f" << endl; }
-// };
-//
-// // In some function somewhere.
-// Foo foo;
-// Closure foo_callback =
-// Bind(&Foo::func, Unretained(&foo));
-// foo_callback.Run(); // Prints "Foo:f".
-//
-// Without the Unretained() wrapper on |&foo|, the above call would fail
-// to compile because Foo does not support the AddRef() and Release() methods.
-//
-//
-// EXAMPLE OF Owned():
-//
-// void foo(int* arg) { cout << *arg << endl }
-//
-// int* pn = new int(1);
-// Closure foo_callback = Bind(&foo, Owned(pn));
-//
-// foo_callback.Run(); // Prints "1"
-// foo_callback.Run(); // Prints "1"
-// *n = 2;
-// foo_callback.Run(); // Prints "2"
-//
-// foo_callback.Reset(); // |pn| is deleted. Also will happen when
-// // |foo_callback| goes out of scope.
-//
-// Without Owned(), someone would have to know to delete |pn| when the last
-// reference to the Callback is deleted.
-//
-//
-// EXAMPLE OF ConstRef():
-//
-// void foo(int arg) { cout << arg << endl }
-//
-// int n = 1;
-// Closure no_ref = Bind(&foo, n);
-// Closure has_ref = Bind(&foo, ConstRef(n));
-//
-// no_ref.Run(); // Prints "1"
-// has_ref.Run(); // Prints "1"
-//
-// n = 2;
-// no_ref.Run(); // Prints "1"
-// has_ref.Run(); // Prints "2"
-//
-// Note that because ConstRef() takes a reference on |n|, |n| must outlive all
-// its bound callbacks.
-//
-//
-// EXAMPLE OF IgnoreResult():
-//
-// int DoSomething(int arg) { cout << arg << endl; }
-//
-// // Assign to a Callback with a void return type.
-// Callback cb = Bind(IgnoreResult(&DoSomething));
-// cb->Run(1); // Prints "1".
-//
-// // Prints "1" on |ml|.
-// ml->PostTask(FROM_HERE, Bind(IgnoreResult(&DoSomething), 1);
-//
-//
-// EXAMPLE OF Passed():
-//
-// void TakesOwnership(scoped_ptr arg) { }
-// scoped_ptr CreateFoo() { return scoped_ptr(new Foo()); }
-//
-// scoped_ptr f(new Foo());
-//
-// // |cb| is given ownership of Foo(). |f| is now NULL.
-// // You can use f.Pass() in place of &f, but it's more verbose.
-// Closure cb = Bind(&TakesOwnership, Passed(&f));
-//
-// // Run was never called so |cb| still owns Foo() and deletes
-// // it on Reset().
-// cb.Reset();
-//
-// // |cb| is given a new Foo created by CreateFoo().
-// cb = Bind(&TakesOwnership, Passed(CreateFoo()));
-//
-// // |arg| in TakesOwnership() is given ownership of Foo(). |cb|
-// // no longer owns Foo() and, if reset, would not delete Foo().
-// cb.Run(); // Foo() is now transferred to |arg| and deleted.
-// cb.Run(); // This CHECK()s since Foo() already been used once.
-//
-// Passed() is particularly useful with PostTask() when you are transferring
-// ownership of an argument into a task, but don't necessarily know if the
-// task will always be executed. This can happen if the task is cancellable
-// or if it is posted to a MessageLoopProxy.
-//
-//
-// SIMPLE FUNCTIONS AND UTILITIES.
-//
-// DoNothing() - Useful for creating a Closure that does nothing when called.
-// DeletePointer() - Useful for creating a Closure that will delete a
-// pointer when invoked. Only use this when necessary.
-// In most cases MessageLoop::DeleteSoon() is a better
-// fit.
-
-#ifndef CEF_INCLUDE_BASE_CEF_BIND_HELPERS_H_
-#define CEF_INCLUDE_BASE_CEF_BIND_HELPERS_H_
-#pragma once
-
-#if defined(BASE_BIND_HELPERS_H_)
-// Do nothing if the Chromium header has already been included.
-// This can happen in cases where Chromium code is used directly by the
-// client application. When using Chromium code directly always include
-// the Chromium header first to avoid type conflicts.
-#elif defined(BUILDING_CEF_SHARED)
-// When building CEF include the Chromium header directly.
-#include "base/bind_helpers.h"
-#else // !BUILDING_CEF_SHARED
-// The following is substantially similar to the Chromium implementation.
-// If the Chromium implementation diverges the below implementation should be
-// updated to match.
-
-#include "include/base/cef_basictypes.h"
-#include "include/base/cef_callback.h"
-#include "include/base/cef_template_util.h"
-#include "include/base/cef_weak_ptr.h"
-
-namespace base {
-namespace internal {
-
-// Use the Substitution Failure Is Not An Error (SFINAE) trick to inspect T
-// for the existence of AddRef() and Release() functions of the correct
-// signature.
-//
-// http://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error
-// http://stackoverflow.com/questions/257288/is-it-possible-to-write-a-c-template-to-check-for-a-functions-existence
-// http://stackoverflow.com/questions/4358584/sfinae-approach-comparison
-// http://stackoverflow.com/questions/1966362/sfinae-to-check-for-inherited-member-functions
-//
-// The last link in particular show the method used below.
-//
-// For SFINAE to work with inherited methods, we need to pull some extra tricks
-// with multiple inheritance. In the more standard formulation, the overloads
-// of Check would be:
-//
-// template
-// Yes NotTheCheckWeWant(Helper<&C::TargetFunc>*);
-//
-// template
-// No NotTheCheckWeWant(...);
-//
-// static const bool value = sizeof(NotTheCheckWeWant(0)) == sizeof(Yes);
-//
-// The problem here is that template resolution will not match
-// C::TargetFunc if TargetFunc does not exist directly in C. That is, if
-// TargetFunc in inherited from an ancestor, &C::TargetFunc will not match,
-// |value| will be false. This formulation only checks for whether or
-// not TargetFunc exist directly in the class being introspected.
-//
-// To get around this, we play a dirty trick with multiple inheritance.
-// First, We create a class BaseMixin that declares each function that we
-// want to probe for. Then we create a class Base that inherits from both T
-// (the class we wish to probe) and BaseMixin. Note that the function
-// signature in BaseMixin does not need to match the signature of the function
-// we are probing for; thus it's easiest to just use void(void).
-//
-// Now, if TargetFunc exists somewhere in T, then &Base::TargetFunc has an
-// ambiguous resolution between BaseMixin and T. This lets us write the
-// following:
-//
-// template
-// No GoodCheck(Helper<&C::TargetFunc>*);
-//
-// template
-// Yes GoodCheck(...);
-//
-// static const bool value = sizeof(GoodCheck(0)) == sizeof(Yes);
-//
-// Notice here that the variadic version of GoodCheck() returns Yes here
-// instead of No like the previous one. Also notice that we calculate |value|
-// by specializing GoodCheck() on Base instead of T.
-//
-// We've reversed the roles of the variadic, and Helper overloads.
-// GoodCheck(Helper<&C::TargetFunc>*), when C = Base, fails to be a valid
-// substitution if T::TargetFunc exists. Thus GoodCheck(0) will resolve
-// to the variadic version if T has TargetFunc. If T::TargetFunc does not
-// exist, then &C::TargetFunc is not ambiguous, and the overload resolution
-// will prefer GoodCheck(Helper<&C::TargetFunc>*).
-//
-// This method of SFINAE will correctly probe for inherited names, but it cannot
-// typecheck those names. It's still a good enough sanity check though.
-//
-// Works on gcc-4.2, gcc-4.4, and Visual Studio 2008.
-//
-// TODO(ajwong): Move to ref_counted.h or template_util.h when we've vetted
-// this works well.
-//
-// TODO(ajwong): Make this check for Release() as well.
-// See http://crbug.com/82038.
-template
-class SupportsAddRefAndRelease {
- typedef char Yes[1];
- typedef char No[2];
-
- struct BaseMixin {
- void AddRef();
- };
-
-// MSVC warns when you try to use Base if T has a private destructor, the
-// common pattern for refcounted types. It does this even though no attempt to
-// instantiate Base is made. We disable the warning for this definition.
-#if defined(OS_WIN)
-#pragma warning(push)
-#pragma warning(disable:4624)
-#endif
- struct Base : public T, public BaseMixin {
- };
-#if defined(OS_WIN)
-#pragma warning(pop)
-#endif
-
- template struct Helper {};
-
- template
- static No& Check(Helper<&C::AddRef>*);
-
- template
- static Yes& Check(...);
-
- public:
- static const bool value = sizeof(Check(0)) == sizeof(Yes);
-};
-
-// Helpers to assert that arguments of a recounted type are bound with a
-// scoped_refptr.
-template
-struct UnsafeBindtoRefCountedArgHelper : false_type {
-};
-
-template
-struct UnsafeBindtoRefCountedArgHelper
- : integral_constant::value> {
-};
-
-template
-struct UnsafeBindtoRefCountedArg : false_type {
-};
-
-template
-struct UnsafeBindtoRefCountedArg
- : UnsafeBindtoRefCountedArgHelper::value, T> {
-};
-
-template
-class HasIsMethodTag {
- typedef char Yes[1];
- typedef char No[2];
-
- template
- static Yes& Check(typename U::IsMethod*);
-
- template
- static No& Check(...);
-
- public:
- static const bool value = sizeof(Check(0)) == sizeof(Yes);
-};
-
-template
-class UnretainedWrapper {
- public:
- explicit UnretainedWrapper(T* o) : ptr_(o) {}
- T* get() const { return ptr_; }
- private:
- T* ptr_;
-};
-
-template
-class ConstRefWrapper {
- public:
- explicit ConstRefWrapper(const T& o) : ptr_(&o) {}
- const T& get() const { return *ptr_; }
- private:
- const T* ptr_;
-};
-
-template
-struct IgnoreResultHelper {
- explicit IgnoreResultHelper(T functor) : functor_(functor) {}
-
- T functor_;
-};
-
-template
-struct IgnoreResultHelper > {
- explicit IgnoreResultHelper(const Callback& functor) : functor_(functor) {}
-
- const Callback& functor_;
-};
-
-// An alternate implementation is to avoid the destructive copy, and instead
-// specialize ParamTraits<> for OwnedWrapper<> to change the StorageType to
-// a class that is essentially a scoped_ptr<>.
-//
-// The current implementation has the benefit though of leaving ParamTraits<>
-// fully in callback_internal.h as well as avoiding type conversions during
-// storage.
-template
-class OwnedWrapper {
- public:
- explicit OwnedWrapper(T* o) : ptr_(o) {}
- ~OwnedWrapper() { delete ptr_; }
- T* get() const { return ptr_; }
- OwnedWrapper(const OwnedWrapper& other) {
- ptr_ = other.ptr_;
- other.ptr_ = NULL;
- }
-
- private:
- mutable T* ptr_;
-};
-
-// PassedWrapper is a copyable adapter for a scoper that ignores const.
-//
-// It is needed to get around the fact that Bind() takes a const reference to
-// all its arguments. Because Bind() takes a const reference to avoid
-// unnecessary copies, it is incompatible with movable-but-not-copyable
-// types; doing a destructive "move" of the type into Bind() would violate
-// the const correctness.
-//
-// This conundrum cannot be solved without either C++11 rvalue references or
-// a O(2^n) blowup of Bind() templates to handle each combination of regular
-// types and movable-but-not-copyable types. Thus we introduce a wrapper type
-// that is copyable to transmit the correct type information down into
-// BindState<>. Ignoring const in this type makes sense because it is only
-// created when we are explicitly trying to do a destructive move.
-//
-// Two notes:
-// 1) PassedWrapper supports any type that has a "Pass()" function.
-// This is intentional. The whitelisting of which specific types we
-// support is maintained by CallbackParamTraits<>.
-// 2) is_valid_ is distinct from NULL because it is valid to bind a "NULL"
-// scoper to a Callback and allow the Callback to execute once.
-template
-class PassedWrapper {
- public:
- explicit PassedWrapper(T scoper) : is_valid_(true), scoper_(scoper.Pass()) {}
- PassedWrapper(const PassedWrapper& other)
- : is_valid_(other.is_valid_), scoper_(other.scoper_.Pass()) {
- }
- T Pass() const {
- CHECK(is_valid_);
- is_valid_ = false;
- return scoper_.Pass();
- }
-
- private:
- mutable bool is_valid_;
- mutable T scoper_;
-};
-
-// Unwrap the stored parameters for the wrappers above.
-template
-struct UnwrapTraits {
- typedef const T& ForwardType;
- static ForwardType Unwrap(const T& o) { return o; }
-};
-
-template
-struct UnwrapTraits > {
- typedef T* ForwardType;
- static ForwardType Unwrap(UnretainedWrapper unretained) {
- return unretained.get();
- }
-};
-
-template
-struct UnwrapTraits > {
- typedef const T& ForwardType;
- static ForwardType Unwrap(ConstRefWrapper const_ref) {
- return const_ref.get();
- }
-};
-
-template
-struct UnwrapTraits > {
- typedef T* ForwardType;
- static ForwardType Unwrap(const scoped_refptr& o) { return o.get(); }
-};
-
-template
-struct UnwrapTraits > {
- typedef const WeakPtr& ForwardType;
- static ForwardType Unwrap(const WeakPtr& o) { return o; }
-};
-
-template
-struct UnwrapTraits > {
- typedef T* ForwardType;
- static ForwardType Unwrap(const OwnedWrapper& o) {
- return o.get();
- }
-};
-
-template
-struct UnwrapTraits > {
- typedef T ForwardType;
- static T Unwrap(PassedWrapper& o) {
- return o.Pass();
- }
-};
-
-// Utility for handling different refcounting semantics in the Bind()
-// function.
-template
-struct MaybeRefcount;
-
-template