Title: [92491] trunk/Source/WebKit2
Revision
92491
Author
da...@apple.com
Date
2011-08-05 11:23:27 -0700 (Fri, 05 Aug 2011)

Log Message

Reviewed by Anders Carlsson.

[WebKit2] Fix code paths that can leave frame view paint behavior in the wrong state
https://bugs.webkit.org/show_bug.cgi?id=63779

* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::handleEvent): Unrelated cleanup. Removed unneeded local variable.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::snapshotInViewCoordinates): Rearranged code so that the call to
setPaintBehavior is after the early exit. Also got rid of unneeded save/restore since
the function uses a graphics context that it then throws away.
(WebKit::WebPage::scaledSnapshotInDocumentCoordinates): Ditto.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (92490 => 92491)


--- trunk/Source/WebKit2/ChangeLog	2011-08-05 18:18:49 UTC (rev 92490)
+++ trunk/Source/WebKit2/ChangeLog	2011-08-05 18:23:27 UTC (rev 92491)
@@ -1,3 +1,19 @@
+2011-08-05  Darin Adler  <da...@apple.com>
+
+        Reviewed by Anders Carlsson.
+
+        [WebKit2] Fix code paths that can leave frame view paint behavior in the wrong state
+        https://bugs.webkit.org/show_bug.cgi?id=63779
+
+        * WebProcess/Plugins/PluginView.cpp:
+        (WebKit::PluginView::handleEvent): Unrelated cleanup. Removed unneeded local variable.
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::snapshotInViewCoordinates): Rearranged code so that the call to
+        setPaintBehavior is after the early exit. Also got rid of unneeded save/restore since
+        the function uses a graphics context that it then throws away.
+        (WebKit::WebPage::scaledSnapshotInDocumentCoordinates): Ditto.
+
 2011-08-04  Mark Rowe  <mr...@apple.com>
 
         Future-proof Xcode configuration settings.

Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (92490 => 92491)


--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp	2011-08-05 18:18:49 UTC (rev 92490)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp	2011-08-05 18:23:27 UTC (rev 92491)
@@ -590,8 +590,7 @@
             focusPluginElement();
         
         // Adjust mouse coordinates to account for pageScaleFactor
-        float scaleFactor = frame()->pageScaleFactor();
-        WebMouseEvent eventWithScaledCoordinates(*(static_cast<const WebMouseEvent*>(currentEvent)), scaleFactor);
+        WebMouseEvent eventWithScaledCoordinates(*static_cast<const WebMouseEvent*>(currentEvent), frame()->pageScaleFactor());
         didHandleEvent = m_plugin->handleMouseEvent(eventWithScaledCoordinates);
     } else if (event->type() == eventNames().mousewheelEvent && currentEvent->type() == WebEvent::Wheel) {
         // We have a wheel event.

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (92490 => 92491)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2011-08-05 18:18:49 UTC (rev 92490)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2011-08-05 18:23:27 UTC (rev 92491)
@@ -869,22 +869,18 @@
     if (!frameView)
         return 0;
 
-    frameView->updateLayoutAndStyleIfNeededRecursive();
-
-    PaintBehavior oldBehavior = frameView->paintBehavior();
-    frameView->setPaintBehavior(oldBehavior | PaintBehaviorFlattenCompositingLayers);
-
     RefPtr<WebImage> snapshot = WebImage::create(rect.size(), options);
     if (!snapshot->bitmap())
         return 0;
     
     OwnPtr<WebCore::GraphicsContext> graphicsContext = snapshot->bitmap()->createGraphicsContext();
-
-    graphicsContext->save();
     graphicsContext->translate(-rect.x(), -rect.y());
-    frameView->paint(graphicsContext.get(), rect);
-    graphicsContext->restore();
 
+    frameView->updateLayoutAndStyleIfNeededRecursive();
+
+    PaintBehavior oldBehavior = frameView->paintBehavior();
+    frameView->setPaintBehavior(oldBehavior | PaintBehaviorFlattenCompositingLayers);
+    frameView->paint(graphicsContext.get(), rect);
     frameView->setPaintBehavior(oldBehavior);
 
     return snapshot.release();
@@ -896,30 +892,20 @@
     if (!frameView)
         return 0;
 
-    frameView->updateLayoutAndStyleIfNeededRecursive();
-
-    PaintBehavior oldBehavior = frameView->paintBehavior();
-    frameView->setPaintBehavior(oldBehavior | PaintBehaviorFlattenCompositingLayers);
-
-    bool scale = scaleFactor != 1;
-    IntSize size = rect.size();
-    if (scale) 
-        size = IntSize(ceil(rect.width() * scaleFactor), ceil(rect.height() * scaleFactor));
-
+    IntSize size(ceil(rect.width() * scaleFactor), ceil(rect.height() * scaleFactor));
     RefPtr<WebImage> snapshot = WebImage::create(size, options);
     if (!snapshot->bitmap())
         return 0;
-    
+
     OwnPtr<WebCore::GraphicsContext> graphicsContext = snapshot->bitmap()->createGraphicsContext();
-    graphicsContext->save();
-    
-    if (scale)
-        graphicsContext->scale(FloatSize(scaleFactor, scaleFactor));
-    
+    graphicsContext->scale(FloatSize(scaleFactor, scaleFactor));
     graphicsContext->translate(-rect.x(), -rect.y());
-    frameView->paintContents(graphicsContext.get(), rect);
-    graphicsContext->restore();
 
+    frameView->updateLayoutAndStyleIfNeededRecursive();
+
+    PaintBehavior oldBehavior = frameView->paintBehavior();
+    frameView->setPaintBehavior(oldBehavior | PaintBehaviorFlattenCompositingLayers);
+    frameView->paintContents(graphicsContext.get(), rect);
     frameView->setPaintBehavior(oldBehavior);
 
     return snapshot.release();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to