libcef: Update due to underlying chromium changes.

- Canvas classes moved from gfx namespace to skia namespace.
- Include files moved from WebKit/port to third_party/WebKit.
- Add IsMediaPlayerAvailable() webkit_glue function.
- WebWidgetDelegate::GetContainingWindow() changed to WebWidgetDelegate::GetContainingView().
- Changed HCURSOR to WebCursor and HWND to gfx::NativeWindow.
- WebPluginInfo 'file' member changed to 'path'.
- Use base::LazyInstance for static object in BrowserPluginInstance (should be done at some point for BrowserPluginLib and BrowserPluginList as well).
- BrowserPluginStream::Open() adds additional 'request_is_seekable' parameter.
- Add PLUGIN_QUIRK_PATCH_SETCURSOR support to BrowserWebPluginDelegateImpl.

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@6 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2009-01-14 19:54:37 +00:00
parent a08ad505ad
commit 8dab71f659
24 changed files with 293 additions and 198 deletions

View File

@ -11,3 +11,4 @@ Date | CEF Revision | Chromium Revision
2008-12-05 | /trunk@3 | /trunk@6430
2008-12-13 | /trunk@4 | /trunk@6968
2008-12-13 | /trunk@5 | /trunk@6975
2009-01-14 | /trunk@6 | /trunk@8029

153
cef.sln
View File

