Bug 1336515: Fix assertions in TIPMessageHandler instantiation on non-touchscreen devices; r?jimm draft
authorAaron Klotz <aklotz@mozilla.com>
Fri, 03 Feb 2017 11:21:15 -0700
changeset 470463 27f21c831dabf64d381e11a011321b3550746569
parent 468498 ee975d32deb9eaa5641f45428cd6a4b5b555a8f5
child 544483 215f5b607fe18bc3ac30e77641ca75e3e7dbe1e9
push id44035
push useraklotz@mozilla.com
push dateFri, 03 Feb 2017 19:18:14 +0000
reviewersjimm
bugs1336515
milestone54.0a1
Bug 1336515: Fix assertions in TIPMessageHandler instantiation on non-touchscreen devices; r?jimm MozReview-Commit-ID: FCQBD6hB4oL
widget/windows/nsWindow.cpp
--- a/widget/windows/nsWindow.cpp
+++ b/widget/windows/nsWindow.cpp
@@ -450,18 +450,20 @@ private:
     mMessages[4] = ::RegisterWindowMessage(L"ProgrammabilityCaretVisibility");
     mMessages[5] = ::RegisterWindowMessage(L"CaretTrackingUpdateIPHidden");
     mMessages[6] = ::RegisterWindowMessage(L"CaretTrackingUpdateIPInfo");
 
     mHook = ::SetWindowsHookEx(WH_GETMESSAGE, &TIPHook, nullptr,
                                ::GetCurrentThreadId());
     MOZ_ASSERT(mHook);
 
-    if (!IsWin10OrLater() && !sProcessCaretEventsStub) {
-      // tiptsf loads when STA COM is first initialized, so it should be present
+    // On touchscreen devices, tiptsf.dll will have been loaded when STA COM was
+    // first initialized.
+    if (!IsWin10OrLater() && GetModuleHandle(L"tiptsf.dll") &&
+        !sProcessCaretEventsStub) {
       sTipTsfInterceptor.Init("tiptsf.dll");
       DebugOnly<bool> ok = sTipTsfInterceptor.AddHook("ProcessCaretEvents",
           reinterpret_cast<intptr_t>(&ProcessCaretEventsHook),
           (void**) &sProcessCaretEventsStub);
       MOZ_ASSERT(ok);
     }
 
     if (!sSendMessageTimeoutWStub) {