void ScrollableAreaPainter::drawPlatformResizerImage(GraphicsContext* context, IntRect resizerCornerRect) { float deviceScaleFactor = blink::deviceScaleFactor(m_scrollableArea.box().frame()); RefPtr<Image> resizeCornerImage; IntSize cornerResizerSize; if (deviceScaleFactor >= 2) { DEFINE_STATIC_REF(Image, resizeCornerImageHiRes, (Image::loadPlatformResource("textAreaResizeCorner@2x"))); resizeCornerImage = resizeCornerImageHiRes; cornerResizerSize = resizeCornerImage->size(); cornerResizerSize.scale(0.5f); } else { DEFINE_STATIC_REF(Image, resizeCornerImageLoRes, (Image::loadPlatformResource("textAreaResizeCorner"))); resizeCornerImage = resizeCornerImageLoRes; cornerResizerSize = resizeCornerImage->size(); } if (m_scrollableArea.box().style()->shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) { context->save(); context->translate(resizerCornerRect.x() + cornerResizerSize.width(), resizerCornerRect.y() + resizerCornerRect.height() - cornerResizerSize.height()); context->scale(-1.0, 1.0); context->drawImage(resizeCornerImage.get(), IntRect(IntPoint(), cornerResizerSize)); context->restore(); return; } IntRect imageRect(resizerCornerRect.maxXMaxYCorner() - cornerResizerSize, cornerResizerSize); context->drawImage(resizeCornerImage.get(), imageRect); }
bool RenderThemeChromiumSkia::paintSearchFieldCancelButton(RenderObject* cancelButtonObject, const PaintInfo& paintInfo, const IntRect& r) { // Get the renderer of <input> element. if (!cancelButtonObject->node()) return false; Node* input = cancelButtonObject->node()->shadowHost(); RenderObject* baseRenderer = input ? input->renderer() : cancelButtonObject; if (!baseRenderer->isBox()) return false; RenderBox* inputRenderBox = toRenderBox(baseRenderer); LayoutRect inputContentBox = inputRenderBox->contentBoxRect(); // Make sure the scaled button stays square and will fit in its parent's box. LayoutUnit cancelButtonSize = std::min(inputContentBox.width(), std::min<LayoutUnit>(inputContentBox.height(), r.height())); // Calculate cancel button's coordinates relative to the input element. // Center the button vertically. Round up though, so if it has to be one pixel off-center, it will // be one pixel closer to the bottom of the field. This tends to look better with the text. LayoutRect cancelButtonRect(cancelButtonObject->offsetFromAncestorContainer(inputRenderBox).width(), inputContentBox.y() + (inputContentBox.height() - cancelButtonSize + 1) / 2, cancelButtonSize, cancelButtonSize); IntRect paintingRect = convertToPaintingRect(inputRenderBox, cancelButtonObject, cancelButtonRect, r); DEFINE_STATIC_REF(Image, cancelImage, (Image::loadPlatformResource("searchCancel"))); DEFINE_STATIC_REF(Image, cancelPressedImage, (Image::loadPlatformResource("searchCancelPressed"))); paintInfo.context->drawImage(isPressed(cancelButtonObject) ? cancelPressedImage : cancelImage, paintingRect); return false; }
pair<blink::Image*, float> ImageResource::brokenImage(float deviceScaleFactor) { if (deviceScaleFactor >= 2) { DEFINE_STATIC_REF(blink::Image, brokenImageHiRes, (blink::Image::loadPlatformResource("missingImage@2x"))); return std::make_pair(brokenImageHiRes, 2); } DEFINE_STATIC_REF(blink::Image, brokenImageLoRes, (blink::Image::loadPlatformResource("missingImage"))); return std::make_pair(brokenImageLoRes, 1); }
void CSSMatrix::setMatrixValue(const String& string, ExceptionState& exceptionState) { if (string.isEmpty()) return; RefPtr<MutableStylePropertySet> styleDeclaration = MutableStylePropertySet::create(); if (BisonCSSParser::parseValue(styleDeclaration.get(), CSSPropertyWebkitTransform, string, true, HTMLStandardMode, 0)) { // Convert to TransformOperations. This can fail if a property // requires style (i.e., param uses 'ems' or 'exs') RefPtrWillBeRawPtr<CSSValue> value = styleDeclaration->getPropertyCSSValue(CSSPropertyWebkitTransform); // Check for a "none" or empty transform. In these cases we can use the default identity matrix. if (!value || (value->isPrimitiveValue() && (toCSSPrimitiveValue(value.get()))->getValueID() == CSSValueNone)) return; DEFINE_STATIC_REF(RenderStyle, defaultStyle, RenderStyle::createDefaultStyle()); TransformOperations operations; if (!TransformBuilder::createTransformOperations(value.get(), CSSToLengthConversionData(defaultStyle, defaultStyle, 0, 0, 1.0f), operations)) { exceptionState.throwDOMException(SyntaxError, "Failed to interpret '" + string + "' as a transformation operation."); return; } // Convert transform operations to a TransformationMatrix. This can fail // if a param has a percentage ('%') if (operations.dependsOnBoxSize()) exceptionState.throwDOMException(SyntaxError, "The transformation depends on the box size, which is not supported."); TransformationMatrix t; operations.apply(FloatSize(0, 0), t); // set the matrix m_matrix = t; } else { // There is something there but parsing failed. exceptionState.throwDOMException(SyntaxError, "Failed to parse '" + string + "'."); } }
void CSSMatrix::setMatrixValue(const String& string, ExceptionState& exceptionState) { if (string.isEmpty()) return; if (const CSSValue* value = CSSParser::parseSingleValue(CSSPropertyTransform, string)) { // Check for a "none" transform. In these cases we can use the default // identity matrix. if (value->isIdentifierValue() && (toCSSIdentifierValue(value))->getValueID() == CSSValueNone) return; DEFINE_STATIC_REF(ComputedStyle, initialStyle, createInitialStyle()); TransformOperations operations = TransformBuilder::createTransformOperations( *value, CSSToLengthConversionData(initialStyle, initialStyle, LayoutViewItem(nullptr), 1.0f)); // Convert transform operations to a TransformationMatrix. This can fail // if a param has a percentage ('%') if (operations.dependsOnBoxSize()) exceptionState.throwDOMException(SyntaxError, "The transformation depends on the box " "size, which is not supported."); m_matrix = TransformationMatrix::create(); operations.apply(FloatSize(0, 0), *m_matrix); } else { // There is something there but parsing failed. exceptionState.throwDOMException(SyntaxError, "Failed to parse '" + string + "'."); } }
PassRefPtr<AnimatableValue> AnimatableStrokeDasharrayList::interpolateTo(const AnimatableValue* value, double fraction) const { if (usesDefaultInterpolationWith(value)) return defaultInterpolateTo(this, value, fraction); Vector<RefPtr<AnimatableValue>> from = m_values; Vector<RefPtr<AnimatableValue>> to = toAnimatableStrokeDasharrayList(value)->m_values; // The spec states that if the sum of all values is zero, this should be // treated like a value of 'none', which means that a solid line is drawn. // Since we animate to and from values of zero, treat a value of 'none' the // same. If both the two and from values are 'none', we return 'none' // rather than '0 0'. if (from.isEmpty() && to.isEmpty()) return takeConstRef(this); if (from.isEmpty() || to.isEmpty()) { DEFINE_STATIC_REF(AnimatableLength, zeroPixels, (AnimatableLength::create(Length(Fixed), 1))); if (from.isEmpty()) { from.append(zeroPixels); from.append(zeroPixels); } if (to.isEmpty()) { to.append(zeroPixels); to.append(zeroPixels); } } Vector<RefPtr<AnimatableValue>> interpolatedValues; bool success = interpolateLists(from, to, fraction, interpolatedValues); ASSERT_UNUSED(success, success); return adoptRef(new AnimatableStrokeDasharrayList(interpolatedValues)); }
void CSSMatrix::setMatrixValue(const String& string, ExceptionState& exceptionState) { if (string.isEmpty()) return; // FIXME: crbug.com/154772 - should this continue to use legacy style parsing? if (RefPtrWillBeRawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyWebkitTransform, string)) { // Check for a "none" transform. In these cases we can use the default identity matrix. if (value->isPrimitiveValue() && (toCSSPrimitiveValue(value.get()))->getValueID() == CSSValueNone) return; // FIXME: This has a null pointer crash if we use ex units (crbug.com/414145) DEFINE_STATIC_REF(RenderStyle, defaultStyle, RenderStyle::createDefaultStyle()); TransformOperations operations; if (!TransformBuilder::createTransformOperations(value.get(), CSSToLengthConversionData(defaultStyle, defaultStyle, 0, 0, 1.0f), operations)) { exceptionState.throwDOMException(SyntaxError, "Failed to interpret '" + string + "' as a transformation operation."); return; } // Convert transform operations to a TransformationMatrix. This can fail // if a param has a percentage ('%') if (operations.dependsOnBoxSize()) exceptionState.throwDOMException(SyntaxError, "The transformation depends on the box size, which is not supported."); TransformationMatrix t; operations.apply(FloatSize(0, 0), t); // set the matrix m_matrix = t; } else { // There is something there but parsing failed. exceptionState.throwDOMException(SyntaxError, "Failed to parse '" + string + "'."); } }
bool ThemePainterDefault::paintSearchFieldCancelButton( const LayoutObject& cancelButtonObject, const PaintInfo& paintInfo, const IntRect& r) { // Get the layoutObject of <input> element. if (!cancelButtonObject.node()) return false; Node* input = cancelButtonObject.node()->ownerShadowHost(); const LayoutObject& baseLayoutObject = input ? *input->layoutObject() : cancelButtonObject; if (!baseLayoutObject.isBox()) return false; const LayoutBox& inputLayoutBox = toLayoutBox(baseLayoutObject); LayoutRect inputContentBox = inputLayoutBox.contentBoxRect(); // Make sure the scaled button stays square and will fit in its parent's box. LayoutUnit cancelButtonSize = std::min(inputContentBox.width(), std::min(inputContentBox.height(), LayoutUnit(r.height()))); // Calculate cancel button's coordinates relative to the input element. // Center the button vertically. Round up though, so if it has to be one // pixel off-center, it will be one pixel closer to the bottom of the field. // This tends to look better with the text. LayoutRect cancelButtonRect( cancelButtonObject.offsetFromAncestorContainer(&inputLayoutBox).width(), inputContentBox.y() + (inputContentBox.height() - cancelButtonSize + 1) / 2, cancelButtonSize, cancelButtonSize); IntRect paintingRect = convertToPaintingRect( inputLayoutBox, cancelButtonObject, cancelButtonRect, r); DEFINE_STATIC_REF(Image, cancelImage, (Image::loadPlatformResource("searchCancel"))); DEFINE_STATIC_REF(Image, cancelPressedImage, (Image::loadPlatformResource("searchCancelPressed"))); paintInfo.context.drawImage(LayoutTheme::isPressed(cancelButtonObject) ? cancelPressedImage : cancelImage, paintingRect); return false; }
PassRefPtr<AnimatableValue> AnimatableValue::neutralValue() { DEFINE_STATIC_REF(AnimatableNeutral, neutralSentinelValue, (AnimatableNeutral::create())); return neutralSentinelValue; }
DOMWrapperWorld& DOMWrapperWorld::mainWorld() { ASSERT(isMainThread()); DEFINE_STATIC_REF(DOMWrapperWorld, cachedMainWorld, (DOMWrapperWorld::create(MainWorld))); return *cachedMainWorld; }
DOMWrapperWorld* DOMWrapperWorld::mainWorld() { ASSERT(isMainThread()); DEFINE_STATIC_REF(DOMWrapperWorld, cachedMainWorld, (DOMWrapperWorld::create(MainWorldId, mainWorldExtensionGroup))); return cachedMainWorld; }
// FIXME: Generate this function. PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create(CSSPropertyID property, const ComputedStyle& style) { ASSERT(CSSPropertyMetadata::isInterpolableProperty(property)); switch (property) { case CSSPropertyBackgroundColor: return createFromColor(property, style); case CSSPropertyBackgroundImage: return createFromFillLayers<CSSPropertyBackgroundImage>(style.backgroundLayers(), style); case CSSPropertyBackgroundPositionX: return createFromFillLayers<CSSPropertyBackgroundPositionX>(style.backgroundLayers(), style); case CSSPropertyBackgroundPositionY: return createFromFillLayers<CSSPropertyBackgroundPositionY>(style.backgroundLayers(), style); case CSSPropertyBackgroundSize: return createFromFillLayers<CSSPropertyBackgroundSize>(style.backgroundLayers(), style); case CSSPropertyBaselineShift: switch (style.svgStyle().baselineShift()) { case BS_SUPER: return AnimatableUnknown::create(CSSPrimitiveValue::createIdentifier(CSSValueSuper)); case BS_SUB: return AnimatableUnknown::create(CSSPrimitiveValue::createIdentifier(CSSValueSub)); default: return createFromLength(style.baselineShiftValue(), style); } case CSSPropertyBorderBottomColor: return createFromColor(property, style); case CSSPropertyBorderBottomLeftRadius: return createFromLengthSize(style.borderBottomLeftRadius(), style); case CSSPropertyBorderBottomRightRadius: return createFromLengthSize(style.borderBottomRightRadius(), style); case CSSPropertyBorderBottomWidth: return createFromDouble(style.borderBottomWidth()); case CSSPropertyBorderImageOutset: return createFromBorderImageLengthBox(style.borderImageOutset(), style); case CSSPropertyBorderImageSlice: return createFromLengthBoxAndBool(style.borderImageSlices(), style.borderImageSlicesFill(), style); case CSSPropertyBorderImageSource: return createFromStyleImage(style.borderImageSource()); case CSSPropertyBorderImageWidth: return createFromBorderImageLengthBox(style.borderImageWidth(), style); case CSSPropertyBorderLeftColor: return createFromColor(property, style); case CSSPropertyBorderLeftWidth: return createFromDouble(style.borderLeftWidth()); case CSSPropertyBorderRightColor: return createFromColor(property, style); case CSSPropertyBorderRightWidth: return createFromDouble(style.borderRightWidth()); case CSSPropertyBorderTopColor: return createFromColor(property, style); case CSSPropertyBorderTopLeftRadius: return createFromLengthSize(style.borderTopLeftRadius(), style); case CSSPropertyBorderTopRightRadius: return createFromLengthSize(style.borderTopRightRadius(), style); case CSSPropertyBorderTopWidth: return createFromDouble(style.borderTopWidth()); case CSSPropertyBottom: return createFromLength(style.bottom(), style); case CSSPropertyBoxShadow: return AnimatableShadow::create(style.boxShadow(), style.color()); case CSSPropertyClip: if (style.hasAutoClip()) return AnimatableUnknown::create(CSSPrimitiveValue::createIdentifier(CSSValueAuto)); return createFromLengthBox(style.clip(), style); case CSSPropertyColor: return createFromColor(property, style); case CSSPropertyFillOpacity: return createFromDouble(style.fillOpacity()); case CSSPropertyFill: return AnimatableSVGPaint::create( normalizeSVGPaintType(style.svgStyle().fillPaintType()), normalizeSVGPaintType(style.svgStyle().visitedLinkFillPaintType()), style.svgStyle().fillPaintColor(), style.svgStyle().visitedLinkFillPaintColor(), style.svgStyle().fillPaintUri(), style.svgStyle().visitedLinkFillPaintUri()); case CSSPropertyFlexGrow: return createFromDouble(style.flexGrow()); case CSSPropertyFlexShrink: return createFromDouble(style.flexShrink()); case CSSPropertyFlexBasis: return createFromLength(style.flexBasis(), style); case CSSPropertyFloodColor: return createFromColor(property, style); case CSSPropertyFloodOpacity: return createFromDouble(style.floodOpacity()); case CSSPropertyFontSize: // Must pass a specified size to setFontSize if Text Autosizing is enabled, but a computed size // if text zoom is enabled (if neither is enabled it's irrelevant as they're probably the same). // FIXME: Should we introduce an option to pass the computed font size here, allowing consumers to // enable text zoom rather than Text Autosizing? See http://crbug.com/227545. return createFromDouble(style.specifiedFontSize()); case CSSPropertyFontSizeAdjust: return style.hasFontSizeAdjust() ? createFromDouble(style.fontSizeAdjust()) : AnimatableUnknown::create(CSSValueNone); case CSSPropertyFontStretch: return createFromFontStretch(style.fontStretch()); case CSSPropertyFontWeight: return createFromFontWeight(style.fontWeight()); case CSSPropertyHeight: return createFromLength(style.height(), style); case CSSPropertyLightingColor: return createFromColor(property, style); case CSSPropertyListStyleImage: return createFromStyleImage(style.listStyleImage()); case CSSPropertyLeft: return createFromLength(style.left(), style); case CSSPropertyLetterSpacing: return createFromDouble(style.letterSpacing()); case CSSPropertyLineHeight: return createFromLineHeight(style.specifiedLineHeight(), style); case CSSPropertyMarginBottom: return createFromLength(style.marginBottom(), style); case CSSPropertyMarginLeft: return createFromLength(style.marginLeft(), style); case CSSPropertyMarginRight: return createFromLength(style.marginRight(), style); case CSSPropertyMarginTop: return createFromLength(style.marginTop(), style); case CSSPropertyMaxHeight: return createFromLength(style.maxHeight(), style); case CSSPropertyMaxWidth: return createFromLength(style.maxWidth(), style); case CSSPropertyMinHeight: return createFromLength(style.minHeight(), style); case CSSPropertyMinWidth: return createFromLength(style.minWidth(), style); case CSSPropertyObjectPosition: return createFromLengthPoint(style.objectPosition(), style); case CSSPropertyOpacity: return createFromDouble(style.opacity()); case CSSPropertyOrphans: return createFromDouble(style.orphans()); case CSSPropertyOutlineColor: return createFromColor(property, style); case CSSPropertyOutlineOffset: return createFromDouble(style.outlineOffset()); case CSSPropertyOutlineWidth: return createFromDouble(style.outlineWidth()); case CSSPropertyPaddingBottom: return createFromLength(style.paddingBottom(), style); case CSSPropertyPaddingLeft: return createFromLength(style.paddingLeft(), style); case CSSPropertyPaddingRight: return createFromLength(style.paddingRight(), style); case CSSPropertyPaddingTop: return createFromLength(style.paddingTop(), style); case CSSPropertyRight: return createFromLength(style.right(), style); case CSSPropertyStrokeWidth: return createFromUnzoomedLength(style.strokeWidth()); case CSSPropertyStopColor: return createFromColor(property, style); case CSSPropertyStopOpacity: return createFromDouble(style.stopOpacity()); case CSSPropertyStrokeDasharray: return AnimatableStrokeDasharrayList::create(style.strokeDashArray(), style.effectiveZoom()); case CSSPropertyStrokeDashoffset: return createFromLength(style.strokeDashOffset(), style); case CSSPropertyStrokeMiterlimit: return createFromDouble(style.strokeMiterLimit()); case CSSPropertyStrokeOpacity: return createFromDouble(style.strokeOpacity()); case CSSPropertyStroke: return AnimatableSVGPaint::create( normalizeSVGPaintType(style.svgStyle().strokePaintType()), normalizeSVGPaintType(style.svgStyle().visitedLinkStrokePaintType()), style.svgStyle().strokePaintColor(), style.svgStyle().visitedLinkStrokePaintColor(), style.svgStyle().strokePaintUri(), style.svgStyle().visitedLinkStrokePaintUri()); case CSSPropertyTextDecorationColor: return createFromColor(property, style); case CSSPropertyTextIndent: return createFromLength(style.textIndent(), style); case CSSPropertyTextShadow: return AnimatableShadow::create(style.textShadow(), style.color()); case CSSPropertyTop: return createFromLength(style.top(), style); case CSSPropertyWebkitBorderHorizontalSpacing: return createFromDouble(style.horizontalBorderSpacing()); case CSSPropertyWebkitBorderVerticalSpacing: return createFromDouble(style.verticalBorderSpacing()); case CSSPropertyWebkitClipPath: if (ClipPathOperation* operation = style.clipPath()) return AnimatableClipPathOperation::create(operation); return AnimatableUnknown::create(CSSValueNone); case CSSPropertyColumnCount: if (style.hasAutoColumnCount()) return AnimatableUnknown::create(CSSValueAuto); return createFromDouble(style.columnCount()); case CSSPropertyColumnGap: return createFromDouble(style.columnGap()); case CSSPropertyColumnRuleColor: return createFromColor(property, style); case CSSPropertyColumnRuleWidth: return createFromDouble(style.columnRuleWidth()); case CSSPropertyColumnWidth: if (style.hasAutoColumnWidth()) return AnimatableUnknown::create(CSSValueAuto); return createFromDouble(style.columnWidth()); case CSSPropertyWebkitFilter: return AnimatableFilterOperations::create(style.filter()); case CSSPropertyBackdropFilter: return AnimatableFilterOperations::create(style.backdropFilter()); case CSSPropertyWebkitMaskBoxImageOutset: return createFromBorderImageLengthBox(style.maskBoxImageOutset(), style); case CSSPropertyWebkitMaskBoxImageSlice: return createFromLengthBoxAndBool(style.maskBoxImageSlices(), style.maskBoxImageSlicesFill(), style); case CSSPropertyWebkitMaskBoxImageSource: return createFromStyleImage(style.maskBoxImageSource()); case CSSPropertyWebkitMaskBoxImageWidth: return createFromBorderImageLengthBox(style.maskBoxImageWidth(), style); case CSSPropertyWebkitMaskImage: return createFromFillLayers<CSSPropertyWebkitMaskImage>(style.maskLayers(), style); case CSSPropertyWebkitMaskPositionX: return createFromFillLayers<CSSPropertyWebkitMaskPositionX>(style.maskLayers(), style); case CSSPropertyWebkitMaskPositionY: return createFromFillLayers<CSSPropertyWebkitMaskPositionY>(style.maskLayers(), style); case CSSPropertyWebkitMaskSize: return createFromFillLayers<CSSPropertyWebkitMaskSize>(style.maskLayers(), style); case CSSPropertyPerspective: if (style.perspective() == 0) return AnimatableUnknown::create(CSSPrimitiveValue::createIdentifier(CSSValueNone)); return createFromDouble(style.perspective()); case CSSPropertyPerspectiveOrigin: return createFromLengthPoint(style.perspectiveOrigin(), style); case CSSPropertyShapeOutside: return createFromShapeValue(style.shapeOutside()); case CSSPropertyShapeMargin: return createFromLength(style.shapeMargin(), style); case CSSPropertyShapeImageThreshold: return createFromDouble(style.shapeImageThreshold()); case CSSPropertyWebkitTextStrokeColor: return createFromColor(property, style); case CSSPropertyTransform: return AnimatableTransform::create(style.transform(), style.effectiveZoom()); case CSSPropertyTranslate: { DEFINE_STATIC_REF(TranslateTransformOperation, initialTranslate, TranslateTransformOperation::create(Length(0, Fixed), Length(0, Fixed), 0, TransformOperation::Translate3D)); return createFromTransformProperties(style.translate(), style.effectiveZoom(), initialTranslate); } case CSSPropertyRotate: { DEFINE_STATIC_REF(RotateTransformOperation, initialRotate, RotateTransformOperation::create(0, 0, 1, 0, TransformOperation::Rotate3D)); return createFromTransformProperties(style.rotate(), style.effectiveZoom(), initialRotate); } case CSSPropertyScale: { DEFINE_STATIC_REF(ScaleTransformOperation, initialScale, ScaleTransformOperation::create(1, 1, 1, TransformOperation::Scale3D)); return createFromTransformProperties(style.scale(), style.effectiveZoom(), initialScale); } case CSSPropertyTransformOrigin: return createFromTransformOrigin(style.transformOrigin(), style); case CSSPropertyMotionOffset: return createFromLength(style.motionOffset(), style); case CSSPropertyMotionRotation: return createFromDoubleAndBool(style.motionRotation().angle, style.motionRotation().type == MotionRotationAuto, style); case CSSPropertyWebkitPerspectiveOriginX: return createFromLength(style.perspectiveOriginX(), style); case CSSPropertyWebkitPerspectiveOriginY: return createFromLength(style.perspectiveOriginY(), style); case CSSPropertyWebkitTransformOriginX: return createFromLength(style.transformOriginX(), style); case CSSPropertyWebkitTransformOriginY: return createFromLength(style.transformOriginY(), style); case CSSPropertyWebkitTransformOriginZ: return createFromDouble(style.transformOriginZ()); case CSSPropertyWidows: return createFromDouble(style.widows()); case CSSPropertyWidth: return createFromLength(style.width(), style); case CSSPropertyWordSpacing: return createFromDouble(style.wordSpacing()); case CSSPropertyVerticalAlign: if (style.verticalAlign() == LENGTH) return createFromLength(style.verticalAlignLength(), style); return AnimatableUnknown::create(CSSPrimitiveValue::create(style.verticalAlign())); case CSSPropertyVisibility: return AnimatableVisibility::create(style.visibility()); case CSSPropertyD: return createFromPath(style.svgStyle().d()); case CSSPropertyCx: return createFromLength(style.svgStyle().cx(), style); case CSSPropertyCy: return createFromLength(style.svgStyle().cy(), style); case CSSPropertyX: return createFromLength(style.svgStyle().x(), style); case CSSPropertyY: return createFromLength(style.svgStyle().y(), style); case CSSPropertyR: return createFromLength(style.svgStyle().r(), style); case CSSPropertyRx: return createFromLength(style.svgStyle().rx(), style); case CSSPropertyRy: return createFromLength(style.svgStyle().ry(), style); case CSSPropertyZIndex: if (style.hasAutoZIndex()) return AnimatableUnknown::create(CSSValueAuto); return createFromDouble(style.zIndex()); default: ASSERT_NOT_REACHED(); return nullptr; } }
static PassRefPtr<CSSLengthNonInterpolableValue> create(bool hasPercentage) { DEFINE_STATIC_REF(CSSLengthNonInterpolableValue, singleton, adoptRef(new CSSLengthNonInterpolableValue())); DCHECK(singleton); return hasPercentage ? singleton : nullptr; }
StylePath* StylePath::emptyPath() { DEFINE_STATIC_REF(StylePath, emptyPath, StylePath::create(SVGPathByteStream::create())); return emptyPath; }
static const QuotesData* basicQuotesData() { // FIXME: The default quotes should be the fancy quotes for "en". DEFINE_STATIC_REF(QuotesData, staticBasicQuotes, (QuotesData::create('"', '"', '\'', '\''))); return staticBasicQuotes; }
Image* Image::nullImage() { ASSERT(isMainThread()); DEFINE_STATIC_REF(Image, nullImage, (BitmapImage::create())); return nullImage; }
PassRefPtr<SVGDashArray> SVGComputedStyle::initialStrokeDashArray() { DEFINE_STATIC_REF(SVGDashArray, initialDashArray, SVGDashArray::create()); return initialDashArray; }
RenderTheme& RenderTheme::theme() { DEFINE_STATIC_REF(RenderTheme, renderTheme, (RenderThemeChromiumAndroid::create())); return *renderTheme; }
DOMWrapperWorld& DOMWrapperWorld::mainWorld() { ASSERT(isMainThread()); DEFINE_STATIC_REF(DOMWrapperWorld, cachedMainWorld, (DOMWrapperWorld::create(v8::Isolate::GetCurrent(), MainWorldId, mainWorldExtensionGroup))); return *cachedMainWorld; }