Bug 1342141 - Use NP_EMBED as the mode for all plugins, whether they are full-page or not, r?jimm draft
authorBenjamin Smedberg <benjamin@smedbergs.us>
Thu, 23 Feb 2017 12:37:42 -0500
changeset 488754 74c556c04e56ae7e5d6c5cd8f42f49f358864bac
parent 484156 9ee6c6f4e59c7967108a727a80e46d686b983a0b
child 488770 bc1b57ae9579098d8a2d2fe7c3bbe395a9ab5ed6
push id46620
push userbsmedberg@mozilla.com
push dateThu, 23 Feb 2017 17:38:27 +0000
reviewersjimm
bugs1342141
milestone54.0a1
Bug 1342141 - Use NP_EMBED as the mode for all plugins, whether they are full-page or not, r?jimm MozReview-Commit-ID: BeB24ux8TEp
dom/plugins/base/PluginPRLibrary.cpp
dom/plugins/base/PluginPRLibrary.h
dom/plugins/base/nsNPAPIPluginInstance.cpp
dom/plugins/base/nsNPAPIPluginInstance.h
dom/plugins/ipc/PPluginModule.ipdl
dom/plugins/ipc/PluginAsyncSurrogate.cpp
dom/plugins/ipc/PluginAsyncSurrogate.h
dom/plugins/ipc/PluginInstanceChild.cpp
dom/plugins/ipc/PluginInstanceChild.h
dom/plugins/ipc/PluginLibrary.h
dom/plugins/ipc/PluginModuleChild.cpp
dom/plugins/ipc/PluginModuleChild.h
dom/plugins/ipc/PluginModuleParent.cpp
dom/plugins/ipc/PluginModuleParent.h
--- a/dom/plugins/base/PluginPRLibrary.cpp
+++ b/dom/plugins/base/PluginPRLibrary.cpp
@@ -185,25 +185,25 @@ PluginPRLibrary::NP_GetEntryPoints(NPPlu
   mNPP_ClearSiteData = pFuncs->clearsitedata;
   mNPP_GetSitesWithData = pFuncs->getsiteswithdata;
   return NS_OK;
 }
 #endif
 
 nsresult
 PluginPRLibrary::NPP_New(NPMIMEType pluginType, NPP instance,
-			 uint16_t mode, int16_t argc, char* argn[],
+			 int16_t argc, char* argn[],
 			 char* argv[], NPSavedData* saved,
 			 NPError* error)
 {
   if (!mNPP_New)
     return NS_ERROR_FAILURE;
 
   MAIN_THREAD_JNI_REF_GUARD;
-  *error = mNPP_New(pluginType, instance, mode, argc, argn, argv, saved);
+  *error = mNPP_New(pluginType, instance, NP_EMBED, argc, argn, argv, saved);
   return NS_OK;
 }
 
 nsresult
 PluginPRLibrary::NPP_ClearSiteData(const char* site, uint64_t flags,
                                    uint64_t maxAge, nsCOMPtr<nsIClearSiteDataCallback> callback)
 {
   if (!mNPP_ClearSiteData) {
--- a/dom/plugins/base/PluginPRLibrary.h
+++ b/dom/plugins/base/PluginPRLibrary.h
@@ -95,17 +95,17 @@ public:
     virtual nsresult NP_GetValue(void* aFuture, NPPVariable aVariable,
                                  void* aValue, NPError* aError) override;
 
 #if defined(XP_WIN) || defined(XP_MACOSX)
     virtual nsresult NP_GetEntryPoints(NPPluginFuncs* aFuncs, NPError* aError) override;
 #endif
 
     virtual nsresult NPP_New(NPMIMEType aPluginType, NPP aInstance,
-                             uint16_t aMode, int16_t aArgc, char* aArgn[],
+                             int16_t aArgc, char* aArgn[],
                              char* aArgv[], NPSavedData* aSaved,
                              NPError* aError) override;
 
     virtual nsresult NPP_ClearSiteData(const char* aSite, uint64_t aFlags,
                                        uint64_t aMaxAge, nsCOMPtr<nsIClearSiteDataCallback> callback) override;
     virtual nsresult NPP_GetSitesWithData(nsCOMPtr<nsIGetSitesWithDataCallback> callback) override;
 
     virtual nsresult AsyncSetWindow(NPP aInstance, NPWindow* aWindow) override;
--- a/dom/plugins/base/nsNPAPIPluginInstance.cpp
+++ b/dom/plugins/base/nsNPAPIPluginInstance.cpp
@@ -336,25 +336,16 @@ nsNPAPIPluginInstance::GetTagType(nsPlug
 {
   if (!mOwner) {
     return NS_ERROR_FAILURE;
   }
 
   return mOwner->GetTagType(result);
 }
 
-nsresult
-nsNPAPIPluginInstance::GetMode(int32_t *result)
-{
-  if (mOwner)
-    return mOwner->GetMode(result);
-  else
-    return NS_ERROR_FAILURE;
-}
-
 nsTArray<nsNPAPIPluginStreamListener*>*
 nsNPAPIPluginInstance::StreamListeners()
 {
   return &mStreamListeners;
 }
 
 nsTArray<nsPluginStreamListenerPeer*>*
 nsNPAPIPluginInstance::FileCachedStreamListeners()
@@ -413,21 +404,19 @@ nsNPAPIPluginInstance::Start()
   #endif
 
   for (uint32_t i = 0, pos = attributes.Length() + 1; i < params.Length(); i ++) {
     mCachedParamNames[pos] = ToNewUTF8String(params[i].mName);
     mCachedParamValues[pos] = ToNewUTF8String(params[i].mValue);
     pos++;
   }
 
-  int32_t       mode;
   const char*   mimetype;
   NPError       error = NPERR_GENERIC_ERROR;
 
-  GetMode(&mode);
   GetMIMEType(&mimetype);
 
   CheckJavaC2PJSObjectQuirk(quirkParamLength, mCachedParamNames, mCachedParamValues);
 
   bool oldVal = mInPluginInitCall;
   mInPluginInitCall = true;
 
   // Need this on the stack before calling NPP_New otherwise some callbacks that
@@ -441,24 +430,24 @@ nsNPAPIPluginInstance::Start()
   if (!library)
     return NS_ERROR_FAILURE;
 
   // Mark this instance as running before calling NPP_New because the plugin may
   // call other NPAPI functions, like NPN_GetURLNotify, that assume this is set
   // before returning. If the plugin returns failure, we'll clear it out below.
   mRunning = RUNNING;
 
-  nsresult newResult = library->NPP_New((char*)mimetype, &mNPP, (uint16_t)mode,
+  nsresult newResult = library->NPP_New((char*)mimetype, &mNPP,
                                         quirkParamLength, mCachedParamNames,
                                         mCachedParamValues, nullptr, &error);
   mInPluginInitCall = oldVal;
 
   NPP_PLUGIN_LOG(PLUGIN_LOG_NORMAL,
-  ("NPP New called: this=%p, npp=%p, mime=%s, mode=%d, argc=%d, return=%d\n",
-  this, &mNPP, mimetype, mode, quirkParamLength, error));
+  ("NPP New called: this=%p, npp=%p, mime=%s, argc=%d, return=%d\n",
+  this, &mNPP, mimetype, quirkParamLength, error));
 
   if (NS_FAILED(newResult) || error != NPERR_NO_ERROR) {
     mRunning = DESTROYED;
     nsJSNPRuntime::OnPluginDestroy(&mNPP);
     return NS_ERROR_FAILURE;
   }
 
   return newResult;
--- a/dom/plugins/base/nsNPAPIPluginInstance.h
+++ b/dom/plugins/base/nsNPAPIPluginInstance.h
@@ -324,17 +324,16 @@ public:
     }
   }
 
 protected:
 
   virtual ~nsNPAPIPluginInstance();
 
   nsresult GetTagType(nsPluginTagType *result);
-  nsresult GetMode(int32_t *result);
 
   // check if this is a Java applet and affected by bug 750480
   void CheckJavaC2PJSObjectQuirk(uint16_t paramCount,
                                  const char* const* names,
                                  const char* const* values);
 
   // The structure used to communicate between the plugin instance and
   // the browser.
--- a/dom/plugins/ipc/PPluginModule.ipdl
+++ b/dom/plugins/ipc/PPluginModule.ipdl
@@ -57,17 +57,16 @@ child:
     returns (NPError rv);
 
   intr NP_Initialize(PluginSettings settings)
     returns (NPError rv);
 
   async AsyncNP_Initialize(PluginSettings settings);
 
   async PPluginInstance(nsCString aMimeType,
-                        uint16_t aMode,
                         nsCString[] aNames,
                         nsCString[] aValues);
 
   // Implements the synchronous version of NPP_New for when async plugin init
   // is preffed off.
   intr SyncNPP_New(PPluginInstance aActor)
     returns (NPError rv);
 
--- a/dom/plugins/ipc/PluginAsyncSurrogate.cpp
+++ b/dom/plugins/ipc/PluginAsyncSurrogate.cpp
@@ -96,56 +96,54 @@ private:
   bool        mIsRecursive;
   static bool sHasEntered;
 };
 
 bool RecursionGuard::sHasEntered = false;
 
 PluginAsyncSurrogate::PluginAsyncSurrogate(PluginModuleParent* aParent)
   : mParent(aParent)
