tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ServoCSSParser.cpp (4352B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 /* CSS parsing utility functions */
      8 
      9 #include "ServoCSSParser.h"
     10 
     11 #include "mozilla/CSSPropertyId.h"
     12 #include "mozilla/ServoBindings.h"
     13 #include "mozilla/ServoStyleSet.h"
     14 #include "mozilla/dom/Document.h"
     15 
     16 using namespace mozilla;
     17 using namespace mozilla::dom;
     18 
     19 /* static */
     20 bool ServoCSSParser::IsValidCSSColor(const nsACString& aValue) {
     21  return Servo_IsValidCSSColor(&aValue);
     22 }
     23 
     24 /* static */
     25 bool ServoCSSParser::ComputeColor(const StylePerDocumentStyleData* aStyleData,
     26                                  nscolor aCurrentColor,
     27                                  const nsACString& aValue,
     28                                  nscolor* aResultColor, bool* aWasCurrentColor,
     29                                  css::Loader* aLoader) {
     30  return Servo_ComputeColor(aStyleData, aCurrentColor, &aValue, aResultColor,
     31                            aWasCurrentColor, aLoader);
     32 }
     33 
     34 /* static */
     35 Maybe<StyleAbsoluteColor> ServoCSSParser::ComputeColorWellControlColor(
     36    const StylePerDocumentStyleData* aStyleData, const nsACString& aValue,
     37    StyleColorSpace aToColorSpace) {
     38  StyleAbsoluteColor color{};
     39  if (Servo_ComputeColorWellControlColor(aStyleData, &aValue, aToColorSpace,
     40                                         &color)) {
     41    return Some(color);
     42  }
     43  return Nothing();
     44 }
     45 
     46 /* static */
     47 bool ServoCSSParser::ColorTo(const nsACString& aFromColor,
     48                             const nsACString& aToColorSpace,
     49                             nsACString* aResultColor,
     50                             nsTArray<float>* aResultComponents,
     51                             bool* aResultAdjusted, css::Loader* aLoader) {
     52  return Servo_ColorTo(&aFromColor, &aToColorSpace, aResultColor,
     53                       aResultComponents, aResultAdjusted, aLoader);
     54 }
     55 
     56 /* static */
     57 already_AddRefed<StyleLockedDeclarationBlock> ServoCSSParser::ParseProperty(
     58    NonCustomCSSPropertyId aProperty, const nsACString& aValue,
     59    const ParsingEnvironment& aParsingEnvironment,
     60    const StyleParsingMode& aParsingMode) {
     61  CSSPropertyId property(aProperty);
     62  return ParseProperty(property, aValue, aParsingEnvironment, aParsingMode);
     63 }
     64 
     65 /* static */
     66 already_AddRefed<StyleLockedDeclarationBlock> ServoCSSParser::ParseProperty(
     67    const CSSPropertyId& aProperty, const nsACString& aValue,
     68    const ParsingEnvironment& aParsingEnvironment,
     69    const StyleParsingMode& aParsingMode) {
     70  return Servo_ParseProperty(
     71             &aProperty, &aValue, aParsingEnvironment.mUrlExtraData,
     72             aParsingMode, aParsingEnvironment.mCompatMode,
     73             aParsingEnvironment.mLoader, aParsingEnvironment.mRuleType)
     74      .Consume();
     75 }
     76 
     77 /* static */
     78 bool ServoCSSParser::ParseEasing(const nsACString& aValue,
     79                                 StyleComputedTimingFunction& aResult) {
     80  return Servo_ParseEasing(&aValue, &aResult);
     81 }
     82 
     83 /* static */
     84 bool ServoCSSParser::ParseTransformIntoMatrix(const nsACString& aValue,
     85                                              bool& aContains3DTransform,
     86                                              gfx::Matrix4x4& aResult) {
     87  return Servo_ParseTransformIntoMatrix(&aValue, &aContains3DTransform,
     88                                        &aResult.components);
     89 }
     90 
     91 /* static */
     92 bool ServoCSSParser::ParseFontShorthandForMatching(
     93    const nsACString& aValue, URLExtraData* aUrl, StyleFontFamilyList& aList,
     94    StyleFontStyle& aStyle, StyleFontStretch& aStretch,
     95    StyleFontWeight& aWeight, float* aSize, bool* aSmallCaps) {
     96  return Servo_ParseFontShorthandForMatching(
     97      &aValue, aUrl, &aList, &aStyle, &aStretch, &aWeight, aSize, aSmallCaps);
     98 }
     99 
    100 /* static */
    101 already_AddRefed<URLExtraData> ServoCSSParser::GetURLExtraData(
    102    Document* aDocument) {
    103  MOZ_ASSERT(aDocument);
    104  return do_AddRef(aDocument->DefaultStyleAttrURLData());
    105 }
    106 
    107 /* static */ ServoCSSParser::ParsingEnvironment
    108 ServoCSSParser::GetParsingEnvironment(Document* aDocument) {
    109  return {
    110      GetURLExtraData(aDocument), aDocument->GetCompatibilityMode(),
    111      aDocument->GetExistingCSSLoader()};  // Loader for error reporting only.
    112 }