Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(536)

Side by Side Diff: third_party/WebKit/Source/core/css/CSSPrimitiveValue.cpp

Issue 1306823004: Split out String, URI and CustomIdent from CSSPrimitiveValue (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@split_out_attr_values
Patch Set: Rebase Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2012 Apple Inc. All rights reserv ed. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2012 Apple Inc. All rights reserv ed.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 } 225 }
226 226
227 CSSPrimitiveValue::CSSPrimitiveValue(double num, UnitType type) 227 CSSPrimitiveValue::CSSPrimitiveValue(double num, UnitType type)
228 : CSSValue(PrimitiveClass) 228 : CSSValue(PrimitiveClass)
229 { 229 {
230 init(type); 230 init(type);
231 ASSERT(std::isfinite(num)); 231 ASSERT(std::isfinite(num));
232 m_value.num = num; 232 m_value.num = num;
233 } 233 }
234 234
235 CSSPrimitiveValue::CSSPrimitiveValue(const String& str, UnitType type)
236 : CSSValue(PrimitiveClass)
237 {
238 init(type);
239 m_value.string = str.impl();
240 if (m_value.string)
241 m_value.string->ref();
242 }
243
244 CSSPrimitiveValue::CSSPrimitiveValue(RGBA32 color) 235 CSSPrimitiveValue::CSSPrimitiveValue(RGBA32 color)
245 : CSSValue(PrimitiveClass) 236 : CSSValue(PrimitiveClass)
246 { 237 {
247 init(UnitType::RGBColor); 238 init(UnitType::RGBColor);
248 m_value.rgbcolor = color; 239 m_value.rgbcolor = color;
249 } 240 }
250 241
251 CSSPrimitiveValue::CSSPrimitiveValue(const Length& length, float zoom) 242 CSSPrimitiveValue::CSSPrimitiveValue(const Length& length, float zoom)
252 : CSSValue(PrimitiveClass) 243 : CSSValue(PrimitiveClass)
253 { 244 {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 } 324 }
334 325
335 CSSPrimitiveValue::~CSSPrimitiveValue() 326 CSSPrimitiveValue::~CSSPrimitiveValue()
336 { 327 {
337 cleanup(); 328 cleanup();
338 } 329 }
339 330
340 void CSSPrimitiveValue::cleanup() 331 void CSSPrimitiveValue::cleanup()
341 { 332 {
342 switch (type()) { 333 switch (type()) {
343 case UnitType::CustomIdentifier:
344 case UnitType::String:
345 case UnitType::URI:
346 if (m_value.string)
347 m_value.string->deref();
348 break;
349 case UnitType::Calc: 334 case UnitType::Calc:
350 // We must not call deref() when oilpan is enabled because m_value.calc is traced. 335 // We must not call deref() when oilpan is enabled because m_value.calc is traced.
351 #if !ENABLE(OILPAN) 336 #if !ENABLE(OILPAN)
352 m_value.calc->deref(); 337 m_value.calc->deref();
353 #endif 338 #endif
354 break; 339 break;
355 case UnitType::CalcPercentageWithNumber: 340 case UnitType::CalcPercentageWithNumber:
356 case UnitType::CalcPercentageWithLength: 341 case UnitType::CalcPercentageWithLength:
357 ASSERT_NOT_REACHED(); 342 ASSERT_NOT_REACHED();
358 break; 343 break;
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 return CSSPrimitiveValue::UnitType::ViewportMin; 705 return CSSPrimitiveValue::UnitType::ViewportMin;
721 case UnitTypeViewportMax: 706 case UnitTypeViewportMax:
722 return CSSPrimitiveValue::UnitType::ViewportMax; 707 return CSSPrimitiveValue::UnitType::ViewportMax;
723 case LengthUnitTypeCount: 708 case LengthUnitTypeCount:
724 break; 709 break;
725 } 710 }
726 ASSERT_NOT_REACHED(); 711 ASSERT_NOT_REACHED();
727 return CSSPrimitiveValue::UnitType::Unknown; 712 return CSSPrimitiveValue::UnitType::Unknown;
728 } 713 }
729 714
730 String CSSPrimitiveValue::getStringValue() const
731 {
732 switch (type()) {
733 case UnitType::CustomIdentifier:
734 case UnitType::String:
735 case UnitType::URI:
736 return m_value.string;
737 default:
738 break;
739 }
740
741 ASSERT_NOT_REACHED();
742 return String();
743 }
744
745 static String formatNumber(double number, const char* suffix, unsigned suffixLen gth) 715 static String formatNumber(double number, const char* suffix, unsigned suffixLen gth)
746 { 716 {
747 #if OS(WIN) && _MSC_VER < 1900 717 #if OS(WIN) && _MSC_VER < 1900
748 unsigned oldFormat = _set_output_format(_TWO_DIGIT_EXPONENT); 718 unsigned oldFormat = _set_output_format(_TWO_DIGIT_EXPONENT);
749 #endif 719 #endif
750 String result = String::format("%.6g", number); 720 String result = String::format("%.6g", number);
751 #if OS(WIN) && _MSC_VER < 1900 721 #if OS(WIN) && _MSC_VER < 1900
752 _set_output_format(oldFormat); 722 _set_output_format(oldFormat);
753 #endif 723 #endif
754 result.append(suffix, suffixLength); 724 result.append(suffix, suffixLength);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 return "fr"; 791 return "fr";
822 case UnitType::ViewportWidth: 792 case UnitType::ViewportWidth:
823 return "vw"; 793 return "vw";
824 case UnitType::ViewportHeight: 794 case UnitType::ViewportHeight:
825 return "vh"; 795 return "vh";
826 case UnitType::ViewportMin: 796 case UnitType::ViewportMin:
827 return "vmin"; 797 return "vmin";
828 case UnitType::ViewportMax: 798 case UnitType::ViewportMax:
829 return "vmax"; 799 return "vmax";
830 case UnitType::Unknown: 800 case UnitType::Unknown:
831 case UnitType::CustomIdentifier:
832 case UnitType::String:
833 case UnitType::URI:
834 case UnitType::ValueID: 801 case UnitType::ValueID:
835 case UnitType::PropertyID: 802 case UnitType::PropertyID:
836 case UnitType::RGBColor: 803 case UnitType::RGBColor:
837 case UnitType::Calc: 804 case UnitType::Calc:
838 case UnitType::CalcPercentageWithNumber: 805 case UnitType::CalcPercentageWithNumber:
839 case UnitType::CalcPercentageWithLength: 806 case UnitType::CalcPercentageWithLength:
840 break; 807 break;
841 }; 808 };
842 ASSERT_NOT_REACHED(); 809 ASSERT_NOT_REACHED();
843 return ""; 810 return "";
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 case UnitType::Hertz: 849 case UnitType::Hertz:
883 case UnitType::Kilohertz: 850 case UnitType::Kilohertz:
884 case UnitType::Turns: 851 case UnitType::Turns:
885 case UnitType::Fraction: 852 case UnitType::Fraction:
886 case UnitType::ViewportWidth: 853 case UnitType::ViewportWidth:
887 case UnitType::ViewportHeight: 854 case UnitType::ViewportHeight:
888 case UnitType::ViewportMin: 855 case UnitType::ViewportMin:
889 case UnitType::ViewportMax: 856 case UnitType::ViewportMax:
890 text = formatNumber(m_value.num, unitTypeToString(type())); 857 text = formatNumber(m_value.num, unitTypeToString(type()));
891 break; 858 break;
892 case UnitType::CustomIdentifier:
893 text = quoteCSSStringIfNeeded(m_value.string);
894 break;
895 case UnitType::String: {
896 text = serializeString(m_value.string);
897 break;
898 }
899 case UnitType::URI:
900 text = serializeURI(m_value.string);
901 break;
902 case UnitType::ValueID: 859 case UnitType::ValueID:
903 text = valueName(m_value.valueID); 860 text = valueName(m_value.valueID);
904 break; 861 break;
905 case UnitType::PropertyID: 862 case UnitType::PropertyID:
906 text = propertyName(m_value.propertyID); 863 text = propertyName(m_value.propertyID);
907 break; 864 break;
908 case UnitType::RGBColor: { 865 case UnitType::RGBColor: {
909 text = Color(m_value.rgbcolor).serializedAsCSSComponentValue(); 866 text = Color(m_value.rgbcolor).serializedAsCSSComponentValue();
910 break; 867 break;
911 } 868 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 case UnitType::ViewportWidth: 914 case UnitType::ViewportWidth:
958 case UnitType::ViewportHeight: 915 case UnitType::ViewportHeight:
959 case UnitType::ViewportMin: 916 case UnitType::ViewportMin:
960 case UnitType::ViewportMax: 917 case UnitType::ViewportMax:
961 case UnitType::Fraction: 918 case UnitType::Fraction:
962 return m_value.num == other.m_value.num; 919 return m_value.num == other.m_value.num;
963 case UnitType::PropertyID: 920 case UnitType::PropertyID:
964 return m_value.propertyID == other.m_value.propertyID; 921 return m_value.propertyID == other.m_value.propertyID;
965 case UnitType::ValueID: 922 case UnitType::ValueID:
966 return m_value.valueID == other.m_value.valueID; 923 return m_value.valueID == other.m_value.valueID;
967 case UnitType::CustomIdentifier:
968 case UnitType::String:
969 case UnitType::URI:
970 return equal(m_value.string, other.m_value.string);
971 case UnitType::RGBColor: 924 case UnitType::RGBColor:
972 return m_value.rgbcolor == other.m_value.rgbcolor; 925 return m_value.rgbcolor == other.m_value.rgbcolor;
973 case UnitType::Calc: 926 case UnitType::Calc:
974 return m_value.calc && other.m_value.calc && m_value.calc->equals(*other .m_value.calc); 927 return m_value.calc && other.m_value.calc && m_value.calc->equals(*other .m_value.calc);
975 case UnitType::Integer: 928 case UnitType::Integer:
976 case UnitType::Chs: 929 case UnitType::Chs:
977 case UnitType::CalcPercentageWithNumber: 930 case UnitType::CalcPercentageWithNumber:
978 case UnitType::CalcPercentageWithLength: 931 case UnitType::CalcPercentageWithLength:
979 case UnitType::QuirkyEms: 932 case UnitType::QuirkyEms:
980 return false; 933 return false;
981 } 934 }
982 return false; 935 return false;
983 } 936 }
984 937
985 DEFINE_TRACE_AFTER_DISPATCH(CSSPrimitiveValue) 938 DEFINE_TRACE_AFTER_DISPATCH(CSSPrimitiveValue)
986 { 939 {
987 #if ENABLE(OILPAN) 940 #if ENABLE(OILPAN)
988 switch (type()) { 941 switch (type()) {
989 case UnitType::Calc: 942 case UnitType::Calc:
990 visitor->trace(m_value.calc); 943 visitor->trace(m_value.calc);
991 break; 944 break;
992 default: 945 default:
993 break; 946 break;
994 } 947 }
995 #endif 948 #endif
996 CSSValue::traceAfterDispatch(visitor); 949 CSSValue::traceAfterDispatch(visitor);
997 } 950 }
998 951
999 } // namespace blink 952 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSPrimitiveValue.h ('k') | third_party/WebKit/Source/core/css/CSSStringValue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698