WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Wrong Patch
bug-201361-20190902132037.patch (text/plain), 10.50 KB, created by
Fujii Hironori
on 2019-09-01 21:20:38 PDT
(
hide
)
Description:
Wrong Patch
Filename:
MIME Type:
Creator:
Fujii Hironori
Created:
2019-09-01 21:20:38 PDT
Size:
10.50 KB
patch
obsolete
>Subversion Revision: 249371 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index e689ce501337791170b173cc48e365974a93efec..033af9aa061525f421aac6d276540ff715581caa 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,18 @@ >+2019-09-01 Brent Fulgham <bfulgham@apple.com> >+ >+ [WinCairo, FTW] Properly handle device scale factor >+ https://bugs.webkit.org/show_bug.cgi?id=201361 >+ >+ Reviewed by Don Olmstead. >+ >+ Update the Direct2D ImageBuffer/ImageBufferData classes to correctly handle >+ the device scale factor. >+ >+ * platform/graphics/win/ImageBufferDataDirect2D.cpp: >+ (WebCore::ImageBufferData::putData): >+ * platform/graphics/win/ImageBufferDirect2D.cpp: >+ (WebCore::ImageBuffer::putByteArray): >+ > 2019-09-01 Fujii Hironori <Hironori.Fujii@sony.com> > > Unreviewed, rolling out r249366. >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 2eb407163a8225c3725fc9cc8ec2b8c4bfbcd593..08ca032b56a7fc4d90eb5d147b075f58ce599c20 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,35 @@ >+2019-09-01 Fujii Hironori <Hironori.Fujii@sony.com> >+ >+ [Cairo] out-of-bounds read in ShareableBitmap::paint if a fractional device scale factor is used >+ https://bugs.webkit.org/show_bug.cgi?id=196340 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ In ShareableBitmap::paint, srcRectScaled can be out-of-bounds of >+ the surface if a fractional device scale factor is used. >+ >+ * Shared/cairo/ShareableBitmapCairo.cpp: >+ (WebKit::ShareableBitmap::paint): Use cairoSurfaceSetDeviceScale >+ to set a device scale factor to the surface instead of multiplying >+ srcRect with a device scale factor. >+ >+2019-09-01 Brent Fulgham <bfulgham@apple.com> >+ >+ [WinCairo, FTW] Properly handle device scale factor >+ https://bugs.webkit.org/show_bug.cgi?id=201361 >+ >+ Reviewed by Don Olmstead. >+ >+ Update the WebView and WebProcess to correctly handle >+ the device scale factor. >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * UIProcess/win/WebView.cpp: >+ (WebKit::WebView::WebView): Tell the page the current device scale factor. >+ * WebProcess/win/WebProcessMainWin.cpp: >+ (WebKit::WebProcessMainWin): Tell the process to be aware of device scale. >+ > 2019-09-01 Fujii Hironori <Hironori.Fujii@sony.com> > > Unreviewed, rolling out r249366. >diff --git a/Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp b/Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp >index fbf98f64836887d987008cd9890976a80df3c906..333f00b13835af4bb97476e71de8f97346db4d63 100644 >--- a/Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp >+++ b/Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp >@@ -172,14 +172,12 @@ void ImageBufferData::putData(const Uint8ClampedArray& source, AlphaPremultiplic > > Checked<int> originx = sourceRect.x(); > Checked<int> destx = (Checked<int>(destPoint.x()) + sourceRect.x()); >- destx *= resolutionScale; > ASSERT(destx.unsafeGet() >= 0); > ASSERT(destx.unsafeGet() < size.width()); > ASSERT(originx.unsafeGet() >= 0); > ASSERT(originx.unsafeGet() <= sourceRect.maxX()); > > Checked<int> endx = (Checked<int>(destPoint.x()) + sourceRect.maxX()); >- endx *= resolutionScale; > ASSERT(endx.unsafeGet() <= size.width()); > > Checked<int> width = sourceRect.width(); >@@ -187,14 +185,12 @@ void ImageBufferData::putData(const Uint8ClampedArray& source, AlphaPremultiplic > > Checked<int> originy = sourceRect.y(); > Checked<int> desty = (Checked<int>(destPoint.y()) + sourceRect.y()); >- desty *= resolutionScale; > ASSERT(desty.unsafeGet() >= 0); > ASSERT(desty.unsafeGet() < size.height()); > ASSERT(originy.unsafeGet() >= 0); > ASSERT(originy.unsafeGet() <= sourceRect.maxY()); > > Checked<int> endy = (Checked<int>(destPoint.y()) + sourceRect.maxY()); >- endy *= resolutionScale; > ASSERT(endy.unsafeGet() <= size.height()); > > Checked<int> height = sourceRect.height(); >diff --git a/Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.h b/Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.h >index 2424d06acbf87c5c8dacd223a9a3c8130d0ce9f2..cf22fb51414869669fb2abcf7173df8b003980f5 100644 >--- a/Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.h >+++ b/Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.h >@@ -50,7 +50,7 @@ struct ImageBufferData { > COMPtr<ID2D1Bitmap> bitmap; > > RefPtr<Uint8ClampedArray> getData(AlphaPremultiplication, const IntRect&, const IntSize&, bool accelerateRendering, float resolutionScale) const; >- void putData(const Uint8ClampedArray& source, AlphaPremultiplication sourceFormat, const IntSize& sourceSize, const IntRect& sourceRect, const IntPoint& destPoint, const IntSize&, bool accelerateRendering, float resolutionScale); >+ void putData(const Uint8ClampedArray& source, AlphaPremultiplication sourceFormat, const IntSize& sourceSize, const IntRect& sourceRect, const IntPoint& destPoint, const IntSize&, bool accelerateRendering, float resolutionScale = 1.0f); > > COMPtr<ID2D1Bitmap> compatibleBitmap(ID2D1RenderTarget*); > }; >diff --git a/Source/WebCore/platform/graphics/win/ImageBufferDirect2D.cpp b/Source/WebCore/platform/graphics/win/ImageBufferDirect2D.cpp >index 17f44175f0bf7f7ae67cddf485aa04866be8ac30..58eab8ffbc5daf1894247adfd8d0412a23b9bcff 100644 >--- a/Source/WebCore/platform/graphics/win/ImageBufferDirect2D.cpp >+++ b/Source/WebCore/platform/graphics/win/ImageBufferDirect2D.cpp >@@ -324,12 +324,15 @@ void ImageBuffer::putByteArray(const Uint8ClampedArray& source, AlphaPremultipli > > IntRect scaledSourceRect = sourceRect; > IntSize scaledSourceSize = sourceSize; >+ IntPoint scaledDestPoint = destPoint; >+ > if (coordinateSystem == LogicalCoordinateSystem) { > scaledSourceRect.scale(m_resolutionScale); > scaledSourceSize.scale(m_resolutionScale); >+ scaledDestPoint.scale(m_resolutionScale); > } > >- m_data.putData(source, bufferFormat, scaledSourceSize, scaledSourceRect, destPoint, internalSize(), context().isAcceleratedContext(), 1); >+ m_data.putData(source, bufferFormat, scaledSourceSize, scaledSourceRect, scaledDestPoint, internalSize(), context().isAcceleratedContext()); > } > > String ImageBuffer::toDataURL(const String&, Optional<double>, PreserveResolution) const >diff --git a/Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp b/Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp >index b2cd4846677ce97dfac2858490c1ea434f962933..842cbfae8c55f9ab2d9dd19813d1170a3a1a1652 100644 >--- a/Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp >+++ b/Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp >@@ -71,13 +71,12 @@ void ShareableBitmap::paint(GraphicsContext& context, const IntPoint& dstPoint, > void ShareableBitmap::paint(GraphicsContext& context, float scaleFactor, const IntPoint& dstPoint, const IntRect& srcRect) > { > RefPtr<cairo_surface_t> surface = createSurfaceFromData(data(), m_size); >+ cairoSurfaceSetDeviceScale(surface.get(), scaleFactor, scaleFactor); > FloatRect destRect(dstPoint, srcRect.size()); >- FloatRect srcRectScaled(srcRect); >- srcRectScaled.scale(scaleFactor); > > ASSERT(context.hasPlatformContext()); > auto& state = context.state(); >- Cairo::drawSurface(*context.platformContext(), surface.get(), destRect, srcRectScaled, state.imageInterpolationQuality, state.alpha, Cairo::ShadowState(state)); >+ Cairo::drawSurface(*context.platformContext(), surface.get(), destRect, srcRect, state.imageInterpolationQuality, state.alpha, Cairo::ShadowState(state)); > } > > RefPtr<cairo_surface_t> ShareableBitmap::createCairoSurface() >diff --git a/Source/WebKit/UIProcess/win/WebView.cpp b/Source/WebKit/UIProcess/win/WebView.cpp >index 000350ca5fe56011b25cdc69915b0b04f9fccae1..4326a0b970dda61be1fe430fe953f46a934d740e 100644 >--- a/Source/WebKit/UIProcess/win/WebView.cpp >+++ b/Source/WebKit/UIProcess/win/WebView.cpp >@@ -45,6 +45,7 @@ > #include <WebCore/Cursor.h> > #include <WebCore/Editor.h> > #include <WebCore/FloatRect.h> >+#include <WebCore/GDIUtilities.h> > #include <WebCore/HWndDC.h> > #include <WebCore/IntRect.h> > #include <WebCore/NotImplemented.h> >@@ -246,6 +247,7 @@ WebView::WebView(RECT rect, const API::PageConfiguration& configuration, HWND pa > > WebProcessPool* processPool = pageConfiguration->processPool(); > m_page = processPool->createWebPage(*m_pageClient, WTFMove(pageConfiguration)); >+ m_page->setIntrinsicDeviceScaleFactor(WebCore::deviceScaleFactorForWindow(parentWindow)); > m_page->initializeWebPage(); > > IntSize windowSize(rect.right - rect.left, rect.bottom - rect.top); >diff --git a/Source/WebKit/WebProcess/win/WebProcessMainWin.cpp b/Source/WebKit/WebProcess/win/WebProcessMainWin.cpp >index 67092b78c5f50995e876b7951f5d75b2e4ab54e4..8d6ae036f241dc7c0355ea9073839b4dd4861bff 100644 >--- a/Source/WebKit/WebProcess/win/WebProcessMainWin.cpp >+++ b/Source/WebKit/WebProcess/win/WebProcessMainWin.cpp >@@ -46,6 +46,9 @@ int WebProcessMainWin(int argc, char** argv) > // WebProcess uses DirectX > HRESULT hr = ::CoInitializeEx(nullptr, COINIT_MULTITHREADED); > RELEASE_ASSERT(SUCCEEDED(hr)); >+ >+ ::SetProcessDPIAware(); >+ > return AuxiliaryProcessMain<WebProcess, WebProcessMain>(argc, argv); > } > >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 84d5c05bba2729c13d57f8a8726472614b4afca1..252fc19545f1df39db0192e440be2fbbe9aeb765 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,15 @@ >+2019-09-01 Brent Fulgham <bfulgham@apple.com> >+ >+ [WinCairo, FTW] Properly handle device scale factor >+ https://bugs.webkit.org/show_bug.cgi?id=201361 >+ >+ Reviewed by Don Olmstead. >+ >+ Reset zoom to 1.0; device scale is handled elsewhere. >+ >+ * MiniBrowser/win/WebKitBrowserWindow.cpp: >+ (WebKitBrowserWindow::resetZoom): >+ > 2019-09-01 Fujii Hironori <Hironori.Fujii@sony.com> > > Unreviewed, rolling out r249366. >diff --git a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp >index cafaaa4161f30f7453667f2ae4458ad45499a91f..6dc8f6b047e16b10d651575ba9a6d34f419fc3ab 100644 >--- a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp >+++ b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp >@@ -281,7 +281,7 @@ void WebKitBrowserWindow::updateStatistics(HWND hDlg) > void WebKitBrowserWindow::resetZoom() > { > auto page = WKViewGetPage(m_view.get()); >- WKPageSetPageZoomFactor(page, WebCore::deviceScaleFactorForWindow(hwnd())); >+ WKPageSetPageZoomFactor(page, 1.0); > } > > void WebKitBrowserWindow::zoomIn()
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 201361
:
377787
|
377836