| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
| 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. | 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 // misinterpreted as a user-input value | 115 // misinterpreted as a user-input value |
| 116 const int UndefinedQualityValue = -1.0; | 116 const int UndefinedQualityValue = -1.0; |
| 117 | 117 |
| 118 // Default image mime type for toDataURL and toBlob functions | 118 // Default image mime type for toDataURL and toBlob functions |
| 119 const char DefaultMimeType[] = "image/png"; | 119 const char DefaultMimeType[] = "image/png"; |
| 120 | 120 |
| 121 bool canCreateImageBuffer(const IntSize& size) | 121 bool canCreateImageBuffer(const IntSize& size) |
| 122 { | 122 { |
| 123 if (size.isEmpty()) | 123 if (size.isEmpty()) |
| 124 return false; | 124 return false; |
| 125 if (size.width() * size.height() > MaxCanvasArea) | 125 CheckedNumeric<int> area = size.width(); |
| 126 area *= size.height(); |
| 127 if (!area.IsValid() || area.ValueOrDie() > MaxCanvasArea) |
| 126 return false; | 128 return false; |
| 127 if (size.width() > MaxSkiaDim || size.height() > MaxSkiaDim) | 129 if (size.width() > MaxSkiaDim || size.height() > MaxSkiaDim) |
| 128 return false; | 130 return false; |
| 129 return true; | 131 return true; |
| 130 } | 132 } |
| 131 | 133 |
| 132 PassRefPtr<Image> createTransparentImage(const IntSize& size) | 134 PassRefPtr<Image> createTransparentImage(const IntSize& size) |
| 133 { | 135 { |
| 134 DCHECK(canCreateImageBuffer(size)); | 136 DCHECK(canCreateImageBuffer(size)); |
| 135 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(size.width(), size
.height()); | 137 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(size.width(), size
.height()); |
| (...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1224 | 1226 |
| 1225 bool HTMLCanvasElement::createSurfaceLayer() | 1227 bool HTMLCanvasElement::createSurfaceLayer() |
| 1226 { | 1228 { |
| 1227 DCHECK(!m_surfaceLayerBridge); | 1229 DCHECK(!m_surfaceLayerBridge); |
| 1228 std::unique_ptr<CanvasSurfaceLayerBridgeClient> bridgeClient = wrapUnique(ne
w CanvasSurfaceLayerBridgeClientImpl()); | 1230 std::unique_ptr<CanvasSurfaceLayerBridgeClient> bridgeClient = wrapUnique(ne
w CanvasSurfaceLayerBridgeClientImpl()); |
| 1229 m_surfaceLayerBridge = wrapUnique(new CanvasSurfaceLayerBridge(std::move(bri
dgeClient))); | 1231 m_surfaceLayerBridge = wrapUnique(new CanvasSurfaceLayerBridge(std::move(bri
dgeClient))); |
| 1230 return m_surfaceLayerBridge->createSurfaceLayer(this->width(), this->height(
)); | 1232 return m_surfaceLayerBridge->createSurfaceLayer(this->width(), this->height(
)); |
| 1231 } | 1233 } |
| 1232 | 1234 |
| 1233 } // namespace blink | 1235 } // namespace blink |
| OLD | NEW |