From a5bdcddd1ef923fec3dc49ff594006d1e6fb8fbe Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Thu, 5 Mar 2009 17:14:16 +0000 Subject: [PATCH] libcef: Update due to underlying chromium changes. - Fix problem displaying select lists due to ordering of focus events in WebWidgetHost::MouseEvent() (issue #17). - Add new BrowserWebKitInit class and related webkit_glue changes. - Add webkit_glue::InitializeTextEncoding() function called from the main thread in CefContext::Initialize() to avoid an assert in third_party\WebKit\WebCore\platform\text\TextEncodingRegistry.cpp buildBaseTextCodecMaps(). - V8NPObject::v8_object member renamed to V8NPObject::v8Object. - Add WebKit project dependency. libcef_dll: - Fix crash when creating a popup window due to not duplicating the m_windowName member in cpptoc\handler_cpptoc.cc handler_handle_before_created(). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@17 5089003a-bbd8-11dd-ad1f-f1f9622dbc98 --- CHROMIUM_BUILD_COMPATIBILITY.txt | 1 + cef.sln | 158 +++++++++++++---------- libcef/browser_impl.cc | 1 + libcef/browser_resource_loader_bridge.cc | 73 ++++++----- libcef/browser_resource_loader_bridge.h | 9 +- libcef/browser_webkit_glue.cc | 24 +--- libcef/browser_webkit_glue.h | 3 + libcef/browser_webkit_init.h | 58 +++++++++ libcef/context.cc | 4 + libcef/context.h | 7 +- libcef/libcef.vcproj | 4 + libcef/libcef_webkit.vsprops | 2 +- libcef/libcef_webkit_includes.vsprops | 2 +- libcef/variant_np_util.cc | 28 ++-- libcef/webwidget_host.cc | 20 +-- libcef_dll/cpptoc/handler_cpptoc.cc | 5 + 16 files changed, 251 insertions(+), 148 deletions(-) create mode 100644 libcef/browser_webkit_init.h diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index cb91eb3c0..397b66802 100644 --- a/CHROMIUM_BUILD_COMPATIBILITY.txt +++ b/CHROMIUM_BUILD_COMPATIBILITY.txt @@ -20,3 +20,4 @@ Date | CEF Revision | Chromium Revision 2009-01-29 | /trunk@10 | /trunk@8875 2009-02-04 | /trunk@14 | /trunk@9172 2009-02-12 | /trunk@15 | /trunk@9652 +2009-03-05 | /trunk@17 | /trunk@10987 diff --git a/cef.sln b/cef.sln index 48b6ed6e4..b48e1ea85 100644 --- a/cef.sln +++ b/cef.sln @@ -4,25 +4,25 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebKit (readonly)", "WebKit EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCore", "..\webkit\build\WebCore\WebCore.vcproj", "{1C16337B-ACF3-4D03-AA90-851C5B5EADA6}" ProjectSection(ProjectDependencies) = postProject - {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} - {1444235E-0E97-4C80-A73E-EE73F3706C32} = {1444235E-0E97-4C80-A73E-EE73F3706C32} - {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} {6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9} = {6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9} + {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} + {1444235E-0E97-4C80-A73E-EE73F3706C32} = {1444235E-0E97-4C80-A73E-EE73F3706C32} + {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Port", "..\webkit\build\port\port.vcproj", "{5597AD47-3494-4750-A235-4F9C2F864700}" ProjectSection(ProjectDependencies) = postProject - {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} + {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Glue", "..\webkit\glue\glue.vcproj", "{C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09}" ProjectSection(ProjectDependencies) = postProject - {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} - {0B469837-3D46-484A-AFB3-C5A6C68730B9} = {0B469837-3D46-484A-AFB3-C5A6C68730B9} - {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} - {60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E} {1444235E-0E97-4C80-A73E-EE73F3706C32} = {1444235E-0E97-4C80-A73E-EE73F3706C32} + {60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E} + {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} + {0B469837-3D46-484A-AFB3-C5A6C68730B9} = {0B469837-3D46-484A-AFB3-C5A6C68730B9} + {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "skia", "..\skia\skia.vcproj", "{CD9CA56E-4E94-444C-87D4-58CA1E6F300D}" @@ -64,42 +64,42 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxslt", "..\third_party\l EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "V8Bindings", "..\webkit\build\V8Bindings\V8Bindings.vcproj", "{625A8F11-2B4E-45B4-BD99-C6D629C606C0}" ProjectSection(ProjectDependencies) = postProject - {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} + {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bzip2", "..\third_party\bzip2\bzip2.vcproj", "{2A70CBF0-847E-4E3A-B926-542A656DC7FE}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef", "libcef\libcef.vcproj", "{FA39524D-3067-4141-888D-28A86C66F2B9}" ProjectSection(ProjectDependencies) = postProject - {2A70CBF0-847E-4E3A-B926-542A656DC7FE} = {2A70CBF0-847E-4E3A-B926-542A656DC7FE} - {49909552-0B0C-4C14-8CF6-DB8A2ADE0934} = {49909552-0B0C-4C14-8CF6-DB8A2ADE0934} - {5597AD47-3494-4750-A235-4F9C2F864700} = {5597AD47-3494-4750-A235-4F9C2F864700} - {5916D37D-8C97-424F-A904-74E52594C2D6} = {5916D37D-8C97-424F-A904-74E52594C2D6} - {625A8F11-2B4E-45B4-BD99-C6D629C606C0} = {625A8F11-2B4E-45B4-BD99-C6D629C606C0} - {7100F41F-868D-4E99-80A2-AF8E6574749D} = {7100F41F-868D-4E99-80A2-AF8E6574749D} - {8423AF0D-4B88-4EBF-94E1-E4D00D00E21C} = {8423AF0D-4B88-4EBF-94E1-E4D00D00E21C} - {8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308} - {A508ADD3-CECE-4E0F-8448-2F5E454DF551} = {A508ADD3-CECE-4E0F-8448-2F5E454DF551} - {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} - {B55CA863-B374-4BAF-95AC-539E4FA4C90C} = {B55CA863-B374-4BAF-95AC-539E4FA4C90C} - {C0334F9A-1168-4101-9DD8-C30FB252D435} = {C0334F9A-1168-4101-9DD8-C30FB252D435} - {C564F145-9172-42C3-BFCB-6014CA97DBCD} = {C564F145-9172-42C3-BFCB-6014CA97DBCD} - {C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09} = {C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09} - {CD9CA56E-4E94-444C-87D4-58CA1E6F300D} = {CD9CA56E-4E94-444C-87D4-58CA1E6F300D} - {EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C} - {F4F4BCAA-EA59-445C-A119-3E6C29647A51} = {F4F4BCAA-EA59-445C-A119-3E6C29647A51} - {F54ABC59-5C00-414A-A9BA-BAF26D1699F0} = {F54ABC59-5C00-414A-A9BA-BAF26D1699F0} - {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} = {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} - {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} - {326E9795-E760-410A-B69A-3F79DB3F5243} = {326E9795-E760-410A-B69A-3F79DB3F5243} - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} - {238CE175-76CE-4A25-A676-69D115885601} = {238CE175-76CE-4A25-A676-69D115885601} - {1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165} - {21E22961-22BF-4493-BD3A-868F93DA5179} = {21E22961-22BF-4493-BD3A-868F93DA5179} - {EC8B7909-62AF-470D-A75D-E1D89C837142} = {EC8B7909-62AF-470D-A75D-E1D89C837142} - {0B469837-3D46-484A-AFB3-C5A6C68730B9} = {0B469837-3D46-484A-AFB3-C5A6C68730B9} {60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E} + {0B469837-3D46-484A-AFB3-C5A6C68730B9} = {0B469837-3D46-484A-AFB3-C5A6C68730B9} + {EC8B7909-62AF-470D-A75D-E1D89C837142} = {EC8B7909-62AF-470D-A75D-E1D89C837142} + {21E22961-22BF-4493-BD3A-868F93DA5179} = {21E22961-22BF-4493-BD3A-868F93DA5179} + {1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165} + {238CE175-76CE-4A25-A676-69D115885601} = {238CE175-76CE-4A25-A676-69D115885601} + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} + {326E9795-E760-410A-B69A-3F79DB3F5243} = {326E9795-E760-410A-B69A-3F79DB3F5243} + {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} + {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} = {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} + {F54ABC59-5C00-414A-A9BA-BAF26D1699F0} = {F54ABC59-5C00-414A-A9BA-BAF26D1699F0} + {F4F4BCAA-EA59-445C-A119-3E6C29647A51} = {F4F4BCAA-EA59-445C-A119-3E6C29647A51} + {EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C} + {CD9CA56E-4E94-444C-87D4-58CA1E6F300D} = {CD9CA56E-4E94-444C-87D4-58CA1E6F300D} + {C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09} = {C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09} + {C564F145-9172-42C3-BFCB-6014CA97DBCD} = {C564F145-9172-42C3-BFCB-6014CA97DBCD} + {C0334F9A-1168-4101-9DD8-C30FB252D435} = {C0334F9A-1168-4101-9DD8-C30FB252D435} + {B55CA863-B374-4BAF-95AC-539E4FA4C90C} = {B55CA863-B374-4BAF-95AC-539E4FA4C90C} + {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} + {A508ADD3-CECE-4E0F-8448-2F5E454DF551} = {A508ADD3-CECE-4E0F-8448-2F5E454DF551} + {8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308} + {8423AF0D-4B88-4EBF-94E1-E4D00D00E21C} = {8423AF0D-4B88-4EBF-94E1-E4D00D00E21C} + {7100F41F-868D-4E99-80A2-AF8E6574749D} = {7100F41F-868D-4E99-80A2-AF8E6574749D} + {625A8F11-2B4E-45B4-BD99-C6D629C606C0} = {625A8F11-2B4E-45B4-BD99-C6D629C606C0} + {5916D37D-8C97-424F-A904-74E52594C2D6} = {5916D37D-8C97-424F-A904-74E52594C2D6} + {5597AD47-3494-4750-A235-4F9C2F864700} = {5597AD47-3494-4750-A235-4F9C2F864700} + {49909552-0B0C-4C14-8CF6-DB8A2ADE0934} = {49909552-0B0C-4C14-8CF6-DB8A2ADE0934} + {2A70CBF0-847E-4E3A-B926-542A656DC7FE} = {2A70CBF0-847E-4E3A-B926-542A656DC7FE} EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "V8", "V8", "{B353A6A5-9551-4B76-908E-0F0A9B31E4CE}" @@ -110,14 +110,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "modp_b64", "..\third_party\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "activex_shim", "..\webkit\activex_shim\activex_shim.vcproj", "{F4F4BCAA-EA59-445C-A119-3E6C29647A51}" ProjectSection(ProjectDependencies) = postProject - {8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308} {EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C} + {8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "..\net\build\net.vcproj", "{326E9795-E760-410A-B69A-3F79DB3F5243}" ProjectSection(ProjectDependencies) = postProject - {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} {E13045CD-7E1F-4A41-9B18-8D288B2E7B41} = {E13045CD-7E1F-4A41-9B18-8D288B2E7B41} + {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base", "..\base\build\base.vcproj", "{1832A374-8A74-4F9E-B536-69A699B3E165}" @@ -138,8 +138,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "V8Bindings_prebuild", "..\w EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "v8_snapshot", "..\v8\tools\visual_studio\v8_snapshot.vcproj", "{C0334F9A-1168-4101-9DD8-C30FB252D435}" ProjectSection(ProjectDependencies) = postProject - {865575D0-37E2-405E-8CBA-5F6C485B5A26} = {865575D0-37E2-405E-8CBA-5F6C485B5A26} {0DDBDA8B-A49F-4CC7-A1D5-5BB8297C8A3F} = {0DDBDA8B-A49F-4CC7-A1D5-5BB8297C8A3F} + {865575D0-37E2-405E-8CBA-5F6C485B5A26} = {865575D0-37E2-405E-8CBA-5F6C485B5A26} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdch", "..\sdch\sdch.vcproj", "{F54ABC59-5C00-414A-A9BA-BAF26D1699F0}" @@ -150,9 +150,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{A507014E EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tld_cleanup", "..\net\build\tld_cleanup.vcproj", "{E13045CD-7E1F-4A41-9B18-8D288B2E7B41}" ProjectSection(ProjectDependencies) = postProject - {EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C} - {8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308} {1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165} + {8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308} + {EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "v8_mksnapshot", "..\v8\tools\visual_studio\v8_mksnapshot.vcproj", "{865575D0-37E2-405E-8CBA-5F6C485B5A26}" @@ -173,8 +173,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "webkit_strings", "..\webkit EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cefclient", "tests\cefclient\cefclient.vcproj", "{6617FED9-C5D4-4907-BF55-A90062A6683F}" ProjectSection(ProjectDependencies) = postProject - {A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9} = {A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9} {C13650D5-CF1A-4259-BE45-B1EBA6280E47} = {C13650D5-CF1A-4259-BE45-B1EBA6280E47} + {A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9} = {A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icudt", "..\third_party\icu38\build\icudt.vcproj", "{A0D94973-D355-47A5-A1E2-3456F321F010}" @@ -192,41 +192,48 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "v8_snapshot_cc", "..\v8\too EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef_dll", "libcef_dll\libcef_dll.vcproj", "{C13650D5-CF1A-4259-BE45-B1EBA6280E47}" ProjectSection(ProjectDependencies) = postProject - {EC8B7909-62AF-470D-A75D-E1D89C837142} = {EC8B7909-62AF-470D-A75D-E1D89C837142} - {8423AF0D-4B88-4EBF-94E1-E4D00D00E21C} = {8423AF0D-4B88-4EBF-94E1-E4D00D00E21C} - {625A8F11-2B4E-45B4-BD99-C6D629C606C0} = {625A8F11-2B4E-45B4-BD99-C6D629C606C0} - {7100F41F-868D-4E99-80A2-AF8E6574749D} = {7100F41F-868D-4E99-80A2-AF8E6574749D} - {0B469837-3D46-484A-AFB3-C5A6C68730B9} = {0B469837-3D46-484A-AFB3-C5A6C68730B9} - {60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E} - {C564F145-9172-42C3-BFCB-6014CA97DBCD} = {C564F145-9172-42C3-BFCB-6014CA97DBCD} - {5597AD47-3494-4750-A235-4F9C2F864700} = {5597AD47-3494-4750-A235-4F9C2F864700} - {FA39524D-3067-4141-888D-28A86C66F2B9} = {FA39524D-3067-4141-888D-28A86C66F2B9} - {F54ABC59-5C00-414A-A9BA-BAF26D1699F0} = {F54ABC59-5C00-414A-A9BA-BAF26D1699F0} - {21E22961-22BF-4493-BD3A-868F93DA5179} = {21E22961-22BF-4493-BD3A-868F93DA5179} - {B55CA863-B374-4BAF-95AC-539E4FA4C90C} = {B55CA863-B374-4BAF-95AC-539E4FA4C90C} - {C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09} = {C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09} - {CD9CA56E-4E94-444C-87D4-58CA1E6F300D} = {CD9CA56E-4E94-444C-87D4-58CA1E6F300D} - {1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165} - {238CE175-76CE-4A25-A676-69D115885601} = {238CE175-76CE-4A25-A676-69D115885601} - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} - {5916D37D-8C97-424F-A904-74E52594C2D6} = {5916D37D-8C97-424F-A904-74E52594C2D6} - {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} - {0DDBDA8B-A49F-4CC7-A1D5-5BB8297C8A3F} = {0DDBDA8B-A49F-4CC7-A1D5-5BB8297C8A3F} - {8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308} - {326E9795-E760-410A-B69A-3F79DB3F5243} = {326E9795-E760-410A-B69A-3F79DB3F5243} - {C0334F9A-1168-4101-9DD8-C30FB252D435} = {C0334F9A-1168-4101-9DD8-C30FB252D435} - {F4F4BCAA-EA59-445C-A119-3E6C29647A51} = {F4F4BCAA-EA59-445C-A119-3E6C29647A51} - {EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C} - {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} - {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} = {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} - {A508ADD3-CECE-4E0F-8448-2F5E454DF551} = {A508ADD3-CECE-4E0F-8448-2F5E454DF551} {2A70CBF0-847E-4E3A-B926-542A656DC7FE} = {2A70CBF0-847E-4E3A-B926-542A656DC7FE} + {A508ADD3-CECE-4E0F-8448-2F5E454DF551} = {A508ADD3-CECE-4E0F-8448-2F5E454DF551} + {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} = {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} + {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} + {EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C} + {F4F4BCAA-EA59-445C-A119-3E6C29647A51} = {F4F4BCAA-EA59-445C-A119-3E6C29647A51} + {C0334F9A-1168-4101-9DD8-C30FB252D435} = {C0334F9A-1168-4101-9DD8-C30FB252D435} + {326E9795-E760-410A-B69A-3F79DB3F5243} = {326E9795-E760-410A-B69A-3F79DB3F5243} + {8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308} + {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} + {5916D37D-8C97-424F-A904-74E52594C2D6} = {5916D37D-8C97-424F-A904-74E52594C2D6} + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} + {238CE175-76CE-4A25-A676-69D115885601} = {238CE175-76CE-4A25-A676-69D115885601} + {1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165} + {CD9CA56E-4E94-444C-87D4-58CA1E6F300D} = {CD9CA56E-4E94-444C-87D4-58CA1E6F300D} + {C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09} = {C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09} + {B55CA863-B374-4BAF-95AC-539E4FA4C90C} = {B55CA863-B374-4BAF-95AC-539E4FA4C90C} + {21E22961-22BF-4493-BD3A-868F93DA5179} = {21E22961-22BF-4493-BD3A-868F93DA5179} + {F54ABC59-5C00-414A-A9BA-BAF26D1699F0} = {F54ABC59-5C00-414A-A9BA-BAF26D1699F0} + {FA39524D-3067-4141-888D-28A86C66F2B9} = {FA39524D-3067-4141-888D-28A86C66F2B9} + {5597AD47-3494-4750-A235-4F9C2F864700} = {5597AD47-3494-4750-A235-4F9C2F864700} + {C564F145-9172-42C3-BFCB-6014CA97DBCD} = {C564F145-9172-42C3-BFCB-6014CA97DBCD} + {60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E} + {0B469837-3D46-484A-AFB3-C5A6C68730B9} = {0B469837-3D46-484A-AFB3-C5A6C68730B9} + {7100F41F-868D-4E99-80A2-AF8E6574749D} = {7100F41F-868D-4E99-80A2-AF8E6574749D} + {625A8F11-2B4E-45B4-BD99-C6D629C606C0} = {625A8F11-2B4E-45B4-BD99-C6D629C606C0} + {8423AF0D-4B88-4EBF-94E1-E4D00D00E21C} = {8423AF0D-4B88-4EBF-94E1-E4D00D00E21C} + {EC8B7909-62AF-470D-A75D-E1D89C837142} = {EC8B7909-62AF-470D-A75D-E1D89C837142} + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65} = {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef_dll_wrapper", "libcef_dll\wrapper\libcef_dll_wrapper.vcproj", "{A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9}" ProjectSection(ProjectDependencies) = postProject - {1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165} {C13650D5-CF1A-4259-BE45-B1EBA6280E47} = {C13650D5-CF1A-4259-BE45-B1EBA6280E47} + {1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit", "..\webkit\build\WebKit\WebKit.vcproj", "{5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}" + ProjectSection(ProjectDependencies) = postProject + {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} + {1444235E-0E97-4C80-A73E-EE73F3706C32} = {1444235E-0E97-4C80-A73E-EE73F3706C32} + {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} EndProjectSection EndProject Global @@ -564,6 +571,14 @@ Global {A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9}.Release|Mixed Platforms.Build.0 = Release|Win32 {A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9}.Release|Win32.ActiveCfg = Release|Win32 {A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9}.Release|Win32.Build.0 = Release|Win32 + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}.Debug|Win32.ActiveCfg = Debug|Win32 + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}.Debug|Win32.Build.0 = Debug|Win32 + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}.Release|Mixed Platforms.Build.0 = Release|Win32 + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}.Release|Win32.ActiveCfg = Release|Win32 + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -573,6 +588,7 @@ Global {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {1088577A-0C49-4DE0-85CD-B68AD0BE55AA} {49909552-0B0C-4C14-8CF6-DB8A2ADE0934} = {1088577A-0C49-4DE0-85CD-B68AD0BE55AA} {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {1088577A-0C49-4DE0-85CD-B68AD0BE55AA} + {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65} = {1088577A-0C49-4DE0-85CD-B68AD0BE55AA} {C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09} = {CB43561E-A6F8-49E2-96A2-3F2BA1FFF21E} {5597AD47-3494-4750-A235-4F9C2F864700} = {CB43561E-A6F8-49E2-96A2-3F2BA1FFF21E} {625A8F11-2B4E-45B4-BD99-C6D629C606C0} = {CB43561E-A6F8-49E2-96A2-3F2BA1FFF21E} diff --git a/libcef/browser_impl.cc b/libcef/browser_impl.cc index 104f9aee9..3b5a6185f 100644 --- a/libcef/browser_impl.cc +++ b/libcef/browser_impl.cc @@ -167,6 +167,7 @@ void CefBrowserImpl::ExecuteJavaScript(const std::wstring& jsCode, bool CefBrowserImpl::AddJSHandler(const std::wstring& classname, CefRefPtr handler) { + DCHECK(handler.get()); bool rv = false; Lock(); diff --git a/libcef/browser_resource_loader_bridge.cc b/libcef/browser_resource_loader_bridge.cc index afb98afc5..1e05d74bb 100644 --- a/libcef/browser_resource_loader_bridge.cc +++ b/libcef/browser_resource_loader_bridge.cc @@ -46,6 +46,7 @@ #include "net/base/io_buffer.h" #include "net/base/net_util.h" #include "net/base/upload_data.h" +#include "net/http/http_response_headers.h" #include "net/proxy/proxy_service.h" #include "net/url_request/url_request.h" #include "webkit/glue/resource_loader_bridge.h" @@ -601,36 +602,6 @@ ResourceLoaderBridge* ResourceLoaderBridge::Create( method, url, policy_url, referrer, headers, load_flags); } -void SetCookie(const GURL& url, const GURL& policy_url, - const std::string& cookie) { - // Proxy to IO thread to synchronize w/ network loading. - - if (!EnsureIOThread()) { - NOTREACHED(); - return; - } - - scoped_refptr cookie_setter = new CookieSetter(); - io_thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( - cookie_setter.get(), &CookieSetter::Set, url, cookie)); -} - -std::string GetCookies(const GURL& url, const GURL& policy_url) { - // Proxy to IO thread to synchronize w/ network loading - - if (!EnsureIOThread()) { - NOTREACHED(); - return std::string(); - } - - scoped_refptr getter = new CookieGetter(); - - io_thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( - getter.get(), &CookieGetter::Get, url)); - - return getter->GetResult(); -} - // Issue the proxy resolve request on the io thread, and wait // for the result. bool FindProxyForUrl(const GURL& url, std::string* proxy_list) { @@ -643,12 +614,21 @@ bool FindProxyForUrl(const GURL& url, std::string* proxy_list) { net::ProxyInfo proxy_info; int rv = sync_proxy_service->ResolveProxy(url, &proxy_info); if (rv == net::OK) { - *proxy_list = proxy_info.GetAnnotatedProxyList(); + *proxy_list = proxy_info.ToPacString(); } return rv == net::OK; } +void SetCookie(const GURL& url, const GURL& policy_url, + const std::string& cookie) { + BrowserResourceLoaderBridge::SetCookie(url, policy_url, cookie); +} + +std::string GetCookies(const GURL& url, const GURL& policy_url) { + return BrowserResourceLoaderBridge::GetCookies(url, policy_url); +} + } // namespace webkit_glue //----------------------------------------------------------------------------- @@ -676,3 +656,34 @@ void BrowserResourceLoaderBridge::Shutdown() { DCHECK(!request_context) << "should have been nulled by thread dtor"; } } + +void BrowserResourceLoaderBridge::SetCookie( + const GURL& url, const GURL& policy_url, const std::string& cookie) { + // Proxy to IO thread to synchronize w/ network loading. + + if (!EnsureIOThread()) { + NOTREACHED(); + return; + } + + scoped_refptr cookie_setter = new CookieSetter(); + io_thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( + cookie_setter.get(), &CookieSetter::Set, url, cookie)); +} + +std::string BrowserResourceLoaderBridge::GetCookies( + const GURL& url, const GURL& policy_url) { + // Proxy to IO thread to synchronize w/ network loading + + if (!EnsureIOThread()) { + NOTREACHED(); + return std::string(); + } + + scoped_refptr getter = new CookieGetter(); + + io_thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( + getter.get(), &CookieGetter::Get, url)); + + return getter->GetResult(); +} diff --git a/libcef/browser_resource_loader_bridge.h b/libcef/browser_resource_loader_bridge.h index 71d90c217..8665db3b3 100644 --- a/libcef/browser_resource_loader_bridge.h +++ b/libcef/browser_resource_loader_bridge.h @@ -6,8 +6,9 @@ #ifndef _BROWSER_RESOURCE_LOADER_BRIDGE_H #define _BROWSER_RESOURCE_LOADER_BRIDGE_H -#include "base/ref_counted.h" +#include +class GURL; class URLRequestContext; class BrowserResourceLoaderBridge { @@ -26,6 +27,12 @@ class BrowserResourceLoaderBridge { // Call this function to shutdown the simple resource loader bridge. static void Shutdown(); + + // May only be called after Init. + static void SetCookie( + const GURL& url, const GURL& policy_url, const std::string& cookie); + static std::string GetCookies( + const GURL& url, const GURL& policy_url); }; #endif // _BROWSER_RESOURCE_LOADER_BRIDGE_H diff --git a/libcef/browser_webkit_glue.cc b/libcef/browser_webkit_glue.cc index fe36b160a..506eafa2f 100644 --- a/libcef/browser_webkit_glue.cc +++ b/libcef/browser_webkit_glue.cc @@ -12,6 +12,7 @@ #include "webkit_version.h" MSVC_PUSH_WARNING_LEVEL(0); #include "Markup.h" +#include "TextEncoding.h" #include "webkit/glue/webframe_impl.h" MSVC_POP_WARNING(); @@ -22,11 +23,12 @@ MSVC_POP_WARNING(); #include "base/win_util.h" #include "net/base/mime_util.h" #include "webkit/glue/glue_util.h" +#include "webkit/glue/screen_info.h" #include "webkit/glue/webframe.h" #include "webkit/glue/webkit_glue.h" // Generated by GRIT -#include "webkit_resources.h" +#include "grit/webkit_resources.h" namespace webkit_glue { @@ -34,28 +36,12 @@ bool IsMediaPlayerAvailable() { return true; } -void PrefetchDns(const std::string& hostname) {} - void PrecacheUrl(const char16* url, int url_length) {} void AppendToLog(const char* file, int line, const char* msg) { logging::LogMessage(file, line).stream() << msg; } -bool GetMimeTypeFromExtension(const std::wstring &ext, std::string *mime_type) { - return net::GetMimeTypeFromExtension(ext, mime_type); -} - -bool GetMimeTypeFromFile(const std::wstring &file_path, - std::string *mime_type) { - return net::GetMimeTypeFromFile(file_path, mime_type); -} - -bool GetPreferredExtensionForMimeType(const std::string& mime_type, - std::wstring* ext) { - return net::GetPreferredExtensionForMimeType(mime_type, ext); -} - std::string GetDataResource(int resource_id) { if (resource_id == IDR_BROKENIMAGE) { // Use webkit's broken image icon (16x16) @@ -176,4 +162,8 @@ ScreenInfo GetScreenInfo(gfx::NativeViewId window) { return GetScreenInfoHelper(gfx::NativeViewFromId(window)); } +void InitializeTextEncoding() { + WebCore::UTF8Encoding(); +} + } // namespace webkit_glue diff --git a/libcef/browser_webkit_glue.h b/libcef/browser_webkit_glue.h index 5a2254f2c..c377ff88e 100644 --- a/libcef/browser_webkit_glue.h +++ b/libcef/browser_webkit_glue.h @@ -21,4 +21,7 @@ void CaptureWebViewBitmap(HWND mainWnd, WebView* webview, HBITMAP& bitmap, BOOL SaveBitmapToFile(HBITMAP hBmp, HDC hDC, LPCTSTR file, LPBYTE lpBits); #endif +// Text encoding objects must be initialized on the main thread. +void InitializeTextEncoding(); + } // namespace webkit_glue diff --git a/libcef/browser_webkit_init.h b/libcef/browser_webkit_init.h new file mode 100644 index 000000000..264eb522e --- /dev/null +++ b/libcef/browser_webkit_init.h @@ -0,0 +1,58 @@ +// Copyright (c) 2009 The Chromium Embedded Framework Authors. +// Portions copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef _BROWSER_WEBKIT_INIT_H +#define _BROWSER_WEBKIT_INIT_H + +#include "base/string_util.h" +#include "webkit/glue/simple_webmimeregistry_impl.h" +#include "webkit/glue/webkit_glue.h" +#include "webkit/glue/webkitclient_impl.h" +#include "browser_resource_loader_bridge.h" + +#include "WebKit.h" +#include "WebString.h" +#include "WebURL.h" + +class BrowserWebKitInit : public webkit_glue::WebKitClientImpl { + public: + BrowserWebKitInit() { + WebKit::initialize(this); + WebKit::setLayoutTestMode(false); + WebKit::registerURLSchemeAsLocal( + ASCIIToUTF16(webkit_glue::GetUIResourceProtocol())); + } + + ~BrowserWebKitInit() { + WebKit::shutdown(); + } + + virtual WebKit::WebMimeRegistry* mimeRegistry() { + return &mime_registry_; + } + + virtual void setCookies( + const WebKit::WebURL& url, const WebKit::WebURL& policy_url, + const WebKit::WebString& value) { + BrowserResourceLoaderBridge::SetCookie(url, policy_url, UTF16ToUTF8(value)); + } + + virtual WebKit::WebString cookies( + const WebKit::WebURL& url, const WebKit::WebURL& policy_url) { + return UTF8ToUTF16(BrowserResourceLoaderBridge::GetCookies(url, policy_url)); + } + + virtual void prefetchHostName(const WebKit::WebString&) { + } + + virtual WebKit::WebString defaultLocale() { + return ASCIIToUTF16("en-US"); + } + + private: + webkit_glue::SimpleWebMimeRegistryImpl mime_registry_; +}; + +#endif // _BROWSER_WEBKIT_INIT_H diff --git a/libcef/context.cc b/libcef/context.cc index dd2e5046a..3cd8d9903 100644 --- a/libcef/context.cc +++ b/libcef/context.cc @@ -8,6 +8,7 @@ #include "browser_impl.h" #include "browser_resource_loader_bridge.h" #include "browser_request_context.h" +#include "browser_webkit_glue.h" #include "../include/cef_nplugin.h" #include "base/command_line.h" @@ -298,6 +299,9 @@ bool CefContext::Initialize(bool multi_threaded_message_loop) }; RegisterClassEx(&wcex); + // Initialize WebKit encodings + webkit_glue::InitializeTextEncoding(); + // Initialize web preferences webprefs_ = new WebPreferences; *webprefs_ = WebPreferences(); diff --git a/libcef/context.h b/libcef/context.h index cf1f30ac4..6a9dc6a98 100644 --- a/libcef/context.h +++ b/libcef/context.h @@ -10,7 +10,8 @@ #include "base/at_exit.h" #include "base/message_loop.h" #include "base/gfx/native_widget_types.h" -#include "webkit/glue/webpreferences.h" +#include "webkit/glue/webpreferences.h" +#include "browser_webkit_init.h" class CefBrowserImpl; @@ -68,8 +69,10 @@ protected: WebPreferences* webprefs_; StatsTable* statstable_; - // Instantiate the AtExitManager to avoid asserts and possible memory leaks. + // Initialize the AtExitManager to avoid asserts and possible memory leaks. base::AtExitManager at_exit_manager_; + // Initialize WebKit for this scope. + BrowserWebKitInit webkit_init_; friend DWORD WINAPI ThreadHandlerUI(LPVOID lpParam); }; diff --git a/libcef/libcef.vcproj b/libcef/libcef.vcproj index 67b968f1a..0cc2c40af 100644 --- a/libcef/libcef.vcproj +++ b/libcef/libcef.vcproj @@ -299,6 +299,10 @@ RelativePath=".\browser_webkit_glue_win.cc" > + + diff --git a/libcef/libcef_webkit.vsprops b/libcef/libcef_webkit.vsprops index 0ce62e95b..398c4db9d 100644 --- a/libcef/libcef_webkit.vsprops +++ b/libcef/libcef_webkit.vsprops @@ -3,6 +3,6 @@ ProjectType="Visual C++" Version="8.00" Name="webkit_common" - InheritedPropertySheets=".\libcef_webkit_includes.vsprops;$(SolutionDir)..\webkit\build\webkit_common_defines.vsprops;$(SolutionDir)..\webkit\build\js_engine$(JS_ENGINE_TYPE).vsprops;$(SolutionDir)..\third_party\npapi\using_npapi.vsprops;$(SolutionDir)..\skia\using_skia.vsprops;$(SolutionDir)..\build\external_code.vsprops;$(SolutionDir)..\third_party\icu38\build\using_icu.vsprops" + InheritedPropertySheets=".\libcef_webkit_includes.vsprops;$(SolutionDir)..\webkit\build\webkit_common_defines.vsprops;$(SolutionDir)..\webkit\build\js_engine$(JS_ENGINE_TYPE).vsprops;$(SolutionDir)..\third_party\npapi\using_npapi.vsprops;$(SolutionDir)..\skia\using_skia.vsprops;$(SolutionDir)..\build\external_code.vsprops;$(SolutionDir)..\third_party\icu38\build\using_icu.vsprops;$(SolutionDir)..\webkit\build\webkit\using_WebKit.vsprops" > diff --git a/libcef/libcef_webkit_includes.vsprops b/libcef/libcef_webkit_includes.vsprops index a80683bd7..14097455d 100644 --- a/libcef/libcef_webkit_includes.vsprops +++ b/libcef/libcef_webkit_includes.vsprops @@ -6,6 +6,6 @@ > diff --git a/libcef/variant_np_util.cc b/libcef/variant_np_util.cc index 2d02cb59d..b5913e5e8 100644 --- a/libcef/variant_np_util.cc +++ b/libcef/variant_np_util.cc @@ -79,10 +79,10 @@ bool _NPN_ArrayObjectToStringVector(NPObject* npobject, return false; V8NPObject *object = reinterpret_cast(npobject); - if (!object->v8_object->IsArray()) + if (!object->v8Object->IsArray()) return false; - v8::Handle array = v8::Handle::Cast(object->v8_object); + v8::Handle array = v8::Handle::Cast(object->v8Object); for (uint32_t i = 0; i < array->Length(); i++) { v8::Local value = array->Get(v8::Integer::New(i)); v8::Local sval = value->ToString(); @@ -102,10 +102,10 @@ bool _NPN_ArrayObjectToWStringVector(NPObject* npobject, return false; V8NPObject *object = reinterpret_cast(npobject); - if (!object->v8_object->IsArray()) + if (!object->v8Object->IsArray()) return false; - v8::Handle array = v8::Handle::Cast(object->v8_object); + v8::Handle array = v8::Handle::Cast(object->v8Object); for (uint32_t i = 0; i < array->Length(); i++) { v8::Local value = array->Get(v8::Integer::New(i)); v8::Local sval = value->ToString(); @@ -125,10 +125,10 @@ bool _NPN_ArrayObjectToIntVector(NPObject* npobject, return false; V8NPObject *object = reinterpret_cast(npobject); - if (!object->v8_object->IsArray()) + if (!object->v8Object->IsArray()) return false; - v8::Handle array = v8::Handle::Cast(object->v8_object); + v8::Handle array = v8::Handle::Cast(object->v8Object); for (uint32_t i = 0; i < array->Length(); i++) { v8::Local value = array->Get(v8::Integer::New(i)); v8::Local ival = value->ToInt32(); @@ -144,10 +144,10 @@ bool _NPN_ArrayObjectToDoubleVector(NPObject* npobject, return false; V8NPObject *object = reinterpret_cast(npobject); - if (!object->v8_object->IsArray()) + if (!object->v8Object->IsArray()) return false; - v8::Handle array = v8::Handle::Cast(object->v8_object); + v8::Handle array = v8::Handle::Cast(object->v8Object); for (uint32_t i = 0; i < array->Length(); i++) { v8::Local value = array->Get(v8::Integer::New(i)); v8::Local dval = value->ToNumber(); @@ -163,10 +163,10 @@ bool _NPN_ArrayObjectToBooleanVector(NPObject* npobject, return false; V8NPObject *object = reinterpret_cast(npobject); - if (!object->v8_object->IsArray()) + if (!object->v8Object->IsArray()) return false; - v8::Handle array = v8::Handle::Cast(object->v8_object); + v8::Handle array = v8::Handle::Cast(object->v8Object); for (uint32_t i = 0; i < array->Length(); i++) { v8::Local value = array->Get(v8::Integer::New(i)); v8::Local bval = value->ToBoolean(); @@ -182,10 +182,10 @@ int _NPN_ArrayObjectGetVectorSize(NPObject* npobject) return -1; V8NPObject *object = reinterpret_cast(npobject); - if (!object->v8_object->IsArray()) + if (!object->v8Object->IsArray()) return -1; - v8::Handle array = v8::Handle::Cast(object->v8_object); + v8::Handle array = v8::Handle::Cast(object->v8Object); return array->Length(); } @@ -196,10 +196,10 @@ bool _NPN_ArrayObjectToVectorTypeHint(NPObject* npobject, return false; V8NPObject *object = reinterpret_cast(npobject); - if (!object->v8_object->IsArray()) + if (!object->v8Object->IsArray()) return false; - v8::Handle array = v8::Handle::Cast(object->v8_object); + v8::Handle array = v8::Handle::Cast(object->v8Object); if (array->Length() == 0) return false; diff --git a/libcef/webwidget_host.cc b/libcef/webwidget_host.cc index 90ec9e189..c01bae27f 100644 --- a/libcef/webwidget_host.cc +++ b/libcef/webwidget_host.cc @@ -144,7 +144,11 @@ void WebWidgetHost::DidInvalidateRect(const gfx::Rect& damaged_rect) { } void WebWidgetHost::DidScrollRect(int dx, int dy, const gfx::Rect& clip_rect) { - DCHECK(dx || dy); + if (dx != 0 && dy != 0) { + // We only support uni-directional scroll + DidScrollRect(0, dy, clip_rect); + dy = 0; + } // If we already have a pending scroll operation or if this scroll operation // intersects the existing paint region, then just failover to invalidating. @@ -188,7 +192,6 @@ WebWidgetHost::~WebWidgetHost() { TrackMouseLeave(false); webwidget_->Close(); - webwidget_->Release(); } bool WebWidgetHost::WndProc(UINT message, WPARAM wparam, LPARAM lparam) { @@ -282,6 +285,11 @@ void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) { break; case WebInputEvent::MOUSE_DOWN: SetCapture(view_); + // This mimics a temporary workaround in RenderWidgetHostViewWin + // for bug 765011 to get focus when the mouse is clicked. This + // happens after the mouse down event is sent to the renderer + // because normally Windows does a WM_SETFOCUS after WM_LBUTTONDOWN. + ::SetFocus(view_); break; case WebInputEvent::MOUSE_UP: if (GetCapture() == view_) @@ -289,14 +297,6 @@ void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) { break; } webwidget_->HandleInputEvent(&event); - - if (event.type == WebInputEvent::MOUSE_DOWN) { - // This mimics a temporary workaround in RenderWidgetHostViewWin - // for bug 765011 to get focus when the mouse is clicked. This - // happens after the mouse down event is sent to the renderer - // because normally Windows does a WM_SETFOCUS after WM_LBUTTONDOWN. - ::SetFocus(view_); - } } void WebWidgetHost::WheelEvent(WPARAM wparam, LPARAM lparam) { diff --git a/libcef_dll/cpptoc/handler_cpptoc.cc b/libcef_dll/cpptoc/handler_cpptoc.cc index 408da86bf..9fb6c0cce 100644 --- a/libcef_dll/cpptoc/handler_cpptoc.cc +++ b/libcef_dll/cpptoc/handler_cpptoc.cc @@ -63,6 +63,11 @@ enum cef_retval_t CEF_CALLBACK handler_handle_before_created( // WindowInfo may or may not have changed. *windowInfo = wndInfo; +#ifdef WIN32 + // The m_windowName must be duplicated since it's a cef_string_t + if(windowInfo->m_windowName) + windowInfo->m_windowName = cef_string_alloc(windowInfo->m_windowName); +#endif return rv; }