From 796bb2f86ee73ca89a7c3286521d7464e594f84a Mon Sep 17 00:00:00 2001 From: Masayuki Nakano Date: Thu, 28 Jan 2021 08:23:33 +0000 Subject: [PATCH] Bug 1689034 - part 1: Get rid of communication part between plugin process and widget in the main process r=smaug Differential Revision: https://phabricator.services.mozilla.com/D103138 --- .../network-monitor/utils/error-codes.js | 1 - dom/ipc/BrowserChild.cpp | 9 - dom/ipc/BrowserChild.h | 3 - dom/ipc/BrowserParent.cpp | 36 --- dom/ipc/BrowserParent.h | 9 - dom/ipc/PBrowser.ipdl | 22 -- dom/plugins/base/nsNPAPIPluginInstance.cpp | 14 -- dom/plugins/base/nsNPAPIPluginInstance.h | 2 - dom/plugins/base/nsPluginInstanceOwner.cpp | 19 +- dom/plugins/base/nsPluginInstanceOwner.h | 15 -- dom/plugins/ipc/PPluginInstance.ipdl | 17 -- dom/plugins/ipc/PluginInstanceChild.cpp | 234 ------------------ dom/plugins/ipc/PluginInstanceChild.h | 17 -- dom/plugins/ipc/PluginInstanceParent.cpp | 22 -- dom/plugins/ipc/PluginInstanceParent.h | 6 - dom/plugins/ipc/PluginLibrary.h | 3 - dom/plugins/ipc/PluginModuleParent.cpp | 7 - dom/plugins/ipc/PluginModuleParent.h | 4 - widget/PuppetWidget.cpp | 25 -- widget/PuppetWidget.h | 16 +- widget/moz.build | 1 - widget/nsBaseWidget.cpp | 7 - widget/nsIKeyEventInPluginCallback.h | 42 ---- widget/nsIWidget.h | 23 -- widget/windows/WinNativeEventData.h | 50 ---- widget/windows/moz.build | 1 - widget/windows/nsWindow.cpp | 55 +--- widget/windows/nsWindow.h | 4 - xpcom/base/ErrorList.py | 6 - 29 files changed, 15 insertions(+), 655 deletions(-) delete mode 100644 widget/nsIKeyEventInPluginCallback.h delete mode 100644 widget/windows/WinNativeEventData.h diff --git a/devtools/server/actors/network-monitor/utils/error-codes.js b/devtools/server/actors/network-monitor/utils/error-codes.js index 5912eb99a10e..405f4fd899ba 100644 --- a/devtools/server/actors/network-monitor/utils/error-codes.js +++ b/devtools/server/actors/network-monitor/utils/error-codes.js @@ -68,7 +68,6 @@ const ErrorCodes = { NS_ERROR_GFX_PRINTER_DOC_IS_BUSY: 0x80480007, NS_ERROR_GFX_CMAP_MALFORMED: 0x80480033, NS_SUCCESS_EVENT_CONSUMED: 0x490001, - NS_SUCCESS_EVENT_HANDLED_ASYNCHRONOUSLY: 0x490002, NS_BINDING_SUCCEEDED: 0x0, NS_BINDING_FAILED: 0x804b0001, NS_BINDING_ABORTED: 0x804b0002, diff --git a/dom/ipc/BrowserChild.cpp b/dom/ipc/BrowserChild.cpp index c870c7e7c61b..8ad6a3751672 100644 --- a/dom/ipc/BrowserChild.cpp +++ b/dom/ipc/BrowserChild.cpp @@ -2613,15 +2613,6 @@ mozilla::ipc::IPCResult BrowserChild::RecvNavigateByKey( return IPC_OK(); } -mozilla::ipc::IPCResult BrowserChild::RecvHandledWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, const bool& aIsConsumed) { - if (NS_WARN_IF(!mPuppetWidget)) { - return IPC_OK(); - } - mPuppetWidget->HandledWindowedPluginKeyEvent(aKeyEventData, aIsConsumed); - return IPC_OK(); -} - bool BrowserChild::InitBrowserChildMessageManager() { if (!mBrowserChildMessageManager) { nsCOMPtr window = do_GetInterface(WebNavigation()); diff --git a/dom/ipc/BrowserChild.h b/dom/ipc/BrowserChild.h index 5b948499cf56..d94ca031eb26 100644 --- a/dom/ipc/BrowserChild.h +++ b/dom/ipc/BrowserChild.h @@ -536,9 +536,6 @@ class BrowserChild final : public nsMessageManagerScriptExecutor, mozilla::ipc::IPCResult RecvHandleAccessKey(const WidgetKeyboardEvent& aEvent, nsTArray&& aCharCodes); - mozilla::ipc::IPCResult RecvHandledWindowedPluginKeyEvent( - const mozilla::NativeEventData& aKeyEventData, const bool& aIsConsumed); - mozilla::ipc::IPCResult RecvPrintPreview( const PrintData& aPrintData, const mozilla::Maybe& aSourceOuterWindowID, diff --git a/dom/ipc/BrowserParent.cpp b/dom/ipc/BrowserParent.cpp index 7b4917a71cc0..65ae15abfda6 100644 --- a/dom/ipc/BrowserParent.cpp +++ b/dom/ipc/BrowserParent.cpp @@ -2270,42 +2270,6 @@ mozilla::ipc::IPCResult BrowserParent::RecvOnEventNeedingAckHandled( return IPC_OK(); } -void BrowserParent::HandledWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, bool aIsConsumed) { - DebugOnly ok = - SendHandledWindowedPluginKeyEvent(aKeyEventData, aIsConsumed); - NS_WARNING_ASSERTION(ok, "SendHandledWindowedPluginKeyEvent failed"); -} - -mozilla::ipc::IPCResult BrowserParent::RecvOnWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData) { - nsCOMPtr widget = GetWidget(); - if (NS_WARN_IF(!widget)) { - // Notifies the plugin process of the key event being not consumed by us. - HandledWindowedPluginKeyEvent(aKeyEventData, false); - return IPC_OK(); - } - nsresult rv = widget->OnWindowedPluginKeyEvent(aKeyEventData, this); - if (NS_WARN_IF(NS_FAILED(rv))) { - // Notifies the plugin process of the key event being not consumed by us. - HandledWindowedPluginKeyEvent(aKeyEventData, false); - return IPC_OK(); - } - - // If the key event is posted to another process, we need to wait a call - // of HandledWindowedPluginKeyEvent(). So, nothing to do here in this case. - if (rv == NS_SUCCESS_EVENT_HANDLED_ASYNCHRONOUSLY) { - return IPC_OK(); - } - - // Otherwise, the key event is handled synchronously. Let's notify the - // plugin process of the key event's result. - bool consumed = (rv == NS_SUCCESS_EVENT_CONSUMED); - HandledWindowedPluginKeyEvent(aKeyEventData, consumed); - - return IPC_OK(); -} - mozilla::ipc::IPCResult BrowserParent::RecvRequestFocus( const bool& aCanRaise, const CallerType aCallerType) { LOGBROWSERFOCUS(("RecvRequestFocus %p, aCanRaise: %d", this, aCanRaise)); diff --git a/dom/ipc/BrowserParent.h b/dom/ipc/BrowserParent.h index b3c1078baa23..4e05deb8c289 100644 --- a/dom/ipc/BrowserParent.h +++ b/dom/ipc/BrowserParent.h @@ -25,7 +25,6 @@ #include "nsIAuthPromptProvider.h" #include "nsIBrowserDOMWindow.h" #include "nsIDOMEventListener.h" -#include "nsIKeyEventInPluginCallback.h" #include "nsIRemoteTab.h" #include "nsIWidget.h" #include "nsWeakReference.h" @@ -82,7 +81,6 @@ class StructuredCloneData; class BrowserParent final : public PBrowserParent, public nsIDOMEventListener, public nsIAuthPromptProvider, - public nsIKeyEventInPluginCallback, public nsSupportsWeakReference, public TabContext, public LiveResizeListener { @@ -383,13 +381,6 @@ class BrowserParent final : public PBrowserParent, const widget::InputContext& aContext, const widget::InputContextAction& aAction); - // See nsIKeyEventInPluginCallback - virtual void HandledWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, bool aIsConsumed) override; - - mozilla::ipc::IPCResult RecvOnWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData); - mozilla::ipc::IPCResult RecvRequestFocus(const bool& aCanRaise, const CallerType aCallerType); diff --git a/dom/ipc/PBrowser.ipdl b/dom/ipc/PBrowser.ipdl index 90010a51b45a..8871a7648584 100644 --- a/dom/ipc/PBrowser.ipdl +++ b/dom/ipc/PBrowser.ipdl @@ -364,16 +364,6 @@ parent: */ nested(inside_cpow) async OnEventNeedingAckHandled(EventMessage message); - /** - * Notifies the parent process of native key event data received in a - * plugin process directly. - * - * aKeyEventData The native key event data. The actual type copied into - * NativeEventData depending on the caller. Please check - * PluginInstanceChild. - */ - nested(inside_cpow) async OnWindowedPluginKeyEvent(NativeEventData aKeyEventData); - /** * Request that the parent process move focus to the browser's frame. If * canRaise is true, the window can be raised if it is inactive. @@ -944,18 +934,6 @@ child: async HandleAccessKey(WidgetKeyboardEvent event, uint32_t[] charCodes); - /** - * HandledWindowedPluginKeyEvent() is always called after posting a native - * key event with OnWindowedPluginKeyEvent(). - * - * @param aKeyEventData The key event which was posted to the parent - * process. - * @param aIsConsumed true if aKeyEventData is consumed in the - * parent process. Otherwise, false. - */ - async HandledWindowedPluginKeyEvent(NativeEventData aKeyEventData, - bool aIsConsumed); - /** * Tell the child to create a print preview document in this browser, or * to update the existing print preview document with new print settings. diff --git a/dom/plugins/base/nsNPAPIPluginInstance.cpp b/dom/plugins/base/nsNPAPIPluginInstance.cpp index a1462f66f584..dfb43fc47d2c 100644 --- a/dom/plugins/base/nsNPAPIPluginInstance.cpp +++ b/dom/plugins/base/nsNPAPIPluginInstance.cpp @@ -681,20 +681,6 @@ nsresult nsNPAPIPluginInstance::GetScrollCaptureContainer( } #endif -nsresult nsNPAPIPluginInstance::HandledWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, bool aIsConsumed) { - if (NS_WARN_IF(!mPlugin)) { - return NS_ERROR_FAILURE; - } - - PluginLibrary* library = mPlugin->GetLibrary(); - if (NS_WARN_IF(!library)) { - return NS_ERROR_FAILURE; - } - return library->HandledWindowedPluginKeyEvent(&mNPP, aKeyEventData, - aIsConsumed); -} - void nsNPAPIPluginInstance::DidComposite() { if (RUNNING != mRunning) return; diff --git a/dom/plugins/base/nsNPAPIPluginInstance.h b/dom/plugins/base/nsNPAPIPluginInstance.h index 1ca2569ae89d..2045105ab863 100644 --- a/dom/plugins/base/nsNPAPIPluginInstance.h +++ b/dom/plugins/base/nsNPAPIPluginInstance.h @@ -127,8 +127,6 @@ class nsNPAPIPluginInstance final : public nsIAudioChannelAgentCallback, nsresult GetScrollCaptureContainer( mozilla::layers::ImageContainer** aContainer); #endif - nsresult HandledWindowedPluginKeyEvent( - const mozilla::NativeEventData& aKeyEventData, bool aIsConsumed); nsPluginInstanceOwner* GetOwner(); void SetOwner(nsPluginInstanceOwner* aOwner); void DidComposite(); diff --git a/dom/plugins/base/nsPluginInstanceOwner.cpp b/dom/plugins/base/nsPluginInstanceOwner.cpp index 739d1a861fff..078462d1cdb4 100644 --- a/dom/plugins/base/nsPluginInstanceOwner.cpp +++ b/dom/plugins/base/nsPluginInstanceOwner.cpp @@ -290,7 +290,7 @@ nsPluginInstanceOwner::~nsPluginInstanceOwner() { NS_IMPL_ISUPPORTS(nsPluginInstanceOwner, nsIPluginInstanceOwner, nsIDOMEventListener, nsIPrivacyTransitionObserver, - nsIKeyEventInPluginCallback, nsISupportsWeakReference) + nsISupportsWeakReference) nsresult nsPluginInstanceOwner::SetInstance(nsNPAPIPluginInstance* aInstance) { NS_ASSERTION(!mInstance || !aInstance, @@ -700,23 +700,6 @@ bool nsPluginInstanceOwner::RequestCommitOrCancel(bool aCommitted) { #endif // #ifdef XP_WIN -void nsPluginInstanceOwner::HandledWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, bool aIsConsumed) { - if (NS_WARN_IF(!mInstance)) { - return; - } - DebugOnly rv = - mInstance->HandledWindowedPluginKeyEvent(aKeyEventData, aIsConsumed); - NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "HandledWindowedPluginKeyEvent fail"); -} - -void nsPluginInstanceOwner::OnWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData) { - // Notifies the plugin process of the key event being not consumed by us. - HandledWindowedPluginKeyEvent(aKeyEventData, false); - return; -} - NS_IMETHODIMP nsPluginInstanceOwner::SetEventModel(int32_t eventModel) { #ifdef XP_MACOSX mEventModel = static_cast(eventModel); diff --git a/dom/plugins/base/nsPluginInstanceOwner.h b/dom/plugins/base/nsPluginInstanceOwner.h index a5c7d993c97c..1c54b70a2c2b 100644 --- a/dom/plugins/base/nsPluginInstanceOwner.h +++ b/dom/plugins/base/nsPluginInstanceOwner.h @@ -12,7 +12,6 @@ #include "mozilla/dom/HTMLObjectElementBinding.h" #include "npapi.h" #include "nsCOMPtr.h" -#include "nsIKeyEventInPluginCallback.h" #include "nsIPluginInstanceOwner.h" #include "nsIPrivacyTransitionObserver.h" #include "nsIDOMEventListener.h" @@ -54,7 +53,6 @@ using mozilla::widget::PuppetWidget; class nsPluginInstanceOwner final : public nsIPluginInstanceOwner, public nsIDOMEventListener, public nsIPrivacyTransitionObserver, - public nsIKeyEventInPluginCallback, public nsSupportsWeakReference { public: typedef mozilla::gfx::DrawTarget DrawTarget; @@ -254,19 +252,6 @@ class nsPluginInstanceOwner final : public nsIPluginInstanceOwner, int32_t* aLength); bool RequestCommitOrCancel(bool aCommitted); - // See nsIKeyEventInPluginCallback - virtual void HandledWindowedPluginKeyEvent( - const mozilla::NativeEventData& aKeyEventData, bool aIsConsumed) override; - - /** - * OnWindowedPluginKeyEvent() is called when the plugin process receives - * native key event directly. - * - * @param aNativeKeyData The key event which was received by the - * plugin process directly. - */ - void OnWindowedPluginKeyEvent(const mozilla::NativeEventData& aNativeKeyData); - void GetCSSZoomFactor(float* result); private: diff --git a/dom/plugins/ipc/PPluginInstance.ipdl b/dom/plugins/ipc/PPluginInstance.ipdl index 4b54f61e3bd7..3bb7e53d6ae3 100644 --- a/dom/plugins/ipc/PPluginInstance.ipdl +++ b/dom/plugins/ipc/PPluginInstance.ipdl @@ -132,16 +132,6 @@ child: intr NPP_Destroy() returns (NPError rv); - // HandledWindowedPluginKeyEvent() is always called after posting a native - // key event with OnWindowedPluginKeyEvent(). - // - // @param aKeyEventData The key event which was posted to the parent - // process. - // @param aIsConsumed true if aKeyEventData is consumed in the - // parent process. Otherwise, false. - async HandledWindowedPluginKeyEvent(NativeEventData aKeyEventData, - bool aIsConsumed); - parent: intr NPN_GetValue_NPNVWindowNPObject() returns (nullable PPluginScriptableObject value, NPError result); @@ -256,13 +246,6 @@ parent: returns (uint8_t[] aDist, int32_t aLength); async RequestCommitOrCancel(bool aCommitted); - // Notifies the parent process of a plugin instance receiving key event - // directly. - // - // @param aKeyEventData The native key event which will be sent to - // plugin from native event handler. - async OnWindowedPluginKeyEvent(NativeEventData aKeyEventData); - both: async PPluginScriptableObject(); diff --git a/dom/plugins/ipc/PluginInstanceChild.cpp b/dom/plugins/ipc/PluginInstanceChild.cpp index 403a735c836b..58d809297fb2 100644 --- a/dom/plugins/ipc/PluginInstanceChild.cpp +++ b/dom/plugins/ipc/PluginInstanceChild.cpp @@ -57,8 +57,6 @@ using namespace mozilla::widget; # include # include "mozilla/widget/WinMessages.h" -# include "mozilla/widget/WinModifierKeyState.h" -# include "mozilla/widget/WinNativeEventData.h" # include "nsWindowsDllInterceptor.h" # include "X11UndefineNone.h" @@ -116,8 +114,6 @@ static RefPtr CreateDrawTargetForSurface(gfxASurface* aSurface) { return drawTarget; } -bool PluginInstanceChild::sIsIMEComposing = false; - PluginInstanceChild::PluginInstanceChild(const NPPluginFuncs* aPluginIface, const nsCString& aMimeType, const nsTArray& aNames, @@ -132,8 +128,6 @@ PluginInstanceChild::PluginInstanceChild(const NPPluginFuncs* aPluginIface, #endif , mCSSZoomFactor(0.0), - mPostingKeyEvents(0), - mPostingKeyEventsOutdated(0), mDrawingModel(kDefaultDrawingModel), mCurrentDirectSurface(nullptr), mAsyncInvalidateMutex("PluginInstanceChild::mAsyncInvalidateMutex"), @@ -180,7 +174,6 @@ PluginInstanceChild::PluginInstanceChild(const NPPluginFuncs* aPluginIface, mDestroyed(false) #ifdef XP_WIN , - mLastKeyEventConsumed(false), mLastEnableIMEState(true) #endif // #ifdef XP_WIN , @@ -1286,92 +1279,6 @@ bool PluginInstanceChild::Initialize() { return true; } -mozilla::ipc::IPCResult PluginInstanceChild::RecvHandledWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, const bool& aIsConsumed) { -#if defined(OS_WIN) - const WinNativeKeyEventData* eventData = - static_cast(aKeyEventData); - switch (eventData->mMessage) { - case WM_KEYDOWN: - case WM_SYSKEYDOWN: - case WM_KEYUP: - case WM_SYSKEYUP: - mLastKeyEventConsumed = aIsConsumed; - break; - case WM_CHAR: - case WM_SYSCHAR: - case WM_DEADCHAR: - case WM_SYSDEADCHAR: - // If preceding keydown or keyup event is consumed by the chrome - // process, we should consume WM_*CHAR messages too. - if (mLastKeyEventConsumed) { - return IPC_OK(); - } - default: - MOZ_CRASH("Needs to handle all messages posted to the parent"); - } -#endif // #if defined(OS_WIN) - - // Unknown key input shouldn't be sent to plugin for security. - // XXX Is this possible if a plugin process which posted the message - // already crashed and this plugin process is recreated? - if (NS_WARN_IF(!mPostingKeyEvents && !mPostingKeyEventsOutdated)) { - return IPC_OK(); - } - - // If there is outdated posting key events, we should consume the key - // events. - if (mPostingKeyEventsOutdated) { - mPostingKeyEventsOutdated--; - return IPC_OK(); - } - - mPostingKeyEvents--; - - // If composition has been started after posting the key event, - // we should discard the event since if we send the event to plugin, - // the plugin may be confused and the result may be broken because - // the event order is shuffled. - if (aIsConsumed || sIsIMEComposing) { - return IPC_OK(); - } - -#if defined(OS_WIN) - UINT message = 0; - switch (eventData->mMessage) { - case WM_KEYDOWN: - message = MOZ_WM_KEYDOWN; - break; - case WM_SYSKEYDOWN: - message = MOZ_WM_SYSKEYDOWN; - break; - case WM_KEYUP: - message = MOZ_WM_KEYUP; - break; - case WM_SYSKEYUP: - message = MOZ_WM_SYSKEYUP; - break; - case WM_CHAR: - message = MOZ_WM_CHAR; - break; - case WM_SYSCHAR: - message = MOZ_WM_SYSCHAR; - break; - case WM_DEADCHAR: - message = MOZ_WM_DEADCHAR; - break; - case WM_SYSDEADCHAR: - message = MOZ_WM_SYSDEADCHAR; - break; - default: - MOZ_CRASH("Needs to handle all messages posted to the parent"); - } - PluginWindowProcInternal(mPluginWindowHWND, message, eventData->mWParam, - eventData->mLParam); -#endif - return IPC_OK(); -} - #if defined(OS_WIN) static const TCHAR kWindowClassName[] = TEXT("GeckoPluginWindow"); @@ -1513,66 +1420,17 @@ LRESULT CALLBACK PluginInstanceChild::PluginWindowProcInternal(HWND hWnd, break; } - case WM_SETFOCUS: - // If this gets focus, ensure that there is no pending key events. - // Even if there were, we should ignore them for performance reason. - // Although, such case shouldn't occur. - NS_WARNING_ASSERTION(self->mPostingKeyEvents == 0, "pending events"); - self->mPostingKeyEvents = 0; - self->mLastKeyEventConsumed = false; - break; - - case WM_KEYDOWN: - case WM_SYSKEYDOWN: - case WM_KEYUP: - case WM_SYSKEYUP: - if (self->MaybePostKeyMessage(message, wParam, lParam)) { - // If PreHandleKeyMessage() posts the message to the parent - // process, we need to wait RecvOnKeyEventHandledBeforePlugin() - // to be called. - return 0; // Consume current message temporarily. - } - break; - - case MOZ_WM_KEYDOWN: - message = WM_KEYDOWN; - break; - case MOZ_WM_SYSKEYDOWN: - message = WM_SYSKEYDOWN; - break; - case MOZ_WM_KEYUP: - message = WM_KEYUP; - break; - case MOZ_WM_SYSKEYUP: - message = WM_SYSKEYUP; - break; - case MOZ_WM_CHAR: - message = WM_CHAR; - break; - case MOZ_WM_SYSCHAR: - message = WM_SYSCHAR; - break; - case MOZ_WM_DEADCHAR: - message = WM_DEADCHAR; - break; - case MOZ_WM_SYSDEADCHAR: - message = WM_SYSDEADCHAR; - break; - case WM_IME_STARTCOMPOSITION: isIMECompositionMessage = true; - sIsIMEComposing = true; break; case WM_IME_ENDCOMPOSITION: isIMECompositionMessage = true; - sIsIMEComposing = false; break; case WM_IME_COMPOSITION: isIMECompositionMessage = true; // XXX Some old IME may not send WM_IME_COMPOSITION_START or // WM_IME_COMPSOITION_END properly. So, we need to check // WM_IME_COMPSOITION and if it includes commit string. - sIsIMEComposing = !(lParam & GCS_RESULTSTR); break; // The plugin received keyboard focus, let the parent know so the dom @@ -1582,15 +1440,6 @@ LRESULT CALLBACK PluginInstanceChild::PluginWindowProcInternal(HWND hWnd, break; } - // When a composition is committed, there may be pending key - // events which were posted to the parent process before starting - // the composition. Then, we shouldn't handle it since they are - // now outdated. - if (isIMECompositionMessage && !sIsIMEComposing) { - self->mPostingKeyEventsOutdated += self->mPostingKeyEvents; - self->mPostingKeyEvents = 0; - } - // Prevent lockups due to plugins making rpc calls when the parent // is making a synchronous SendMessage call to the child window. Add // more messages as needed. @@ -1647,89 +1496,6 @@ LRESULT CALLBACK PluginInstanceChild::PluginWindowProcInternal(HWND hWnd, return res; } -bool PluginInstanceChild::ShouldPostKeyMessage(UINT message, WPARAM wParam, - LPARAM lParam) { - // If there is a composition, we shouldn't post the key message to the - // parent process because we cannot handle IME messages asynchronously. - // Therefore, if we posted key events to the parent process, the event - // order of the posted key events and IME events are shuffled. - if (sIsIMEComposing) { - return false; - } - - // If there are some pending keyboard events which are not handled in - // the parent process, we should post the message for avoiding to shuffle - // the key event order. - if (mPostingKeyEvents) { - return true; - } - - // If we are not waiting calls of RecvOnKeyEventHandledBeforePlugin(), - // we don't need to post WM_*CHAR messages. - switch (message) { - case WM_CHAR: - case WM_SYSCHAR: - case WM_DEADCHAR: - case WM_SYSDEADCHAR: - return false; - } - - // Otherwise, we should post key message which might match with a - // shortcut key. - ModifierKeyState modifierState; - if (!modifierState.MaybeMatchShortcutKey()) { - // For better UX, we shouldn't use IPC when user tries to - // input character(s). - return false; - } - - // Ignore modifier key events and keys already handled by IME. - switch (wParam) { - case VK_SHIFT: - case VK_CONTROL: - case VK_MENU: - case VK_LWIN: - case VK_RWIN: - case VK_CAPITAL: - case VK_NUMLOCK: - case VK_SCROLL: - // Following virtual keycodes shouldn't come with WM_(SYS)KEY* message - // but check it for avoiding unnecessary cross process communication. - case VK_LSHIFT: - case VK_RSHIFT: - case VK_LCONTROL: - case VK_RCONTROL: - case VK_LMENU: - case VK_RMENU: - case VK_PROCESSKEY: - case VK_PACKET: - case 0xFF: // 0xFF could be sent with unidentified key by the layout. - return false; - default: - break; - } - return true; -} - -bool PluginInstanceChild::MaybePostKeyMessage(UINT message, WPARAM wParam, - LPARAM lParam) { - if (!ShouldPostKeyMessage(message, wParam, lParam)) { - return false; - } - - ModifierKeyState modifierState; - WinNativeKeyEventData winNativeKeyData(message, wParam, lParam, - modifierState); - NativeEventData nativeKeyData; - nativeKeyData.Copy(winNativeKeyData); - if (NS_WARN_IF(!SendOnWindowedPluginKeyEvent(nativeKeyData))) { - return false; - } - - mPostingKeyEvents++; - return true; -} - /* set window long ptr hook for flash */ /* diff --git a/dom/plugins/ipc/PluginInstanceChild.h b/dom/plugins/ipc/PluginInstanceChild.h index 479c060f915c..09b984309880 100644 --- a/dom/plugins/ipc/PluginInstanceChild.h +++ b/dom/plugins/ipc/PluginInstanceChild.h @@ -207,9 +207,6 @@ class PluginInstanceChild : public PPluginInstanceChild { void DoAsyncRedraw(); - mozilla::ipc::IPCResult RecvHandledWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, const bool& aIsConsumed); - #if defined(XP_WIN) NPError DefaultAudioDeviceChanged(NPAudioDeviceChangeDetails& details); NPError AudioDeviceStateChanged(NPAudioDeviceStateChanged& aDeviceState); @@ -311,8 +308,6 @@ class PluginInstanceChild : public PPluginInstanceChild { bool mWindowed; }; - bool ShouldPostKeyMessage(UINT message, WPARAM wParam, LPARAM lParam); - bool MaybePostKeyMessage(UINT message, WPARAM wParam, LPARAM lParam); #endif // #if defined(OS_WIN) const NPPluginFuncs* mPluginIface; nsCString mMimeType; @@ -324,8 +319,6 @@ class PluginInstanceChild : public PPluginInstanceChild { double mContentsScaleFactor; #endif double mCSSZoomFactor; - uint32_t mPostingKeyEvents; - uint32_t mPostingKeyEventsOutdated; int16_t mDrawingModel; NPAsyncSurface* mCurrentDirectSurface; @@ -573,21 +566,11 @@ class PluginInstanceChild : public PPluginInstanceChild { bool mDestroyed; #ifdef XP_WIN - // WM_*CHAR messages are never consumed by chrome process's widget. - // So, if preceding keydown or keyup event is consumed by reserved - // shortcut key in the chrome process, we shouldn't send the following - // WM_*CHAR messages to the plugin. - bool mLastKeyEventConsumed; - // Store the last IME state by ImmAssociateContextEx. This will reset by // WM_KILLFOCUS; bool mLastEnableIMEState; #endif // #ifdef XP_WIN - // While IME in the process has composition, this is set to true. - // Otherwise, false. - static bool sIsIMEComposing; - // A counter is incremented by AutoStackHelper to indicate that there is an // active plugin call which should be preventing shutdown. public: diff --git a/dom/plugins/ipc/PluginInstanceParent.cpp b/dom/plugins/ipc/PluginInstanceParent.cpp index 6e29171d912d..b46cd7f65db8 100644 --- a/dom/plugins/ipc/PluginInstanceParent.cpp +++ b/dom/plugins/ipc/PluginInstanceParent.cpp @@ -2279,28 +2279,6 @@ mozilla::ipc::IPCResult PluginInstanceParent::RecvRequestCommitOrCancel( return IPC_OK(); } -nsresult PluginInstanceParent::HandledWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, bool aIsConsumed) { - if (NS_WARN_IF( - !SendHandledWindowedPluginKeyEvent(aKeyEventData, aIsConsumed))) { - return NS_ERROR_FAILURE; - } - return NS_OK; -} - -mozilla::ipc::IPCResult PluginInstanceParent::RecvOnWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData) { - nsPluginInstanceOwner* owner = GetOwner(); - if (NS_WARN_IF(!owner)) { - // Notifies the plugin process of the key event being not consumed - // by us. - HandledWindowedPluginKeyEvent(aKeyEventData, false); - return IPC_OK(); - } - owner->OnWindowedPluginKeyEvent(aKeyEventData); - return IPC_OK(); -} - void PluginInstanceParent::RecordDrawingModel() { int mode = -1; switch (mWindowType) { diff --git a/dom/plugins/ipc/PluginInstanceParent.h b/dom/plugins/ipc/PluginInstanceParent.h index bef637b21fc2..acddae5b30eb 100644 --- a/dom/plugins/ipc/PluginInstanceParent.h +++ b/dom/plugins/ipc/PluginInstanceParent.h @@ -283,12 +283,6 @@ class PluginInstanceParent : public PPluginInstanceParent { int32_t* aLength); mozilla::ipc::IPCResult RecvRequestCommitOrCancel(const bool& aCommitted); - // for reserved shortcut key handling with windowed plugin on Windows - nsresult HandledWindowedPluginKeyEvent( - const mozilla::NativeEventData& aKeyEventData, bool aIsConsumed); - mozilla::ipc::IPCResult RecvOnWindowedPluginKeyEvent( - const mozilla::NativeEventData& aKeyEventData); - private: // Create an appropriate platform surface for a background of size // |aSize|. Return true if successful. diff --git a/dom/plugins/ipc/PluginLibrary.h b/dom/plugins/ipc/PluginLibrary.h index ce8cc3af1764..3b045d5cb8d8 100644 --- a/dom/plugins/ipc/PluginLibrary.h +++ b/dom/plugins/ipc/PluginLibrary.h @@ -103,9 +103,6 @@ class PluginLibrary { virtual nsresult GetScrollCaptureContainer( NPP aInstance, mozilla::layers::ImageContainer** aContainer) = 0; #endif - virtual nsresult HandledWindowedPluginKeyEvent( - NPP aInstance, const mozilla::NativeEventData& aNativeKeyData, - bool aIsCOnsumed) = 0; /** * The next three methods are the third leg in the trip to diff --git a/dom/plugins/ipc/PluginModuleParent.cpp b/dom/plugins/ipc/PluginModuleParent.cpp index 6743ed1893db..057c404fee2b 100644 --- a/dom/plugins/ipc/PluginModuleParent.cpp +++ b/dom/plugins/ipc/PluginModuleParent.cpp @@ -1679,13 +1679,6 @@ nsresult PluginModuleParent::GetScrollCaptureContainer( } #endif -nsresult PluginModuleParent::HandledWindowedPluginKeyEvent( - NPP aInstance, const NativeEventData& aNativeKeyData, bool aIsConsumed) { - PluginInstanceParent* pip = PluginInstanceParent::Cast(aInstance); - return pip ? pip->HandledWindowedPluginKeyEvent(aNativeKeyData, aIsConsumed) - : NS_ERROR_FAILURE; -} - void PluginModuleParent::OnInitFailure() { if (GetIPCChannel()->CanSend()) { Close(); diff --git a/dom/plugins/ipc/PluginModuleParent.h b/dom/plugins/ipc/PluginModuleParent.h index 9fd74904a217..2fb6059967ae 100644 --- a/dom/plugins/ipc/PluginModuleParent.h +++ b/dom/plugins/ipc/PluginModuleParent.h @@ -211,10 +211,6 @@ class PluginModuleParent : public PPluginModuleParent, NPP aInstance, mozilla::layers::ImageContainer** aContainer) override; #endif - virtual nsresult HandledWindowedPluginKeyEvent( - NPP aInstance, const mozilla::NativeEventData& aNativeKeyData, - bool aIsConsumed) override; - #if defined(XP_UNIX) && !defined(XP_MACOSX) virtual nsresult NP_Initialize(NPNetscapeFuncs* bFuncs, NPPluginFuncs* pFuncs, NPError* error) override; diff --git a/widget/PuppetWidget.cpp b/widget/PuppetWidget.cpp index 159096a08bc5..85b5b68b33e6 100644 --- a/widget/PuppetWidget.cpp +++ b/widget/PuppetWidget.cpp @@ -1184,31 +1184,6 @@ bool PuppetWidget::HasPendingInputEvent() { return ret; } -void PuppetWidget::HandledWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, bool aIsConsumed) { - if (NS_WARN_IF(mKeyEventInPluginCallbacks.IsEmpty())) { - return; - } - nsCOMPtr callback = - mKeyEventInPluginCallbacks[0]; - MOZ_ASSERT(callback); - mKeyEventInPluginCallbacks.RemoveElementAt(0); - callback->HandledWindowedPluginKeyEvent(aKeyEventData, aIsConsumed); -} - -nsresult PuppetWidget::OnWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, - nsIKeyEventInPluginCallback* aCallback) { - if (NS_WARN_IF(!mBrowserChild)) { - return NS_ERROR_NOT_AVAILABLE; - } - if (NS_WARN_IF(!mBrowserChild->SendOnWindowedPluginKeyEvent(aKeyEventData))) { - return NS_ERROR_FAILURE; - } - mKeyEventInPluginCallbacks.AppendElement(aCallback); - return NS_SUCCESS_EVENT_HANDLED_ASYNCHRONOUSLY; -} - // TextEventDispatcherListener NS_IMETHODIMP diff --git a/widget/PuppetWidget.h b/widget/PuppetWidget.h index b82d63260d69..1ba89a533c16 100644 --- a/widget/PuppetWidget.h +++ b/widget/PuppetWidget.h @@ -20,7 +20,6 @@ #include "nsBaseScreen.h" #include "nsBaseWidget.h" #include "nsCOMArray.h" -#include "nsIKeyEventInPluginCallback.h" #include "nsIScreenManager.h" #include "nsThreadUtils.h" #include "mozilla/Attributes.h" @@ -284,13 +283,6 @@ class PuppetWidget : public nsBaseWidget, virtual bool HasPendingInputEvent() override; - void HandledWindowedPluginKeyEvent(const NativeEventData& aKeyEventData, - bool aIsConsumed); - - virtual nsresult OnWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, - nsIKeyEventInPluginCallback* aCallback) override; - virtual void LookUpDictionary( const nsAString& aText, const nsTArray& aFontRangeArray, @@ -375,8 +367,6 @@ class PuppetWidget : public nsBaseWidget, ScreenIntMargin mSafeAreaInsets; - nsCOMArray mKeyEventInPluginCallbacks; - RefPtr mNativeTextEventDispatcherListener; protected: @@ -389,9 +379,9 @@ class PuppetWidget : public nsBaseWidget, // composition may have already been committed in the main process. In such // case, this will receive remaining composition events for the old // composition even after requesting to commit/cancel the old composition - // but the TextComposition for the old composition has already been destroyed. - // So, until this meets new eCompositionStart, following composition events - // should be ignored if this is set to true. + // but the TextComposition for the old composition has already been + // destroyed. So, until this meets new eCompositionStart, following + // composition events should be ignored if this is set to true. bool mIgnoreCompositionEvents; }; diff --git a/widget/moz.build b/widget/moz.build index 0645f2d46d37..6f50842e1b90 100644 --- a/widget/moz.build +++ b/widget/moz.build @@ -135,7 +135,6 @@ EXPORTS += [ "nsBaseScreen.h", "nsBaseWidget.h", "nsIDeviceContextSpec.h", - "nsIKeyEventInPluginCallback.h", "nsIPluginWidget.h", "nsIPrintDialogService.h", "nsIRollupListener.h", diff --git a/widget/nsBaseWidget.cpp b/widget/nsBaseWidget.cpp index 46ee04417398..b59264f7b467 100644 --- a/widget/nsBaseWidget.cpp +++ b/widget/nsBaseWidget.cpp @@ -66,7 +66,6 @@ #include "nsIAppWindow.h" #include "nsIBaseWindow.h" #include "nsIContent.h" -#include "nsIKeyEventInPluginCallback.h" #include "nsIScreenManager.h" #include "nsISimpleEnumerator.h" #include "nsIWidgetListener.h" @@ -2219,12 +2218,6 @@ const IMENotificationRequests& nsIWidget::IMENotificationRequestsRef() { return dispatcher->IMENotificationRequestsRef(); } -nsresult nsIWidget::OnWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, - nsIKeyEventInPluginCallback* aCallback) { - return NS_ERROR_NOT_IMPLEMENTED; -} - void nsIWidget::PostHandleKeyEvent(mozilla::WidgetKeyboardEvent* aEvent) {} bool nsIWidget::GetEditCommands(nsIWidget::NativeKeyBindingsType aType, diff --git a/widget/nsIKeyEventInPluginCallback.h b/widget/nsIKeyEventInPluginCallback.h deleted file mode 100644 index f59473925403..000000000000 --- a/widget/nsIKeyEventInPluginCallback.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: C++; tab-width: 40; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef nsIKeyEventInPluginCallback_h_ -#define nsIKeyEventInPluginCallback_h_ - -#include "mozilla/EventForwards.h" - -#include "nsISupports.h" - -#define NS_IKEYEVENTINPLUGINCALLBACK_IID \ - { \ - 0x543c5a8a, 0xc50e, 0x4cf9, { \ - 0xa6, 0xba, 0x29, 0xa1, 0xc5, 0xa5, 0x47, 0x07 \ - } \ - } - -class nsIKeyEventInPluginCallback : public nsISupports { - public: - NS_DECLARE_STATIC_IID_ACCESSOR(NS_IKEYEVENTINPLUGINCALLBACK_IID) - - /** - * HandledWindowedPluginKeyEvent() is a callback method of - * nsIWidget::OnWindowedPluginKeyEvent(). When it returns - * NS_SUCCESS_EVENT_HANDLED_ASYNCHRONOUSLY, it should call this method - * when the key event is handled. - * - * @param aKeyEventData The key event which was posted to the parent - * process from a plugin process. - * @param aIsConsumed true if aKeyEventData is consumed in the - * parent process. Otherwise, false. - */ - virtual void HandledWindowedPluginKeyEvent( - const mozilla::NativeEventData& aKeyEventData, bool aIsConsumed) = 0; -}; - -NS_DEFINE_STATIC_IID_ACCESSOR(nsIKeyEventInPluginCallback, - NS_IKEYEVENTINPLUGINCALLBACK_IID) - -#endif // #ifndef nsIKeyEventInPluginCallback_h_ diff --git a/widget/nsIWidget.h b/widget/nsIWidget.h index 54358da41c0e..d1a28f067d6b 100644 --- a/widget/nsIWidget.h +++ b/widget/nsIWidget.h @@ -54,7 +54,6 @@ class nsIContent; class ViewWrapper; class nsIScreen; class nsIRunnable; -class nsIKeyEventInPluginCallback; class nsUint64HashKey; namespace mozilla { @@ -2052,28 +2051,6 @@ class nsIWidget : public nsISupports { const ScrollableLayerGuid::ViewID& aViewId, const CSSRect& aRect, const uint32_t& aFlags) = 0; - /** - * OnWindowedPluginKeyEvent() is called when native key event is - * received in the focused plugin process directly in PluginInstanceChild. - * - * @param aKeyEventData The native key event data. The actual type - * copied into NativeEventData depends on the - * caller. Please check PluginInstanceChild. - * @param aCallback Callback interface. When this returns - * NS_SUCCESS_EVENT_HANDLED_ASYNCHRONOUSLY, - * the event handler has to call this callback. - * Otherwise, the caller should do that instead. - * @return NS_ERROR_* if this fails to handle the event. - * NS_SUCCESS_EVENT_CONSUMED if the key event is - * consumed. - * NS_OK if the key event isn't consumed. - * NS_SUCCESS_EVENT_HANDLED_ASYNCHRONOUSLY if the - * key event will be handled asynchronously. - */ - virtual nsresult OnWindowedPluginKeyEvent( - const mozilla::NativeEventData& aKeyEventData, - nsIKeyEventInPluginCallback* aCallback); - /** * LookUpDictionary shows the dictionary for the word around current point. * diff --git a/widget/windows/WinNativeEventData.h b/widget/windows/WinNativeEventData.h deleted file mode 100644 index b6b1de225a3b..000000000000 --- a/widget/windows/WinNativeEventData.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_widget_WinNativeEventData_h_ -#define mozilla_widget_WinNativeEventData_h_ - -#include - -#include "mozilla/EventForwards.h" -#include "mozilla/widget/WinModifierKeyState.h" - -namespace mozilla { -namespace widget { - -/** - * WinNativeKeyEventData is used by nsIWidget::OnWindowedPluginKeyEvent() and - * related IPC methods. This class cannot hold any pointers and references - * since which are not available in different process. - */ - -class WinNativeKeyEventData final { - public: - UINT mMessage; - WPARAM mWParam; - LPARAM mLParam; - Modifiers mModifiers; - - private: - uintptr_t mKeyboardLayout; - - public: - WinNativeKeyEventData(UINT aMessage, WPARAM aWParam, LPARAM aLParam, - const ModifierKeyState& aModifierKeyState) - : mMessage(aMessage), - mWParam(aWParam), - mLParam(aLParam), - mModifiers(aModifierKeyState.GetModifiers()), - mKeyboardLayout(reinterpret_cast(::GetKeyboardLayout(0))) {} - - HKL GetKeyboardLayout() const { - return reinterpret_cast(mKeyboardLayout); - } -}; - -} // namespace widget -} // namespace mozilla - -#endif // #ifndef mozilla_widget_WinNativeEventData_h_ diff --git a/widget/windows/moz.build b/widget/windows/moz.build index 4b1f0102b00f..949e48ef2d82 100644 --- a/widget/windows/moz.build +++ b/widget/windows/moz.build @@ -53,7 +53,6 @@ EXPORTS.mozilla.widget += [ "WindowsSMTCProvider.h", "WinMessages.h", "WinModifierKeyState.h", - "WinNativeEventData.h", ] UNIFIED_SOURCES += [ diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp index a9dcd826a22a..d7de99ca6ce4 100644 --- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -92,7 +92,6 @@ #include "mozilla/WidgetTraceEvent.h" #include "nsISupportsPrimitives.h" -#include "nsIKeyEventInPluginCallback.h" #include "nsITheme.h" #include "nsIObserverService.h" #include "nsIScreenManager.h" @@ -139,7 +138,6 @@ #include "mozilla/TextEvents.h" // For WidgetKeyboardEvent #include "mozilla/TextEventDispatcherListener.h" #include "mozilla/widget/nsAutoRollup.h" -#include "mozilla/widget/WinNativeEventData.h" #include "mozilla/widget/PlatformWidgetTypes.h" #include "nsStyleConsts.h" #include "nsBidiKeyboard.h" @@ -8503,17 +8501,22 @@ bool nsWindow::WidgetTypeSupportsAcceleration() { // // Windows' support for transparent accelerated surfaces isn't great. // Some possible approaches: - // - Readback the data and update it using UpdateLayeredWindow/UpdateLayeredWindowIndirect - // This is what WPF does. See CD3DDeviceLevel1::PresentWithGDI/CD3DSwapChainWithSwDC in WpfGfx. - // The rationale for not using IDirect3DSurface9::GetDC is explained here: + // - Readback the data and update it using + // UpdateLayeredWindow/UpdateLayeredWindowIndirect + // This is what WPF does. See + // CD3DDeviceLevel1::PresentWithGDI/CD3DSwapChainWithSwDC in WpfGfx. The + // rationale for not using IDirect3DSurface9::GetDC is explained here: // https://web.archive.org/web/20160521191104/https://blogs.msdn.microsoft.com/dwayneneed/2008/09/08/transparent-windows-in-wpf/ // - Use D3D11_RESOURCE_MISC_GDI_COMPATIBLE, IDXGISurface1::GetDC(), // and UpdateLayeredWindowIndirect. - // This is suggested here: https://docs.microsoft.com/en-us/archive/msdn-magazine/2009/december/windows-with-c-layered-windows-with-direct2d + // This is suggested here: + // https://docs.microsoft.com/en-us/archive/msdn-magazine/2009/december/windows-with-c-layered-windows-with-direct2d // but might have the same problem that IDirect3DSurface9::GetDC has. - // - Creating the window with the WS_EX_NOREDIRECTIONBITMAP flag and use DirectComposition. + // - Creating the window with the WS_EX_NOREDIRECTIONBITMAP flag and use + // DirectComposition. // Not supported on Win7. - // - Using DwmExtendFrameIntoClientArea with negative margins and something to turn off the glass effect. + // - Using DwmExtendFrameIntoClientArea with negative margins and something + // to turn off the glass effect. // This doesn't work when the DWM is not running (Win7) // // Also see bug 1150376, D3D11 composition can cause issues on some devices @@ -8523,42 +8526,6 @@ bool nsWindow::WidgetTypeSupportsAcceleration() { !(IsPopup() && DeviceManagerDx::Get()->IsWARP()); } -nsresult nsWindow::OnWindowedPluginKeyEvent( - const NativeEventData& aKeyEventData, - nsIKeyEventInPluginCallback* aCallback) { - if (NS_WARN_IF(!mWnd)) { - return NS_OK; - } - const WinNativeKeyEventData* eventData = - static_cast(aKeyEventData); - switch (eventData->mMessage) { - case WM_KEYDOWN: - case WM_SYSKEYDOWN: { - MSG mozMsg = WinUtils::InitMSG(MOZ_WM_KEYDOWN, eventData->mWParam, - eventData->mLParam, mWnd); - ModifierKeyState modifierKeyState(eventData->mModifiers); - NativeKey nativeKey(this, mozMsg, modifierKeyState, - eventData->GetKeyboardLayout()); - return nativeKey.HandleKeyDownMessage() ? NS_SUCCESS_EVENT_CONSUMED - : NS_OK; - } - case WM_KEYUP: - case WM_SYSKEYUP: { - MSG mozMsg = WinUtils::InitMSG(MOZ_WM_KEYUP, eventData->mWParam, - eventData->mLParam, mWnd); - ModifierKeyState modifierKeyState(eventData->mModifiers); - NativeKey nativeKey(this, mozMsg, modifierKeyState, - eventData->GetKeyboardLayout()); - return nativeKey.HandleKeyUpMessage() ? NS_SUCCESS_EVENT_CONSUMED : NS_OK; - } - default: - // We shouldn't consume WM_*CHAR messages here even if the preceding - // keydown or keyup event on the plugin is consumed. It should be - // managed in each plugin window rather than top level window. - return NS_OK; - } -} - bool nsWindow::OnPointerEvents(UINT msg, WPARAM aWParam, LPARAM aLParam) { if (!mPointerEvents.ShouldHandleWinPointerMessages(msg, aWParam)) { return false; diff --git a/widget/windows/nsWindow.h b/widget/windows/nsWindow.h index cf0fad551f96..e20f28446942 100644 --- a/widget/windows/nsWindow.h +++ b/widget/windows/nsWindow.h @@ -356,10 +356,6 @@ class nsWindow final : public nsWindowBase { const IMEContext& DefaultIMC() const { return mDefaultIMC; } - virtual nsresult OnWindowedPluginKeyEvent( - const mozilla::NativeEventData& aKeyEventData, - nsIKeyEventInPluginCallback* aCallback) override; - void GetCompositorWidgetInitData( mozilla::widget::CompositorWidgetInitData* aInitData) override; bool IsTouchWindow() const { return mTouchWindow; } diff --git a/xpcom/base/ErrorList.py b/xpcom/base/ErrorList.py index c7b889c3e499..66d4e5b6e9cd 100755 --- a/xpcom/base/ErrorList.py +++ b/xpcom/base/ErrorList.py @@ -233,15 +233,9 @@ with modules["GFX"]: with modules["WIDGET"]: # Used by: # - nsIWidget::NotifyIME() - # - nsIWidget::OnWindowedPluginKeyEvent() # Returned when the notification or the event is handled and it's consumed # by somebody. errors["NS_SUCCESS_EVENT_CONSUMED"] = SUCCESS(1) - # Used by: - # - nsIWidget::OnWindowedPluginKeyEvent() - # Returned when the event is handled correctly but the result will be - # notified asynchronously. - errors["NS_SUCCESS_EVENT_HANDLED_ASYNCHRONOUSLY"] = SUCCESS(2) # =======================================================================