libcef: Update due to underlying chromium changes.

- Add WebKit-based printing support.
- Add re-sizable text area support.
- In release build, only log error messages and above.
- Modify cef.sln to point at new file locations for dynamically generated project files.
- More webkit_glue and webkit_init reorganization.
- Movement towards using Web* basic types.
- Include WebKit headers using the full path.
- Add app cache support in ResourceLoaderBridge.
- Method/member changes in WebViewDelegate.
- Simplify code in PrintSettings.
- Remove the WM_DESTROY and WM_NCDESTROY cases in WebWidgetHost::WndProc() to avoid a crash when closing a browser window via a DestroyWindow() call on a parent window.

libcef_dll:
- Add webkit_resources.rc and webkit_strings_en-US.rc to the project in order to support localized strings.

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@23 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2009-04-28 00:29:14 +00:00
parent 3f5a01e969
commit 52196814b2
25 changed files with 538 additions and 501 deletions

View File

@ -29,3 +29,4 @@ Date | CEF Revision | Chromium Revision
2009-03-05 | /trunk@17 | /trunk@10987 2009-03-05 | /trunk@17 | /trunk@10987
2009-03-09 | /trunk@21 | /trunk@11252 2009-03-09 | /trunk@21 | /trunk@11252
2009-03-24 | /trunk@22 | /trunk@11768 2009-03-24 | /trunk@22 | /trunk@11768
2009-04-27 | /trunk@23 | /trunk@14651

162
cef.sln
View File

