Index: chrome/common/chrome_content_client.cc |
=================================================================== |
--- chrome/common/chrome_content_client.cc (revision 96778) |
+++ chrome/common/chrome_content_client.cc (working copy) |
@@ -252,6 +252,13 @@ |
::CloseHandle(process); |
return true; |
} |
+ |
+// Must be dynamically loaded to avoid startup failures on Win XP. |
+typedef BOOL (WINAPI *ChangeWindowMessageFilterFunction)( |
+ UINT message, |
+ DWORD flag); |
+ChangeWindowMessageFilterFunction g_ChangeWindowMessageFilter; |
+ |
#endif // OS_WIN |
} // namespace |
@@ -362,6 +369,18 @@ |
policy->SetJobLevel(sandbox::JOB_UNPROTECTED, 0); |
policy->SetTokenLevel(sandbox::USER_RESTRICTED_SAME_ACCESS, |
sandbox::USER_INTERACTIVE); |
+ // Allow the Flash plugin to forward some messages back to Chrome. |
+ if (base::win::GetVersion() == base::win::VERSION_VISTA) { |
+ if (!g_ChangeWindowMessageFilter) { |
+ g_ChangeWindowMessageFilter = |
+ reinterpret_cast<ChangeWindowMessageFilterFunction>( |
+ ::GetProcAddress(::GetModuleHandle(L"user32.dll"), |
+ "ChangeWindowMessageFilter")); |
+ } |
+ // Per-window message filters required on Win7 or later must be added to: |
+ // render_widget_host_view_win.cc RenderWidgetHostViewWin::ReparentWindow |
+ g_ChangeWindowMessageFilter(WM_MOUSEWHEEL, MSGFLT_ADD); |
+ } |
policy->SetIntegrityLevel(sandbox::INTEGRITY_LEVEL_LOW); |
} else { |
// Could not start the broker, use a very weak policy instead. |