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-05 | /trunk@3 | /trunk@6430
2008-12-13 | /trunk@4 | /trunk@6968 2008-12-13 | /trunk@4 | /trunk@6968
2008-12-13 | /trunk@5 | /trunk@6975 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" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
ProjectSection(ProjectDependencies) = postProject 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} {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 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}"
@ -25,8 +25,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Port", "..\webkit\build\por
Release.AspNetCompiler.Debug = "False" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
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}") = "Glue", "..\webkit\build\glue\glue.vcproj", "{C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09}" 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 EndProjectSection
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673} {2E2D3301-2EC4-4C0F-B889-87073B30F673} = {2E2D3301-2EC4-4C0F-B889-87073B30F673}
{60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E} {0B469837-3D46-484A-AFB3-C5A6C68730B9} = {0B469837-3D46-484A-AFB3-C5A6C68730B9}
{1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {2F7EDFA2-EE27-4D83-8454-9EFBD5779203} {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 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}"
@ -134,8 +135,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxslt", "..\third_party\l
Release.AspNetCompiler.Debug = "False" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7} = {F9810DE8-CBC3-4605-A7B1-ECA2D5292FD7}
{4BD929D4-494B-4EE8-91F6-FD0277A51D2B} = {4BD929D4-494B-4EE8-91F6-FD0277A51D2B} {4BD929D4-494B-4EE8-91F6-FD0277A51D2B} = {4BD929D4-494B-4EE8-91F6-FD0277A51D2B}
{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}"
@ -144,8 +145,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "V8Bindings", "..\webkit\bui
Release.AspNetCompiler.Debug = "False" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
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}") = "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}"
@ -160,28 +161,29 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcef", "libcef\libcef.vcp
Release.AspNetCompiler.Debug = "False" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
ProjectSection(ProjectDependencies) = postProject 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} {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} {1832A374-8A74-4F9E-B536-69A699B3E165} = {1832A374-8A74-4F9E-B536-69A699B3E165}
EndProjectSection EndProjectSection
EndProject EndProject
@ -209,8 +211,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "activex_shim", "..\webkit\a
Release.AspNetCompiler.Debug = "False" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
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} {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}") = "net", "..\net\build\net.vcproj", "{326E9795-E760-410A-B69A-3F79DB3F5243}" 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" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
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}
EndProjectSection EndProjectSection
EndProject EndProject
@ -267,8 +270,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "default_plugin", "..\webkit
Release.AspNetCompiler.Debug = "False" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{31D88CBF-DC28-47A8-8838-BF81D528EE74} = {31D88CBF-DC28-47A8-8838-BF81D528EE74}
{60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E} {60B43839-95E6-4526-A661-209F16335E0E} = {60B43839-95E6-4526-A661-209F16335E0E}
{31D88CBF-DC28-47A8-8838-BF81D528EE74} = {31D88CBF-DC28-47A8-8838-BF81D528EE74}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore_pcre", "..\webkit\build\JavaScriptCore\JavaScriptCore_pcre.vcproj", "{49909552-0B0C-4C14-8CF6-DB8A2ADE0934}" 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" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
ProjectSection(ProjectDependencies) = postProject 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} {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 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}"
@ -363,33 +366,33 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cefclient", "tests\cefclien
Release.AspNetCompiler.Debug = "False" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
ProjectSection(ProjectDependencies) = postProject 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} {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 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}"
@ -398,6 +401,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icudt", "..\third_party\icu
Release.AspNetCompiler.Debug = "False" Release.AspNetCompiler.Debug = "False"
EndProjectSection EndProjectSection
EndProject 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 Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Mixed Platforms = Debug|Mixed Platforms 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|Mixed Platforms.Build.0 = Release|Win32
{A0D94973-D355-47A5-A1E2-3456F321F010}.Release|Win32.ActiveCfg = Release|Win32 {A0D94973-D355-47A5-A1E2-3456F321F010}.Release|Win32.ActiveCfg = Release|Win32
{A0D94973-D355-47A5-A1E2-3456F321F010}.Release|Win32.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -717,6 +748,7 @@ Global
{5916D37D-8C97-424F-A904-74E52594C2D6} = {CB43561E-A6F8-49E2-96A2-3F2BA1FFF21E} {5916D37D-8C97-424F-A904-74E52594C2D6} = {CB43561E-A6F8-49E2-96A2-3F2BA1FFF21E}
{2F7EDFA2-EE27-4D83-8454-9EFBD5779203} = {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} {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} {6EAD4A4B-2BBC-4974-8E45-BB5C16CC2AC9} = {EF78C1F9-AA17-4CA5-B6CB-39B37A73A3DA}
{CD9CA56E-4E94-444C-87D4-58CA1E6F300D} = {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} {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} {1832A374-8A74-4F9E-B536-69A699B3E165} = {EF78C1F9-AA17-4CA5-B6CB-39B37A73A3DA}
{A508ADD3-CECE-4E0F-8448-2F5E454DF551} = {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} {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} {8C27D792-2648-4F5E-9ED0-374276327308} = {1AFC1EC3-24FA-4260-B099-76319EC9977A}
{A0D94973-D355-47A5-A1E2-3456F321F010} = {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} {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); DCHECK_NE(saved_state, 0);
// 100% GDI based. // 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), canvas.translate(SkDoubleToScalar(dest_margin),
SkDoubleToScalar(dest_margin)); SkDoubleToScalar(dest_margin));
canvas.scale(SkDoubleToScalar((dest_size_x - dest_margin * 2) / src_size_x), 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/glue_util.h"
#include "webkit/glue/webframe.h" #include "webkit/glue/webframe.h"
#include "webkit/glue/webkit_glue.h" #include "webkit/glue/webkit_glue.h"
#include "webkit/glue/webkit_resources.h"
// Generated by GRIT
#include "webkit_resources.h"
namespace webkit_glue { namespace webkit_glue {
bool IsMediaPlayerAvailable() {
return true;
}
void PrefetchDns(const std::string& hostname) {} void PrefetchDns(const std::string& hostname) {}
void PrecacheUrl(const char16* url, int url_length) {} void PrecacheUrl(const char16* url, int url_length) {}
@ -127,6 +132,10 @@ 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;
} }

View File

@ -59,17 +59,13 @@ bool DownloadUrl(const std::string& url, HWND caller_window) {
return false; return false;
} }
ScreenInfo GetScreenInfo(gfx::NativeView window) {
return GetScreenInfoHelper(window);
}
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(); gfx::Size webSize = webview->GetSize();
size.cx = webSize.width(); size.cx = webSize.width();
size.cy = webSize.height(); size.cy = webSize.height();
gfx::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); gfx::Rect rect(size.cx, size.cy);