@ -4,25 +4,25 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebKit (readonly)", "WebKit
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCore", "..\webkit\build\WebCore\WebCore.vcproj", "{1C16337B-ACF3-4D03-AA90-851C5B5EADA6}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCore", "..\webkit\build\WebCore\WebCore.vcproj", "{1C16337B-ACF3-4D03-AA90-851C5B5EADA6}"
ProjectSection(ProjectDependencies) = postProject 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} {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 EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Port", "..\webkit\build\port\port.vcproj", "{5597AD47-3494-4750-A235-4F9C2F864700}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Port", "..\webkit\build\port\port.vcproj", "{5597AD47-3494-4750-A235-4F9C2F864700}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203}
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Glue", "..\webkit\glue\glue.vcproj", "{C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Glue", "..\webkit\glue\glue.vcproj", "{C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09}"
ProjectSection(ProjectDependencies) = postProject 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} {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 EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "skia", "..\skia\skia.vcproj", "{CD9CA56E-4E94-444C-87D4-58CA1E6F300D}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "skia", "..\skia\skia.vcproj", "{CD9CA56E-4E94-444C-87D4-58CA1E6F300D}"
@ -55,52 +55,52 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Breakpad", "Breakpad", "{87
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "breakpad_handler", "..\breakpad\breakpad_handler.vcproj", "{B55CA863-B374-4BAF-95AC-539E4FA4C90C}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "breakpad_handler", "..\breakpad\breakpad_handler.vcproj", "{B55CA863-B374-4BAF-95AC-539E4FA4C90C}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml", "..\third_party\libxml\build\libxml.vcproj", "{F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml", "..\third_party\libxml\libxml.vcproj", "{F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxslt", "..\third_party\libxslt\build\libxslt.vcproj", "{FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxslt", "..\third_party\libxslt\libxslt.vcproj", "{FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7} = {F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7} {F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7} = {F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "V8Bindings", "..\webkit\build\V8Bindings\V8Bindings.vcproj", "{625A8F11-2B4E-45B4-BD99-C6D629C606C0}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "V8Bindings", "..\webkit\build\V8Bindings\V8Bindings.vcproj", "{625A8F11-2B4E-45B4-BD99-C6D629C606C0}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203}
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bzip2", "..\third_party\bzip2\bzip2.vcproj", "{2A70CBF0-847E-4E3A-B926-542A656DC7FE}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bzip2", "..\third_party\bzip2\bzip2.vcproj", "{2A70CBF0-847E-4E3A-B926-542A656DC7FE}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef", "libcef\libcef.vcproj", "{FA39524D-3067-4141-888D-28A86C66F2B9}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef", "libcef\libcef.vcproj", "{FA39524D-3067-4141-888D-28A86C66F2B9}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E}
{5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65} = {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}
{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} {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}
{5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65} = {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}
{60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "V8", "V8", "{B353A6A5-9551-4B76-908E-0F0A9B31E4CE}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "V8", "V8", "{B353A6A5-9551-4B76-908E-0F0A9B31E4CE}"
@ -111,22 +111,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "modp_b64", "..\third_party\
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "activex_shim", "..\webkit\activex_shim\activex_shim.vcproj", "{F4F4BCAA-EA59-445C-A119-3E6C29647A51}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "activex_shim", "..\webkit\activex_shim\activex_shim.vcproj", "{F4F4BCAA-EA59-445C-A119-3E6C29647A51}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308}
{EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C} {EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C}
{8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "..\net\build\net.vcproj", "{326E9795-E760-410A-B69A-3F79DB3F5243}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "..\net\net.vcproj", "{326E9795-E760-410A-B69A-3F79DB3F5243}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
{E13045CD-7E1F-4A41-9B18-8D288B2E7B41} = {E13045CD-7E1F-4A41-9B18-8D288B2E7B41} {E13045CD-7E1F-4A41-9B18-8D288B2E7B41} = {E13045CD-7E1F-4A41-9B18-8D288B2E7B41}
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base", "..\base\build\base.vcproj", "{1832A374-8A74-4F9E-B536-69A699B3E165}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base", "..\base\base.vcproj", "{1832A374-8A74-4F9E-B536-69A699B3E165}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308} {8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base_gfx", "..\base\build\base_gfx.vcproj", "{A508ADD3-CECE-4E0F-8448-2F5E454DF551}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base_gfx", "..\base\base_gfx.vcproj", "{A508ADD3-CECE-4E0F-8448-2F5E454DF551}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "default_plugin", "..\webkit\default_plugin\default_plugin.vcproj", "{5916D37D-8C97-424F-A904-74E52594C2D6}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "default_plugin", "..\webkit\default_plugin\default_plugin.vcproj", "{5916D37D-8C97-424F-A904-74E52594C2D6}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
@ -139,8 +139,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "V8Bindings_prebuild", "..\w
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "v8_snapshot", "..\v8\tools\visual_studio\v8_snapshot.vcproj", "{C0334F9A-1168-4101-9DD8-C30FB252D435}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "v8_snapshot", "..\v8\tools\visual_studio\v8_snapshot.vcproj", "{C0334F9A-1168-4101-9DD8-C30FB252D435}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{865575D0-37E2-405E-8CBA-5F6C485B5A26} = {865575D0-37E2-405E-8CBA-5F6C485B5A26}
{0DDBDA8B-A49F-4CC7-A1D5-5BB8297C8A3F} = {0DDBDA8B-A49F-4CC7-A1D5-5BB8297C8A3F} {0DDBDA8B-A49F-4CC7-A1D5-5BB8297C8A3F} = {0DDBDA8B-A49F-4CC7-A1D5-5BB8297C8A3F}
{865575D0-37E2-405E-8CBA-5F6C485B5A26} = {865575D0-37E2-405E-8CBA-5F6C485B5A26}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdch", "..\sdch\sdch.vcproj", "{F54ABC59-5C00-414A-A9BA-BAF26D1699F0}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdch", "..\sdch\sdch.vcproj", "{F54ABC59-5C00-414A-A9BA-BAF26D1699F0}"
@ -149,11 +149,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Cef", "Cef", "{08BAF606-555
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{A507014E-5F1D-4A60-963B-518FCED4B8AD}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{A507014E-5F1D-4A60-963B-518FCED4B8AD}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tld_cleanup", "..\net\build\tld_cleanup.vcproj", "{E13045CD-7E1F-4A41-9B18-8D288B2E7B41}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tld_cleanup", "..\net\tld_cleanup.vcproj", "{E13045CD-7E1F-4A41-9B18-8D288B2E7B41}"
ProjectSection(ProjectDependencies) = postProject 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} {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 EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "v8_mksnapshot", "..\v8\tools\visual_studio\v8_mksnapshot.vcproj", "{865575D0-37E2-405E-8CBA-5F6C485B5A26}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "v8_mksnapshot", "..\v8\tools\visual_studio\v8_mksnapshot.vcproj", "{865575D0-37E2-405E-8CBA-5F6C485B5A26}"
@ -174,13 +174,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "webkit_strings", "..\webkit
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cefclient", "tests\cefclient\cefclient.vcproj", "{6617FED9-C5D4-4907-BF55-A90062A6683F}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cefclient", "tests\cefclient\cefclient.vcproj", "{6617FED9-C5D4-4907-BF55-A90062A6683F}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9} = {A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9}
{C13650D5-CF1A-4259-BE45-B1EBA6280E47} = {C13650D5-CF1A-4259-BE45-B1EBA6280E47} {C13650D5-CF1A-4259-BE45-B1EBA6280E47} = {C13650D5-CF1A-4259-BE45-B1EBA6280E47}
{A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9} = {A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icudt", "..\third_party\icu38\build\icudt.vcproj", "{A0D94973-D355-47A5-A1E2-3456F321F010}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icudt", "..\third_party\icu38\build\icudt.vcproj", "{A0D94973-D355-47A5-A1E2-3456F321F010}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net_resources", "..\net\build\net_resources.vcproj", "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net_resources", "..\net\net_resources.vcproj", "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "webkit_resources", "..\webkit\build\webkit_resources\webkit_resources.vcproj", "{0B469837-3D46-484A-AFB3-C5A6C68730B9}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "webkit_resources", "..\webkit\build\webkit_resources\webkit_resources.vcproj", "{0B469837-3D46-484A-AFB3-C5A6C68730B9}"
EndProject EndProject
@ -193,48 +193,48 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "v8_snapshot_cc", "..\v8\too
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef_dll", "libcef_dll\libcef_dll.vcproj", "{C13650D5-CF1A-4259-BE45-B1EBA6280E47}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef_dll", "libcef_dll\libcef_dll.vcproj", "{C13650D5-CF1A-4259-BE45-B1EBA6280E47}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65} = {5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}
{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}
{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} {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 EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef_dll_wrapper", "libcef_dll\wrapper\libcef_dll_wrapper.vcproj", "{A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef_dll_wrapper", "libcef_dll\wrapper\libcef_dll_wrapper.vcproj", "{A9D6DC71-C0DC-4549-AEA0-3B15B44E86A9}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165}
{C13650D5-CF1A-4259-BE45-B1EBA6280E47} = {C13650D5-CF1A-4259-BE45-B1EBA6280E47} {C13650D5-CF1A-4259-BE45-B1EBA6280E47} = {C13650D5-CF1A-4259-BE45-B1EBA6280E47}
{1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit", "..\webkit\build\WebKit\WebKit.vcproj", "{5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit", "..\webkit\build\WebKit\WebKit.vcproj", "{5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{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} {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 EndProjectSection
EndProject EndProject
Global Global

View File

@ -8,8 +8,12 @@
#include <atltypes.h> #include <atltypes.h>
#include "third_party/WebKit/WebKit/chromium/public/WebPoint.h"
#include "webkit/glue/webview.h" #include "webkit/glue/webview.h"
using WebKit::WebPoint;
namespace { namespace {
void GetCursorPositions(HWND hwnd, CPoint* client, CPoint* screen) { void GetCursorPositions(HWND hwnd, CPoint* client, CPoint* screen) {
@ -32,12 +36,14 @@ void BrowserDragDelegate::OnDragSourceDrop() {
CPoint client; CPoint client;
CPoint screen; CPoint screen;
GetCursorPositions(source_hwnd_, &client, &screen); GetCursorPositions(source_hwnd_, &client, &screen);
webview_->DragSourceEndedAt(client.x, client.y, screen.x, screen.y); webview_->DragSourceEndedAt(WebPoint(client.x, client.y),
WebPoint(screen.x, screen.y));
} }
void BrowserDragDelegate::OnDragSourceMove() { void BrowserDragDelegate::OnDragSourceMove() {
CPoint client; CPoint client;
CPoint screen; CPoint screen;
GetCursorPositions(source_hwnd_, &client, &screen); GetCursorPositions(source_hwnd_, &client, &screen);
webview_->DragSourceMovedTo(client.x, client.y, screen.x, screen.y); webview_->DragSourceMovedTo(WebPoint(client.x, client.y),
WebPoint(screen.x, screen.y));
} }

View File

@ -6,10 +6,15 @@
#include "precompiled_libcef.h" #include "precompiled_libcef.h"
#include "browser_drop_delegate.h" #include "browser_drop_delegate.h"
#include "third_party/WebKit/WebKit/chromium/public/WebDragData.h"
#include "third_party/WebKit/WebKit/chromium/public/WebPoint.h"
#include "webkit/glue/webdropdata.h" #include "webkit/glue/webdropdata.h"
#include "webkit/glue/webview.h" #include "webkit/glue/webview.h"
using WebKit::WebPoint;
// BaseDropTarget methods ---------------------------------------------------- // BaseDropTarget methods ----------------------------------------------------
DWORD BrowserDropDelegate::OnDragEnter(IDataObject* data_object, DWORD BrowserDropDelegate::OnDragEnter(IDataObject* data_object,
DWORD key_state, DWORD key_state,
POINT cursor_position, POINT cursor_position,
@ -19,8 +24,10 @@ DWORD BrowserDropDelegate::OnDragEnter(IDataObject* data_object,
POINT client_pt = cursor_position; POINT client_pt = cursor_position;
ScreenToClient(GetHWND(), &client_pt); ScreenToClient(GetHWND(), &client_pt);
bool valid = webview_->DragTargetDragEnter(drop_data, client_pt.x, bool valid = webview_->DragTargetDragEnter(
client_pt.y, cursor_position.x, cursor_position.y); drop_data.ToDragData(), drop_data.identity,
WebPoint(client_pt.x, client_pt.y),
WebPoint(cursor_position.x, cursor_position.y));
return valid ? DROPEFFECT_COPY : DROPEFFECT_NONE; return valid ? DROPEFFECT_COPY : DROPEFFECT_NONE;
} }
@ -30,8 +37,9 @@ DWORD BrowserDropDelegate::OnDragOver(IDataObject* data_object,
DWORD effect) { DWORD effect) {
POINT client_pt = cursor_position; POINT client_pt = cursor_position;
ScreenToClient(GetHWND(), &client_pt); ScreenToClient(GetHWND(), &client_pt);
bool valid = webview_->DragTargetDragOver(client_pt.x, bool valid = webview_->DragTargetDragOver(
client_pt.y, cursor_position.x, cursor_position.y); WebPoint(client_pt.x, client_pt.y),
WebPoint(cursor_position.x, cursor_position.y));
return valid ? DROPEFFECT_COPY : DROPEFFECT_NONE; return valid ? DROPEFFECT_COPY : DROPEFFECT_NONE;
} }
@ -45,8 +53,9 @@ DWORD BrowserDropDelegate::OnDrop(IDataObject* data_object,
DWORD effect) { DWORD effect) {
POINT client_pt = cursor_position; POINT client_pt = cursor_position;
ScreenToClient(GetHWND(), &client_pt); ScreenToClient(GetHWND(), &client_pt);
webview_->DragTargetDrop(client_pt.x, client_pt.y, webview_->DragTargetDrop(
cursor_position.x, cursor_position.y); WebPoint(client_pt.x, client_pt.y),
WebPoint(cursor_position.x, cursor_position.y));
// webkit win port always returns DROPEFFECT_NONE // webkit win port always returns DROPEFFECT_NONE
return DROPEFFECT_NONE; return DROPEFFECT_NONE;

View File

@ -9,8 +9,14 @@
#include "request_impl.h" #include "request_impl.h"
#include "base/string_util.h" #include "base/string_util.h"
#include "third_party/WebKit/WebKit/chromium/public/WebScriptSource.h"
#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
#include "third_party/WebKit/WebKit/chromium/public/WebURL.h"
#include "webkit/glue/webframe.h" #include "webkit/glue/webframe.h"
#include "webkit/glue/webscriptsource.h"
using WebKit::WebScriptSource;
using WebKit::WebString;
using WebKit::WebURL;
CefBrowserImpl::CefBrowserImpl(CefWindowInfo& windowInfo, bool popup, CefBrowserImpl::CefBrowserImpl(CefWindowInfo& windowInfo, bool popup,
@ -22,20 +28,12 @@ CefBrowserImpl::CefBrowserImpl(CefWindowInfo& windowInfo, bool popup,
{ {
delegate_ = new BrowserWebViewDelegate(this); delegate_ = new BrowserWebViewDelegate(this);
nav_controller_.reset(new BrowserNavigationController(this)); nav_controller_.reset(new BrowserNavigationController(this));
#if defined(OS_WIN)
webview_bitmap_size_.cx = webview_bitmap_size_.cy = 0;
webview_bitmap_ = NULL;
#endif
} }
CefBrowserImpl::~CefBrowserImpl() CefBrowserImpl::~CefBrowserImpl()
{ {
#if defined(OS_WIN)
if(webview_bitmap_ != NULL)
DeleteObject(webview_bitmap_);
#endif
RemoveAllJSHandlers(); RemoveAllJSHandlers();
UIT_GetWebView()->SetDelegate(NULL);
} }
void CefBrowserImpl::GoBack() void CefBrowserImpl::GoBack()
@ -454,8 +452,8 @@ void CefBrowserImpl::UIT_ExecuteJavaScript(const std::wstring& js_code,
frame = UIT_GetWebView()->GetMainFrame(); frame = UIT_GetWebView()->GetMainFrame();
frame->ExecuteScript( frame->ExecuteScript(
webkit_glue::WebScriptSource(WideToUTF8(js_code), GURL(script_url), WebScriptSource(WebString(js_code), WebURL(GURL(script_url)),
start_line)); start_line));
} }
void CefBrowserImpl::UIT_GoBackOrForward(int offset) void CefBrowserImpl::UIT_GoBackOrForward(int offset)

View File

@ -187,28 +187,13 @@ public:
// Printing support // Printing support
void UIT_PrintPages(WebFrame* frame); void UIT_PrintPages(WebFrame* frame);
void UIT_PrintPage(int page_number, WebFrame* frame, int total_pages); void UIT_PrintPage(int page_number, int total_pages,
void UIT_SwitchFrameToDisplayMediaType(WebFrame* frame); const gfx::Size& canvas_size, WebFrame* frame);
int UIT_SwitchFrameToPrintMediaType(WebFrame* frame);
int UIT_GetPagesCount(WebFrame* frame); int UIT_GetPagesCount(WebFrame* frame);
void UIT_SetUniqueID(int id) { unique_id_ = id; } void UIT_SetUniqueID(int id) { unique_id_ = id; }
int UIT_GetUniqueID() { return unique_id_; } int UIT_GetUniqueID() { return unique_id_; }
#if defined(OS_WIN)
void UIT_DisableWebView(bool val);
bool UIT_IsWebViewDisabled() { return (webview_bitmap_ != NULL); }
void UIT_CaptureWebViewBitmap(HBITMAP &bitmap, SIZE &size);
void UIT_SetWebViewBitmap(HBITMAP bitmap, SIZE size);
void UIT_GetWebViewBitmap(HBITMAP &bitmap, SIZE &size)
{
bitmap = webview_bitmap_;
size.cx = webview_bitmap_size_.cx;
size.cy = webview_bitmap_size_.cy;
}
#endif
protected: protected:
CefWindowInfo window_info_; CefWindowInfo window_info_;
bool is_popup_; bool is_popup_;
@ -222,22 +207,14 @@ protected:
std::wstring title_; std::wstring title_;
// Backup the view size before printing since it needs to be overriden. This
// value is set to restore the view size when printing is done.
gfx::Size printing_view_size_;
// Context object used to manage printing. // Context object used to manage printing.
printing::PrintingContext print_context_; printing::PrintingContext print_context_;
typedef std::map<std::wstring, CefRefPtr<CefJSContainer> > JSContainerMap; typedef std::map<std::wstring, CefRefPtr<CefJSContainer> > JSContainerMap;
JSContainerMap jscontainers_; JSContainerMap jscontainers_;
// Unique browser ID assigned by the context. // Unique browser ID assigned by the context.
int unique_id_; int unique_id_;
#if defined(OS_WIN)
HBITMAP webview_bitmap_;
SIZE webview_bitmap_size_;
#endif
}; };
#endif // _BROWSER_IMPL_H #endif // _BROWSER_IMPL_H

View File

@ -8,10 +8,13 @@
#include "browser_impl.h" #include "browser_impl.h"
#include "browser_webkit_glue.h" #include "browser_webkit_glue.h"
#include "stream_impl.h" #include "stream_impl.h"
#include "printing/units.h"
#include "base/string_util.h" #include "base/string_util.h"
#include "base/win_util.h" #include "base/win_util.h"
#include "skia/ext/vector_canvas.h" #include "skia/ext/vector_canvas.h"
#include "third_party/WebKit/WebKit/chromium/public/WebRect.h"
#include "third_party/WebKit/WebKit/chromium/public/WebSize.h"
#include "webkit/glue/webframe.h" #include "webkit/glue/webframe.h"
#include "webkit/glue/webkit_glue.h" #include "webkit/glue/webkit_glue.h"
@ -20,6 +23,9 @@
#include <wininet.h> #include <wininet.h>
#include <winspool.h> #include <winspool.h>
using WebKit::WebRect;
using WebKit::WebSize;
LPCTSTR CefBrowserImpl::GetWndClass() LPCTSTR CefBrowserImpl::GetWndClass()
{ {
@ -61,39 +67,10 @@ LRESULT CALLBACK CefBrowserImpl::WndProc(HWND hwnd, UINT message,
GetClientRect(browser->UIT_GetMainWndHandle(), &rc); GetClientRect(browser->UIT_GetMainWndHandle(), &rc);
MoveWindow(browser->UIT_GetWebViewWndHandle(), 0, 0, rc.right, rc.bottom, MoveWindow(browser->UIT_GetWebViewWndHandle(), 0, 0, rc.right, rc.bottom,
TRUE); TRUE);
if(browser->UIT_IsWebViewDisabled()) {
// recreate the capture bitmap at the correct size
HBITMAP bitmap;
SIZE size;
browser->UIT_CaptureWebViewBitmap(bitmap, size);
browser->UIT_SetWebViewBitmap(bitmap, size);
}
} }
return 0; return 0;
case WM_PAINT: case WM_SETFOCUS:
if(browser->UIT_IsWebViewDisabled()) {
// when web view is disabled draw the capture bitmap
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
HBITMAP bitmap;
SIZE size;
browser->UIT_GetWebViewBitmap(bitmap, size);
HDC hMemDC = CreateCompatibleDC(hdc);
HBITMAP hOldBmp = (HBITMAP)SelectObject(hMemDC, bitmap);
BitBlt(hdc, 0, 0, size.cx, size.cy, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hOldBmp);
DeleteDC(hMemDC);
EndPaint(hwnd, &ps);
return 0;
}
break;
case WM_SETFOCUS:
if (browser && browser->UIT_GetWebView()) if (browser && browser->UIT_GetWebView())
browser->UIT_GetWebView()->SetFocus(true); browser->UIT_GetWebView()->SetFocus(true);
return 0; return 0;
@ -442,87 +419,22 @@ void CefBrowserImpl::UIT_CanGoForwardNotify(bool *retVal, HANDLE hEvent)
SetEvent(hEvent); SetEvent(hEvent);
} }
int CefBrowserImpl::UIT_SwitchFrameToPrintMediaType(WebFrame* frame) { void CefBrowserImpl::UIT_PrintPage(int page_number, int total_pages,
REQUIRE_UIT(); const gfx::Size& canvas_size,
WebFrame* frame) {
printing::PrintParams params; REQUIRE_UIT();
print_context_.settings().RenderParams(&params);
float ratio = static_cast<float>(params.desired_dpi / params.dpi);
float paper_width = params.printable_size.width() * ratio;
float paper_height = params.printable_size.height() * ratio;
float minLayoutWidth = static_cast<float>(paper_width * params.min_shrink);
float maxLayoutWidth = static_cast<float>(paper_width * params.max_shrink);
// Safari uses: 765 & 1224. Margins aren't exactly the same either.
// Scale = 2.222 for MDI printer.
int pages;
int width;
if (!frame->SetPrintingMode(true,
minLayoutWidth,
maxLayoutWidth,
&width)) {
NOTREACHED();
pages = 0;
} else {
// Force to recalculate the height, otherwise it reuse the current window
// height as the default.
float effective_shrink = static_cast<float>(width) / paper_width;
gfx::Size page_size(width,
static_cast<int>(paper_height * effective_shrink) - 1);
WebView* view = frame->GetView();
if (view) {
// Hack around an issue where if the current view height is higher than
// the page height, empty pages will be printed even if the bottom of the
// web page is empty.
printing_view_size_ = view->GetSize();
view->Resize(page_size);
view->Layout();
}
pages = frame->ComputePageRects(params.printable_size);
DCHECK(pages);
}
return pages;
}
void CefBrowserImpl::UIT_SwitchFrameToDisplayMediaType(WebFrame* frame) {
REQUIRE_UIT();
// TODO(cef): Figure out how to make the frame redraw properly after printing
// to PDF file (currently leaves a white rectangle behind the save as dialog).
// Set the layout back to "normal" document; i.e. CSS media type = "screen".
frame->SetPrintingMode(false, 0, 0, NULL);
WebView* view = frame->GetView();
if (view) {
// Restore from the hack described at SwitchFrameToPrintMediaType().
view->Resize(printing_view_size_);
view->Layout();
printing_view_size_.SetSize(0, 0);
}
}
void CefBrowserImpl::UIT_PrintPage(int page_number, WebFrame* frame,
int total_pages) {
REQUIRE_UIT();
if (printing_view_size_.width() < 0) {
NOTREACHED();
return;
}
printing::PrintParams params; printing::PrintParams params;
const printing::PrintSettings &settings = print_context_.settings(); const printing::PrintSettings &settings = print_context_.settings();
settings.RenderParams(&params); settings.RenderParams(&params);
gfx::Size src_size = frame->GetView()->GetSize(); int src_size_x = canvas_size.width();
double src_size_x = src_size.width(); int src_size_y = canvas_size.height();
double src_size_y = src_size.height(); float src_margin = .1f * src_size_x;
double src_margin = .1 * src_size_x;
double dest_size_x = settings.page_setup_pixels().physical_size().width(); int dest_size_x = settings.page_setup_pixels().physical_size().width();
double dest_size_y = settings.page_setup_pixels().physical_size().height(); int dest_size_y = settings.page_setup_pixels().physical_size().height();
double dest_margin = .1 * dest_size_x; float dest_margin = .1f * dest_size_x;
print_context_.NewPage(); print_context_.NewPage();
@ -534,23 +446,29 @@ void CefBrowserImpl::UIT_PrintPage(int page_number, WebFrame* frame,
int saved_state = SaveDC(hDC); int saved_state = SaveDC(hDC);
DCHECK_NE(saved_state, 0); DCHECK_NE(saved_state, 0);
// 100% GDI based. skia::VectorCanvas canvas(hDC, dest_size_x, dest_size_y);
skia::VectorCanvas canvas(hDC, (int)ceil(dest_size_x), (int)ceil(dest_size_y));
canvas.translate(SkDoubleToScalar(dest_margin), // Adjust for the margin offset.
SkDoubleToScalar(dest_margin)); canvas.translate(dest_margin, dest_margin);
canvas.scale(SkDoubleToScalar((dest_size_x - dest_margin * 2) / src_size_x),
SkDoubleToScalar((dest_size_y - dest_margin * 2) / src_size_y)); // Apply the print scaling factor.
float print_scale = (dest_size_x - dest_margin * 2) / src_size_x;
canvas.scale(print_scale, print_scale);
// Set the clipping region to be sure to not overflow. // Set the clipping region to be sure to not overflow.
SkRect clip_rect; SkRect clip_rect;
clip_rect.set(0, 0, SkDoubleToScalar(src_size_x), clip_rect.set(0, 0, static_cast<float>(src_size_x),
SkDoubleToScalar(src_size_y)); static_cast<float>(src_size_y));
canvas.clipRect(clip_rect); canvas.clipRect(clip_rect);
if (!frame->SpoolPage(page_number-1, &canvas)) { // Apply the WebKit scaling factor.
NOTREACHED() << "Printing page " << page_number << " failed."; float webkit_scale = frame->GetPrintPageShrink(page_number);
return; if (webkit_scale <= 0) {
NOTREACHED() << "Printing page " << page_number << " failed.";
} }
canvas.scale(webkit_scale, webkit_scale);
frame->PrintPage(page_number, &canvas);
res = RestoreDC(hDC, saved_state); res = RestoreDC(hDC, saved_state);
DCHECK_NE(res, 0); DCHECK_NE(res, 0);
@ -582,7 +500,7 @@ void CefBrowserImpl::UIT_PrintPage(int page_number, WebFrame* frame,
// allow the handler to format print header and/or footer // allow the handler to format print header and/or footer
CefHandler::RetVal rv = handler_->HandlePrintHeaderFooter(this, printInfo, CefHandler::RetVal rv = handler_->HandlePrintHeaderFooter(this, printInfo,
url, title, page_number, total_pages, topLeft, topCenter, topRight, url, title, page_number+1, total_pages, topLeft, topCenter, topRight,
bottomLeft, bottomCenter, bottomRight); bottomLeft, bottomCenter, bottomRight);
if(rv != RV_HANDLED) { if(rv != RV_HANDLED) {
@ -666,88 +584,69 @@ void CefBrowserImpl::UIT_PrintPages(WebFrame* frame) {
settings.RenderParams(&params); settings.RenderParams(&params);
// disable the web view so we don't see printing related layout changes on int page_count = 0;
// the screen gfx::Size canvas_size;
UIT_DisableWebView(true);
canvas_size.set_width(
int pages = UIT_SwitchFrameToPrintMediaType(frame); printing::ConvertUnit(
if (pages) { settings.page_setup_pixels().physical_size().width(),
static_cast<int>(params.dpi),
params.desired_dpi));
canvas_size.set_height(
printing::ConvertUnit(
settings.page_setup_pixels().physical_size().height(),
static_cast<int>(params.dpi),
params.desired_dpi));
frame->BeginPrint(WebSize(canvas_size), &page_count);
if (page_count) {
bool old_state = MessageLoop::current()->NestableTasksAllowed(); bool old_state = MessageLoop::current()->NestableTasksAllowed();
MessageLoop::current()->SetNestableTasksAllowed(false); MessageLoop::current()->SetNestableTasksAllowed(false);
// TODO(cef): Use the page title as the document name // TODO(cef): Use the page title as the document name
print_context_.NewDocument(L"New Document"); print_context_.NewDocument(L"New Document");
if(settings.ranges.size() > 0) { if(settings.ranges.size() > 0) {
for (unsigned i = 0; i < settings.ranges.size(); ++i) { for (unsigned x = 0; x < settings.ranges.size(); ++x) {
const printing::PageRange& range = settings.ranges[i]; const printing::PageRange& range = settings.ranges[x];
for(int i = range.from; i <= range.to; ++i) for(int i = range.from; i <= range.to; ++i)
UIT_PrintPage(i, frame, pages); UIT_PrintPage(i, page_count, canvas_size, frame);
} }
} else { } else {
for(int i = 1; i <= pages; ++i) for(int i = 0; i < page_count; ++i)
UIT_PrintPage(i, frame, pages); UIT_PrintPage(i, page_count, canvas_size, frame);
} }
print_context_.DocumentDone(); print_context_.DocumentDone();
MessageLoop::current()->SetNestableTasksAllowed(old_state); MessageLoop::current()->SetNestableTasksAllowed(old_state);
} }
UIT_SwitchFrameToDisplayMediaType(frame);
// re-enable web view frame->EndPrint();
UIT_DisableWebView(false);
} }
int CefBrowserImpl::UIT_GetPagesCount(WebFrame* frame) int CefBrowserImpl::UIT_GetPagesCount(WebFrame* frame)
{ {
REQUIRE_UIT(); REQUIRE_UIT();
int pages = UIT_SwitchFrameToPrintMediaType(frame); printing::PrintParams params;
UIT_SwitchFrameToDisplayMediaType(frame); const printing::PrintSettings &settings = print_context_.settings();
return pages;
}
void CefBrowserImpl::UIT_CaptureWebViewBitmap(HBITMAP &bitmap, SIZE &size)
{
REQUIRE_UIT();
webkit_glue::CaptureWebViewBitmap(UIT_GetMainWndHandle(), UIT_GetWebView(), settings.RenderParams(&params);
bitmap, size);
}
void CefBrowserImpl::UIT_SetWebViewBitmap(HBITMAP bitmap, SIZE size) int page_count = 0;
{ gfx::Size canvas_size;
REQUIRE_UIT();
canvas_size.set_width(
if(webview_bitmap_) printing::ConvertUnit(
DeleteObject(webview_bitmap_); settings.page_setup_pixels().physical_size().width(),
webview_bitmap_ = bitmap; static_cast<int>(params.dpi),
webview_bitmap_size_ = size; params.desired_dpi));
} canvas_size.set_height(
printing::ConvertUnit(
void CefBrowserImpl::UIT_DisableWebView(bool val) settings.page_setup_pixels().physical_size().height(),
{ static_cast<int>(params.dpi),
REQUIRE_UIT(); params.desired_dpi));
frame->BeginPrint(WebSize(canvas_size), &page_count);
if(val) { frame->EndPrint();
// disable the web view window
if(webview_bitmap_ != NULL)
return;
HBITMAP bitmap; return page_count;
SIZE size;
UIT_CaptureWebViewBitmap(bitmap, size);
UIT_SetWebViewBitmap(bitmap, size);
DWORD dwStyle = GetWindowLong(UIT_GetWebViewWndHandle(), GWL_STYLE);
SetWindowLong(UIT_GetWebViewWndHandle(), GWL_STYLE, dwStyle & ~WS_VISIBLE);
RedrawWindow(UIT_GetMainWndHandle(), NULL, NULL, RDW_INVALIDATE);
} else if(webview_bitmap_) {
// enable the web view window
SIZE size = {0,0};
UIT_SetWebViewBitmap(NULL, size);
DWORD dwStyle = GetWindowLong(UIT_GetWebViewWndHandle(), GWL_STYLE);
SetWindowLong(UIT_GetWebViewWndHandle(), GWL_STYLE, dwStyle | WS_VISIBLE);
RedrawWindow(UIT_GetMainWndHandle(), NULL, NULL, RDW_INVALIDATE);
}
} }

View File

@ -52,6 +52,7 @@
#include "net/proxy/proxy_service.h" #include "net/proxy/proxy_service.h"
#include "net/url_request/url_request.h" #include "net/url_request/url_request.h"
#include "webkit/glue/resource_loader_bridge.h" #include "webkit/glue/resource_loader_bridge.h"
#include "webkit/glue/webappcachecontext.h"
#include "webkit/glue/webframe.h" #include "webkit/glue/webframe.h"
#include "webkit/glue/webview.h" #include "webkit/glue/webview.h"
@ -106,6 +107,7 @@ struct RequestParams {
GURL referrer; GURL referrer;
std::string headers; std::string headers;
int load_flags; int load_flags;
int app_cache_context_id;
scoped_refptr<net::UploadData> upload; scoped_refptr<net::UploadData> upload;
}; };
@ -376,6 +378,7 @@ class RequestProxy : public URLRequest::Delegate,
info.request_time = request->request_time(); info.request_time = request->request_time();
info.response_time = request->response_time(); info.response_time = request->response_time();
info.headers = request->response_headers(); info.headers = request->response_headers();
info.app_cache_id = WebAppCacheContext::kNoAppCacheId;
request->GetMimeType(&info.mime_type); request->GetMimeType(&info.mime_type);
request->GetCharset(&info.charset); request->GetCharset(&info.charset);
OnReceivedResponse(info, false); OnReceivedResponse(info, false);
@ -416,6 +419,14 @@ class RequestProxy : public URLRequest::Delegate,
// Called on the IO thread. // Called on the IO thread.
void MaybeUpdateUploadProgress() { void MaybeUpdateUploadProgress() {
// If a redirect is received upload is cancelled in URLRequest, we should
// try to stop the |upload_progress_timer_| timer and return.
if (!request_->has_upload()) {
if (upload_progress_timer_.IsRunning())
upload_progress_timer_.Stop();
return;
}
uint64 size = request_->get_upload()->GetContentLength(); uint64 size = request_->get_upload()->GetContentLength();
uint64 position = request_->GetUploadProgress(); uint64 position = request_->GetUploadProgress();
if (position == last_upload_position_) if (position == last_upload_position_)
@ -520,7 +531,8 @@ class ResourceLoaderBridgeImpl : public ResourceLoaderBridge {
const GURL& policy_url, const GURL& policy_url,
const GURL& referrer, const GURL& referrer,
const std::string& headers, const std::string& headers,
int load_flags) int load_flags,
int app_cache_context_id)
: browser_(browser), : browser_(browser),
params_(new RequestParams), params_(new RequestParams),
proxy_(NULL) { proxy_(NULL) {
@ -530,6 +542,7 @@ class ResourceLoaderBridgeImpl : public ResourceLoaderBridge {
params_->referrer = referrer; params_->referrer = referrer;
params_->headers = headers; params_->headers = headers;
params_->load_flags = load_flags; params_->load_flags = load_flags;
params_->app_cache_context_id = app_cache_context_id;
} }
virtual ~ResourceLoaderBridgeImpl() { virtual ~ResourceLoaderBridgeImpl() {
@ -550,7 +563,7 @@ class ResourceLoaderBridgeImpl : public ResourceLoaderBridge {
params_->upload->AppendBytes(data, data_len); params_->upload->AppendBytes(data, data_len);
} }
virtual void AppendFileRangeToUpload(const std::wstring& file_path, virtual void AppendFileRangeToUpload(const FilePath& file_path,
uint64 offset, uint64 length) { uint64 offset, uint64 length) {
DCHECK(params_.get()); DCHECK(params_.get());
if (!params_->upload) if (!params_->upload)
@ -558,6 +571,13 @@ class ResourceLoaderBridgeImpl : public ResourceLoaderBridge {
params_->upload->AppendFileRange(file_path, offset, length); params_->upload->AppendFileRange(file_path, offset, length);
} }
virtual void SetUploadIdentifier(int64 identifier) {
DCHECK(params_.get());
if (!params_->upload)
params_->upload = new net::UploadData();
params_->upload->set_identifier(identifier);
}
virtual bool Start(Peer* peer) { virtual bool Start(Peer* peer) {
DCHECK(!proxy_); DCHECK(!proxy_);
@ -652,15 +672,18 @@ ResourceLoaderBridge* ResourceLoaderBridge::Create(
const GURL& url, const GURL& url,
const GURL& policy_url, const GURL& policy_url,
const GURL& referrer, const GURL& referrer,
const std::string& frame_origin,
const std::string& main_frame_origin,
const std::string& headers, const std::string& headers,
int load_flags, int load_flags,
int requestor_pid, int requestor_pid,
ResourceType::Type request_type, ResourceType::Type request_type,
bool mixed_contents, int app_cache_context_id,
int routing_id) { int routing_id) {
CefRefPtr<CefBrowser> browser = _Context->GetBrowserByID(routing_id); CefRefPtr<CefBrowser> browser = _Context->GetBrowserByID(routing_id);
return new ResourceLoaderBridgeImpl(browser, method, url, policy_url, return new ResourceLoaderBridgeImpl(browser, method, url, policy_url,
referrer, headers, load_flags); referrer, headers, load_flags,
app_cache_context_id);
} }
// Issue the proxy resolve request on the io thread, and wait // Issue the proxy resolve request on the io thread, and wait

View File

@ -4,7 +4,6 @@
// found in the LICENSE file. // found in the LICENSE file.
#include "precompiled_libcef.h" #include "precompiled_libcef.h"
#include "browser_webkit_glue.h"
#include "base/compiler_specific.h" #include "base/compiler_specific.h"
#include "base/logging.h" #include "base/logging.h"
@ -17,14 +16,16 @@ MSVC_PUSH_WARNING_LEVEL(0);
#include "webkit/glue/webframe_impl.h" #include "webkit/glue/webframe_impl.h"
MSVC_POP_WARNING(); MSVC_POP_WARNING();
#include "browser_webkit_glue.h"
#undef LOG #undef LOG
#include "base/path_service.h" #include "base/path_service.h"
#include "base/resource_util.h"
#include "base/scoped_ptr.h" #include "base/scoped_ptr.h"
#include "base/string16.h" #include "base/string16.h"
#include "base/win_util.h" #include "base/win_util.h"
#include "net/base/mime_util.h" #include "net/base/mime_util.h"
#include "webkit/glue/glue_util.h" #include "webkit/glue/glue_util.h"
#include "webkit/glue/screen_info.h"
#include "webkit/glue/webframe.h" #include "webkit/glue/webframe.h"
#include "webkit/glue/webkit_glue.h" #include "webkit/glue/webkit_glue.h"
@ -43,8 +44,21 @@ void AppendToLog(const char* file, int line, const char* msg) {
logging::LogMessage(file, line).stream() << msg; logging::LogMessage(file, line).stream() << msg;
} }
std::string GetDataResource(int resource_id) { StringPiece GetRawDataResource(HMODULE module, int resource_id) {
if (resource_id == IDR_BROKENIMAGE) { void* data_ptr;
size_t data_size;
return base::GetDataResourceFromModule(module, resource_id, &data_ptr,
&data_size) ?
StringPiece(static_cast<char*>(data_ptr), data_size) : StringPiece();
}
StringPiece NetResourceProvider(int key) {
return GetRawDataResource(::GetModuleHandle(NULL), key);
}
StringPiece GetDataResource(int resource_id) {
switch (resource_id) {
case IDR_BROKENIMAGE: {
// Use webkit's broken image icon (16x16) // Use webkit's broken image icon (16x16)
static unsigned char broken_image_data[] = { static unsigned char broken_image_data[] = {
0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x10, 0x00, 0x10, 0x00, 0xD5, 0x00, 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x10, 0x00, 0x10, 0x00, 0xD5, 0x00,
@ -79,16 +93,51 @@ std::string GetDataResource(int resource_id) {
0x07, 0x0E, 0xC7, 0x4C, 0xCF, 0x49, 0xCD, 0xD2, 0xD3, 0xD4, 0xD2, 0x41, 0x07, 0x0E, 0xC7, 0x4C, 0xCF, 0x49, 0xCD, 0xD2, 0xD3, 0xD4, 0xD2, 0x41,
0x00, 0x3B 0x00, 0x3B
}; };
return reinterpret_cast<char*>(broken_image_data); return StringPiece(reinterpret_cast<char*>(broken_image_data),
} else if (resource_id == IDR_FEED_PREVIEW) { static_cast<StringPiece::size_type>(
sizeof(broken_image_data) / sizeof(unsigned char)));
}
case IDR_FEED_PREVIEW:
// It is necessary to return a feed preview template that contains // It is necessary to return a feed preview template that contains
// a {{URL}} substring where the feed URL should go; see the code // a {{URL}} substring where the feed URL should go; see the code
// that computes feed previews in feed_preview.cc:MakeFeedPreview. // that computes feed previews in feed_preview.cc:MakeFeedPreview.
// This fixes issue #932714. // This fixes issue #932714.
return std::string("Feed preview for {{URL}}"); return "Feed preview for {{URL}}";
} else { case IDR_TEXTAREA_RESIZER: {
return std::string(); // Use webkit's text area resizer image.
static unsigned char area_resizer_data[] = {
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08,
0x08, 0x06, 0x00, 0x00, 0x00, 0xC4, 0x0F, 0xBE, 0x8B, 0x00, 0x00, 0x00,
0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x13, 0x00, 0x00, 0x0B,
0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x04, 0x67, 0x41,
0x4D, 0x41, 0x00, 0x00, 0xB1, 0x8E, 0x7C, 0xFB, 0x51, 0x93, 0x00, 0x00,
0x00, 0x20, 0x63, 0x48, 0x52, 0x4D, 0x00, 0x00, 0x7A, 0x25, 0x00, 0x00,
0x80, 0x83, 0x00, 0x00, 0xF9, 0xFF, 0x00, 0x00, 0x80, 0xE9, 0x00, 0x00,
0x75, 0x30, 0x00, 0x00, 0xEA, 0x60, 0x00, 0x00, 0x3A, 0x98, 0x00, 0x00,
0x17, 0x6F, 0x92, 0x5F, 0xC5, 0x46, 0x00, 0x00, 0x00, 0x39, 0x49, 0x44,
0x41, 0x54, 0x78, 0xDA, 0x7C, 0x8E, 0xB1, 0x0D, 0x00, 0x20, 0x0C, 0xC3,
0x1C, 0x9E, 0xE5, 0xA6, 0x5E, 0x1B, 0xB6, 0x4A, 0xA0, 0xD0, 0xAC, 0x8E,
0x25, 0xC3, 0x7F, 0x65, 0x9B, 0x35, 0xC1, 0xC9, 0x2C, 0x80, 0x74, 0x6A,
0x98, 0x0E, 0x17, 0x7C, 0x1B, 0xCA, 0x36, 0x92, 0x76, 0x6A, 0x48, 0x66,
0x37, 0x68, 0xAA, 0x05, 0x38, 0x03, 0x00, 0x40, 0x17, 0x33, 0x3D, 0x58,
0x57, 0x6B, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE,
0x42, 0x60, 0x82
};
return StringPiece(reinterpret_cast<char*>(area_resizer_data),
static_cast<StringPiece::size_type>(
sizeof(area_resizer_data) / sizeof(unsigned char)));
} }
case IDR_SEARCH_CANCEL:
case IDR_SEARCH_CANCEL_PRESSED:
case IDR_SEARCH_MAGNIFIER:
case IDR_SEARCH_MAGNIFIER_RESULTS:
return NetResourceProvider(resource_id);
default:
break;
}
return StringPiece();
} }
bool GetApplicationDirectory(std::wstring *path) { bool GetApplicationDirectory(std::wstring *path) {
@ -115,10 +164,6 @@ bool SpellCheckWord(const wchar_t* word, int word_len,
return true; return true;
} }
ScreenInfo GetScreenInfo(gfx::NativeView window) {
return GetScreenInfoHelper(window);
}
bool IsPluginRunningInRendererProcess() { bool IsPluginRunningInRendererProcess() {
return true; return true;
} }
@ -142,10 +187,6 @@ std::string GetDocumentString(WebFrame* frame) {
return StringToStdString(WebCore::createMarkup(core_frame->document())); return StringToStdString(WebCore::createMarkup(core_frame->document()));
} }
ScreenInfo GetScreenInfo(gfx::NativeViewId window) {
return GetScreenInfoHelper(gfx::NativeViewFromId(window));
}
void InitializeTextEncoding() { void InitializeTextEncoding() {
WebCore::UTF8Encoding(); WebCore::UTF8Encoding();
} }

View File

@ -2,8 +2,13 @@
// reserved. Use of this source code is governed by a BSD-style license that // reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file. // can be found in the LICENSE file.
#if defined(OS_WIN)
#include <windows.h>
#endif
#include <string> #include <string>
#include "base/string_piece.h"
class WebFrame; class WebFrame;
class WebView; class WebView;
@ -24,4 +29,7 @@ BOOL SaveBitmapToFile(HBITMAP hBmp, HDC hDC, LPCTSTR file, LPBYTE lpBits);
// Text encoding objects must be initialized on the main thread. // Text encoding objects must be initialized on the main thread.
void InitializeTextEncoding(); void InitializeTextEncoding();
// This is called indirectly by the network layer to access resources.
StringPiece NetResourceProvider(int key);
} // namespace webkit_glue } // namespace webkit_glue

View File

@ -4,7 +4,6 @@
// found in the LICENSE file. // found in the LICENSE file.
#include "precompiled_libcef.h" #include "precompiled_libcef.h"
#include "browser_webkit_glue.h"
#include <atlcore.h> #include <atlcore.h>
#include <atlbase.h> #include <atlbase.h>
@ -18,21 +17,28 @@ MSVC_PUSH_WARNING_LEVEL(0);
#include "PlatformContextSkia.h" #include "PlatformContextSkia.h"
MSVC_POP_WARNING(); MSVC_POP_WARNING();
#include "browser_webkit_glue.h"
#undef LOG #undef LOG
#include "base/gfx/gdi_util.h" #include "base/gfx/gdi_util.h"
#include "base/logging.h" #include "base/logging.h"
#include "third_party/WebKit/WebKit/chromium/public/WebRect.h"
#include "third_party/WebKit/WebKit/chromium/public/WebSize.h"
#include "webkit/glue/webkit_glue.h" #include "webkit/glue/webkit_glue.h"
#include "webkit/glue/webview.h" #include "webkit/glue/webview.h"
#include "webkit/glue/plugins/plugin_list.h" #include "webkit/glue/plugins/plugin_list.h"
using WebKit::WebRect;
using WebKit::WebSize;
namespace webkit_glue { namespace webkit_glue {
string16 GetLocalizedString(int message_id) { string16 GetLocalizedString(int message_id) {
// Localized resources are provided via webkit_resources.rc and
// webkit_strings_en-US.rc.
const ATLSTRINGRESOURCEIMAGE* image = const ATLSTRINGRESOURCEIMAGE* image =
AtlGetStringResourceImage(_AtlBaseModule.GetModuleInstance(), AtlGetStringResourceImage(_AtlBaseModule.GetModuleInstance(),
message_id); message_id);
// TODO(cef): Need to provide strings for common resources.
if (!image) { if (!image) {
NOTREACHED(); NOTREACHED();
return L"No string for this identifier!"; return L"No string for this identifier!";
@ -57,16 +63,17 @@ bool DownloadUrl(const std::string& url, HWND caller_window) {
return false; return false;
} }
void CaptureWebViewBitmap(HWND mainWnd, WebView* webview, HBITMAP& bitmap, SIZE& size) void CaptureWebViewBitmap(HWND mainWnd, WebView* webview, HBITMAP& bitmap,
SIZE& size)
{ {
gfx::Size webSize = webview->GetSize(); WebKit::WebSize webSize = webview->GetSize();
size.cx = webSize.width(); size.cx = webSize.width;
size.cy = webSize.height(); size.cy = webSize.height;
skia::PlatformCanvasWin canvas(size.cx, size.cy, true); skia::PlatformCanvasWin canvas(size.cx, size.cy, true);
canvas.drawARGB(255, 255, 255, 255, SkPorterDuff::kSrc_Mode); canvas.drawARGB(255, 255, 255, 255, SkPorterDuff::kSrc_Mode);
PlatformContextSkia context(&canvas); PlatformContextSkia context(&canvas);
gfx::Rect rect(size.cx, size.cy); WebKit::WebRect rect(0, 0, size.cx, size.cy);
webview->Layout(); webview->Layout();
webview->Paint(&canvas, rect); webview->Paint(&canvas, rect);

View File

@ -6,18 +6,21 @@
#ifndef _BROWSER_WEBKIT_INIT_H #ifndef _BROWSER_WEBKIT_INIT_H
#define _BROWSER_WEBKIT_INIT_H #define _BROWSER_WEBKIT_INIT_H
#include "base/stats_counters.h"
#include "base/string_util.h" #include "base/string_util.h"
#include "third_party/WebKit/WebKit/chromium/public/WebCString.h"
#include "third_party/WebKit/WebKit/chromium/public/WebData.h"
#include "third_party/WebKit/WebKit/chromium/public/WebKit.h"
#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
#include "third_party/WebKit/WebKit/chromium/public/WebURL.h"
#include "webkit/glue/simple_webmimeregistry_impl.h" #include "webkit/glue/simple_webmimeregistry_impl.h"
#include "webkit/glue/webclipboard_impl.h"
#include "webkit/glue/webkit_glue.h" #include "webkit/glue/webkit_glue.h"
#include "webkit/glue/webkitclient_impl.h" #include "webkit/glue/webkitclient_impl.h"
#include "webkit/extensions/v8/gears_extension.h" #include "webkit/extensions/v8/gears_extension.h"
#include "webkit/extensions/v8/interval_extension.h" #include "webkit/extensions/v8/interval_extension.h"
#include "browser_resource_loader_bridge.h" #include "browser_resource_loader_bridge.h"
#include "WebCString.h"
#include "WebKit.h"
#include "WebString.h"
#include "WebURL.h"
class BrowserWebKitInit : public webkit_glue::WebKitClientImpl { class BrowserWebKitInit : public webkit_glue::WebKitClientImpl {
public: public:
@ -42,15 +45,22 @@ class BrowserWebKitInit : public webkit_glue::WebKitClientImpl {
return &mime_registry_; return &mime_registry_;
} }
WebKit::WebClipboard* clipboard() {
if (!clipboard_.get()) {
clipboard_.reset(new webkit_glue::WebClipboardImpl());
}
return clipboard_.get();
}
virtual WebKit::WebSandboxSupport* sandboxSupport() { virtual WebKit::WebSandboxSupport* sandboxSupport() {
return NULL; return NULL;
} }
virtual uint64_t visitedLinkHash(const char* canonicalURL, size_t length) { virtual unsigned long long visitedLinkHash(const char* canonicalURL, size_t length) {
return 0; return 0;
} }
virtual bool isLinkVisited(uint64_t linkHash) { virtual bool isLinkVisited(unsigned long long linkHash) {
return false; return false;
} }
@ -68,7 +78,7 @@ class BrowserWebKitInit : public webkit_glue::WebKitClientImpl {
virtual void prefetchHostName(const WebKit::WebString&) { virtual void prefetchHostName(const WebKit::WebString&) {
} }
virtual WebKit::WebCString loadResource(const char* name) { virtual WebKit::WebData loadResource(const char* name) {
if (!strcmp(name, "deleteButton")) { if (!strcmp(name, "deleteButton")) {
// Create a red 30x30 square. // Create a red 30x30 square.
const char red_square[] = const char red_square[] =
@ -83,7 +93,7 @@ class BrowserWebKitInit : public webkit_glue::WebKitClientImpl {
"\x18\x50\xb9\x33\x47\xf9\xa8\x01\x32\xd4\xc2\x03\x00\x33\x84\x0d" "\x18\x50\xb9\x33\x47\xf9\xa8\x01\x32\xd4\xc2\x03\x00\x33\x84\x0d"
"\x02\x3a\x91\xeb\xa5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60" "\x02\x3a\x91\xeb\xa5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60"
"\x82"; "\x82";
return WebKit::WebCString(red_square, arraysize(red_square)); return WebKit::WebData(red_square, arraysize(red_square));
} }
return webkit_glue::WebKitClientImpl::loadResource(name); return webkit_glue::WebKitClientImpl::loadResource(name);
} }
@ -94,6 +104,7 @@ class BrowserWebKitInit : public webkit_glue::WebKitClientImpl {
private: private:
webkit_glue::SimpleWebMimeRegistryImpl mime_registry_; webkit_glue::SimpleWebMimeRegistryImpl mime_registry_;
scoped_ptr<WebKit::WebClipboard> clipboard_;
}; };
#endif // _BROWSER_WEBKIT_INIT_H #endif // _BROWSER_WEBKIT_INIT_H

View File

@ -8,6 +8,7 @@
// have initialized a MessageLoop before these methods are called. // have initialized a MessageLoop before these methods are called.
#include "precompiled_libcef.h" #include "precompiled_libcef.h"
#include "config.h"
#include "browser_webview_delegate.h" #include "browser_webview_delegate.h"
#include "browser_impl.h" #include "browser_impl.h"
#include "browser_navigation_controller.h" #include "browser_navigation_controller.h"
@ -22,6 +23,10 @@
#include "base/string_util.h" #include "base/string_util.h"
#include "base/trace_event.h" #include "base/trace_event.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
#include "third_party/WebKit/WebKit/chromium/public/WebDragData.h"
#include "third_party/WebKit/WebKit/chromium/public/WebKit.h"
#include "third_party/WebKit/WebKit/chromium/public/WebScreenInfo.h"
#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
#include "webkit/glue/webdatasource.h" #include "webkit/glue/webdatasource.h"
#include "webkit/glue/webdropdata.h" #include "webkit/glue/webdropdata.h"
#include "webkit/glue/weberror.h" #include "webkit/glue/weberror.h"
@ -40,6 +45,14 @@
#include "browser_drop_delegate.h" #include "browser_drop_delegate.h"
#endif #endif
using WebKit::WebDragData;
using WebKit::WebRect;
using WebKit::WebScreenInfo;
using WebKit::WebSize;
using WebKit::WebString;
using WebKit::WebWorker;
using WebKit::WebWorkerClient;
namespace { namespace {
int next_page_id_ = 1; int next_page_id_ = 1;
@ -60,6 +73,10 @@ WebWidget* BrowserWebViewDelegate::CreatePopupWidget(WebView* webview,
return browser_->UIT_CreatePopupWidget(webview); return browser_->UIT_CreatePopupWidget(webview);
} }
WebWorker* BrowserWebViewDelegate::CreateWebWorker(WebWorkerClient* client) {
return NULL;
}
void BrowserWebViewDelegate::OpenURL(WebView* webview, const GURL& url, void BrowserWebViewDelegate::OpenURL(WebView* webview, const GURL& url,
const GURL& referrer, const GURL& referrer,
WindowOpenDisposition disposition) { WindowOpenDisposition disposition) {
@ -143,19 +160,21 @@ WindowOpenDisposition BrowserWebViewDelegate::DispositionForNavigationAction(
return IGNORE_ACTION; return IGNORE_ACTION;
} }
if (is_custom_policy_delegate_) { WindowOpenDisposition result;
if (policy_delegate_enabled_) {
std::wstring frame_name = frame->GetName(); std::wstring frame_name = frame->GetName();
printf("Policy delegate: attempt to load %s\n", std::string url_description;
request->GetURL().spec().c_str()); if (request->GetURL().SchemeIs("file")) {
return IGNORE_ACTION; url_description = request->GetURL().ExtractFileName();
} else {
url_description = request->GetURL().spec();
}
result = policy_delegate_is_permissive_ ? CURRENT_TAB : IGNORE_ACTION;
} else { } else {
return WebViewDelegate::DispositionForNavigationAction( result = WebViewDelegate::DispositionForNavigationAction(
webview, frame, request, type, disposition, is_redirect); webview, frame, request, type, disposition, is_redirect);
} }
} return result;
void BrowserWebViewDelegate::SetCustomPolicyDelegate(bool isCustom) {
is_custom_policy_delegate_ = isCustom;
} }
void BrowserWebViewDelegate::AssignIdentifierToRequest(WebView* webview, void BrowserWebViewDelegate::AssignIdentifierToRequest(WebView* webview,
@ -202,7 +221,7 @@ void BrowserWebViewDelegate::DidFailProvisionalLoadWithError(
WebView* webview, WebView* webview,
const WebError& error, const WebError& error,
WebFrame* frame) { WebFrame* frame) {
LocationChangeDone(frame->GetProvisionalDataSource()); LocationChangeDone(frame);
// error codes are defined in net\base\net_error_list.h // error codes are defined in net\base\net_error_list.h
@ -259,13 +278,13 @@ void BrowserWebViewDelegate::DidReceiveTitle(WebView* webview,
void BrowserWebViewDelegate::DidFinishLoadForFrame(WebView* webview, void BrowserWebViewDelegate::DidFinishLoadForFrame(WebView* webview,
WebFrame* frame) { WebFrame* frame) {
UpdateAddressBar(webview); UpdateAddressBar(webview);
LocationChangeDone(frame->GetDataSource()); LocationChangeDone(frame);
} }
void BrowserWebViewDelegate::DidFailLoadWithError(WebView* webview, void BrowserWebViewDelegate::DidFailLoadWithError(WebView* webview,
const WebError& error, const WebError& error,
WebFrame* frame) { WebFrame* frame) {
LocationChangeDone(frame->GetDataSource()); LocationChangeDone(frame);
} }
void BrowserWebViewDelegate::DidFinishDocumentLoadForFrame(WebView* webview, void BrowserWebViewDelegate::DidFinishDocumentLoadForFrame(WebView* webview,
@ -357,7 +376,7 @@ void BrowserWebViewDelegate::SetStatusbarText(WebView* webview,
} }
void BrowserWebViewDelegate::StartDragging(WebView* webview, void BrowserWebViewDelegate::StartDragging(WebView* webview,
const WebDropData& drop_data) { const WebDragData& drag_data) {
#if defined(OS_WIN) #if defined(OS_WIN)
// TODO(port): make this work on all platforms. // TODO(port): make this work on all platforms.
if (!drag_delegate_) { if (!drag_delegate_) {
@ -369,7 +388,7 @@ void BrowserWebViewDelegate::StartDragging(WebView* webview,
// to be able to convert from WebDragData to an IDataObject. // to be able to convert from WebDragData to an IDataObject.
//const DWORD ok_effect = DROPEFFECT_COPY | DROPEFFECT_LINK | DROPEFFECT_MOVE; //const DWORD ok_effect = DROPEFFECT_COPY | DROPEFFECT_LINK | DROPEFFECT_MOVE;
//DWORD effect; //DWORD effect;
//HRESULT res = DoDragDrop(drop_data.data_object, drag_delegate_.get(), //HRESULT res = DoDragDrop(drag_data.data_object, drag_delegate_.get(),
// ok_effect, &effect); // ok_effect, &effect);
//DCHECK(DRAGDROP_S_DROP == res || DRAGDROP_S_CANCEL == res); //DCHECK(DRAGDROP_S_DROP == res || DRAGDROP_S_CANCEL == res);
webview->DragSourceSystemDragEnded(); webview->DragSourceSystemDragEnded();
@ -486,13 +505,13 @@ gfx::NativeViewId BrowserWebViewDelegate::GetContainingView(WebWidget* webwidget
} }
void BrowserWebViewDelegate::DidInvalidateRect(WebWidget* webwidget, void BrowserWebViewDelegate::DidInvalidateRect(WebWidget* webwidget,
const gfx::Rect& rect) { const WebRect& rect) {
if (WebWidgetHost* host = GetHostForWidget(webwidget)) if (WebWidgetHost* host = GetHostForWidget(webwidget))
host->DidInvalidateRect(rect); host->DidInvalidateRect(rect);
} }
void BrowserWebViewDelegate::DidScrollRect(WebWidget* webwidget, int dx, int dy, void BrowserWebViewDelegate::DidScrollRect(WebWidget* webwidget, int dx, int dy,
const gfx::Rect& clip_rect) { const WebRect& clip_rect) {
if (WebWidgetHost* host = GetHostForWidget(webwidget)) if (WebWidgetHost* host = GetHostForWidget(webwidget))
host->DidScrollRect(dx, dy, clip_rect); host->DidScrollRect(dx, dy, clip_rect);
} }
@ -507,10 +526,31 @@ void BrowserWebViewDelegate::Blur(WebWidget* webwidget) {
browser_->UIT_SetFocus(host, false); browser_->UIT_SetFocus(host, false);
} }
bool BrowserWebViewDelegate::IsHidden() { bool BrowserWebViewDelegate::IsHidden(WebWidget* webwidget) {
return false; return false;
} }
WebScreenInfo BrowserWebViewDelegate::GetScreenInfo(WebWidget* webwidget) {
if (WebWidgetHost* host = GetHostForWidget(webwidget))
return host->GetScreenInfo();
return WebScreenInfo();
}
void BrowserWebViewDelegate::SetSmartInsertDeleteEnabled(bool enabled) {
smart_insert_delete_enabled_ = enabled;
// In upstream WebKit, smart insert/delete is mutually exclusive with select
// trailing whitespace, however, we allow both because Chromium on Windows
// allows both.
}
void BrowserWebViewDelegate::SetSelectTrailingWhitespaceEnabled(bool enabled) {
select_trailing_whitespace_enabled_ = enabled;
// In upstream WebKit, smart insert/delete is mutually exclusive with select
// trailing whitespace, however, we allow both because Chromium on Windows
// allows both.
}
void BrowserWebViewDelegate::RegisterDragDrop() { void BrowserWebViewDelegate::RegisterDragDrop() {
#if defined(OS_WIN) #if defined(OS_WIN)
// TODO(port): add me once drag and drop works. // TODO(port): add me once drag and drop works.
@ -520,6 +560,16 @@ void BrowserWebViewDelegate::RegisterDragDrop() {
#endif #endif
} }
void BrowserWebViewDelegate::SetCustomPolicyDelegate(bool is_custom,
bool is_permissive) {
policy_delegate_enabled_ = is_custom;
policy_delegate_is_permissive_ = is_permissive;
}
void BrowserWebViewDelegate::WaitForPolicyDelegate() {
policy_delegate_enabled_ = true;
}
// Private methods ----------------------------------------------------------- // Private methods -----------------------------------------------------------
void BrowserWebViewDelegate::UpdateAddressBar(WebView* webView) { void BrowserWebViewDelegate::UpdateAddressBar(WebView* webView) {
@ -535,8 +585,8 @@ void BrowserWebViewDelegate::UpdateAddressBar(WebView* webView) {
*/ */
} }
void BrowserWebViewDelegate::LocationChangeDone(WebDataSource* data_source) { void BrowserWebViewDelegate::LocationChangeDone(WebFrame* frame) {
if (data_source->GetWebFrame() == top_loading_frame_) if (frame == top_loading_frame_)
top_loading_frame_ = NULL; top_loading_frame_ = NULL;
} }

View File

@ -38,11 +38,18 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
public WebViewDelegate { public WebViewDelegate {
public: public:
BrowserWebViewDelegate(CefBrowserImpl* shell) BrowserWebViewDelegate(CefBrowserImpl* shell)
: is_custom_policy_delegate_(false), : policy_delegate_enabled_(false),
policy_delegate_is_permissive_(false),
browser_(shell), browser_(shell),
top_loading_frame_(NULL), top_loading_frame_(NULL),
page_id_(-1), page_id_(-1),
last_page_id_updated_(-1) last_page_id_updated_(-1),
smart_insert_delete_enabled_(true)
#if defined(OS_WIN)
, select_trailing_whitespace_enabled_(true)
#else
, select_trailing_whitespace_enabled_(false)
#endif
#if defined(OS_LINUX) #if defined(OS_LINUX)
, cursor_type_(GDK_X_CURSOR) , cursor_type_(GDK_X_CURSOR)
#endif #endif
@ -59,6 +66,7 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
const std::string& mime_type, const std::string& mime_type,
const std::string& clsid, const std::string& clsid,
std::string* actual_mime_type); std::string* actual_mime_type);
virtual WebKit::WebWorker* CreateWebWorker(WebKit::WebWorkerClient* client);
virtual void OpenURL(WebView* webview, virtual void OpenURL(WebView* webview,
const GURL& url, const GURL& url,
const GURL& referrer, const GURL& referrer,
@ -78,7 +86,7 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
unsigned int line_no, unsigned int line_no,
const std::wstring& source_id); const std::wstring& source_id);
virtual void StartDragging(WebView* webview, virtual void StartDragging(WebView* webview,
const WebDropData& drop_data); const WebKit::WebDragData& drop_data);
virtual void ShowContextMenu(WebView* webview, virtual void ShowContextMenu(WebView* webview,
ContextNode in_node, ContextNode in_node,
int x, int x,
@ -174,29 +182,36 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
WebNavigationType type, WebNavigationType type,
WindowOpenDisposition disposition, WindowOpenDisposition disposition,
bool is_redirect); bool is_redirect);
void SetCustomPolicyDelegate(bool isCustom);
virtual WebHistoryItem* GetHistoryEntryAtOffset(int offset); virtual WebHistoryItem* GetHistoryEntryAtOffset(int offset);
virtual int GetHistoryBackListCount(); virtual int GetHistoryBackListCount();
virtual int GetHistoryForwardListCount(); virtual int GetHistoryForwardListCount();
// WebWidgetDelegate // WebWidgetDelegate
virtual gfx::NativeViewId GetContainingView(WebWidget* webwidget); virtual gfx::NativeViewId GetContainingView(WebWidget* webwidget);
virtual void DidInvalidateRect(WebWidget* webwidget, const gfx::Rect& rect); virtual void DidInvalidateRect(WebWidget* webwidget,
const WebKit::WebRect& rect);
virtual void DidScrollRect(WebWidget* webwidget, int dx, int dy, virtual void DidScrollRect(WebWidget* webwidget, int dx, int dy,
const gfx::Rect& clip_rect); const WebKit::WebRect& clip_rect);
virtual void Show(WebWidget* webview, WindowOpenDisposition disposition); virtual void Show(WebWidget* webview, WindowOpenDisposition disposition);
virtual void ShowAsPopupWithItems(WebWidget* webwidget,
const WebKit::WebRect& bounds,
int item_height,
int selected_index,
const std::vector<WebMenuItem>& items);
virtual void CloseWidgetSoon(WebWidget* webwidget); virtual void CloseWidgetSoon(WebWidget* webwidget);
virtual void Focus(WebWidget* webwidget); virtual void Focus(WebWidget* webwidget);
virtual void Blur(WebWidget* webwidget); virtual void Blur(WebWidget* webwidget);
virtual void SetCursor(WebWidget* webwidget, virtual void SetCursor(WebWidget* webwidget,
const WebCursor& cursor); const WebCursor& cursor);
virtual void GetWindowRect(WebWidget* webwidget, gfx::Rect* rect); virtual void GetWindowRect(WebWidget* webwidget, WebKit::WebRect* rect);
virtual void SetWindowRect(WebWidget* webwidget, const gfx::Rect& rect); virtual void SetWindowRect(WebWidget* webwidget, const WebKit::WebRect& rect);
virtual void GetRootWindowRect(WebWidget *,gfx::Rect *); virtual void GetRootWindowRect(WebWidget *,WebKit::WebRect *);
virtual void GetRootWindowResizerRect(WebWidget* webwidget, gfx::Rect* rect); virtual void GetRootWindowResizerRect(WebWidget* webwidget,
WebKit::WebRect* rect);
virtual void DidMove(WebWidget* webwidget, const WebPluginGeometry& move); virtual void DidMove(WebWidget* webwidget, const WebPluginGeometry& move);
virtual void RunModal(WebWidget* webwidget); virtual void RunModal(WebWidget* webwidget);
virtual bool IsHidden(); virtual bool IsHidden(WebWidget* webwidget);
virtual WebKit::WebScreenInfo GetScreenInfo(WebWidget* webwidget);
virtual void AddRef() { virtual void AddRef() {
base::RefCounted<BrowserWebViewDelegate>::AddRef(); base::RefCounted<BrowserWebViewDelegate>::AddRef();
} }
@ -205,6 +220,9 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
} }
virtual void TakeFocus(WebView* webview, bool reverse); virtual void TakeFocus(WebView* webview, bool reverse);
void SetSmartInsertDeleteEnabled(bool enabled);
void SetSelectTrailingWhitespaceEnabled(bool enabled);
// Additional accessors // Additional accessors
WebFrame* top_loading_frame() { return top_loading_frame_; } WebFrame* top_loading_frame() { return top_loading_frame_; }
#if defined(OS_WIN) #if defined(OS_WIN)
@ -219,6 +237,9 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
// Sets the webview as a drop target. // Sets the webview as a drop target.
void RegisterDragDrop(); void RegisterDragDrop();
void SetCustomPolicyDelegate(bool is_custom, bool is_permissive);
void WaitForPolicyDelegate();
CefBrowserImpl* GetBrowser() { return browser_; } CefBrowserImpl* GetBrowser() { return browser_; }
protected: protected:
@ -234,7 +255,7 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
// In the Mac code, this is called to trigger the end of a test after the // In the Mac code, this is called to trigger the end of a test after the
// page has finished loading. From here, we can generate the dump for the // page has finished loading. From here, we can generate the dump for the
// test. // test.
void LocationChangeDone(WebDataSource* data_source); void LocationChangeDone(WebFrame*);
WebWidgetHost* GetHostForWidget(WebWidget* webwidget); WebWidgetHost* GetHostForWidget(WebWidget* webwidget);
@ -249,7 +270,11 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
// Causes navigation actions just printout the intended navigation instead // Causes navigation actions just printout the intended navigation instead
// of taking you to the page. This is used for cases like mailto, where you // of taking you to the page. This is used for cases like mailto, where you
// don't actually want to open the mail program. // don't actually want to open the mail program.
bool is_custom_policy_delegate_; bool policy_delegate_enabled_;
// Toggles the behavior of the policy delegate. If true, then navigations
// will be allowed. Otherwise, they will be ignored (dropped).
bool policy_delegate_is_permissive_;
// Non-owning pointer. The delegate is owned by the host. // Non-owning pointer. The delegate is owned by the host.
CefBrowserImpl* browser_; CefBrowserImpl* browser_;
@ -261,6 +286,12 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
int page_id_; int page_id_;
int last_page_id_updated_; int last_page_id_updated_;
// true if we want to enable smart insert/delete.
bool smart_insert_delete_enabled_;
// true if we want to enable selection of trailing whitespaces
bool select_trailing_whitespace_enabled_;
WebCursor current_cursor_; WebCursor current_cursor_;
#if defined(OS_WIN) #if defined(OS_WIN)
// Classes needed by drag and drop. // Classes needed by drag and drop.

View File

@ -26,11 +26,13 @@
#include "base/string_util.h" #include "base/string_util.h"
#include "base/trace_event.h" #include "base/trace_event.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
#include "third_party/WebKit/WebKit/chromium/public/WebRect.h"
#include "webkit/glue/webdatasource.h" #include "webkit/glue/webdatasource.h"
#include "webkit/glue/webdropdata.h" #include "webkit/glue/webdropdata.h"
#include "webkit/glue/weberror.h" #include "webkit/glue/weberror.h"
#include "webkit/glue/webframe.h" #include "webkit/glue/webframe.h"
#include "webkit/glue/webpreferences.h" #include "webkit/glue/webpreferences.h"
#include "webkit/glue/webplugin.h"
#include "webkit/glue/weburlrequest.h" #include "webkit/glue/weburlrequest.h"
#include "webkit/glue/webkit_glue.h" #include "webkit/glue/webkit_glue.h"
#include "webkit/glue/webview.h" #include "webkit/glue/webview.h"
@ -38,6 +40,8 @@
#include "webkit/glue/plugins/webplugin_delegate_impl.h" #include "webkit/glue/plugins/webplugin_delegate_impl.h"
#include "webkit/glue/window_open_disposition.h" #include "webkit/glue/window_open_disposition.h"
using WebKit::WebRect;
// WebViewDelegate ----------------------------------------------------------- // WebViewDelegate -----------------------------------------------------------
BrowserWebViewDelegate::~BrowserWebViewDelegate() { BrowserWebViewDelegate::~BrowserWebViewDelegate() {
@ -80,6 +84,15 @@ void BrowserWebViewDelegate::Show(WebWidget* webwidget, WindowOpenDisposition) {
} }
} }
void BrowserWebViewDelegate::ShowAsPopupWithItems(
WebWidget* webwidget,
const WebRect& bounds,
int item_height,
int selected_index,
const std::vector<WebMenuItem>& items) {
NOTREACHED();
}
void BrowserWebViewDelegate::CloseWidgetSoon(WebWidget* webwidget) { void BrowserWebViewDelegate::CloseWidgetSoon(WebWidget* webwidget) {
if (webwidget == browser_->UIT_GetWebView()) { if (webwidget == browser_->UIT_GetWebView()) {
PostMessage(browser_->UIT_GetMainWndHandle(), WM_CLOSE, 0, 0); PostMessage(browser_->UIT_GetMainWndHandle(), WM_CLOSE, 0, 0);
@ -98,7 +111,7 @@ void BrowserWebViewDelegate::SetCursor(WebWidget* webwidget,
} }
void BrowserWebViewDelegate::GetWindowRect(WebWidget* webwidget, void BrowserWebViewDelegate::GetWindowRect(WebWidget* webwidget,
gfx::Rect* out_rect) { WebRect* out_rect) {
if (WebWidgetHost* host = GetHostForWidget(webwidget)) { if (WebWidgetHost* host = GetHostForWidget(webwidget)) {
RECT rect; RECT rect;
::GetWindowRect(host->window_handle(), &rect); ::GetWindowRect(host->window_handle(), &rect);
@ -107,17 +120,17 @@ void BrowserWebViewDelegate::GetWindowRect(WebWidget* webwidget,
} }
void BrowserWebViewDelegate::SetWindowRect(WebWidget* webwidget, void BrowserWebViewDelegate::SetWindowRect(WebWidget* webwidget,
const gfx::Rect& rect) { const WebRect& rect) {
if (webwidget == browser_->UIT_GetWebView()) { if (webwidget == browser_->UIT_GetWebView()) {
// ignored // ignored
} else if (webwidget == browser_->UIT_GetPopup()) { } else if (webwidget == browser_->UIT_GetPopup()) {
MoveWindow(browser_->UIT_GetPopupWndHandle(), MoveWindow(browser_->UIT_GetPopupWndHandle(),
rect.x(), rect.y(), rect.width(), rect.height(), FALSE); rect.x, rect.y, rect.width, rect.height, FALSE);
} }
} }
void BrowserWebViewDelegate::GetRootWindowRect(WebWidget* webwidget, void BrowserWebViewDelegate::GetRootWindowRect(WebWidget* webwidget,
gfx::Rect* out_rect) { WebRect* out_rect) {
if (WebWidgetHost* host = GetHostForWidget(webwidget)) { if (WebWidgetHost* host = GetHostForWidget(webwidget)) {
RECT rect; RECT rect;
HWND root_window = ::GetAncestor(host->window_handle(), GA_ROOT); HWND root_window = ::GetAncestor(host->window_handle(), GA_ROOT);
@ -127,7 +140,7 @@ void BrowserWebViewDelegate::GetRootWindowRect(WebWidget* webwidget,
} }
void BrowserWebViewDelegate::GetRootWindowResizerRect(WebWidget* webwidget, void BrowserWebViewDelegate::GetRootWindowResizerRect(WebWidget* webwidget,
gfx::Rect* out_rect) { WebRect* out_rect) {
// Not necessary on Windows. // Not necessary on Windows.
*out_rect = gfx::Rect(); *out_rect = gfx::Rect();
} }

View File

@ -142,19 +142,6 @@ void CefContext::UIT_RegisterPlugin(struct CefPluginInfo* plugin_info)
delete plugin_info; delete plugin_info;
} }
StringPiece GetRawDataResource(HMODULE module, int resource_id) {
void* data_ptr;
size_t data_size;
return base::GetDataResourceFromModule(module, resource_id, &data_ptr,
&data_size) ?
StringPiece(static_cast<char*>(data_ptr), data_size) : StringPiece();
}
// This is called indirectly by the network layer to access resources.
StringPiece NetResourceProvider(int key) {
return GetRawDataResource(::GetModuleHandle(NULL), key);
}
bool CefContext::DoInitialize() bool CefContext::DoInitialize()
{ {
HRESULT res; HRESULT res;
@ -189,7 +176,7 @@ bool CefContext::DoInitialize()
} }
// Config the network module so it has access to a limited set of resources. // Config the network module so it has access to a limited set of resources.
net::NetModule::SetResourceProvider(NetResourceProvider); net::NetModule::SetResourceProvider(webkit_glue::NetResourceProvider);
// Load and initialize the stats table. Attempt to construct a somewhat // Load and initialize the stats table. Attempt to construct a somewhat
// unique name to isolate separate instances from each other. // unique name to isolate separate instances from each other.
@ -304,6 +291,11 @@ bool CefContext::Initialize(bool multi_threaded_message_loop,
// Initialize WebKit encodings // Initialize WebKit encodings
webkit_glue::InitializeTextEncoding(); webkit_glue::InitializeTextEncoding();
#ifndef _DEBUG
// Only log error messages and above in release build.
logging::SetMinLogLevel(logging::LOG_ERROR);
#endif
// Initialize web preferences // Initialize web preferences
webprefs_ = new WebPreferences; webprefs_ = new WebPreferences;
*webprefs_ = WebPreferences(); *webprefs_ = WebPreferences();
@ -338,7 +330,7 @@ bool CefContext::Initialize(bool multi_threaded_message_loop,
webprefs_->developer_extras_enabled = true; webprefs_->developer_extras_enabled = true;
webprefs_->shrinks_standalone_images_to_fit = false; webprefs_->shrinks_standalone_images_to_fit = false;
webprefs_->uses_universal_detector = false; webprefs_->uses_universal_detector = false;
webprefs_->text_areas_are_resizable = false; webprefs_->text_areas_are_resizable = true;
webprefs_->java_enabled = true; webprefs_->java_enabled = true;
webprefs_->allow_scripts_to_close_windows = false; webprefs_->allow_scripts_to_close_windows = false;

View File

@ -3,6 +3,6 @@
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8.00"
Name="webkit_common" 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;$(SolutionDir)..\webkit\build\webkit\using_WebKit.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"
> >
</VisualStudioPropertySheet> </VisualStudioPropertySheet>

View File

@ -29,7 +29,6 @@ void PrintSettings::Clear() {
desired_dpi = 72; desired_dpi = 72;
printer_name_.clear(); printer_name_.clear();
device_name_.clear(); device_name_.clear();
page_setup_cmm_.Clear();
page_setup_pixels_.Clear(); page_setup_pixels_.Clear();
dpi_ = 0; dpi_ = 0;
landscape_ = false; landscape_ = false;
@ -46,7 +45,6 @@ void PrintSettings::Init(HDC hdc,
ranges = new_ranges; ranges = new_ranges;
landscape_ = dev_mode.dmOrientation == DMORIENT_LANDSCAPE; landscape_ = dev_mode.dmOrientation == DMORIENT_LANDSCAPE;
int old_dpi = dpi_;
dpi_ = GetDeviceCaps(hdc, LOGPIXELSX); dpi_ = GetDeviceCaps(hdc, LOGPIXELSX);
// No printer device is known to advertise different dpi in X and Y axis; even // No printer device is known to advertise different dpi in X and Y axis; even
// the fax device using the 200x100 dpi setting. It's ought to break so many // the fax device using the 200x100 dpi setting. It's ought to break so many
@ -64,74 +62,30 @@ void PrintSettings::Init(HDC hdc,
GetDeviceCaps(hdc, PHYSICALOFFSETY), GetDeviceCaps(hdc, PHYSICALOFFSETY),
GetDeviceCaps(hdc, HORZRES), GetDeviceCaps(hdc, HORZRES),
GetDeviceCaps(hdc, VERTRES)); GetDeviceCaps(hdc, VERTRES));
// Hard-code text_height = 0.5cm = ~1/5 of inch
page_setup_pixels_.Init(physical_size_pixels, printable_area_pixels,
ConvertUnit(500, kHundrethsMMPerInch, dpi_));
// Initialize page_setup_cmm_. SetPrinterPrintableArea(physical_size_pixels, printable_area_pixels);
// In theory, we should be using HORZSIZE and VERTSIZE but their value is
// so wrong it's useless. So read the values in dpi unit and convert them back
// in 0.01 mm.
gfx::Size physical_size_cmm(
ConvertUnit(physical_size_pixels.width(), dpi_, kHundrethsMMPerInch),
ConvertUnit(physical_size_pixels.height(), dpi_, kHundrethsMMPerInch));
gfx::Rect printable_area_cmm(
ConvertUnit(printable_area_pixels.x(), dpi_, kHundrethsMMPerInch),
ConvertUnit(printable_area_pixels.y(), dpi_, kHundrethsMMPerInch),
ConvertUnit(printable_area_pixels.width(), dpi_, kHundrethsMMPerInch),
ConvertUnit(printable_area_pixels.bottom(), dpi_, kHundrethsMMPerInch));
static const int kRoundingTolerance = 5;
// Some printers may advertise a slightly larger printable area than the
// physical area. This is mostly due to integer calculation and rounding.
if (physical_size_cmm.height() > printable_area_cmm.bottom() &&
physical_size_cmm.height() <= (printable_area_cmm.bottom() +
kRoundingTolerance)) {
physical_size_cmm.set_height(printable_area_cmm.bottom());
}
if (physical_size_cmm.width() > printable_area_cmm.right() &&
physical_size_cmm.width() <= (printable_area_cmm.right() +
kRoundingTolerance)) {
physical_size_cmm.set_width(printable_area_cmm.right());
}
page_setup_cmm_.Init(physical_size_cmm, printable_area_cmm, 500);
} }
#endif #endif
void PrintSettings::UpdateMarginsMetric(const PageMargins& new_margins) { void PrintSettings::SetPrinterPrintableArea(
// Apply the new margins in 0.01 mm unit. gfx::Size const& physical_size_pixels,
page_setup_cmm_.SetRequestedMargins(new_margins); gfx::Rect const& printable_area_pixels) {
// Converts the margins in dpi unit and apply those too. // Start by setting the user configuration
PageMargins pixels_margins; // Hard-code text_height = 0.5cm = ~1/5 of inch
pixels_margins.header = ConvertUnit(new_margins.header, kHundrethsMMPerInch, page_setup_pixels_.Init(physical_size_pixels,
dpi_); printable_area_pixels,
pixels_margins.footer = ConvertUnit(new_margins.footer, kHundrethsMMPerInch, ConvertUnit(500, kHundrethsMMPerInch, dpi_));
dpi_);
pixels_margins.left = ConvertUnit(new_margins.left, kHundrethsMMPerInch,
dpi_);
pixels_margins.top = ConvertUnit(new_margins.top, kHundrethsMMPerInch, dpi_);
pixels_margins.right = ConvertUnit(new_margins.right, kHundrethsMMPerInch,
dpi_);
pixels_margins.bottom = ConvertUnit(new_margins.bottom, kHundrethsMMPerInch,
dpi_);
page_setup_pixels_.SetRequestedMargins(pixels_margins);
}
void PrintSettings::UpdateMarginsMilliInch(const PageMargins& new_margins) { // Now apply user configured settings.
// Convert margins from thousandth inches to cmm (0.01mm). PageMargins margins;
PageMargins cmm_margins; margins.header = 500;
cmm_margins.header = margins.footer = 500;
ConvertMilliInchToHundredThousanthMeter(new_margins.header); margins.left = 500;
cmm_margins.footer = margins.top = 500;
ConvertMilliInchToHundredThousanthMeter(new_margins.footer); margins.right = 500;
cmm_margins.left = ConvertMilliInchToHundredThousanthMeter(new_margins.left); margins.bottom = 500;
cmm_margins.top = ConvertMilliInchToHundredThousanthMeter(new_margins.top); page_setup_pixels_.SetRequestedMargins(margins);
cmm_margins.right =
ConvertMilliInchToHundredThousanthMeter(new_margins.right);
cmm_margins.bottom =
ConvertMilliInchToHundredThousanthMeter(new_margins.bottom);
UpdateMarginsMetric(cmm_margins);
} }
void PrintSettings::RenderParams(PrintParams* params) const { void PrintSettings::RenderParams(PrintParams* params) const {
@ -159,7 +113,6 @@ bool PrintSettings::Equals(const PrintSettings& rhs) const {
desired_dpi == rhs.desired_dpi && desired_dpi == rhs.desired_dpi &&
device_name_ == rhs.device_name_ && device_name_ == rhs.device_name_ &&
page_setup_pixels_.Equals(rhs.page_setup_pixels_) && page_setup_pixels_.Equals(rhs.page_setup_pixels_) &&
page_setup_cmm_.Equals(rhs.page_setup_cmm_) &&
dpi_ == rhs.dpi_ && dpi_ == rhs.dpi_ &&
landscape_ == rhs.landscape_; landscape_ == rhs.landscape_;
} }

View File

@ -62,11 +62,9 @@ class PrintSettings {
const std::wstring& new_device_name); const std::wstring& new_device_name);
#endif #endif
// Sets margins in 0.01 millimeter unit. // Set printer printable area in pixels.
void UpdateMarginsMetric(const PageMargins& new_margins); void SetPrinterPrintableArea(gfx::Size const& physical_size_pixels,
gfx::Rect const& printable_area_pixels);
// Sets margins in thousandth of inch.
void UpdateMarginsMilliInch(const PageMargins& new_margins);
// Initializes the print parameters that needs to be sent to the renderer // Initializes the print parameters that needs to be sent to the renderer
// process. // process.
@ -83,11 +81,10 @@ class PrintSettings {
} }
const std::wstring& device_name() const { return device_name_; } const std::wstring& device_name() const { return device_name_; }
int dpi() const { return dpi_; } int dpi() const { return dpi_; }
const PageSetup& page_setup_cmm() const { return page_setup_cmm_; }
const PageSetup& page_setup_pixels() const { return page_setup_pixels_; } const PageSetup& page_setup_pixels() const { return page_setup_pixels_; }
// Multipage printing. Each PageRange describes a from-to page combinaison. // Multi-page printing. Each PageRange describes a from-to page combination.
// This permits printing some selected pages only. // This permits printing selected pages only.
PageRanges ranges; PageRanges ranges;
// By imaging to a width a little wider than the available pixels, thin pages // By imaging to a width a little wider than the available pixels, thin pages
@ -122,9 +119,6 @@ class PrintSettings {
// Printer device name as opened by the OS. // Printer device name as opened by the OS.
std::wstring device_name_; std::wstring device_name_;
// Page setup in centimillimeter (0.01 mm) units.
PageSetup page_setup_cmm_;
// Page setup in pixel units, dpi adjusted. // Page setup in pixel units, dpi adjusted.
PageSetup page_setup_pixels_; PageSetup page_setup_pixels_;

View File

@ -282,14 +282,6 @@ bool PrintingContext::InitializeSettings(const DEVMODE& dev_mode,
ranges_vector.push_back(range); ranges_vector.push_back(range);
} }
settings_.Init(hdc_, dev_mode, ranges_vector, new_device_name); settings_.Init(hdc_, dev_mode, ranges_vector, new_device_name);
PageMargins margins;
margins.header = 500;
margins.footer = 500;
margins.left = 500;
margins.top = 500;
margins.right = 500;
margins.bottom = 500;
settings_.UpdateMarginsMilliInch(margins);
return true; return true;
} }

View File

@ -373,7 +373,7 @@ void CefPostDataElementImpl::Set(const net::UploadData::Element& element)
std::string(element.bytes().begin(), std::string(element.bytes().begin(),
element.bytes().end()).c_str())); element.bytes().end()).c_str()));
} else if (element.type() == net::UploadData::TYPE_FILE) { } else if (element.type() == net::UploadData::TYPE_FILE) {
SetToFile(element.file_path()); SetToFile(element.file_path().value());
} else { } else {
NOTREACHED(); NOTREACHED();
} }
@ -388,7 +388,7 @@ void CefPostDataElementImpl::Get(net::UploadData::Element& element)
if(type_ == PDE_TYPE_BYTES) { if(type_ == PDE_TYPE_BYTES) {
element.SetToBytes(static_cast<char*>(data_.bytes.bytes), data_.bytes.size); element.SetToBytes(static_cast<char*>(data_.bytes.bytes), data_.bytes.size);
} else if(type_ == PDE_TYPE_FILE) { } else if(type_ == PDE_TYPE_FILE) {
element.SetToFilePath(data_.filename); element.SetToFilePath(FilePath(data_.filename));
} else { } else {
NOTREACHED(); NOTREACHED();
} }

View File

@ -9,7 +9,6 @@
#include "base/gfx/rect.h" #include "base/gfx/rect.h"
#include "base/gfx/size.h" #include "base/gfx/size.h"
#include "base/win_util.h" #include "base/win_util.h"
#include "webkit/glue/webinputevent.h"
#include "webkit/glue/webview.h" #include "webkit/glue/webview.h"
static const wchar_t kWindowClassName[] = L"WebViewHost"; static const wchar_t kWindowClassName[] = L"WebViewHost";

View File

@ -9,9 +9,22 @@
#include "base/gfx/rect.h" #include "base/gfx/rect.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/win_util.h" #include "base/win_util.h"
#include "webkit/glue/webinputevent.h" #include "third_party/WebKit/WebKit/chromium/public/WebInputEvent.h"
#include "third_party/WebKit/WebKit/chromium/public/WebScreenInfo.h"
#include "third_party/WebKit/WebKit/chromium/public/WebSize.h"
#include "third_party/WebKit/WebKit/chromium/public/win/WebInputEventFactory.h"
#include "third_party/WebKit/WebKit/chromium/public/win/WebScreenInfoFactory.h"
#include "webkit/glue/webwidget.h" #include "webkit/glue/webwidget.h"
using WebKit::WebInputEvent;
using WebKit::WebInputEventFactory;
using WebKit::WebKeyboardEvent;
using WebKit::WebMouseEvent;
using WebKit::WebMouseWheelEvent;
using WebKit::WebScreenInfo;
using WebKit::WebScreenInfoFactory;
using WebKit::WebSize;
static const wchar_t kWindowClassName[] = L"WebWidgetHost"; static const wchar_t kWindowClassName[] = L"WebWidgetHost";
/*static*/ /*static*/
@ -56,13 +69,6 @@ LRESULT CALLBACK WebWidgetHost::WndProc(HWND hwnd, UINT message, WPARAM wparam,
WebWidgetHost* host = FromWindow(hwnd); WebWidgetHost* host = FromWindow(hwnd);
if (host && !host->WndProc(message, wparam, lparam)) { if (host && !host->WndProc(message, wparam, lparam)) {
switch (message) { switch (message) {
case WM_DESTROY:
delete host;
break;
case WM_NCDESTROY:
TRACK_HWND_DESTRUCTION(hwnd);
break;
case WM_PAINT: { case WM_PAINT: {
RECT rect; RECT rect;
if (GetUpdateRect(hwnd, &rect, FALSE)) { if (GetUpdateRect(hwnd, &rect, FALSE)) {
@ -267,23 +273,28 @@ void WebWidgetHost::Paint() {
UpdateWindow(view_); UpdateWindow(view_);
} }
WebScreenInfo WebWidgetHost::GetScreenInfo() {
return WebScreenInfoFactory::screenInfo(view_);
}
void WebWidgetHost::Resize(LPARAM lparam) { void WebWidgetHost::Resize(LPARAM lparam) {
// Force an entire re-paint. TODO(darin): Maybe reuse this memory buffer. // Force an entire re-paint. TODO(darin): Maybe reuse this memory buffer.
DiscardBackingStore(); DiscardBackingStore();
webwidget_->Resize(gfx::Size(LOWORD(lparam), HIWORD(lparam))); webwidget_->Resize(WebSize(LOWORD(lparam), HIWORD(lparam)));
} }
void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) { void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) {
WebMouseEvent event(view_, message, wparam, lparam); const WebMouseEvent& event = WebInputEventFactory::mouseEvent(
view_, message, wparam, lparam);
switch (event.type) { switch (event.type) {
case WebInputEvent::MOUSE_MOVE: case WebInputEvent::MouseMove:
TrackMouseLeave(true); TrackMouseLeave(true);
break; break;
case WebInputEvent::MOUSE_LEAVE: case WebInputEvent::MouseLeave:
TrackMouseLeave(false); TrackMouseLeave(false);
break; break;
case WebInputEvent::MOUSE_DOWN: case WebInputEvent::MouseDown:
SetCapture(view_); SetCapture(view_);
// This mimics a temporary workaround in RenderWidgetHostViewWin // This mimics a temporary workaround in RenderWidgetHostViewWin
// for bug 765011 to get focus when the mouse is clicked. This // for bug 765011 to get focus when the mouse is clicked. This
@ -291,7 +302,7 @@ void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) {
// because normally Windows does a WM_SETFOCUS after WM_LBUTTONDOWN. // because normally Windows does a WM_SETFOCUS after WM_LBUTTONDOWN.
::SetFocus(view_); ::SetFocus(view_);
break; break;
case WebInputEvent::MOUSE_UP: case WebInputEvent::MouseUp:
if (GetCapture() == view_) if (GetCapture() == view_)
ReleaseCapture(); ReleaseCapture();
break; break;
@ -300,12 +311,14 @@ void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) {
} }
void WebWidgetHost::WheelEvent(WPARAM wparam, LPARAM lparam) { void WebWidgetHost::WheelEvent(WPARAM wparam, LPARAM lparam) {
WebMouseWheelEvent event(view_, WM_MOUSEWHEEL, wparam, lparam); const WebMouseWheelEvent& event = WebInputEventFactory::mouseWheelEvent(
view_, WM_MOUSEWHEEL, wparam, lparam);
webwidget_->HandleInputEvent(&event); webwidget_->HandleInputEvent(&event);
} }
void WebWidgetHost::KeyEvent(UINT message, WPARAM wparam, LPARAM lparam) { void WebWidgetHost::KeyEvent(UINT message, WPARAM wparam, LPARAM lparam) {
WebKeyboardEvent event(view_, message, wparam, lparam); const WebKeyboardEvent& event = WebInputEventFactory::keyboardEvent(
view_, message, wparam, lparam);
webwidget_->HandleInputEvent(&event); webwidget_->HandleInputEvent(&event);
} }

View File

@ -18,6 +18,10 @@ namespace gfx {
class Size; class Size;
} }
namespace WebKit {
struct WebScreenInfo;
}
// This class is a simple ViewHandle-based host for a WebWidget // This class is a simple ViewHandle-based host for a WebWidget
class WebWidgetHost { class WebWidgetHost {
public: public:
@ -46,6 +50,10 @@ class WebWidgetHost {
void UpdatePaintRect(const gfx::Rect& rect); void UpdatePaintRect(const gfx::Rect& rect);
void Paint(); void Paint();
skia::PlatformCanvas* canvas() const { return canvas_.get(); }
WebKit::WebScreenInfo GetScreenInfo();
protected: protected:
WebWidgetHost(); WebWidgetHost();
~WebWidgetHost(); ~WebWidgetHost();

View File

@ -355,6 +355,22 @@
> >
</File> </File>
</Filter> </Filter>
<Filter
Name="resources"
>
<File
RelativePath=".\libcef_dll.rc"
>
</File>
<File
RelativePath="$(OutDir)\grit_derived_sources\webkit_resources.rc"
>
</File>
<File
RelativePath="$(OutDir)\grit_derived_sources\webkit_strings_en-US.rc"
>
</File>
</Filter>
<File <File
RelativePath=".\cef_string.c" RelativePath=".\cef_string.c"
> >
@ -383,10 +399,6 @@
RelativePath=".\libcef_dll.cc" RelativePath=".\libcef_dll.cc"
> >
</File> </File>
<File
RelativePath=".\libcef_dll.rc"
>
</File>
<File <File
RelativePath=".\precompiled_libcef.cc" RelativePath=".\precompiled_libcef.cc"
> >