Bug 1232181 - Plugin module plumbing for retrieving scroll captures and updating plugin instance content scroll state. r=roc

This commit is contained in:
Jim Mathies
2016-03-01 12:48:25 -06:00
parent 463fe6414b
commit 26c7ae8377
7 changed files with 69 additions and 0 deletions

View File

@@ -321,4 +321,17 @@ PluginPRLibrary::EndUpdateBackground(NPP instance, const nsIntRect&)
return NS_ERROR_NOT_AVAILABLE; return NS_ERROR_NOT_AVAILABLE;
} }
#if defined(XP_WIN)
nsresult
PluginPRLibrary::GetScrollCaptureContainer(NPP aInstance, ImageContainer** aContainer)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
nsresult
PluginPRLibrary::UpdateScrollState(NPP aInstance, bool aIsScrolling)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
#endif
} // namespace mozilla } // namespace mozilla

View File

@@ -125,6 +125,10 @@ public:
virtual void GetLibraryPath(nsACString& aPath) { aPath.Assign(mFilePath); } virtual void GetLibraryPath(nsACString& aPath) { aPath.Assign(mFilePath); }
virtual nsresult GetRunID(uint32_t* aRunID) override { return NS_ERROR_NOT_IMPLEMENTED; } virtual nsresult GetRunID(uint32_t* aRunID) override { return NS_ERROR_NOT_IMPLEMENTED; }
virtual void SetHasLocalInstance() override { } virtual void SetHasLocalInstance() override { }
#if defined(XP_WIN)
virtual nsresult GetScrollCaptureContainer(NPP aInstance, mozilla::layers::ImageContainer** aContainer) override;
virtual nsresult UpdateScrollState(NPP aInstance, bool aIsScrolling) override;
#endif
private: private:
NP_InitializeFunc mNP_Initialize; NP_InitializeFunc mNP_Initialize;

View File

@@ -1210,6 +1210,29 @@ nsNPAPIPluginInstance::GetImageSize(nsIntSize* aSize)
return !library ? NS_ERROR_FAILURE : library->GetImageSize(&mNPP, aSize); return !library ? NS_ERROR_FAILURE : library->GetImageSize(&mNPP, aSize);
} }
#if defined(XP_WIN)
nsresult
nsNPAPIPluginInstance::GetScrollCaptureContainer(ImageContainer**aContainer)
{
*aContainer = nullptr;
if (RUNNING != mRunning)
return NS_OK;
AutoPluginLibraryCall library(this);
return !library ? NS_ERROR_FAILURE : library->GetScrollCaptureContainer(&mNPP, aContainer);
}
nsresult
nsNPAPIPluginInstance::UpdateScrollState(bool aIsScrolling)
{
if (RUNNING != mRunning)
return NS_OK;
AutoPluginLibraryCall library(this);
return !library ? NS_ERROR_FAILURE : library->UpdateScrollState(&mNPP, aIsScrolling);
}
#endif
void void
nsNPAPIPluginInstance::DidComposite() nsNPAPIPluginInstance::DidComposite()
{ {

View File

@@ -121,6 +121,10 @@ public:
nsresult InvalidateRegion(NPRegion invalidRegion); nsresult InvalidateRegion(NPRegion invalidRegion);
nsresult GetMIMEType(const char* *result); nsresult GetMIMEType(const char* *result);
nsresult GetJSContext(JSContext* *outContext); nsresult GetJSContext(JSContext* *outContext);
#if defined(XP_WIN)
nsresult GetScrollCaptureContainer(mozilla::layers::ImageContainer **aContainer);
nsresult UpdateScrollState(bool aIsScrolling);
#endif
nsPluginInstanceOwner* GetOwner(); nsPluginInstanceOwner* GetOwner();
void SetOwner(nsPluginInstanceOwner *aOwner); void SetOwner(nsPluginInstanceOwner *aOwner);
void DidComposite(); void DidComposite();

View File

@@ -87,6 +87,10 @@ public:
virtual nsresult IsRemoteDrawingCoreAnimation(NPP instance, bool *aDrawing) = 0; virtual nsresult IsRemoteDrawingCoreAnimation(NPP instance, bool *aDrawing) = 0;
virtual nsresult ContentsScaleFactorChanged(NPP instance, double aContentsScaleFactor) = 0; virtual nsresult ContentsScaleFactorChanged(NPP instance, double aContentsScaleFactor) = 0;
#endif #endif
#if defined(XP_WIN)
virtual nsresult GetScrollCaptureContainer(NPP aInstance, mozilla::layers::ImageContainer** aContainer) = 0;
virtual nsresult UpdateScrollState(NPP aInstance, bool aIsScrolling) = 0;
#endif
/** /**
* The next three methods are the third leg in the trip to * The next three methods are the third leg in the trip to

View File

@@ -2000,6 +2000,22 @@ PluginModuleParent::EndUpdateBackground(NPP instance, const nsIntRect& aRect)
return i->EndUpdateBackground(aRect); return i->EndUpdateBackground(aRect);
} }
#if defined(XP_WIN)
nsresult
PluginModuleParent::GetScrollCaptureContainer(NPP aInstance,
mozilla::layers::ImageContainer** aContainer)
{
PluginInstanceParent* inst = PluginInstanceParent::Cast(aInstance);
return !inst ? NS_ERROR_FAILURE : inst->GetScrollCaptureContainer(aContainer);
}
nsresult
PluginModuleParent::UpdateScrollState(NPP aInstance, bool aIsScrolling)
{
PluginInstanceParent* inst = PluginInstanceParent::Cast(aInstance);
return !inst ? NS_ERROR_FAILURE : inst->UpdateScrollState(aIsScrolling);
}
#endif
void void
PluginModuleParent::OnInitFailure() PluginModuleParent::OnInitFailure()
{ {

View File

@@ -259,6 +259,11 @@ protected:
virtual nsresult EndUpdateBackground(NPP instance, virtual nsresult EndUpdateBackground(NPP instance,
const nsIntRect& aRect) override; const nsIntRect& aRect) override;
#if defined(XP_WIN)
virtual nsresult GetScrollCaptureContainer(NPP aInstance, mozilla::layers::ImageContainer** aContainer) override;
virtual nsresult UpdateScrollState(NPP aInstance, bool aIsScrolling);
#endif
#if defined(XP_UNIX) && !defined(XP_MACOSX) && !defined(MOZ_WIDGET_GONK) #if defined(XP_UNIX) && !defined(XP_MACOSX) && !defined(MOZ_WIDGET_GONK)
virtual nsresult NP_Initialize(NPNetscapeFuncs* bFuncs, NPPluginFuncs* pFuncs, NPError* error) override; virtual nsresult NP_Initialize(NPNetscapeFuncs* bFuncs, NPPluginFuncs* pFuncs, NPError* error) override;
#else #else