Bug 1338172 part A - remove windowed plugin support from the GTK testplugin, r?jimm draft
authorBenjamin Smedberg <benjamin@smedbergs.us>
Wed, 08 Feb 2017 13:44:21 -0500
changeset 481915 0405267c670903503cb71151f767230528d8382a
parent 481913 3eedf5fb41738be98a903a85ecc84bb57f7238c9
child 481916 f38b1c5090bead5a490636448320d85443b48d9a
push id44958
push userbsmedberg@mozilla.com
push dateFri, 10 Feb 2017 19:35:35 +0000
reviewersjimm
bugs1338172
milestone54.0a1
Bug 1338172 part A - remove windowed plugin support from the GTK testplugin, r?jimm MozReview-Commit-ID: 9vlarj5C59
dom/plugins/test/testplugin/nptest_gtk2.cpp
--- 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)