@ -12,11 +12,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCore", "..\webkit\build\
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
{6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9} = {6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203}
{4BD929D4-494B-4EE8-91F6-FD0277A51D2B} = {4BD929D4-494B-4EE8-91F6-FD0277A51D2B}
{31D88CBF-DC28-47A8-8838-BF81D528EE74} = {31D88CBF-DC28-47A8-8838-BF81D528EE74}
{4BD929D4-494B-4EE8-91F6-FD0277A51D2B} = {4BD929D4-494B-4EE8-91F6-FD0277A51D2B}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203}
{6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9} = {6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9}
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Port", "..\webkit\build\port\port.vcproj", "{5597AD47-3494-4750-A235-4F9C2F864700}"
@ -25,8 +25,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Port", "..\webkit\build\por
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203}
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Glue", "..\webkit\build\glue\glue.vcproj", "{C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09}"
@ -36,9 +36,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Glue", "..\webkit\build\glu
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
{60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E}
{1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}
{0B469837-3D46-484A-AFB3-C5A6C68730B9} = {0B469837-3D46-484A-AFB3-C5A6C68730B9}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203}
{1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}
{60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "skia", "..\skia\skia.vcproj", "{CD9CA56E-4E94-444C-87D4-58CA1E6F300D}"
@ -134,8 +135,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxslt", "..\third_party\l
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7} = {F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7}
{4BD929D4-494B-4EE8-91F6-FD0277A51D2B} = {4BD929D4-494B-4EE8-91F6-FD0277A51D2B}
{F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7} = {F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "V8Bindings", "..\webkit\build\V8Bindings\V8Bindings.vcproj", "{625A8F11-2B4E-45B4-BD99-C6D629C606C0}"
@ -144,8 +145,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "V8Bindings", "..\webkit\bui
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203}
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bzip2", "..\third_party\bzip2\bzip2.vcproj", "{2A70CBF0-847E-4E3A-B926-542A656DC7FE}"
@ -160,28 +161,29 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef", "libcef\libcef.vcp
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{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}
{326E9795-E760-410A-B69A-3F79DB3F5243} = {326E9795-E760-410A-B69A-3F79DB3F5243}
{2A70CBF0-847E-4E3A-B926-542A656DC7FE} = {2A70CBF0-847E-4E3A-B926-542A656DC7FE}
{238CE175-76CE-4A25-A676-69D115885601} = {238CE175-76CE-4A25-A676-69D115885601}
{1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}
{238CE175-76CE-4A25-A676-69D115885601} = {238CE175-76CE-4A25-A676-69D115885601}
{2A70CBF0-847E-4E3A-B926-542A656DC7FE} = {2A70CBF0-847E-4E3A-B926-542A656DC7FE}
{326E9795-E760-410A-B69A-3F79DB3F5243} = {326E9795-E760-410A-B69A-3F79DB3F5243}
{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}
{1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165}
EndProjectSection
EndProject
@ -209,8 +211,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "activex_shim", "..\webkit\a
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C}
{8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308}
{EF5E94AB-B646-4E5B-A058-52EF07B8351C} = {EF5E94AB-B646-4E5B-A058-52EF07B8351C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "..\net\build\net.vcproj", "{326E9795-E760-410A-B69A-3F79DB3F5243}"
@ -219,6 +221,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "..\net\build\net.vcp
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
{E13045CD-7E1F-4A41-9B18-8D288B2E7B41} = {E13045CD-7E1F-4A41-9B18-8D288B2E7B41}
EndProjectSection
EndProject
@ -267,8 +270,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "default_plugin", "..\webkit
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{31D88CBF-DC28-47A8-8838-BF81D528EE74} = {31D88CBF-DC28-47A8-8838-BF81D528EE74}
{60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E}
{31D88CBF-DC28-47A8-8838-BF81D528EE74} = {31D88CBF-DC28-47A8-8838-BF81D528EE74}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore_pcre", "..\webkit\build\JavaScriptCore\JavaScriptCore_pcre.vcproj", "{49909552-0B0C-4C14-8CF6-DB8A2ADE0934}"
@ -316,9 +319,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tld_cleanup", "..\net\build
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{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}
{8C27D792-2648-4F5E-9ED0-374276327308} = {8C27D792-2648-4F5E-9ED0-374276327308}
{1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "v8_mksnapshot", "..\v8\tools\visual_studio\v8_mksnapshot.vcproj", "{865575D0-37E2-405E-8CBA-5F6C485B5A26}"
@ -363,33 +366,33 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cefclient", "tests\cefclien
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{EC8B7909-62AF-470D-A75D-E1D89C837142} = {EC8B7909-62AF-470D-A75D-E1D89C837142}
{8423AF0D-4B88-4EBF-94E1-E4D00D00E21C} = {8423AF0D-4B88-4EBF-94E1-E4D00D00E21C}
{625A8F11-2B4E-45B4-BD99-C6D629C606C0} = {625A8F11-2B4E-45B4-BD99-C6D629C606C0}
{7100F41F-868D-4E99-80A2-AF8E6574749D} = {7100F41F-868D-4E99-80A2-AF8E6574749D}
{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}
{6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9} = {6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9}
{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}
{FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} = {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED}
{A508ADD3-CECE-4E0F-8448-2F5E454DF551} = {A508ADD3-CECE-4E0F-8448-2F5E454DF551}
{2A70CBF0-847E-4E3A-B926-542A656DC7FE} = {2A70CBF0-847E-4E3A-B926-542A656DC7FE}
{A508ADD3-CECE-4E0F-8448-2F5E454DF551} = {A508ADD3-CECE-4E0F-8448-2F5E454DF551}
{FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED} = {FC0E1FD0-5DD7-4041-A1C9-CD3C376E4EED}
{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}
{6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9} = {6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9}
{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}
{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}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icudt", "..\third_party\icu38\build\icudt.vcproj", "{A0D94973-D355-47A5-A1E2-3456F321F010}"
@ -398,6 +401,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icudt", "..\third_party\icu
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net_resources", "..\net\build\net_resources.vcproj", "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "webkit_resources", "..\webkit\build\webkit_resources\webkit_resources.vcproj", "{0B469837-3D46-484A-AFB3-C5A6C68730B9}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Mixed Platforms = Debug|Mixed Platforms
@ -701,6 +716,22 @@ Global
{A0D94973-D355-47A5-A1E2-3456F321F010}.Release|Mixed Platforms.Build.0 = Release|Win32
{A0D94973-D355-47A5-A1E2-3456F321F010}.Release|Win32.ActiveCfg = Release|Win32
{A0D94973-D355-47A5-A1E2-3456F321F010}.Release|Win32.Build.0 = Release|Win32
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Debug|Win32.ActiveCfg = Debug|Win32
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Debug|Win32.Build.0 = Debug|Win32
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Release|Mixed Platforms.Build.0 = Release|Win32
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Release|Win32.ActiveCfg = Release|Win32
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Release|Win32.Build.0 = Release|Win32
{0B469837-3D46-484A-AFB3-C5A6C68730B9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{0B469837-3D46-484A-AFB3-C5A6C68730B9}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0B469837-3D46-484A-AFB3-C5A6C68730B9}.Debug|Win32.ActiveCfg = Debug|Win32
{0B469837-3D46-484A-AFB3-C5A6C68730B9}.Debug|Win32.Build.0 = Debug|Win32
{0B469837-3D46-484A-AFB3-C5A6C68730B9}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{0B469837-3D46-484A-AFB3-C5A6C68730B9}.Release|Mixed Platforms.Build.0 = Release|Win32
{0B469837-3D46-484A-AFB3-C5A6C68730B9}.Release|Win32.ActiveCfg = Release|Win32
{0B469837-3D46-484A-AFB3-C5A6C68730B9}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -717,6 +748,7 @@ Global
{5916D37D-8C97-424F-A904-74E52594C2D6} = {CB43561E-A6F8-49E2-96A2-3F2BA1FFF21E}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {CB43561E-A6F8-49E2-96A2-3F2BA1FFF21E}
{60B43839-95E6-4526-A661-209F16335E0E} = {CB43561E-A6F8-49E2-96A2-3F2BA1FFF21E}
{0B469837-3D46-484A-AFB3-C5A6C68730B9} = {CB43561E-A6F8-49E2-96A2-3F2BA1FFF21E}
{6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9} = {EF78C1F9-AA17-4CA5-B6CB-39B37A73A3DA}
{CD9CA56E-4E94-444C-87D4-58CA1E6F300D} = {EF78C1F9-AA17-4CA5-B6CB-39B37A73A3DA}
{1AFC1EC3-24FA-4260-B099-76319EC9977A} = {EF78C1F9-AA17-4CA5-B6CB-39B37A73A3DA}
@ -733,6 +765,7 @@ Global
{1832A374-8A74-4F9E-B536-69A699B3E165} = {EF78C1F9-AA17-4CA5-B6CB-39B37A73A3DA}
{A508ADD3-CECE-4E0F-8448-2F5E454DF551} = {EF78C1F9-AA17-4CA5-B6CB-39B37A73A3DA}
{F54ABC59-5C00-414A-A9BA-BAF26D1699F0} = {EF78C1F9-AA17-4CA5-B6CB-39B37A73A3DA}
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} = {EF78C1F9-AA17-4CA5-B6CB-39B37A73A3DA}
{8C27D792-2648-4F5E-9ED0-374276327308} = {1AFC1EC3-24FA-4260-B099-76319EC9977A}
{A0D94973-D355-47A5-A1E2-3456F321F010} = {1AFC1EC3-24FA-4260-B099-76319EC9977A}
{B55CA863-B374-4BAF-95AC-539E4FA4C90C} = {873D095E-150E-4262-8C41-2D8ED02F0F57}

View File

@ -606,7 +606,7 @@ void CefBrowserImpl::UIT_PrintPage(int page_number, WebFrame* frame,
DCHECK_NE(saved_state, 0);
// 100% GDI based.
gfx::VectorCanvas canvas(hDC, (int)ceil(dest_size_x), (int)ceil(dest_size_y));
skia::VectorCanvas canvas(hDC, (int)ceil(dest_size_x), (int)ceil(dest_size_y));
canvas.translate(SkDoubleToScalar(dest_margin),
SkDoubleToScalar(dest_margin));
canvas.scale(SkDoubleToScalar((dest_size_x - dest_margin * 2) / src_size_x),

View File

@ -24,11 +24,16 @@ MSVC_POP_WARNING();
#include "webkit/glue/glue_util.h"
#include "webkit/glue/webframe.h"
#include "webkit/glue/webkit_glue.h"
#include "webkit/glue/webkit_resources.h"
// Generated by GRIT
#include "webkit_resources.h"
namespace webkit_glue {
bool IsMediaPlayerAvailable() {
return true;
}
void PrefetchDns(const std::string& hostname) {}
void PrecacheUrl(const char16* url, int url_length) {}
@ -127,6 +132,10 @@ bool SpellCheckWord(const wchar_t* word, int word_len,
return true;
}
ScreenInfo GetScreenInfo(gfx::NativeView window) {
return GetScreenInfoHelper(window);
}
bool IsPluginRunningInRendererProcess() {
return true;
}

View File

@ -59,49 +59,45 @@ bool DownloadUrl(const std::string& url, HWND caller_window) {
return false;
}
ScreenInfo GetScreenInfo(gfx::NativeView window) {
return GetScreenInfoHelper(window);
}
void CaptureWebViewBitmap(HWND mainWnd, WebView* webview, HBITMAP& bitmap, SIZE& size)
{
gfx::Size webSize = webview->GetSize();
size.cx = webSize.width();
size.cy = webSize.height();
gfx::PlatformCanvasWin canvas(size.cx, size.cy, true);
canvas.drawARGB(255, 255, 255, 255, SkPorterDuff::kSrc_Mode);
PlatformContextSkia context(&canvas);
gfx::Rect rect(size.cx, size.cy);
webview->Layout();
webview->Paint(&canvas, rect);
gfx::Size webSize = webview->GetSize();
size.cx = webSize.width();
size.cy = webSize.height();
skia::PlatformCanvasWin canvas(size.cx, size.cy, true);
canvas.drawARGB(255, 255, 255, 255, SkPorterDuff::kSrc_Mode);
PlatformContextSkia context(&canvas);
gfx::Rect rect(size.cx, size.cy);
webview->Layout();
webview->Paint(&canvas, rect);
HDC hRefDC = GetDC(mainWnd);
HDC hDC = CreateCompatibleDC(hRefDC);
bitmap = CreateCompatibleBitmap(hRefDC, size.cx, size.cy);
DCHECK(bitmap != NULL);
HBITMAP hOldBmp = (HBITMAP)SelectObject(hDC, bitmap);
// Create a BMP v4 header that we can serialize.
BITMAPV4HEADER bitmap_header;
gfx::CreateBitmapV4Header(size.cx, size.cy, &bitmap_header);
const SkBitmap& src_bmp = canvas.getDevice()->accessBitmap(true);
SkAutoLockPixels src_lock(src_bmp);
HDC hRefDC = GetDC(mainWnd);
HDC hDC = CreateCompatibleDC(hRefDC);
bitmap = CreateCompatibleBitmap(hRefDC, size.cx, size.cy);
DCHECK(bitmap != NULL);
HBITMAP hOldBmp = (HBITMAP)SelectObject(hDC, bitmap);
// Create a BMP v4 header that we can serialize.
BITMAPV4HEADER bitmap_header;
gfx::CreateBitmapV4Header(size.cx, size.cy, &bitmap_header);
const SkBitmap& src_bmp = canvas.getDevice()->accessBitmap(true);
SkAutoLockPixels src_lock(src_bmp);
int retval = StretchDIBits(hDC,
0,
0,
size.cx, size.cy,
0, 0,
size.cx, size.cy,
src_bmp.getPixels(),
reinterpret_cast<BITMAPINFO*>(&bitmap_header),
DIB_RGB_COLORS,
SRCCOPY);
DCHECK(retval != GDI_ERROR);
0,
0,
size.cx, size.cy,
0, 0,
size.cx, size.cy,
src_bmp.getPixels(),
reinterpret_cast<BITMAPINFO*>(&bitmap_header),
DIB_RGB_COLORS,
SRCCOPY);
DCHECK(retval != GDI_ERROR);
SelectObject(hDC, hOldBmp);
DeleteDC(hDC);
ReleaseDC(mainWnd, hRefDC);
SelectObject(hDC, hOldBmp);
DeleteDC(hDC);
ReleaseDC(mainWnd, hRefDC);
}
@ -216,10 +212,10 @@ static BOOL BmpSaveFile(LPCTSTR pszFile, PBITMAPINFO pbi, HBITMAP hBMP,
FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
if (hf == INVALID_HANDLE_VALUE) {
// Could not create the bitmap file
// Could not create the bitmap file
NOTREACHED();
goto end;
}
}
hdr.bfType = 0x4d42; // 0x42 = "B", 0x4d = "M"
@ -256,7 +252,7 @@ static BOOL BmpSaveFile(LPCTSTR pszFile, PBITMAPINFO pbi, HBITMAP hBMP,
dwTotal = cb = pbih->biSizeImage;
hp = lpBits;
if (!WriteFile(hf, (LPSTR) hp, (int) cb, (LPDWORD) &dwTmp,NULL)) {
// Could not write bitmap data to file
// Could not write bitmap data to file
NOTREACHED();
goto end;
}

View File

@ -47,20 +47,20 @@ int next_page_id_ = 1;
// WebViewDelegate -----------------------------------------------------------
WebView* BrowserWebViewDelegate::CreateWebView(WebView* webview,
bool user_gesture) {
bool user_gesture) {
CefRefPtr<CefBrowserImpl> browser =
browser_->UIT_CreatePopupWindow(std::wstring());
return browser.get() ? browser->UIT_GetWebView() : NULL;
}
WebWidget* BrowserWebViewDelegate::CreatePopupWidget(WebView* webview,
bool focus_on_show) {
bool activatable) {
return browser_->UIT_CreatePopupWidget(webview);
}
void BrowserWebViewDelegate::OpenURL(WebView* webview, const GURL& url,
const GURL& referrer,
WindowOpenDisposition disposition) {
const GURL& referrer,
WindowOpenDisposition disposition) {
DCHECK_NE(disposition, CURRENT_TAB); // No code for this
if (disposition == SUPPRESS_OPEN)
return;
@ -468,7 +468,7 @@ void BrowserWebViewDelegate::SetUserStyleSheetLocation(const GURL& location) {
// WebWidgetDelegate ---------------------------------------------------------
gfx::NativeView BrowserWebViewDelegate::GetContainingWindow(WebWidget* webwidget) {
gfx::NativeView BrowserWebViewDelegate::GetContainingView(WebWidget* webwidget) {
if (WebWidgetHost* host = GetHostForWidget(webwidget))
return host->window_handle();

View File

@ -20,6 +20,7 @@
#include "base/basictypes.h"
#include "base/ref_counted.h"
#include "webkit/glue/webcursor.h"
#include "webkit/glue/webview_delegate.h"
#include "webkit/glue/webwidget_delegate.h"
#if defined(OS_WIN)
@ -42,9 +43,7 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
top_loading_frame_(NULL),
page_id_(-1),
last_page_id_updated_(-1)
#if defined(OS_WIN)
, custom_cursor_(NULL)
#elif defined(OS_LINUX)
#if defined(OS_LINUX)
, cursor_type_(GDK_X_CURSOR)
#endif
{
@ -53,7 +52,7 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
// WebViewDelegate
virtual WebView* CreateWebView(WebView* webview, bool user_gesture);
virtual WebWidget* CreatePopupWidget(WebView* webview, bool focus_on_show);
virtual WebWidget* CreatePopupWidget(WebView* webview, bool activatable);
virtual WebPluginDelegate* CreatePluginDelegate(
WebView* webview,
const GURL& url,
@ -179,7 +178,7 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
virtual int GetHistoryForwardListCount();
// WebWidgetDelegate
virtual gfx::NativeView GetContainingWindow(WebWidget* webwidget);
virtual gfx::NativeView GetContainingView(WebWidget* webwidget);
virtual void DidInvalidateRect(WebWidget* webwidget, const gfx::Rect& rect);
virtual void DidScrollRect(WebWidget* webwidget, int dx, int dy,
const gfx::Rect& clip_rect);
@ -259,9 +258,8 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
int page_id_;
int last_page_id_updated_;
WebCursor current_cursor_;
#if defined(OS_WIN)
HCURSOR custom_cursor_;
// Classes needed by drag and drop.
scoped_refptr<BrowserDragDelegate> drag_delegate_;
scoped_refptr<BrowserDropDelegate> drop_delegate_;

View File

@ -41,8 +41,6 @@
// WebViewDelegate -----------------------------------------------------------
BrowserWebViewDelegate::~BrowserWebViewDelegate() {
if (custom_cursor_)
DestroyIcon(custom_cursor_);
RevokeDragDrop(browser_->UIT_GetWebViewWndHandle());
}
@ -52,7 +50,7 @@ WebPluginDelegate* BrowserWebViewDelegate::CreatePluginDelegate(
const std::string& mime_type,
const std::string& clsid,
std::string* actual_mime_type) {
HWND hwnd = GetContainingWindow(webview);
HWND hwnd = GetContainingView(webview);
if (!hwnd)
return NULL;
@ -64,9 +62,9 @@ WebPluginDelegate* BrowserWebViewDelegate::CreatePluginDelegate(
allow_wildcard, &info,
actual_mime_type)) {
if (actual_mime_type && !actual_mime_type->empty())
return WebPluginDelegateImpl::Create(info.file, *actual_mime_type, hwnd);
return WebPluginDelegateImpl::Create(info.path, *actual_mime_type, hwnd);
else
return WebPluginDelegateImpl::Create(info.file, mime_type, hwnd);
return WebPluginDelegateImpl::Create(info.path, mime_type, hwnd);
}
// second, look for plugins using the embedded plugin list
@ -107,17 +105,9 @@ void BrowserWebViewDelegate::CloseWidgetSoon(WebWidget* webwidget) {
void BrowserWebViewDelegate::SetCursor(WebWidget* webwidget,
const WebCursor& cursor) {
if (WebWidgetHost* host = GetHostForWidget(webwidget)) {
if (custom_cursor_) {
DestroyIcon(custom_cursor_);
custom_cursor_ = NULL;
}
if (cursor.IsCustom()) {
custom_cursor_ = cursor.GetCustomCursor();
host->SetCursor(custom_cursor_);
} else {
HINSTANCE mod_handle = GetModuleHandle(NULL);
host->SetCursor(cursor.GetCursor(mod_handle));
}
current_cursor_ = cursor;
HINSTANCE mod_handle = GetModuleHandle(NULL);
host->SetCursor(current_cursor_.GetCursor(mod_handle));
}
}

View File

@ -7,7 +7,7 @@
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;$(OutDir)\WebKit&quot;;&quot;$(SolutionDir)&quot;;&quot;$(IntDir)\..\localized_strings&quot;;&quot;$(SolutionDir)..\webkit\port\bridge&quot;;&quot;$(SolutionDir)..\webkit\port\platform&quot;;&quot;$(SolutionDir)..\webkit\port\platform\network&quot;;&quot;$(SolutionDir)..\webkit\glue&quot;;&quot;$(SolutionDir)..\third_party\webkit\src\&quot;;&quot;$(OutDir)\obj\WebCore\JavaScriptHeaders&quot;;&quot;$(OutDir)&quot;"
AdditionalIncludeDirectories="&quot;$(OutDir)\WebKit&quot;;&quot;$(OutDir)\grit_derived_sources&quot;;&quot;$(SolutionDir)&quot;;&quot;$(IntDir)\..\localized_strings&quot;;&quot;$(SolutionDir)..\webkit\port\bridge&quot;;&quot;$(SolutionDir)..\webkit\port\platform&quot;;&quot;$(SolutionDir)..\webkit\port\platform\network&quot;;&quot;$(SolutionDir)..\webkit\glue&quot;;&quot;$(SolutionDir)..\third_party\webkit\src\&quot;;&quot;$(OutDir)\obj\WebCore\JavaScriptHeaders&quot;;&quot;$(OutDir)&quot;"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
/>
<Tool

View File

@ -6,6 +6,6 @@
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;$(OutDir)\obj\WebCore&quot;;&quot;$(OutDir)\obj\WebCore\JavaScriptHeaders&quot;;&quot;$(OutDir)\obj\WebCore\JavaScriptHeaders\JavaScriptCore&quot;;&quot;$(SolutionDir)..\webkit\pending\&quot;;&quot;$(SolutionDir)..\webkit\pending\kjs&quot;;&quot;$(SolutionDir)..\webkit\pending\wtf&quot;;&quot;$(SolutionDir)..\webkit\port\bridge&quot;;&quot;$(SolutionDir)..\webkit\port\css&quot;;&quot;$(SolutionDir)..\webkit\port\dom&quot;;&quot;$(SolutionDir)..\webkit\port\history&quot;;&quot;$(SolutionDir)..\webkit\port\loader&quot;;&quot;$(SolutionDir)..\webkit\port\page&quot;;&quot;$(SolutionDir)..\webkit\port\page\chromium&quot;;&quot;$(SolutionDir)..\webkit\port\page\win&quot;;&quot;$(SolutionDir)..\webkit\port\platform&quot;;&quot;$(SolutionDir)..\webkit\port\platform\chromium&quot;;&quot;$(SolutionDir)..\webkit\port\platform\win&quot;;&quot;$(SolutionDir)..\webkit\port\platform\network\chromium&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\bmp&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\gif&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\ico&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\jpeg&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\png&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\xbm&quot;;&quot;$(SolutionDir)..\webkit\port\platform\network&quot;;&quot;$(SolutionDir)..\webkit\port\plugins&quot;;&quot;$(SolutionDir)..\webkit\port\rendering&quot;;&quot;$(SolutionDir)..\webkit\port\platform\graphics&quot;;&quot;$(SolutionDir)..\webkit\port\platform\graphics\chromium&quot;;&quot;$(SolutionDir)..\webkit\port\platform\graphics\skia&quot;;&quot;$(SolutionDir)..\webkit&quot;;&quot;$(SolutionDir)..\webkit\build&quot;;&quot;$(ProjectDir)&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\bridge&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\bridge\c&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\css&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\dom&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\editing&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\history&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\html&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\loader&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\loader\appcache&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\loader\archive&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\loader\icon&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\page&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\page\animation&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\text&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\graphics&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\svg\graphics&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\network&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\sql&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\rendering&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\rendering\style&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\storage&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\xml&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\os-win32&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\wtf&quot;;&quot;$(SolutionDir)..\third_party\WebKit\JavaScriptCore&quot;;&quot;$(SolutionDir)..\third_party\WebKit\JavaScriptCore\wtf&quot;;&quot;$(SolutionDir)..\third_party\WebKit\JavaScriptCore\os-win32&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\svg&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\svg\animation&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\svg\graphics\filters&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\plugins&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\inspector&quot;;&quot;$(SolutionDir)..\third_party\sqlite&quot;;&quot;$(SDKIncludes)&quot;;&quot;$(IntDir)\..\WebCore\DerivedSources&quot;;"
AdditionalIncludeDirectories="&quot;$(OutDir)\obj\WebCore&quot;;&quot;$(OutDir)\obj\WebCore\JavaScriptHeaders&quot;;&quot;$(OutDir)\obj\WebCore\JavaScriptHeaders\JavaScriptCore&quot;;&quot;$(SolutionDir)..\webkit\pending\&quot;;&quot;$(SolutionDir)..\webkit\port\platform&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\bmp&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\gif&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\ico&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\jpeg&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\png&quot;;&quot;$(SolutionDir)..\webkit\port\platform\image-decoders\xbm&quot;;&quot;$(SolutionDir)..\webkit&quot;;&quot;$(SolutionDir)..\webkit\build&quot;;&quot;$(ProjectDir)&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\bridge&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\bridge\c&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\css&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\dom&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\editing&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\history&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\html&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\loader&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\loader\appcache&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\loader\archive&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\loader\icon&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\page&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\page\animation&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\text&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\graphics&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\svg\graphics&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\network&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\sql&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\rendering&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\rendering\style&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\storage&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\xml&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\os-win32&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\wtf&quot;;&quot;$(SolutionDir)..\third_party\WebKit\JavaScriptCore&quot;;&quot;$(SolutionDir)..\third_party\WebKit\JavaScriptCore\wtf&quot;;&quot;$(SolutionDir)..\third_party\WebKit\JavaScriptCore\os-win32&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\svg&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\svg\animation&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\svg\graphics\filters&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\plugins&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\inspector&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\chromium&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\graphics\skia&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\network\chromium&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\animation&quot;;&quot;$(SolutionDir)..\third_party\WebKit\WebCore\platform\graphics\transforms&quot;;&quot;$(SolutionDir)..\third_party\sqlite&quot;;&quot;$(SDKIncludes)&quot;;&quot;$(IntDir)\..\WebCore\DerivedSources&quot;;"
/>
</VisualStudioPropertySheet>

View File

@ -13,20 +13,23 @@
#endif
#include "base/file_util.h"
#include "base/lazy_instance.h"
#include "base/message_loop.h"
#include "base/string_util.h"
#include "base/thread_local_storage.h"
#include "base/thread_local.h"
#include "webkit/glue/glue_util.h"
#include "webkit/glue/webplugin.h"
#include "webkit/glue/webkit_glue.h"
#include "webkit/glue/plugins/plugin_host.h"
#include "net/base/escape.h"
namespace NPAPI
{
namespace NPAPI {
// TODO(evanm): don't rely on static initialization.
ThreadLocalStorage::Slot BrowserPluginInstance::plugin_instance_tls_index_;
// Use TLS to store the PluginInstance object during its creation. We need to
// pass this instance to the service manager (MozillaExtensionApi) created as a
// result of NPN_GetValue in the context of NP_Initialize.
static base::LazyInstance<base::ThreadLocalPointer<BrowserPluginInstance> >
lazy_tls(base::LINKER_INITIALIZED);
BrowserPluginInstance::BrowserPluginInstance(BrowserPluginLib *plugin,
const std::string &mime_type)
@ -287,7 +290,7 @@ void BrowserPluginInstance::NPP_StreamAsFile(NPStream *stream,
// Creating a temporary FilePath instance on the stack as the explicit
// FilePath constructor with StringType as an argument causes a compiler
// error when invoked via vector push back.
FilePath file_name(UTF8ToWide(fname));
FilePath file_name = FilePath::FromWStringHack(UTF8ToWide(fname));
files_created_.push_back(file_name);
}
@ -373,7 +376,7 @@ void BrowserPluginInstance::DidReceiveManualResponse(const std::string& url,
plugin_data_stream_ = CreateStream(-1, url, mime_type, false, NULL);
plugin_data_stream_->DidReceiveResponse(mime_type, headers, expected_length,
last_modified, &cancel);
last_modified, true, &cancel);
AddStream(plugin_data_stream_.get());
}
@ -427,16 +430,13 @@ void BrowserPluginInstance::OnPluginThreadAsyncCall(void (*func)(void *),
BrowserPluginInstance* BrowserPluginInstance::SetInitializingInstance(
BrowserPluginInstance* instance) {
BrowserPluginInstance* old_instance =
static_cast<BrowserPluginInstance*>(plugin_instance_tls_index_.Get());
plugin_instance_tls_index_.Set(instance);
BrowserPluginInstance* old_instance = lazy_tls.Pointer()->Get();
lazy_tls.Pointer()->Set(instance);
return old_instance;
}
BrowserPluginInstance* BrowserPluginInstance::GetInitializingInstance() {
BrowserPluginInstance* instance =
static_cast<BrowserPluginInstance*>(plugin_instance_tls_index_.Get());
return instance;
return lazy_tls.Pointer()->Get();
}
NPError BrowserPluginInstance::GetServiceManager(void** service_manager) {

View File

@ -17,7 +17,6 @@
#include "base/file_path.h"
#include "base/ref_counted.h"
#include "base/scoped_ptr.h"
#include "base/thread_local_storage.h"
#include "webkit/glue/plugins/nphostapi.h"
#include "googleurl/src/gurl.h"
#include "third_party/npapi/bindings/npapi.h"
@ -237,11 +236,6 @@ class BrowserPluginInstance : public base::RefCountedThreadSafe<BrowserPluginIns
scoped_refptr<BrowserMozillaExtensionApi> mozilla_extenstions_;
#endif
MessageLoop* message_loop_;
// Using TLS to store BrowserPluginInstance object during its creation.
// We need to pass this instance to the service manager
// (MozillaExtensionApi) created as a result of NPN_GetValue
// in the context of NP_Initialize.
static ThreadLocalStorage::Slot plugin_instance_tls_index_;
scoped_refptr<BrowserPluginStreamUrl> plugin_data_stream_;
GURL instance_url_;

View File

@ -48,7 +48,7 @@ BrowserPluginLib::BrowserPluginLib(WebPluginInfo* info,
instance_count_(0) {
memset((void*)&plugin_funcs_, 0, sizeof(plugin_funcs_));
(*loaded_libs_)[info->file] = this;
(*loaded_libs_)[info->path.BaseName().value()] = this;
}
BrowserPluginLib::~BrowserPluginLib() {
@ -121,7 +121,7 @@ void BrowserPluginLib::CloseInstance() {
if (instance_count_ == 0) {
NP_Shutdown();
initialized_ = false;
loaded_libs_->erase(web_plugin_info_->file);
loaded_libs_->erase(web_plugin_info_->path.BaseName().value());
if (loaded_libs_->empty()) {
delete loaded_libs_;
loaded_libs_ = NULL;
@ -145,7 +145,7 @@ WebPluginInfo* BrowserPluginLib::CreateWebPluginInfo(const CefPluginVersionInfo&
info->name = plugin_info.product_name;
info->desc = plugin_info.description;
info->version = plugin_info.version;
info->file = StringToLowerASCII(plugin_info.unique_name);
info->path = FilePath(plugin_info.unique_name);
for (size_t i = 0; i < mime_types.size(); ++i) {
WebPluginMimeType mime_type;

View File

@ -61,7 +61,8 @@ void BrowserPluginList::RemovePlugin(const struct CefPluginInfo& plugin_info)
{
PluginList::iterator it = plugins_.begin();
for(; it != plugins_.end(); ++it) {
if((*it)->web_plugin_info().file == plugin_info.version_info.unique_name) {
if((*it)->web_plugin_info().path.BaseName().value() ==
plugin_info.version_info.unique_name) {
plugins_.erase(it);
}
}

View File

@ -27,7 +27,8 @@ BrowserPluginStream::~BrowserPluginStream() {
bool BrowserPluginStream::Open(const std::string &mime_type,
const std::string &headers,
uint32 length,
uint32 last_modified) {
uint32 last_modified,
bool request_is_seekable) {
headers_ = headers;
NPP id = instance_->npp();
stream_.end = length;
@ -37,7 +38,7 @@ bool BrowserPluginStream::Open(const std::string &mime_type,
stream_.notifyData = notify_data_;
bool seekable_stream = false;
if (!headers_.empty()) {
if (request_is_seekable && !headers_.empty()) {
stream_.headers = headers_.c_str();
if (headers_.find("Accept-Ranges: bytes") != std::string::npos) {
seekable_stream = true;

View File

@ -40,10 +40,13 @@ class BrowserPluginStream : public base::RefCounted<BrowserPluginStream> {
// mime-types table and the extension (if any) in the URL.
// If the size of the stream is known, use length to set the size. If
// not known, set length to 0.
// The request_is_seekable parameter indicates whether byte range requests
// can be issued on the stream.
bool Open(const std::string &mime_type,
const std::string &headers,
uint32 length,
uint32 last_modified);
uint32 last_modified,
bool request_is_seekable);
// Writes to the stream.
int Write(const char *buf, const int len, int data_offset);

View File

@ -43,11 +43,13 @@ void BrowserPluginStreamUrl::DidReceiveResponse(const std::string& mime_type,
const std::string& headers,
uint32 expected_length,
uint32 last_modified,
bool request_is_seekable,
bool* cancel) {
bool opened = Open(mime_type,
headers,
expected_length,
last_modified);
last_modified,
request_is_seekable);
if (!opened) {
instance()->RemoveStream(this);
*cancel = true;

View File

@ -49,11 +49,14 @@ class BrowserPluginStreamUrl : public BrowserPluginStream,
const std::string& headers,
uint32 expected_length,
uint32 last_modified,
bool request_is_seekable,
bool* cancel);
void DidReceiveData(const char* buffer, int length, int data_offset);
void DidFinishLoading();
void DidFail();
bool IsMultiByteResponseExpected() {
return seekable();
}
private:
GURL url_;

View File

@ -22,7 +22,7 @@ BrowserPluginStringStream::~BrowserPluginStringStream() {
void BrowserPluginStringStream::SendToPlugin(const std::string &data,
const std::string &mime_type) {
int length = static_cast<int>(data.length());
if (Open(mime_type, std::string(), length, 0)) {
if (Open(mime_type, std::string(), length, 0, false)) {
// TODO - check if it was not fully sent, and figure out a backup plan.
int written = Write(data.c_str(), length, 0);
NPReason reason = written == length ? NPRES_DONE : NPRES_NETWORK_ERR;

View File

@ -50,13 +50,13 @@ std::list<MSG> BrowserWebPluginDelegateImpl::throttle_queue_;
BrowserWebPluginDelegateImpl* BrowserWebPluginDelegateImpl::current_plugin_instance_ = NULL;
bool BrowserWebPluginDelegateImpl::track_popup_menu_patched_ = false;
iat_patch::IATPatchFunction BrowserWebPluginDelegateImpl::iat_patch_helper_;
iat_patch::IATPatchFunction BrowserWebPluginDelegateImpl::iat_patch_track_popup_menu_;
iat_patch::IATPatchFunction BrowserWebPluginDelegateImpl::iat_patch_set_cursor_;
BrowserWebPluginDelegateImpl* BrowserWebPluginDelegateImpl::Create(
const struct CefPluginInfo& plugin_info,
const std::string& mime_type,
HWND containing_window) {
gfx::NativeView containing_view) {
scoped_refptr<NPAPI::BrowserPluginLib> plugin =
NPAPI::BrowserPluginLib::GetOrCreatePluginLib(plugin_info);
@ -69,7 +69,7 @@ BrowserWebPluginDelegateImpl* BrowserWebPluginDelegateImpl::Create(
scoped_refptr<NPAPI::BrowserPluginInstance> instance =
plugin->CreateInstance(mime_type);
return new BrowserWebPluginDelegateImpl(containing_window, instance.get());
return new BrowserWebPluginDelegateImpl(containing_view, instance.get());
}
bool BrowserWebPluginDelegateImpl::IsPluginDelegateWindow(HWND window) {
@ -124,9 +124,9 @@ LRESULT CALLBACK BrowserWebPluginDelegateImpl::HandleEventMessageFilterHook(
}
BrowserWebPluginDelegateImpl::BrowserWebPluginDelegateImpl(
HWND containing_window,
gfx::NativeView containing_view,
NPAPI::BrowserPluginInstance *instance)
: parent_(containing_window),
: parent_(containing_view),
instance_(instance),
quirks_(0),
plugin_(NULL),
@ -149,7 +149,8 @@ BrowserWebPluginDelegateImpl::BrowserWebPluginDelegateImpl(
memset(&window_, 0, sizeof(window_));
const WebPluginInfo& plugin_info = instance_->plugin_lib()->web_plugin_info();
std::wstring unique_name = file_util::GetFilenameFromPath(plugin_info.file);
std::wstring unique_name =
StringToLowerASCII(plugin_info.path.BaseName().value());
// Assign quirks here if required
@ -229,12 +230,24 @@ bool BrowserWebPluginDelegateImpl::Initialize(const GURL& url,
// lives on the browser thread. Our workaround is to intercept the
// TrackPopupMenu API for Silverlight and replace the window handle
// with the dummy activation window.
if (windowless_ && !track_popup_menu_patched_ &&
if (windowless_ && !iat_patch_track_popup_menu_.is_patched() &&
(quirks_ & PLUGIN_QUIRK_PATCH_TRACKPOPUP_MENU)) {
iat_patch_helper_.Patch(plugin_module_handle_, "user32.dll",
"TrackPopupMenu",
BrowserWebPluginDelegateImpl::TrackPopupMenuPatch);
track_popup_menu_patched_ = true;
iat_patch_track_popup_menu_.Patch(
plugin_module_handle_, "user32.dll", "TrackPopupMenu",
BrowserWebPluginDelegateImpl::TrackPopupMenuPatch);
}
// Windowless plugins can set cursors by calling the SetCursor API. This
// works because the thread inputs of the browser UI thread and the plugin
// thread are attached. We intercept the SetCursor API for windowless plugins
// and remember the cursor being set. This is shipped over to the browser
// in the HandleEvent call, which ensures that the cursor does not change
// when a windowless plugin instance changes the cursor in a background tab.
if (windowless_ && !iat_patch_set_cursor_.is_patched() &&
(quirks_ & PLUGIN_QUIRK_PATCH_SETCURSOR)) {
iat_patch_set_cursor_.Patch(plugin_module_handle_, "user32.dll",
"SetCursor",
BrowserWebPluginDelegateImpl::SetCursorPatch);
}
return true;
}
@ -253,6 +266,19 @@ void BrowserWebPluginDelegateImpl::DestroyInstance() {
}
instance_->NPP_Destroy();
if (instance_->plugin_lib()) {
// Unpatch if this is the last plugin instance.
if (instance_->plugin_lib()->instance_count() == 1) {
if (iat_patch_set_cursor_.is_patched()) {
iat_patch_set_cursor_.Unpatch();
}
if (iat_patch_track_popup_menu_.is_patched()) {
iat_patch_track_popup_menu_.Unpatch();
}
}
}
instance_->set_web_plugin(NULL);
instance_ = 0;
@ -333,8 +359,8 @@ void BrowserWebPluginDelegateImpl::DidManualLoadFail() {
instance()->DidManualLoadFail();
}
std::wstring BrowserWebPluginDelegateImpl::GetPluginPath() {
return instance_->plugin_lib()->web_plugin_info().file;
FilePath BrowserWebPluginDelegateImpl::GetPluginPath() {
return instance_->plugin_lib()->web_plugin_info().path;
}
void BrowserWebPluginDelegateImpl::InstallMissingPlugin() {
@ -767,6 +793,8 @@ LRESULT CALLBACK BrowserWebPluginDelegateImpl::NativeWndProc(
return TRUE;
}
current_plugin_instance_ = delegate;
switch (message) {
case WM_NCDESTROY: {
RemoveProp(hwnd, kWebPluginDelegateProperty);
@ -784,6 +812,7 @@ LRESULT CALLBACK BrowserWebPluginDelegateImpl::NativeWndProc(
if (delegate->quirks() & PLUGIN_QUIRK_THROTTLE_WM_USER_PLUS_ONE) {
BrowserWebPluginDelegateImpl::ThrottleMessage(
delegate->plugin_wnd_proc_, hwnd, message, wparam, lparam);
current_plugin_instance_ = NULL;
return FALSE;
}
break;
@ -810,6 +839,7 @@ LRESULT CALLBACK BrowserWebPluginDelegateImpl::NativeWndProc(
LRESULT result = CallWindowProc(delegate->plugin_wnd_proc_, hwnd, message,
wparam, lparam);
delegate->is_calling_wndproc = false;
current_plugin_instance_ = NULL;
return result;
}
@ -964,12 +994,11 @@ bool BrowserWebPluginDelegateImpl::HandleEvent(NPEvent* event,
bool ret = instance()->NPP_HandleEvent(event) != 0;
// Snag a reference to the current cursor ASAP in case the plugin modified
// it. There is a nasty race condition here with the multiprocess browser
// as someone might be setting the cursor in the main process as well.
HCURSOR last_cursor;
if (WM_MOUSEMOVE == event->event) {
last_cursor = ::GetCursor();
if (event->event == WM_MOUSEMOVE) {
// Snag a reference to the current cursor ASAP in case the plugin modified
// it. There is a nasty race condition here with the multiprocess browser
// as someone might be setting the cursor in the main process as well.
*cursor = current_windowless_cursor_;
}
if (pop_user_gesture) {
@ -998,10 +1027,6 @@ bool BrowserWebPluginDelegateImpl::HandleEvent(NPEvent* event,
::SetFocus(prev_focus_window);
}
if (WM_MOUSEMOVE == event->event) {
cursor->InitFromCursor(last_cursor);
}
return ret;
}
@ -1090,3 +1115,25 @@ BOOL WINAPI BrowserWebPluginDelegateImpl::TrackPopupMenuPatch(
}
return TrackPopupMenu(menu, flags, x, y, reserved, window, rect);
}
HCURSOR WINAPI BrowserWebPluginDelegateImpl::SetCursorPatch(HCURSOR cursor) {
// The windowless flash plugin periodically calls SetCursor in a wndproc
// instantiated on the plugin thread. This causes annoying cursor flicker
// when the mouse is moved on a foreground tab, with a windowless plugin
// instance in a background tab. We just ignore the call here.
if (!current_plugin_instance_)
return GetCursor();
if (!current_plugin_instance_->windowless()) {
return SetCursor(cursor);
}
// It is ok to pass NULL here to GetCursor as we are not looking for cursor
// types defined by Webkit.
HCURSOR previous_cursor =
current_plugin_instance_->current_windowless_cursor_.GetCursor(NULL);
current_plugin_instance_->current_windowless_cursor_.InitFromExternalCursor(
cursor);
return previous_cursor;
}

View File

@ -11,11 +11,13 @@
#include "browser_plugin_lib.h"
#include "base/file_path.h"
#include "base/gfx/native_widget_types.h"
#include "base/iat_patch.h"
#include "base/ref_counted.h"
#include "base/task.h"
#include "webkit/glue/webplugin_delegate.h"
#include "third_party/npapi/bindings/npapi.h"
#include "webkit/glue/webplugin_delegate.h"
#include "webkit/glue/webcursor.h"
namespace NPAPI {
@ -28,7 +30,7 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
public:
static BrowserWebPluginDelegateImpl* Create(const struct CefPluginInfo& plugin_info,
const std::string& mime_type,
HWND containing_window);
gfx::NativeView containing_view);
static bool IsPluginDelegateWindow(HWND window);
static bool GetPluginNameFromWindow(HWND window, std::wstring *plugin_name);
@ -72,7 +74,7 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
virtual void DidReceiveManualData(const char* buffer, int length);
virtual void DidFinishManualLoading();
virtual void DidManualLoadFail();
virtual std::wstring GetPluginPath();
virtual FilePath GetPluginPath();
virtual void InstallMissingPlugin();
virtual WebPluginResourceClient* CreateResourceClient(int resource_id,
const std::string &url,
@ -94,6 +96,7 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
PLUGIN_QUIRK_DONT_ALLOW_MULTIPLE_INSTANCES = 16,
PLUGIN_QUIRK_DIE_AFTER_UNLOAD = 32,
PLUGIN_QUIRK_PATCH_TRACKPOPUP_MENU = 64,
PLUGIN_QUIRK_PATCH_SETCURSOR = 128,
};
int quirks() { return quirks_; }
@ -105,7 +108,7 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
bool visible);
private:
BrowserWebPluginDelegateImpl(HWND containing_window,
BrowserWebPluginDelegateImpl(gfx::NativeView containing_view,
NPAPI::BrowserPluginInstance *instance);
~BrowserWebPluginDelegateImpl();
@ -265,11 +268,8 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
// The plugin module handle.
HMODULE plugin_module_handle_;
// Indicates whether we IAT patched the TrackPopupMenu function.
static bool track_popup_menu_patched_;
// Helper object for patching the import table of Silverlight.
static iat_patch::IATPatchFunction iat_patch_helper_;
// Helper object for patching the TrackPopupMenu API
static iat_patch::IATPatchFunction iat_patch_track_popup_menu_;
// TrackPopupMenu interceptor. Parameters are the same as the Win32 function
// TrackPopupMenu.
@ -277,6 +277,15 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
int y, int reserved, HWND window,
const RECT* rect);
// SetCursor interceptor for windowless plugins.
static HCURSOR WINAPI SetCursorPatch(HCURSOR cursor);
// Helper object for patching the SetCursor API
static iat_patch::IATPatchFunction iat_patch_set_cursor_;
// Holds the current cursor set by the windowless plugin.
WebCursor current_windowless_cursor_;
DISALLOW_EVIL_CONSTRUCTORS(BrowserWebPluginDelegateImpl);
};

View File

@ -252,7 +252,7 @@ bool PrintingContext::InitializeSettings(const DEVMODE& dev_mode,
const std::wstring& new_device_name,
const PRINTPAGERANGE* ranges,
int number_ranges) {
gfx::PlatformDeviceWin::InitializeDC(hdc_);
skia::PlatformDeviceWin::InitializeDC(hdc_);
DCHECK(GetDeviceCaps(hdc_, CLIPCAPS));
DCHECK(GetDeviceCaps(hdc_, RASTERCAPS) & RC_STRETCHDIB);
DCHECK(GetDeviceCaps(hdc_, RASTERCAPS) & RC_BITMAP64);

View File

@ -213,7 +213,7 @@ void WebWidgetHost::Paint() {
if (!canvas_.get()) {
ResetScrollRect();
paint_rect_ = client_rect;
canvas_.reset(new gfx::PlatformCanvas(
canvas_.reset(new skia::PlatformCanvas(
paint_rect_.width(), paint_rect_.height(), true));
}
@ -285,6 +285,14 @@ void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) {
break;
}
webwidget_->HandleInputEvent(&event);
if (event.type == WebInputEvent::MOUSE_DOWN) {
// This mimics a temporary workaround in RenderWidgetHostViewWin
// for bug 765011 to get focus when the mouse is clicked. This
// happens after the mouse down event is sent to the renderer
// because normally Windows does a WM_SETFOCUS after WM_LBUTTONDOWN.
::SetFocus(view_);
}
}
void WebWidgetHost::WheelEvent(WPARAM wparam, LPARAM lparam) {

View File

@ -100,7 +100,7 @@ class WebWidgetHost {
gfx::NativeView view_;
WebWidget* webwidget_;
scoped_ptr<gfx::PlatformCanvas> canvas_;
scoped_ptr<skia::PlatformCanvas> canvas_;
// specifies the portion of the webwidget that needs painting
gfx::Rect paint_rect_;