| 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 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 void HTMLCanvasElement::registerRenderingContextFactory(PassOwnPtr<CanvasRenderi
ngContextFactory> renderingContextFactory) | 217 void HTMLCanvasElement::registerRenderingContextFactory(PassOwnPtr<CanvasRenderi
ngContextFactory> renderingContextFactory) |
| 218 { | 218 { |
| 219 CanvasRenderingContext::ContextType type = renderingContextFactory->contextT
ype(); | 219 CanvasRenderingContext::ContextType type = renderingContextFactory->contextT
ype(); |
| 220 ASSERT(type < CanvasRenderingContext::ContextTypeCount); | 220 ASSERT(type < CanvasRenderingContext::ContextTypeCount); |
| 221 ASSERT(!renderingContextFactories()[type]); | 221 ASSERT(!renderingContextFactories()[type]); |
| 222 renderingContextFactories()[type] = renderingContextFactory; | 222 renderingContextFactories()[type] = renderingContextFactory; |
| 223 } | 223 } |
| 224 | 224 |
| 225 ScriptValue HTMLCanvasElement::getContext(ScriptState* scriptState, const String
& type, const CanvasContextCreationAttributes& attributes) | 225 ScriptValue HTMLCanvasElement::getContext(ScriptState* scriptState, const String
& type, const CanvasContextCreationAttributes& attributes) |
| 226 { | 226 { |
| 227 CanvasRenderingContext* context = getCanvasRenderingContext(type, attributes
); | 227 CanvasRenderingContext* context = getCanvasRenderingContext(scriptState, typ
e, attributes); |
| 228 if (!context) { | 228 if (!context) { |
| 229 return ScriptValue::createNull(scriptState); | 229 return ScriptValue::createNull(scriptState); |
| 230 } | 230 } |
| 231 return ScriptValue(scriptState, toV8(context, scriptState->context()->Global
(), scriptState->isolate())); | 231 return ScriptValue(scriptState, toV8(context, scriptState->context()->Global
(), scriptState->isolate())); |
| 232 } | 232 } |
| 233 | 233 |
| 234 CanvasRenderingContext* HTMLCanvasElement::getCanvasRenderingContext(const Strin
g& type, const CanvasContextCreationAttributes& attributes) | 234 CanvasRenderingContext* HTMLCanvasElement::getCanvasRenderingContext(ScriptState
* scriptState, const String& type, const CanvasContextCreationAttributes& attrib
utes) |
| 235 { | 235 { |
| 236 CanvasRenderingContext::ContextType contextType = CanvasRenderingContext::co
ntextTypeFromId(type); | 236 CanvasRenderingContext::ContextType contextType = CanvasRenderingContext::co
ntextTypeFromId(type); |
| 237 | 237 |
| 238 // Unknown type. | 238 // Unknown type. |
| 239 if (contextType == CanvasRenderingContext::ContextTypeCount) | 239 if (contextType == CanvasRenderingContext::ContextTypeCount) |
| 240 return nullptr; | 240 return nullptr; |
| 241 | 241 |
| 242 // Log the aliased context type used. | 242 // Log the aliased context type used. |
| 243 if (!m_context) | 243 if (!m_context) |
| 244 Platform::current()->histogramEnumeration("Canvas.ContextType", contextT
ype, CanvasRenderingContext::ContextTypeCount); | 244 Platform::current()->histogramEnumeration("Canvas.ContextType", contextT
ype, CanvasRenderingContext::ContextTypeCount); |
| 245 | 245 |
| 246 contextType = CanvasRenderingContext::resolveContextTypeAliases(contextType)
; | 246 contextType = CanvasRenderingContext::resolveContextTypeAliases(contextType)
; |
| 247 | 247 |
| 248 CanvasRenderingContextFactory* factory = getRenderingContextFactory(contextT
ype); | 248 CanvasRenderingContextFactory* factory = getRenderingContextFactory(contextT
ype); |
| 249 if (!factory) | 249 if (!factory) |
| 250 return nullptr; | 250 return nullptr; |
| 251 | 251 |
| 252 // FIXME - The code depends on the context not going away once created, to p
revent JS from | 252 // FIXME - The code depends on the context not going away once created, to p
revent JS from |
| 253 // seeing a dangling pointer. So for now we will disallow the context from b
eing changed | 253 // seeing a dangling pointer. So for now we will disallow the context from b
eing changed |
| 254 // once it is created. | 254 // once it is created. |
| 255 if (m_context) { | 255 if (m_context) { |
| 256 if (m_context->contextType() == contextType) | 256 if (m_context->contextType() == contextType) |
| 257 return m_context.get(); | 257 return m_context.get(); |
| 258 | 258 |
| 259 factory->onError(this, "Canvas has an existing context of a different ty
pe"); | 259 factory->onError(this, "Canvas has an existing context of a different ty
pe"); |
| 260 return nullptr; | 260 return nullptr; |
| 261 } | 261 } |
| 262 | 262 |
| 263 m_context = factory->create(this, attributes, document()); | 263 m_context = factory->create(this, scriptState, attributes, document()); |
| 264 if (!m_context) | 264 if (!m_context) |
| 265 return nullptr; | 265 return nullptr; |
| 266 | 266 |
| 267 if (m_context->is3d()) { | 267 if (m_context->is3d()) { |
| 268 const ComputedStyle* style = ensureComputedStyle(); | 268 const ComputedStyle* style = ensureComputedStyle(); |
| 269 if (style) | 269 if (style) |
| 270 m_context->setFilterQuality(style->imageRendering() == ImageRenderin
gPixelated ? kNone_SkFilterQuality : kLow_SkFilterQuality); | 270 m_context->setFilterQuality(style->imageRendering() == ImageRenderin
gPixelated ? kNone_SkFilterQuality : kLow_SkFilterQuality); |
| 271 updateExternallyAllocatedMemory(); | 271 updateExternallyAllocatedMemory(); |
| 272 } | 272 } |
| 273 setNeedsCompositingUpdate(); | 273 setNeedsCompositingUpdate(); |
| (...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 979 { | 979 { |
| 980 return FloatSize(width(), height()); | 980 return FloatSize(width(), height()); |
| 981 } | 981 } |
| 982 | 982 |
| 983 bool HTMLCanvasElement::isOpaque() const | 983 bool HTMLCanvasElement::isOpaque() const |
| 984 { | 984 { |
| 985 return m_context && !m_context->hasAlpha(); | 985 return m_context && !m_context->hasAlpha(); |
| 986 } | 986 } |
| 987 | 987 |
| 988 } // blink | 988 } // blink |
| OLD | NEW |