-  , mMode(0)
   , mWindow(nullptr)
   , mAcceptCalls(false)
   , mInstantiated(false)
   , mAsyncSetWindow(false)
   , mInitCancelled(false)
   , mDestroyPending(false)
   , mAsyncCallsInFlight(0)
 {
   MOZ_ASSERT(aParent);
 }
 
 PluginAsyncSurrogate::~PluginAsyncSurrogate()
 {
 }
 
 bool
-PluginAsyncSurrogate::Init(NPMIMEType aPluginType, NPP aInstance, uint16_t aMode,
+PluginAsyncSurrogate::Init(NPMIMEType aPluginType, NPP aInstance,
                            int16_t aArgc, char* aArgn[], char* aArgv[])
 {
   mMimeType = aPluginType;
   nsNPAPIPluginInstance* instance =
     static_cast<nsNPAPIPluginInstance*>(aInstance->ndata);
   MOZ_ASSERT(instance);
   mInstance = instance;
-  mMode = aMode;
   for (int i = 0; i < aArgc; ++i) {
     mNames.AppendElement(NullableString(aArgn[i]));
     mValues.AppendElement(NullableString(aArgv[i]));
   }
   return true;
 }
 
 /* static */ bool
 PluginAsyncSurrogate::Create(PluginModuleParent* aParent, NPMIMEType aPluginType,
-                             NPP aInstance, uint16_t aMode, int16_t aArgc,
+                             NPP aInstance, int16_t aArgc,
                              char* aArgn[], char* aArgv[])
 {
   RefPtr<PluginAsyncSurrogate> surrogate(new PluginAsyncSurrogate(aParent));
-  if (!surrogate->Init(aPluginType, aInstance, aMode, aArgc, aArgn, aArgv)) {
+  if (!surrogate->Init(aPluginType, aInstance, aArgc, aArgn, aArgv)) {
     return false;
   }
   PluginAsyncSurrogate* rawSurrogate = nullptr;
   surrogate.forget(&rawSurrogate);
   aInstance->pdata = static_cast<PluginDataResolver*>(rawSurrogate);
   return true;
 }
 
@@ -164,17 +162,17 @@ PluginAsyncSurrogate::Cast(NPP aInstance
 nsresult
 PluginAsyncSurrogate::NPP_New(NPError* aError)
 {
   if (!mInstance) {
     return NS_ERROR_NULL_POINTER;
   }
 
   nsresult rv = mParent->NPP_NewInternal(mMimeType.BeginWriting(), GetNPP(),
-                                         mMode, mNames, mValues, nullptr,
+                                         mNames, mValues, nullptr,
                                          aError);
   if (NS_FAILED(rv)) {
     return rv;
   }
   return NS_OK;
 }
 
 void
--- a/dom/plugins/ipc/PluginAsyncSurrogate.h
+++ b/dom/plugins/ipc/PluginAsyncSurrogate.h
@@ -24,33 +24,33 @@ struct ParentNPObject;
 class PluginInstanceParent;
 class PluginModuleParent;
 
 class PluginAsyncSurrogate : public PluginDataResolver
 {
 public:
   NS_INLINE_DECL_REFCOUNTING(PluginAsyncSurrogate)
 
-  bool Init(NPMIMEType aPluginType, NPP aInstance, uint16_t aMode,
+  bool Init(NPMIMEType aPluginType, NPP aInstance,
             int16_t aArgc, char* aArgn[], char* aArgv[]);
   nsresult NPP_New(NPError* aError);
   NPError NPP_Destroy(NPSavedData** aSave);
   NPError NPP_GetValue(NPPVariable aVariable, void* aRetval);
   NPError NPP_SetValue(NPNVariable aVariable, void* aValue);
   NPError NPP_NewStream(NPMIMEType aType, NPStream* aStream, NPBool aSeekable,
                         uint16_t* aStype);
   NPError NPP_SetWindow(NPWindow* aWindow);
   nsresult AsyncSetWindow(NPWindow* aWindow);
   void NPP_Print(NPPrint* aPrintInfo);
   int16_t NPP_HandleEvent(void* aEvent);
   int32_t NPP_WriteReady(NPStream* aStream);
   NPError NPP_DestroyStream(NPStream* aStream, NPReason aReason);
   void OnInstanceCreated(PluginInstanceParent* aInstance);
   static bool Create(PluginModuleParent* aParent, NPMIMEType aPluginType,
-                     NPP aInstance, uint16_t aMode, int16_t aArgc,
+                     NPP aInstance, int16_t aArgc,
                      char* aArgn[], char* aArgv[]);
   static const NPClass* GetClass() { return &sNPClass; }
   static void NP_GetEntryPoints(NPPluginFuncs* aFuncs);
   static PluginAsyncSurrogate* Cast(NPP aInstance);
   static void NotifyDestroyPending(NPP aInstance);
   void NotifyDestroyPending();
 
   virtual PluginAsyncSurrogate*
@@ -136,17 +136,16 @@ private:
     NPBool      mSeekable;
   };
 
 private:
   PluginModuleParent*             mParent;
   // These values are used to construct the plugin instance
   nsCString                       mMimeType;
   mozilla::WeakPtr<nsNPAPIPluginInstance> mInstance;
-  uint16_t                        mMode;
   InfallibleTArray<nsCString>     mNames;
   InfallibleTArray<nsCString>     mValues;
   // This is safe to store as a pointer because the spec says it will remain
   // valid until destruction or a subsequent NPP_SetWindow call.
   NPWindow*                       mWindow;
   nsTArray<PendingNewStreamCall>  mPendingNewStreamCalls;
   UniquePtr<PluginDestructionGuard> mPluginDestructionGuard;
 
--- a/dom/plugins/ipc/PluginInstanceChild.cpp
+++ b/dom/plugins/ipc/PluginInstanceChild.cpp
@@ -128,22 +128,20 @@ CreateDrawTargetForSurface(gfxASurface *
   }
   return drawTarget;
 }
 
 bool PluginInstanceChild::sIsIMEComposing = false;
 
 PluginInstanceChild::PluginInstanceChild(const NPPluginFuncs* aPluginIface,
                                          const nsCString& aMimeType,
-                                         const uint16_t& aMode,
                                          const InfallibleTArray<nsCString>& aNames,
                                          const InfallibleTArray<nsCString>& aValues)
     : mPluginIface(aPluginIface)
     , mMimeType(aMimeType)
-    , mMode(aMode)
     , mNames(aNames)
     , mValues(aValues)
 #if defined(XP_DARWIN) || defined (XP_WIN)
     , mContentsScaleFactor(1.0)
 #endif
     , mPostingKeyEvents(0)
     , mPostingKeyEventsOutdated(0)
     , mDrawingModel(kDefaultDrawingModel)
@@ -250,17 +248,17 @@ PluginInstanceChild::DoNPP_New()
     for (int i = 0; i < argc; ++i) {
         argn[i] = const_cast<char*>(NullableStringGet(mNames[i]));
         argv[i] = const_cast<char*>(NullableStringGet(mValues[i]));
     }
 
     NPP npp = GetNPP();
 
     NPError rv = mPluginIface->newp((char*)NullableStringGet(mMimeType), npp,
-                                    mMode, argc, argn.get(), argv.get(), 0);
+                                    NP_EMBED, argc, argn.get(), argv.get(), 0);
     if (NPERR_NO_ERROR != rv) {
         return rv;
     }
 
     if (!Initialize()) {
         rv = NPERR_MODULE_LOAD_FAILED_ERROR;
     }
     return rv;
--- a/dom/plugins/ipc/PluginInstanceChild.h
+++ b/dom/plugins/ipc/PluginInstanceChild.h
@@ -205,17 +205,16 @@ protected:
     AnswerUpdateWindow() override;
 
     virtual mozilla::ipc::IPCResult
     RecvNPP_DidComposite() override;
 
 public:
     PluginInstanceChild(const NPPluginFuncs* aPluginIface,
                         const nsCString& aMimeType,
-                        const uint16_t& aMode,
                         const InfallibleTArray<nsCString>& aNames,
                         const InfallibleTArray<nsCString>& aValues);
 
     virtual ~PluginInstanceChild();
 
     NPError DoNPP_New();
 
     // Common sync+async implementation of NPP_NewStream
@@ -395,17 +394,16 @@ private:
         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;
-    uint16_t                    mMode;
     InfallibleTArray<nsCString> mNames;
     InfallibleTArray<nsCString> mValues;
     NPP_t mData;
     NPWindow mWindow;
 #if defined(XP_DARWIN) || defined(XP_WIN)
     double mContentsScaleFactor;
 #endif
     double mCSSZoomFactor;
--- a/dom/plugins/ipc/PluginLibrary.h
+++ b/dom/plugins/ipc/PluginLibrary.h
@@ -65,17 +65,17 @@ public:
   virtual nsresult NP_Shutdown(NPError* error) = 0;
   virtual nsresult NP_GetMIMEDescription(const char** mimeDesc) = 0;
   virtual nsresult NP_GetValue(void *future, NPPVariable aVariable,
                                void *aValue, NPError* error) = 0;
 #if defined(XP_WIN) || defined(XP_MACOSX)
   virtual nsresult NP_GetEntryPoints(NPPluginFuncs* pFuncs, NPError* error) = 0;
 #endif
   virtual nsresult NPP_New(NPMIMEType pluginType, NPP instance,
-                           uint16_t mode, int16_t argc, char* argn[],
+                           int16_t argc, char* argn[],
                            char* argv[], NPSavedData* saved,
                            NPError* error) = 0;
 
   virtual nsresult NPP_ClearSiteData(const char* site, uint64_t flags,
                                      uint64_t maxAge, nsCOMPtr<nsIClearSiteDataCallback> callback) = 0;
   virtual nsresult NPP_GetSitesWithData(nsCOMPtr<nsIGetSitesWithDataCallback> callback) = 0;
 
   virtual nsresult AsyncSetWindow(NPP instance, NPWindow* window) = 0;
--- a/dom/plugins/ipc/PluginModuleChild.cpp
+++ b/dom/plugins/ipc/PluginModuleChild.cpp
@@ -2123,17 +2123,16 @@ PMCGetKeyState(int aVirtKey)
         }
     }
     return sGetKeyStatePtrStub(aVirtKey);
 }
 #endif
 
 PPluginInstanceChild*
 PluginModuleChild::AllocPPluginInstanceChild(const nsCString& aMimeType,
-                                             const uint16_t& aMode,
                                              const InfallibleTArray<nsCString>& aNames,
                                              const InfallibleTArray<nsCString>& aValues)
 {
     PLUGIN_LOG_DEBUG_METHOD;
     AssertPluginThread();
 
     // In e10s, gChromeInstance hands out quirks to instances, but never
     // allocates an instance on its own. Make sure it gets the latest copy
@@ -2153,17 +2152,17 @@ PluginModuleChild::AllocPPluginInstanceC
 
     if ((mQuirks & QUIRK_FLASH_HOOK_GETKEYSTATE) &&
         !sGetKeyStatePtrStub) {
         sUser32Intercept.AddHook("GetKeyState", reinterpret_cast<intptr_t>(PMCGetKeyState),
                                  (void**) &sGetKeyStatePtrStub);
     }
 #endif
 
-    return new PluginInstanceChild(&mFunctions, aMimeType, aMode, aNames,
+    return new PluginInstanceChild(&mFunctions, aMimeType, aNames,
                                    aValues);
 }
 
 void
 PluginModuleChild::InitQuirksModes(const nsCString& aMimeType)
 {
     if (mQuirks != QUIRKS_NOT_INITIALIZED) {
       return;
@@ -2182,17 +2181,16 @@ PluginModuleChild::AnswerModuleSupportsA
     NS_NOTREACHED("Shouldn't get here!");
     return IPC_FAIL_NO_REASON(this);
 #endif
 }
 
 mozilla::ipc::IPCResult
 PluginModuleChild::RecvPPluginInstanceConstructor(PPluginInstanceChild* aActor,
                                                   const nsCString& aMimeType,
-                                                  const uint16_t& aMode,
                                                   InfallibleTArray<nsCString>&& aNames,
                                                   InfallibleTArray<nsCString>&& aValues)
 {
     PLUGIN_LOG_DEBUG_METHOD;
     AssertPluginThread();
 
     NS_ASSERTION(aActor, "Null actor!");
     return IPC_OK();
--- a/dom/plugins/ipc/PluginModuleChild.h
+++ b/dom/plugins/ipc/PluginModuleChild.h
@@ -78,28 +78,26 @@ protected:
                                    override;
     virtual mozilla::ipc::IPCResult RecvAsyncNPP_New(PPluginInstanceChild* aActor) override;
 
     virtual mozilla::ipc::IPCResult
     RecvInitPluginModuleChild(Endpoint<PPluginModuleChild>&& endpoint) override;
 
     virtual PPluginInstanceChild*
     AllocPPluginInstanceChild(const nsCString& aMimeType,
-                              const uint16_t& aMode,
                               const InfallibleTArray<nsCString>& aNames,
                               const InfallibleTArray<nsCString>& aValues)
                               override;
 
     virtual bool
     DeallocPPluginInstanceChild(PPluginInstanceChild* aActor) override;
 
     virtual mozilla::ipc::IPCResult
     RecvPPluginInstanceConstructor(PPluginInstanceChild* aActor,
                                    const nsCString& aMimeType,
-                                   const uint16_t& aMode,
                                    InfallibleTArray<nsCString>&& aNames,
                                    InfallibleTArray<nsCString>&& aValues)
                                    override;
     virtual mozilla::ipc::IPCResult
     AnswerNP_Shutdown(NPError *rv) override;
 
     virtual mozilla::ipc::IPCResult
     AnswerOptionalFunctionsSupported(bool *aURLRedirectNotify,
--- a/dom/plugins/ipc/PluginModuleParent.cpp
+++ b/dom/plugins/ipc/PluginModuleParent.cpp
@@ -1673,17 +1673,16 @@ PluginModuleParent::NotifyPluginCrashed(
     }
 
     if (mPlugin)
         mPlugin->PluginCrashed(mPluginDumpID, mBrowserDumpID);
 }
 
 PPluginInstanceParent*
 PluginModuleParent::AllocPPluginInstanceParent(const nsCString& aMimeType,
-                                               const uint16_t& aMode,
                                                const InfallibleTArray<nsCString>& aNames,
                                                const InfallibleTArray<nsCString>& aValues)
 {
     NS_ERROR("Not reachable!");
     return nullptr;
 }
 
 bool
@@ -2620,29 +2619,29 @@ PluginModuleChromeParent::NP_GetEntryPoi
 
     return PluginModuleParent::NP_GetEntryPoints(pFuncs, error);
 }
 
 #endif
 
 nsresult
 PluginModuleParent::NPP_New(NPMIMEType pluginType, NPP instance,
-                            uint16_t mode, int16_t argc, char* argn[],
+                            int16_t argc, char* argn[],
                             char* argv[], NPSavedData* saved,
                             NPError* error)
 {
     PLUGIN_LOG_DEBUG_METHOD;
 
     if (mShutdown) {
         *error = NPERR_GENERIC_ERROR;
         return NS_ERROR_FAILURE;
     }
 
     if (mIsStartingAsync) {
-        if (!PluginAsyncSurrogate::Create(this, pluginType, instance, mode,
+        if (!PluginAsyncSurrogate::Create(this, pluginType, instance,
                                           argc, argn, argv)) {
             *error = NPERR_GENERIC_ERROR;
             return NS_ERROR_FAILURE;
         }
 
         if (!mNPInitialized) {
             RefPtr<PluginAsyncSurrogate> surrogate =
                 PluginAsyncSurrogate::Cast(instance);
@@ -2656,17 +2655,17 @@ PluginModuleParent::NPP_New(NPMIMEType p
     InfallibleTArray<nsCString> names;
     InfallibleTArray<nsCString> values;
 
     for (int i = 0; i < argc; ++i) {
         names.AppendElement(NullableString(argn[i]));
         values.AppendElement(NullableString(argv[i]));
     }
 
-    nsresult rv = NPP_NewInternal(pluginType, instance, mode, names, values,
+    nsresult rv = NPP_NewInternal(pluginType, instance, names, values,
                                   saved, error);
     if (NS_FAILED(rv) || !mIsStartingAsync) {
         return rv;
     }
     return NS_PLUGIN_INIT_PENDING;
 }
 
 class nsCaseInsensitiveUTF8StringArrayComparator
@@ -2708,17 +2707,16 @@ ForceWindowless(InfallibleTArray<nsCStri
         names.AppendElement(wmodeAttributeName);
         values.AppendElement(opaqueAttributeValue);
     }
 }
 #endif // windows or linux
 
 nsresult
 PluginModuleParent::NPP_NewInternal(NPMIMEType pluginType, NPP instance,
-                                    uint16_t mode,
                                     InfallibleTArray<nsCString>& names,
                                     InfallibleTArray<nsCString>& values,
                                     NPSavedData* saved, NPError* error)
 {
     MOZ_ASSERT(names.Length() == values.Length());
     if (mPluginName.IsEmpty()) {
         GetPluginDetails();
         InitQuirksModes(nsDependentCString(pluginType));
@@ -2785,17 +2783,17 @@ PluginModuleParent::NPP_NewInternal(NPMI
         nsCOMPtr<nsIDocument> doc = node->OwnerDoc();
         if (doc) {
             nsCOMPtr<nsIEventTarget> eventTarget = doc->EventTargetFor(TaskCategory::Other);
             SetEventTargetForActor(parentInstance, eventTarget);
         }
     }
 
     if (!SendPPluginInstanceConstructor(parentInstance,
-                                        nsDependentCString(pluginType), mode,
+                                        nsDependentCString(pluginType),
                                         names, values)) {
         // |parentInstance| is automatically deleted.
         instance->pdata = nullptr;
         *error = NPERR_GENERIC_ERROR;
         return NS_ERROR_FAILURE;
     }
 
     {   // Scope for timer
--- a/dom/plugins/ipc/PluginModuleParent.h
+++ b/dom/plugins/ipc/PluginModuleParent.h
@@ -86,17 +86,16 @@ class PluginModuleParent
 {
 protected:
     typedef mozilla::PluginLibrary PluginLibrary;
     typedef mozilla::dom::PCrashReporterParent PCrashReporterParent;
     typedef mozilla::dom::CrashReporterParent CrashReporterParent;
 
     PPluginInstanceParent*
     AllocPPluginInstanceParent(const nsCString& aMimeType,
-                               const uint16_t& aMode,
                                const InfallibleTArray<nsCString>& aNames,
                                const InfallibleTArray<nsCString>& aValues)
                                override;
 
     virtual bool
     DeallocPPluginInstanceParent(PPluginInstanceParent* aActor) override;
 
 public:
@@ -218,17 +217,17 @@ protected:
     virtual mozilla::ipc::IPCResult RecvReturnClearSiteData(const NPError& aRv,
                                                             const uint64_t& aCallbackId) override;
 
     virtual mozilla::ipc::IPCResult RecvReturnSitesWithData(nsTArray<nsCString>&& aSites,
                                                             const uint64_t& aCallbackId) override;
 
     void SetPluginFuncs(NPPluginFuncs* aFuncs);
 
-    nsresult NPP_NewInternal(NPMIMEType pluginType, NPP instance, uint16_t mode,
+    nsresult NPP_NewInternal(NPMIMEType pluginType, NPP instance,
                              InfallibleTArray<nsCString>& names,
                              InfallibleTArray<nsCString>& values,
                              NPSavedData* saved, NPError* error);
 
     // NPP-like API that Gecko calls are trampolined into.  These 
     // messages then get forwarded along to the plugin instance,
     // and then eventually the child process.
 
@@ -286,17 +285,17 @@ protected:
 
     virtual nsresult NP_GetMIMEDescription(const char** mimeDesc) override;
     virtual nsresult NP_GetValue(void *future, NPPVariable aVariable,
                                  void *aValue, NPError* error) override;
 #if defined(XP_WIN) || defined(XP_MACOSX)
     virtual nsresult NP_GetEntryPoints(NPPluginFuncs* pFuncs, NPError* error) override;
 #endif
     virtual nsresult NPP_New(NPMIMEType pluginType, NPP instance,
-                             uint16_t mode, int16_t argc, char* argn[],
+                             int16_t argc, char* argn[],
                              char* argv[], NPSavedData* saved,
                              NPError* error) override;
     virtual nsresult NPP_ClearSiteData(const char* site, uint64_t flags, uint64_t maxAge,
                                        nsCOMPtr<nsIClearSiteDataCallback> callback) override;
     virtual nsresult NPP_GetSitesWithData(nsCOMPtr<nsIGetSitesWithDataCallback> callback) override;
 
 private:
     std::map<uint64_t, nsCOMPtr<nsIClearSiteDataCallback>> mClearSiteDataCallbacks;