--- a/dom/plugins/test/testplugin/nptest_gtk2.cpp
+++ b/dom/plugins/test/testplugin/nptest_gtk2.cpp
@@ -56,17 +56,17 @@ struct _PlatformData {
Colormap colormap;
#endif
GtkWidget* plug;
};
bool
pluginSupportsWindowMode()
{
- return true;
+ return false;
}
bool
pluginSupportsWindowlessMode()
{
return true;
}
@@ -136,43 +136,43 @@ SetCairoRGBA(cairo_t* cairoWindow, uint3
}
static void
pluginDrawSolid(InstanceData* instanceData, GdkDrawable* gdkWindow,
int x, int y, int width, int height)
{
cairo_t* cairoWindow = gdk_cairo_create(gdkWindow);
- if (!instanceData->hasWidget) {
- NPRect* clip = &instanceData->window.clipRect;
- cairo_rectangle(cairoWindow, clip->left, clip->top,
- clip->right - clip->left, clip->bottom - clip->top);
- cairo_clip(cairoWindow);
- }
+ MOZ_RELEASE_ASSERT(!instanceData->hasWidget);
+
+ NPRect* clip = &instanceData->window.clipRect;
+ cairo_rectangle(cairoWindow, clip->left, clip->top,
+ clip->right - clip->left, clip->bottom - clip->top);
+ cairo_clip(cairoWindow);
GdkRectangle windowRect = { x, y, width, height };
gdk_cairo_rectangle(cairoWindow, &windowRect);
SetCairoRGBA(cairoWindow, instanceData->scriptableObject->drawColor);
cairo_fill(cairoWindow);
cairo_destroy(cairoWindow);
}
static void
pluginDrawWindow(InstanceData* instanceData, GdkDrawable* gdkWindow,
const GdkRectangle& invalidRect)
{
NPWindow& window = instanceData->window;
- // When we have a widget, window.x/y are meaningless since our
- // widget is always positioned correctly and we just draw into it at 0,0
- int x = instanceData->hasWidget ? 0 : window.x;
- int y = instanceData->hasWidget ? 0 : window.y;
+ MOZ_RELEASE_ASSERT(!instanceData->hasWidget);
+
+ int x = window.x;
+ int y = window.y;
int width = window.width;
int height = window.height;
-
+
notifyDidPaint(instanceData);
if (instanceData->scriptableObject->drawMode == DM_SOLID_COLOR) {
// drawing a solid color for reftests
pluginDrawSolid(instanceData, gdkWindow,
invalidRect.x, invalidRect.y,
invalidRect.width, invalidRect.height);
return;
@@ -185,22 +185,20 @@ pluginDrawWindow(InstanceData* instanceD
const char* uaString = NPN_UserAgent(npp);
if (!uaString)
return;
GdkGC* gdkContext = gdk_gc_new(gdkWindow);
if (!gdkContext)
return;
- if (!instanceData->hasWidget) {
- NPRect* clip = &window.clipRect;
- GdkRectangle gdkClip = { clip->left, clip->top, clip->right - clip->left,
- clip->bottom - clip->top };
- gdk_gc_set_clip_rectangle(gdkContext, &gdkClip);
- }
+ NPRect* clip = &window.clipRect;
+ GdkRectangle gdkClip = { clip->left, clip->top, clip->right - clip->left,
+ clip->bottom - clip->top };
+ gdk_gc_set_clip_rectangle(gdkContext, &gdkClip);
// draw a grey background for the plugin frame
GdkColor grey;
grey.red = grey.blue = grey.green = 32767;
gdk_gc_set_rgb_fg_color(gdkContext, &grey);
gdk_draw_rectangle(gdkWindow, gdkContext, TRUE, x, y, width, height);
// draw a 3-pixel-thick black frame around the plugin
@@ -425,18 +423,20 @@ pluginHandleEvent(InstanceData* instance
}
#endif
return 0;
}
int32_t pluginGetEdge(InstanceData* instanceData, RectEdge edge)
{
+ MOZ_RELEASE_ASSERT(!instanceData->hasWidget);
if (!instanceData->hasWidget)
return NPTEST_INT32_ERROR;
+
GtkWidget* plug = instanceData->platformData->plug;
if (!plug)
return NPTEST_INT32_ERROR;
GdkWindow* plugWnd = plug->window;
if (!plugWnd)
return NPTEST_INT32_ERROR;
GdkWindow* toplevelGdk = 0;
@@ -503,16 +503,17 @@ static void intersectWithShapeRects(Disp
gdk_region_intersect(region, shapeRegion);
gdk_region_destroy(shapeRegion);
}
#endif
static GdkRegion* computeClipRegion(InstanceData* instanceData)
{
+ MOZ_RELEASE_ASSERT(!instanceData->hasWidget);
if (!instanceData->hasWidget)
return 0;
GtkWidget* plug = instanceData->platformData->plug;
if (!plug)
return 0;
GdkWindow* plugWnd = plug->window;
if (!plugWnd)