View File

@ -54,7 +54,7 @@ WebView* BrowserWebViewDelegate::CreateWebView(WebView* webview,
} }
WebWidget* BrowserWebViewDelegate::CreatePopupWidget(WebView* webview, WebWidget* BrowserWebViewDelegate::CreatePopupWidget(WebView* webview,
bool focus_on_show) { bool activatable) {
return browser_->UIT_CreatePopupWidget(webview); return browser_->UIT_CreatePopupWidget(webview);
} }
@ -468,7 +468,7 @@ void BrowserWebViewDelegate::SetUserStyleSheetLocation(const GURL& location) {
// WebWidgetDelegate --------------------------------------------------------- // WebWidgetDelegate ---------------------------------------------------------
gfx::NativeView BrowserWebViewDelegate::GetContainingWindow(WebWidget* webwidget) { gfx::NativeView BrowserWebViewDelegate::GetContainingView(WebWidget* webwidget) {
if (WebWidgetHost* host = GetHostForWidget(webwidget)) if (WebWidgetHost* host = GetHostForWidget(webwidget))
return host->window_handle(); return host->window_handle();

View File

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

View File

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

View File

@ -7,7 +7,7 @@
> >
<Tool <Tool
Name="VCCLCompilerTool" 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" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
/> />
<Tool <Tool

View File

@ -6,6 +6,6 @@
> >
<Tool <Tool
Name="VCCLCompilerTool" 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> </VisualStudioPropertySheet>

View File

@ -13,20 +13,23 @@
#endif #endif
#include "base/file_util.h" #include "base/file_util.h"
#include "base/lazy_instance.h"
#include "base/message_loop.h" #include "base/message_loop.h"
#include "base/string_util.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/glue_util.h"
#include "webkit/glue/webplugin.h" #include "webkit/glue/webplugin.h"
#include "webkit/glue/webkit_glue.h" #include "webkit/glue/webkit_glue.h"
#include "webkit/glue/plugins/plugin_host.h" #include "webkit/glue/plugins/plugin_host.h"
#include "net/base/escape.h" #include "net/base/escape.h"
namespace NPAPI namespace NPAPI {
{
// TODO(evanm): don't rely on static initialization. // Use TLS to store the PluginInstance object during its creation. We need to
ThreadLocalStorage::Slot BrowserPluginInstance::plugin_instance_tls_index_; // 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, BrowserPluginInstance::BrowserPluginInstance(BrowserPluginLib *plugin,
const std::string &mime_type) 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 // Creating a temporary FilePath instance on the stack as the explicit
// FilePath constructor with StringType as an argument causes a compiler // FilePath constructor with StringType as an argument causes a compiler
// error when invoked via vector push back. // 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); 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_ = CreateStream(-1, url, mime_type, false, NULL);
plugin_data_stream_->DidReceiveResponse(mime_type, headers, expected_length, plugin_data_stream_->DidReceiveResponse(mime_type, headers, expected_length,
last_modified, &cancel); last_modified, true, &cancel);
AddStream(plugin_data_stream_.get()); AddStream(plugin_data_stream_.get());
} }
@ -427,16 +430,13 @@ void BrowserPluginInstance::OnPluginThreadAsyncCall(void (*func)(void *),
BrowserPluginInstance* BrowserPluginInstance::SetInitializingInstance( BrowserPluginInstance* BrowserPluginInstance::SetInitializingInstance(
BrowserPluginInstance* instance) { BrowserPluginInstance* instance) {
BrowserPluginInstance* old_instance = BrowserPluginInstance* old_instance = lazy_tls.Pointer()->Get();
static_cast<BrowserPluginInstance*>(plugin_instance_tls_index_.Get()); lazy_tls.Pointer()->Set(instance);
plugin_instance_tls_index_.Set(instance);
return old_instance; return old_instance;
} }
BrowserPluginInstance* BrowserPluginInstance::GetInitializingInstance() { BrowserPluginInstance* BrowserPluginInstance::GetInitializingInstance() {
BrowserPluginInstance* instance = return lazy_tls.Pointer()->Get();
static_cast<BrowserPluginInstance*>(plugin_instance_tls_index_.Get());
return instance;
} }
NPError BrowserPluginInstance::GetServiceManager(void** service_manager) { NPError BrowserPluginInstance::GetServiceManager(void** service_manager) {

View File

@ -17,7 +17,6 @@
#include "base/file_path.h" #include "base/file_path.h"
#include "base/ref_counted.h" #include "base/ref_counted.h"
#include "base/scoped_ptr.h" #include "base/scoped_ptr.h"
#include "base/thread_local_storage.h"
#include "webkit/glue/plugins/nphostapi.h" #include "webkit/glue/plugins/nphostapi.h"
#include "googleurl/src/gurl.h" #include "googleurl/src/gurl.h"
#include "third_party/npapi/bindings/npapi.h" #include "third_party/npapi/bindings/npapi.h"
@ -237,11 +236,6 @@ class BrowserPluginInstance : public base::RefCountedThreadSafe<BrowserPluginIns
scoped_refptr<BrowserMozillaExtensionApi> mozilla_extenstions_; scoped_refptr<BrowserMozillaExtensionApi> mozilla_extenstions_;
#endif #endif
MessageLoop* message_loop_; 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_; scoped_refptr<BrowserPluginStreamUrl> plugin_data_stream_;
GURL instance_url_; GURL instance_url_;

View File

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

View File

@ -61,7 +61,8 @@ void BrowserPluginList::RemovePlugin(const struct CefPluginInfo& plugin_info)
{ {
PluginList::iterator it = plugins_.begin(); PluginList::iterator it = plugins_.begin();
for(; it != plugins_.end(); ++it) { 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); plugins_.erase(it);
} }
} }

View File

@ -27,7 +27,8 @@ BrowserPluginStream::~BrowserPluginStream() {
bool BrowserPluginStream::Open(const std::string &mime_type, bool BrowserPluginStream::Open(const std::string &mime_type,
const std::string &headers, const std::string &headers,
uint32 length, uint32 length,
uint32 last_modified) { uint32 last_modified,
bool request_is_seekable) {
headers_ = headers; headers_ = headers;
NPP id = instance_->npp(); NPP id = instance_->npp();
stream_.end = length; stream_.end = length;
@ -37,7 +38,7 @@ bool BrowserPluginStream::Open(const std::string &mime_type,
stream_.notifyData = notify_data_; stream_.notifyData = notify_data_;
bool seekable_stream = false; bool seekable_stream = false;
if (!headers_.empty()) { if (request_is_seekable && !headers_.empty()) {
stream_.headers = headers_.c_str(); stream_.headers = headers_.c_str();
if (headers_.find("Accept-Ranges: bytes") != std::string::npos) { if (headers_.find("Accept-Ranges: bytes") != std::string::npos) {
seekable_stream = true; 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. // 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 // If the size of the stream is known, use length to set the size. If
// not known, set length to 0. // 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, bool Open(const std::string &mime_type,
const std::string &headers, const std::string &headers,
uint32 length, uint32 length,
uint32 last_modified); uint32 last_modified,
bool request_is_seekable);
// Writes to the stream. // Writes to the stream.
int Write(const char *buf, const int len, int data_offset); 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, const std::string& headers,
uint32 expected_length, uint32 expected_length,
uint32 last_modified, uint32 last_modified,
bool request_is_seekable,
bool* cancel) { bool* cancel) {
bool opened = Open(mime_type, bool opened = Open(mime_type,
headers, headers,
expected_length, expected_length,
last_modified); last_modified,
request_is_seekable);
if (!opened) { if (!opened) {
instance()->RemoveStream(this); instance()->RemoveStream(this);
*cancel = true; *cancel = true;

View File

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

View File

@ -22,7 +22,7 @@ BrowserPluginStringStream::~BrowserPluginStringStream() {
void BrowserPluginStringStream::SendToPlugin(const std::string &data, void BrowserPluginStringStream::SendToPlugin(const std::string &data,
const std::string &mime_type) { const std::string &mime_type) {
int length = static_cast<int>(data.length()); 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. // TODO - check if it was not fully sent, and figure out a backup plan.
int written = Write(data.c_str(), length, 0); int written = Write(data.c_str(), length, 0);
NPReason reason = written == length ? NPRES_DONE : NPRES_NETWORK_ERR; 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; BrowserWebPluginDelegateImpl* BrowserWebPluginDelegateImpl::current_plugin_instance_ = NULL;
bool BrowserWebPluginDelegateImpl::track_popup_menu_patched_ = false; iat_patch::IATPatchFunction BrowserWebPluginDelegateImpl::iat_patch_track_popup_menu_;
iat_patch::IATPatchFunction BrowserWebPluginDelegateImpl::iat_patch_helper_; iat_patch::IATPatchFunction BrowserWebPluginDelegateImpl::iat_patch_set_cursor_;
BrowserWebPluginDelegateImpl* BrowserWebPluginDelegateImpl::Create( BrowserWebPluginDelegateImpl* BrowserWebPluginDelegateImpl::Create(
const struct CefPluginInfo& plugin_info, const struct CefPluginInfo& plugin_info,
const std::string& mime_type, const std::string& mime_type,
HWND containing_window) { gfx::NativeView containing_view) {
scoped_refptr<NPAPI::BrowserPluginLib> plugin = scoped_refptr<NPAPI::BrowserPluginLib> plugin =
NPAPI::BrowserPluginLib::GetOrCreatePluginLib(plugin_info); NPAPI::BrowserPluginLib::GetOrCreatePluginLib(plugin_info);
@ -69,7 +69,7 @@ BrowserWebPluginDelegateImpl* BrowserWebPluginDelegateImpl::Create(
scoped_refptr<NPAPI::BrowserPluginInstance> instance = scoped_refptr<NPAPI::BrowserPluginInstance> instance =
plugin->CreateInstance(mime_type); plugin->CreateInstance(mime_type);
return new BrowserWebPluginDelegateImpl(containing_window, instance.get()); return new BrowserWebPluginDelegateImpl(containing_view, instance.get());
} }
bool BrowserWebPluginDelegateImpl::IsPluginDelegateWindow(HWND window) { bool BrowserWebPluginDelegateImpl::IsPluginDelegateWindow(HWND window) {
@ -124,9 +124,9 @@ LRESULT CALLBACK BrowserWebPluginDelegateImpl::HandleEventMessageFilterHook(
} }
BrowserWebPluginDelegateImpl::BrowserWebPluginDelegateImpl( BrowserWebPluginDelegateImpl::BrowserWebPluginDelegateImpl(
HWND containing_window, gfx::NativeView containing_view,
NPAPI::BrowserPluginInstance *instance) NPAPI::BrowserPluginInstance *instance)
: parent_(containing_window), : parent_(containing_view),
instance_(instance), instance_(instance),
quirks_(0), quirks_(0),
plugin_(NULL), plugin_(NULL),
@ -149,7 +149,8 @@ BrowserWebPluginDelegateImpl::BrowserWebPluginDelegateImpl(
memset(&window_, 0, sizeof(window_)); memset(&window_, 0, sizeof(window_));
const WebPluginInfo& plugin_info = instance_->plugin_lib()->web_plugin_info(); 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 // 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 // lives on the browser thread. Our workaround is to intercept the
// TrackPopupMenu API for Silverlight and replace the window handle // TrackPopupMenu API for Silverlight and replace the window handle
// with the dummy activation window. // 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)) { (quirks_ & PLUGIN_QUIRK_PATCH_TRACKPOPUP_MENU)) {
iat_patch_helper_.Patch(plugin_module_handle_, "user32.dll", iat_patch_track_popup_menu_.Patch(
"TrackPopupMenu", plugin_module_handle_, "user32.dll", "TrackPopupMenu",
BrowserWebPluginDelegateImpl::TrackPopupMenuPatch); BrowserWebPluginDelegateImpl::TrackPopupMenuPatch);
track_popup_menu_patched_ = true; }
// 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; return true;
} }
@ -254,6 +267,19 @@ void BrowserWebPluginDelegateImpl::DestroyInstance() {
instance_->NPP_Destroy(); 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_->set_web_plugin(NULL);
instance_ = 0; instance_ = 0;
} }
@ -333,8 +359,8 @@ void BrowserWebPluginDelegateImpl::DidManualLoadFail() {
instance()->DidManualLoadFail(); instance()->DidManualLoadFail();
} }
std::wstring BrowserWebPluginDelegateImpl::GetPluginPath() { FilePath BrowserWebPluginDelegateImpl::GetPluginPath() {
return instance_->plugin_lib()->web_plugin_info().file; return instance_->plugin_lib()->web_plugin_info().path;
} }
void BrowserWebPluginDelegateImpl::InstallMissingPlugin() { void BrowserWebPluginDelegateImpl::InstallMissingPlugin() {
@ -767,6 +793,8 @@ LRESULT CALLBACK BrowserWebPluginDelegateImpl::NativeWndProc(
return TRUE; return TRUE;
} }
current_plugin_instance_ = delegate;
switch (message) { switch (message) {
case WM_NCDESTROY: { case WM_NCDESTROY: {
RemoveProp(hwnd, kWebPluginDelegateProperty); RemoveProp(hwnd, kWebPluginDelegateProperty);
@ -784,6 +812,7 @@ LRESULT CALLBACK BrowserWebPluginDelegateImpl::NativeWndProc(
if (delegate->quirks() & PLUGIN_QUIRK_THROTTLE_WM_USER_PLUS_ONE) { if (delegate->quirks() & PLUGIN_QUIRK_THROTTLE_WM_USER_PLUS_ONE) {
BrowserWebPluginDelegateImpl::ThrottleMessage( BrowserWebPluginDelegateImpl::ThrottleMessage(
delegate->plugin_wnd_proc_, hwnd, message, wparam, lparam); delegate->plugin_wnd_proc_, hwnd, message, wparam, lparam);
current_plugin_instance_ = NULL;
return FALSE; return FALSE;
} }
break; break;
@ -810,6 +839,7 @@ LRESULT CALLBACK BrowserWebPluginDelegateImpl::NativeWndProc(
LRESULT result = CallWindowProc(delegate->plugin_wnd_proc_, hwnd, message, LRESULT result = CallWindowProc(delegate->plugin_wnd_proc_, hwnd, message,
wparam, lparam); wparam, lparam);
delegate->is_calling_wndproc = false; delegate->is_calling_wndproc = false;
current_plugin_instance_ = NULL;
return result; return result;
} }
@ -964,12 +994,11 @@ bool BrowserWebPluginDelegateImpl::HandleEvent(NPEvent* event,
bool ret = instance()->NPP_HandleEvent(event) != 0; bool ret = instance()->NPP_HandleEvent(event) != 0;
if (event->event == WM_MOUSEMOVE) {
// Snag a reference to the current cursor ASAP in case the plugin modified // 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 // 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. // as someone might be setting the cursor in the main process as well.
HCURSOR last_cursor; *cursor = current_windowless_cursor_;
if (WM_MOUSEMOVE == event->event) {
last_cursor = ::GetCursor();
} }
if (pop_user_gesture) { if (pop_user_gesture) {
@ -998,10 +1027,6 @@ bool BrowserWebPluginDelegateImpl::HandleEvent(NPEvent* event,
::SetFocus(prev_focus_window); ::SetFocus(prev_focus_window);
} }
if (WM_MOUSEMOVE == event->event) {
cursor->InitFromCursor(last_cursor);
}
return ret; return ret;
} }
@ -1090,3 +1115,25 @@ BOOL WINAPI BrowserWebPluginDelegateImpl::TrackPopupMenuPatch(
} }
return TrackPopupMenu(menu, flags, x, y, reserved, window, rect); 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 "browser_plugin_lib.h"
#include "base/file_path.h"
#include "base/gfx/native_widget_types.h"
#include "base/iat_patch.h" #include "base/iat_patch.h"
#include "base/ref_counted.h" #include "base/ref_counted.h"
#include "base/task.h" #include "base/task.h"
#include "webkit/glue/webplugin_delegate.h"
#include "third_party/npapi/bindings/npapi.h" #include "third_party/npapi/bindings/npapi.h"
#include "webkit/glue/webplugin_delegate.h"
#include "webkit/glue/webcursor.h" #include "webkit/glue/webcursor.h"
namespace NPAPI { namespace NPAPI {
@ -28,7 +30,7 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
public: public:
static BrowserWebPluginDelegateImpl* Create(const struct CefPluginInfo& plugin_info, static BrowserWebPluginDelegateImpl* Create(const struct CefPluginInfo& plugin_info,
const std::string& mime_type, const std::string& mime_type,
HWND containing_window); gfx::NativeView containing_view);
static bool IsPluginDelegateWindow(HWND window); static bool IsPluginDelegateWindow(HWND window);
static bool GetPluginNameFromWindow(HWND window, std::wstring *plugin_name); 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 DidReceiveManualData(const char* buffer, int length);
virtual void DidFinishManualLoading(); virtual void DidFinishManualLoading();
virtual void DidManualLoadFail(); virtual void DidManualLoadFail();
virtual std::wstring GetPluginPath(); virtual FilePath GetPluginPath();
virtual void InstallMissingPlugin(); virtual void InstallMissingPlugin();
virtual WebPluginResourceClient* CreateResourceClient(int resource_id, virtual WebPluginResourceClient* CreateResourceClient(int resource_id,
const std::string &url, const std::string &url,
@ -94,6 +96,7 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
PLUGIN_QUIRK_DONT_ALLOW_MULTIPLE_INSTANCES = 16, PLUGIN_QUIRK_DONT_ALLOW_MULTIPLE_INSTANCES = 16,
PLUGIN_QUIRK_DIE_AFTER_UNLOAD = 32, PLUGIN_QUIRK_DIE_AFTER_UNLOAD = 32,
PLUGIN_QUIRK_PATCH_TRACKPOPUP_MENU = 64, PLUGIN_QUIRK_PATCH_TRACKPOPUP_MENU = 64,
PLUGIN_QUIRK_PATCH_SETCURSOR = 128,
}; };
int quirks() { return quirks_; } int quirks() { return quirks_; }
@ -105,7 +108,7 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
bool visible); bool visible);
private: private:
BrowserWebPluginDelegateImpl(HWND containing_window, BrowserWebPluginDelegateImpl(gfx::NativeView containing_view,
NPAPI::BrowserPluginInstance *instance); NPAPI::BrowserPluginInstance *instance);
~BrowserWebPluginDelegateImpl(); ~BrowserWebPluginDelegateImpl();
@ -265,11 +268,8 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
// The plugin module handle. // The plugin module handle.
HMODULE plugin_module_handle_; HMODULE plugin_module_handle_;
// Indicates whether we IAT patched the TrackPopupMenu function. // Helper object for patching the TrackPopupMenu API
static bool track_popup_menu_patched_; static iat_patch::IATPatchFunction iat_patch_track_popup_menu_;
// Helper object for patching the import table of Silverlight.
static iat_patch::IATPatchFunction iat_patch_helper_;
// TrackPopupMenu interceptor. Parameters are the same as the Win32 function // TrackPopupMenu interceptor. Parameters are the same as the Win32 function
// TrackPopupMenu. // TrackPopupMenu.
@ -277,6 +277,15 @@ class BrowserWebPluginDelegateImpl : public WebPluginDelegate {
int y, int reserved, HWND window, int y, int reserved, HWND window,
const RECT* rect); 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); DISALLOW_EVIL_CONSTRUCTORS(BrowserWebPluginDelegateImpl);
}; };

View File

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

View File

@ -213,7 +213,7 @@ void WebWidgetHost::Paint() {
if (!canvas_.get()) { if (!canvas_.get()) {
ResetScrollRect(); ResetScrollRect();
paint_rect_ = client_rect; paint_rect_ = client_rect;
canvas_.reset(new gfx::PlatformCanvas( canvas_.reset(new skia::PlatformCanvas(
paint_rect_.width(), paint_rect_.height(), true)); paint_rect_.width(), paint_rect_.height(), true));
} }
@ -285,6 +285,14 @@ void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) {
break; break;
} }
webwidget_->HandleInputEvent(&event); 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) { void WebWidgetHost::WheelEvent(WPARAM wparam, LPARAM lparam) {

View File

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