зеркало из https://github.com/mozilla/pjs.git
Bug 564991. Part 37: Add test plugin API to make the plugin invalidate itself during each paint. r=josh
This commit is contained in:
Родитель
e78d0ab3cd
Коммит
9c297da773
|
@ -171,6 +171,10 @@ window.
|
||||||
* getWidthAtLastPaint()
|
* getWidthAtLastPaint()
|
||||||
Returns the window width that was current when the plugin last painted.
|
Returns the window width that was current when the plugin last painted.
|
||||||
|
|
||||||
|
* setInvalidateDuringPaint(value)
|
||||||
|
When value is true, every time the plugin paints, it will invalidate
|
||||||
|
itself *during the paint* using NPN_Invalidate.
|
||||||
|
|
||||||
== Plugin geometry ==
|
== Plugin geometry ==
|
||||||
|
|
||||||
The test plugin supports the following scriptable methods:
|
The test plugin supports the following scriptable methods:
|
||||||
|
|
|
@ -142,6 +142,7 @@ static bool getLastMouseX(NPObject* npobj, const NPVariant* args, uint32_t argCo
|
||||||
static bool getLastMouseY(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
static bool getLastMouseY(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
||||||
static bool getPaintCount(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
static bool getPaintCount(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
||||||
static bool getWidthAtLastPaint(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
static bool getWidthAtLastPaint(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
||||||
|
static bool setInvalidateDuringPaint(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
||||||
static bool getError(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
static bool getError(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
||||||
static bool doInternalConsistencyCheck(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
static bool doInternalConsistencyCheck(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
||||||
static bool setColor(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
static bool setColor(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result);
|
||||||
|
@ -192,6 +193,7 @@ static const NPUTF8* sPluginMethodIdentifierNames[] = {
|
||||||
"getLastMouseY",
|
"getLastMouseY",
|
||||||
"getPaintCount",
|
"getPaintCount",
|
||||||
"getWidthAtLastPaint",
|
"getWidthAtLastPaint",
|
||||||
|
"setInvalidateDuringPaint",
|
||||||
"getError",
|
"getError",
|
||||||
"doInternalConsistencyCheck",
|
"doInternalConsistencyCheck",
|
||||||
"setColor",
|
"setColor",
|
||||||
|
@ -243,6 +245,7 @@ static const ScriptableFunction sPluginMethodFunctions[] = {
|
||||||
getLastMouseY,
|
getLastMouseY,
|
||||||
getPaintCount,
|
getPaintCount,
|
||||||
getWidthAtLastPaint,
|
getWidthAtLastPaint,
|
||||||
|
setInvalidateDuringPaint,
|
||||||
getError,
|
getError,
|
||||||
doInternalConsistencyCheck,
|
doInternalConsistencyCheck,
|
||||||
setColor,
|
setColor,
|
||||||
|
@ -689,6 +692,7 @@ NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char*
|
||||||
instanceData->testrange = NULL;
|
instanceData->testrange = NULL;
|
||||||
instanceData->hasWidget = false;
|
instanceData->hasWidget = false;
|
||||||
instanceData->npnNewStream = false;
|
instanceData->npnNewStream = false;
|
||||||
|
instanceData->invalidateDuringPaint = false;
|
||||||
instanceData->writeCount = 0;
|
instanceData->writeCount = 0;
|
||||||
instanceData->writeReadyCount = 0;
|
instanceData->writeReadyCount = 0;
|
||||||
memset(&instanceData->window, 0, sizeof(instanceData->window));
|
memset(&instanceData->window, 0, sizeof(instanceData->window));
|
||||||
|
@ -2127,6 +2131,22 @@ getWidthAtLastPaint(NPObject* npobj, const NPVariant* args, uint32_t argCount, N
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
setInvalidateDuringPaint(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result)
|
||||||
|
{
|
||||||
|
if (argCount != 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!NPVARIANT_IS_BOOLEAN(args[0]))
|
||||||
|
return false;
|
||||||
|
bool doInvalidate = NPVARIANT_TO_BOOLEAN(args[0]);
|
||||||
|
|
||||||
|
NPP npp = static_cast<TestNPObject*>(npobj)->npp;
|
||||||
|
InstanceData* id = static_cast<InstanceData*>(npp->pdata);
|
||||||
|
id->invalidateDuringPaint = doInvalidate;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
getError(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result)
|
getError(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result)
|
||||||
{
|
{
|
||||||
|
@ -2338,6 +2358,15 @@ void notifyDidPaint(InstanceData* instanceData)
|
||||||
{
|
{
|
||||||
++instanceData->paintCount;
|
++instanceData->paintCount;
|
||||||
instanceData->widthAtLastPaint = instanceData->window.width;
|
instanceData->widthAtLastPaint = instanceData->window.width;
|
||||||
|
|
||||||
|
if (instanceData->invalidateDuringPaint) {
|
||||||
|
NPRect r;
|
||||||
|
r.left = 0;
|
||||||
|
r.top = 0;
|
||||||
|
r.right = instanceData->window.width;
|
||||||
|
r.bottom = instanceData->window.height;
|
||||||
|
NPN_InvalidateRect(instanceData->npp, &r);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const NPClass kTestSharedNPClass = {
|
static const NPClass kTestSharedNPClass = {
|
||||||
|
|
|
@ -102,6 +102,7 @@ typedef struct InstanceData {
|
||||||
uint32_t timerID[2];
|
uint32_t timerID[2];
|
||||||
bool timerTestResult;
|
bool timerTestResult;
|
||||||
bool asyncCallbackResult;
|
bool asyncCallbackResult;
|
||||||
|
bool invalidateDuringPaint;
|
||||||
int32_t winX;
|
int32_t winX;
|
||||||
int32_t winY;
|
int32_t winY;
|
||||||
int32_t lastMouseX;
|
int32_t lastMouseX;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче