summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-09 06:42:37 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-09 06:42:37 +0000
commit336e17d23d8dca426ce75d85a98ff09e49890e9f (patch)
tree392b6cde5f1df805dd1b965ca2e16b8aa21160ef
parent3e865cb64bde966254aef83efa32d9ae9d1558ee (diff)
downloadchromium_src-336e17d23d8dca426ce75d85a98ff09e49890e9f.zip
chromium_src-336e17d23d8dca426ce75d85a98ff09e49890e9f.tar.gz
chromium_src-336e17d23d8dca426ce75d85a98ff09e49890e9f.tar.bz2
Adds code to unload digital persona
Digital persona hooks us in bad ways, leading to obscure crashes. In particular their hook procedures trigger sending messages, leading to states we are not set up to handle, nor should we have to handle. BUG=291265 TEST=none R=cpu@chromium.org Review URL: https://codereview.chromium.org/26541003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@227684 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chrome_browser_main_win.cc12
-rw-r--r--chrome/browser/chrome_browser_main_win.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/chrome/browser/chrome_browser_main_win.cc b/chrome/browser/chrome_browser_main_win.cc
index 7be7e23..4f0a763 100644
--- a/chrome/browser/chrome_browser_main_win.cc
+++ b/chrome/browser/chrome_browser_main_win.cc
@@ -184,6 +184,18 @@ ChromeBrowserMainPartsWin::ChromeBrowserMainPartsWin(
ChromeBrowserMainPartsWin::~ChromeBrowserMainPartsWin() {
}
+void ChromeBrowserMainPartsWin::PreEarlyInitialization() {
+ // DigitalPersona hooks us. Their hook can trigger sending messages from
+ // places we don't expect. For example, SetWindowTitle() triggering sending a
+ // mouse move. See 291265 for details.
+ HMODULE digital_persona = NULL;
+ if (GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
+ L"DpOFeedb.dll", &digital_persona) &&
+ digital_persona) {
+ FreeModule(digital_persona);
+ }
+}
+
void ChromeBrowserMainPartsWin::ToolkitInitialized() {
ChromeBrowserMainParts::ToolkitInitialized();
gfx::PlatformFontWin::adjust_font_callback = &AdjustUIFont;
diff --git a/chrome/browser/chrome_browser_main_win.h b/chrome/browser/chrome_browser_main_win.h
index 170f92b..2eaf005 100644
--- a/chrome/browser/chrome_browser_main_win.h
+++ b/chrome/browser/chrome_browser_main_win.h
@@ -24,6 +24,7 @@ class ChromeBrowserMainPartsWin : public ChromeBrowserMainParts {
virtual ~ChromeBrowserMainPartsWin();
// BrowserParts overrides.
+ virtual void PreEarlyInitialization() OVERRIDE;
virtual void ToolkitInitialized() OVERRIDE;
virtual void PreMainMessageLoopStart() OVERRIDE;
virtual int PreCreateThreads() OVERRIDE;