| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2003, 2010 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003, 2010 Apple Inc. All rights reserved. |
| 6 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 } | 66 } |
| 67 | 67 |
| 68 // Though isspace() considers \t and \v to be whitespace, Win IE doesn't. | 68 // Though isspace() considers \t and \v to be whitespace, Win IE doesn't. |
| 69 static bool isSeparator(UChar c) | 69 static bool isSeparator(UChar c) |
| 70 { | 70 { |
| 71 return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '=' || c == '
,' || c == '\0'; | 71 return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '=' || c == '
,' || c == '\0'; |
| 72 } | 72 } |
| 73 | 73 |
| 74 void HTMLMetaElement::parseContentAttribute(const String& content, void* data, D
ocument* document, bool viewportMetaZeroValuesQuirk) | 74 void HTMLMetaElement::parseContentAttribute(const String& content, void* data, D
ocument* document, bool viewportMetaZeroValuesQuirk) |
| 75 { | 75 { |
| 76 bool error = false; | 76 bool hasInvalidSeparator = false; |
| 77 | 77 |
| 78 // Tread lightly in this code -- it was specifically designed to mimic Win I
E's parsing behavior. | 78 // Tread lightly in this code -- it was specifically designed to mimic Win I
E's parsing behavior. |
| 79 unsigned keyBegin, keyEnd; | 79 unsigned keyBegin, keyEnd; |
| 80 unsigned valueBegin, valueEnd; | 80 unsigned valueBegin, valueEnd; |
| 81 | 81 |
| 82 String buffer = content.lower(); | 82 String buffer = content.lower(); |
| 83 unsigned length = buffer.length(); | 83 unsigned length = buffer.length(); |
| 84 for (unsigned i = 0; i < length; /* no increment here */) { | 84 for (unsigned i = 0; i < length; /* no increment here */) { |
| 85 // skip to first non-separator, but don't skip past the end of the strin
g | 85 // skip to first non-separator, but don't skip past the end of the strin
g |
| 86 while (isSeparator(buffer[i])) { | 86 while (isSeparator(buffer[i])) { |
| 87 if (i >= length) | 87 if (i >= length) |
| 88 break; | 88 break; |
| 89 i++; | 89 i++; |
| 90 } | 90 } |
| 91 keyBegin = i; | 91 keyBegin = i; |
| 92 | 92 |
| 93 // skip to first separator | 93 // skip to first separator |
| 94 while (!isSeparator(buffer[i])) { | 94 while (!isSeparator(buffer[i])) { |
| 95 error |= isInvalidSeparator(buffer[i]); | 95 hasInvalidSeparator |= isInvalidSeparator(buffer[i]); |
| 96 if (i >= length) | 96 if (i >= length) |
| 97 break; | 97 break; |
| 98 i++; | 98 i++; |
| 99 } | 99 } |
| 100 keyEnd = i; | 100 keyEnd = i; |
| 101 | 101 |
| 102 // skip to first '=', but don't skip past a ',' or the end of the string | 102 // skip to first '=', but don't skip past a ',' or the end of the string |
| 103 while (buffer[i] != '=') { | 103 while (buffer[i] != '=') { |
| 104 error |= isInvalidSeparator(buffer[i]); | 104 hasInvalidSeparator |= isInvalidSeparator(buffer[i]); |
| 105 if (buffer[i] == ',' || i >= length) | 105 if (buffer[i] == ',' || i >= length) |
| 106 break; | 106 break; |
| 107 i++; | 107 i++; |
| 108 } | 108 } |
| 109 | 109 |
| 110 // skip to first non-separator, but don't skip past a ',' or the end of
the string | 110 // skip to first non-separator, but don't skip past a ',' or the end of
the string |
| 111 while (isSeparator(buffer[i])) { | 111 while (isSeparator(buffer[i])) { |
| 112 if (buffer[i] == ',' || i >= length) | 112 if (buffer[i] == ',' || i >= length) |
| 113 break; | 113 break; |
| 114 i++; | 114 i++; |
| 115 } | 115 } |
| 116 valueBegin = i; | 116 valueBegin = i; |
| 117 | 117 |
| 118 // skip to first separator | 118 // skip to first separator |
| 119 while (!isSeparator(buffer[i])) { | 119 while (!isSeparator(buffer[i])) { |
| 120 error |= isInvalidSeparator(buffer[i]); | 120 hasInvalidSeparator |= isInvalidSeparator(buffer[i]); |
| 121 if (i >= length) | 121 if (i >= length) |
| 122 break; | 122 break; |
| 123 i++; | 123 i++; |
| 124 } | 124 } |
| 125 valueEnd = i; | 125 valueEnd = i; |
| 126 | 126 |
| 127 SECURITY_DCHECK(i <= length); | 127 SECURITY_DCHECK(i <= length); |
| 128 | 128 |
| 129 String keyString = buffer.substring(keyBegin, keyEnd - keyBegin); | 129 String keyString = buffer.substring(keyBegin, keyEnd - keyBegin); |
| 130 String valueString = buffer.substring(valueBegin, valueEnd - valueBegin)
; | 130 String valueString = buffer.substring(valueBegin, valueEnd - valueBegin)
; |
| 131 processViewportKeyValuePair(document, keyString, valueString, viewportMe
taZeroValuesQuirk, data); | 131 processViewportKeyValuePair(document, !hasInvalidSeparator, keyString, v
alueString, viewportMetaZeroValuesQuirk, data); |
| 132 } | 132 } |
| 133 if (error && document) { | 133 if (hasInvalidSeparator && document) { |
| 134 String message = "Error parsing a meta element's content: ';' is not a v
alid key-value pair separator. Please use ',' instead."; | 134 String message = "Error parsing a meta element's content: ';' is not a v
alid key-value pair separator. Please use ',' instead."; |
| 135 document->addConsoleMessage(ConsoleMessage::create(RenderingMessageSourc
e, WarningMessageLevel, message)); | 135 document->addConsoleMessage(ConsoleMessage::create(RenderingMessageSourc
e, WarningMessageLevel, message)); |
| 136 } | 136 } |
| 137 } | 137 } |
| 138 | 138 |
| 139 static inline float clampLengthValue(float value) | 139 static inline float clampLengthValue(float value) |
| 140 { | 140 { |
| 141 // Limits as defined in the css-device-adapt spec. | 141 // Limits as defined in the css-device-adapt spec. |
| 142 if (value != ViewportDescription::ValueAuto) | 142 if (value != ViewportDescription::ValueAuto) |
| 143 return std::min(float(10000), std::max(value, float(1))); | 143 return std::min(float(10000), std::max(value, float(1))); |
| 144 return value; | 144 return value; |
| 145 } | 145 } |
| 146 | 146 |
| 147 static inline float clampScaleValue(float value) | 147 static inline float clampScaleValue(float value) |
| 148 { | 148 { |
| 149 // Limits as defined in the css-device-adapt spec. | 149 // Limits as defined in the css-device-adapt spec. |
| 150 if (value != ViewportDescription::ValueAuto) | 150 if (value != ViewportDescription::ValueAuto) |
| 151 return std::min(float(10), std::max(value, float(0.1))); | 151 return std::min(float(10), std::max(value, float(0.1))); |
| 152 return value; | 152 return value; |
| 153 } | 153 } |
| 154 | 154 |
| 155 float HTMLMetaElement::parsePositiveNumber(Document* document, const String& key
String, const String& valueString, bool* ok) | 155 float HTMLMetaElement::parsePositiveNumber(Document* document, bool reportWarnin
gs, const String& keyString, const String& valueString, bool* ok) |
| 156 { | 156 { |
| 157 size_t parsedLength; | 157 size_t parsedLength; |
| 158 float value; | 158 float value; |
| 159 if (valueString.is8Bit()) | 159 if (valueString.is8Bit()) |
| 160 value = charactersToFloat(valueString.characters8(), valueString.length(
), parsedLength); | 160 value = charactersToFloat(valueString.characters8(), valueString.length(
), parsedLength); |
| 161 else | 161 else |
| 162 value = charactersToFloat(valueString.characters16(), valueString.length
(), parsedLength); | 162 value = charactersToFloat(valueString.characters16(), valueString.length
(), parsedLength); |
| 163 if (!parsedLength) { | 163 if (!parsedLength) { |
| 164 reportViewportWarning(document, UnrecognizedViewportArgumentValueError,
valueString, keyString); | 164 if (reportWarnings) |
| 165 reportViewportWarning(document, UnrecognizedViewportArgumentValueErr
or, valueString, keyString); |
| 165 if (ok) | 166 if (ok) |
| 166 *ok = false; | 167 *ok = false; |
| 167 return 0; | 168 return 0; |
| 168 } | 169 } |
| 169 if (parsedLength < valueString.length()) | 170 if (parsedLength < valueString.length() && reportWarnings) |
| 170 reportViewportWarning(document, TruncatedViewportArgumentValueError, val
ueString, keyString); | 171 reportViewportWarning(document, TruncatedViewportArgumentValueError, val
ueString, keyString); |
| 171 if (ok) | 172 if (ok) |
| 172 *ok = true; | 173 *ok = true; |
| 173 return value; | 174 return value; |
| 174 } | 175 } |
| 175 | 176 |
| 176 Length HTMLMetaElement::parseViewportValueAsLength(Document* document, const Str
ing& keyString, const String& valueString) | 177 Length HTMLMetaElement::parseViewportValueAsLength(Document* document, bool repo
rtWarnings, const String& keyString, const String& valueString) |
| 177 { | 178 { |
| 178 // 1) Non-negative number values are translated to px lengths. | 179 // 1) Non-negative number values are translated to px lengths. |
| 179 // 2) Negative number values are translated to auto. | 180 // 2) Negative number values are translated to auto. |
| 180 // 3) device-width and device-height are used as keywords. | 181 // 3) device-width and device-height are used as keywords. |
| 181 // 4) Other keywords and unknown values translate to 0.0. | 182 // 4) Other keywords and unknown values translate to 0.0. |
| 182 | 183 |
| 183 unsigned length = valueString.length(); | 184 unsigned length = valueString.length(); |
| 184 DEFINE_ARRAY_FOR_MATCHING(characters, valueString, 13); | 185 DEFINE_ARRAY_FOR_MATCHING(characters, valueString, 13); |
| 185 SWITCH(characters, length) { | 186 SWITCH(characters, length) { |
| 186 CASE("device-width") { | 187 CASE("device-width") { |
| 187 return Length(DeviceWidth); | 188 return Length(DeviceWidth); |
| 188 } | 189 } |
| 189 CASE("device-height") { | 190 CASE("device-height") { |
| 190 return Length(DeviceHeight); | 191 return Length(DeviceHeight); |
| 191 } | 192 } |
| 192 } | 193 } |
| 193 | 194 |
| 194 float value = parsePositiveNumber(document, keyString, valueString); | 195 float value = parsePositiveNumber(document, reportWarnings, keyString, value
String); |
| 195 | 196 |
| 196 if (value < 0) | 197 if (value < 0) |
| 197 return Length(); // auto | 198 return Length(); // auto |
| 198 | 199 |
| 199 return Length(clampLengthValue(value), Fixed); | 200 return Length(clampLengthValue(value), Fixed); |
| 200 } | 201 } |
| 201 | 202 |
| 202 float HTMLMetaElement::parseViewportValueAsZoom(Document* document, const String
& keyString, const String& valueString, bool& computedValueMatchesParsedValue, b
ool viewportMetaZeroValuesQuirk) | 203 float HTMLMetaElement::parseViewportValueAsZoom(Document* document, bool reportW
arnings, const String& keyString, const String& valueString, bool& computedValue
MatchesParsedValue, bool viewportMetaZeroValuesQuirk) |
| 203 { | 204 { |
| 204 // 1) Non-negative number values are translated to <number> values. | 205 // 1) Non-negative number values are translated to <number> values. |
| 205 // 2) Negative number values are translated to auto. | 206 // 2) Negative number values are translated to auto. |
| 206 // 3) yes is translated to 1.0. | 207 // 3) yes is translated to 1.0. |
| 207 // 4) device-width and device-height are translated to 10.0. | 208 // 4) device-width and device-height are translated to 10.0. |
| 208 // 5) no and unknown values are translated to 0.0 | 209 // 5) no and unknown values are translated to 0.0 |
| 209 | 210 |
| 210 computedValueMatchesParsedValue = false; | 211 computedValueMatchesParsedValue = false; |
| 211 unsigned length = valueString.length(); | 212 unsigned length = valueString.length(); |
| 212 DEFINE_ARRAY_FOR_MATCHING(characters, valueString, 13); | 213 DEFINE_ARRAY_FOR_MATCHING(characters, valueString, 13); |
| 213 SWITCH(characters, length) { | 214 SWITCH(characters, length) { |
| 214 CASE("yes") { | 215 CASE("yes") { |
| 215 return 1; | 216 return 1; |
| 216 } | 217 } |
| 217 CASE("no") { | 218 CASE("no") { |
| 218 return 0; | 219 return 0; |
| 219 } | 220 } |
| 220 CASE("device-width") { | 221 CASE("device-width") { |
| 221 return 10; | 222 return 10; |
| 222 } | 223 } |
| 223 CASE("device-height") { | 224 CASE("device-height") { |
| 224 return 10; | 225 return 10; |
| 225 } | 226 } |
| 226 } | 227 } |
| 227 | 228 |
| 228 float value = parsePositiveNumber(document, keyString, valueString); | 229 float value = parsePositiveNumber(document, reportWarnings, keyString, value
String); |
| 229 | 230 |
| 230 if (value < 0) | 231 if (value < 0) |
| 231 return ViewportDescription::ValueAuto; | 232 return ViewportDescription::ValueAuto; |
| 232 | 233 |
| 233 if (value > 10.0) | 234 if (value > 10.0 && reportWarnings) |
| 234 reportViewportWarning(document, MaximumScaleTooLargeError, String(), Str
ing()); | 235 reportViewportWarning(document, MaximumScaleTooLargeError, String(), Str
ing()); |
| 235 | 236 |
| 236 if (!value && viewportMetaZeroValuesQuirk) | 237 if (!value && viewportMetaZeroValuesQuirk) |
| 237 return ViewportDescription::ValueAuto; | 238 return ViewportDescription::ValueAuto; |
| 238 | 239 |
| 239 float clampedValue = clampScaleValue(value); | 240 float clampedValue = clampScaleValue(value); |
| 240 if (clampedValue == value) | 241 if (clampedValue == value) |
| 241 computedValueMatchesParsedValue = true; | 242 computedValueMatchesParsedValue = true; |
| 242 | 243 |
| 243 return clampedValue; | 244 return clampedValue; |
| 244 } | 245 } |
| 245 | 246 |
| 246 bool HTMLMetaElement::parseViewportValueAsUserZoom(Document* document, const Str
ing& keyString, const String& valueString, bool& computedValueMatchesParsedValue
) | 247 bool HTMLMetaElement::parseViewportValueAsUserZoom(Document* document, bool repo
rtWarnings, const String& keyString, const String& valueString, bool& computedVa
lueMatchesParsedValue) |
| 247 { | 248 { |
| 248 // yes and no are used as keywords. | 249 // yes and no are used as keywords. |
| 249 // Numbers >= 1, numbers <= -1, device-width and device-height are mapped to
yes. | 250 // Numbers >= 1, numbers <= -1, device-width and device-height are mapped to
yes. |
| 250 // Numbers in the range <-1, 1>, and unknown values, are mapped to no. | 251 // Numbers in the range <-1, 1>, and unknown values, are mapped to no. |
| 251 | 252 |
| 252 computedValueMatchesParsedValue = false; | 253 computedValueMatchesParsedValue = false; |
| 253 unsigned length = valueString.length(); | 254 unsigned length = valueString.length(); |
| 254 DEFINE_ARRAY_FOR_MATCHING(characters, valueString, 13); | 255 DEFINE_ARRAY_FOR_MATCHING(characters, valueString, 13); |
| 255 SWITCH(characters, length) { | 256 SWITCH(characters, length) { |
| 256 CASE("yes") { | 257 CASE("yes") { |
| 257 computedValueMatchesParsedValue = true; | 258 computedValueMatchesParsedValue = true; |
| 258 return true; | 259 return true; |
| 259 } | 260 } |
| 260 CASE("no") { | 261 CASE("no") { |
| 261 computedValueMatchesParsedValue = true; | 262 computedValueMatchesParsedValue = true; |
| 262 return false; | 263 return false; |
| 263 } | 264 } |
| 264 CASE("device-width") { | 265 CASE("device-width") { |
| 265 return true; | 266 return true; |
| 266 } | 267 } |
| 267 CASE("device-height") { | 268 CASE("device-height") { |
| 268 return true; | 269 return true; |
| 269 } | 270 } |
| 270 } | 271 } |
| 271 | 272 |
| 272 float value = parsePositiveNumber(document, keyString, valueString); | 273 float value = parsePositiveNumber(document, reportWarnings, keyString, value
String); |
| 273 if (fabs(value) < 1) | 274 if (fabs(value) < 1) |
| 274 return false; | 275 return false; |
| 275 | 276 |
| 276 return true; | 277 return true; |
| 277 } | 278 } |
| 278 | 279 |
| 279 float HTMLMetaElement::parseViewportValueAsDPI(Document* document, const String&
keyString, const String& valueString) | 280 float HTMLMetaElement::parseViewportValueAsDPI(Document* document, bool reportWa
rnings, const String& keyString, const String& valueString) |
| 280 { | 281 { |
| 281 unsigned length = valueString.length(); | 282 unsigned length = valueString.length(); |
| 282 DEFINE_ARRAY_FOR_MATCHING(characters, valueString, 10); | 283 DEFINE_ARRAY_FOR_MATCHING(characters, valueString, 10); |
| 283 SWITCH(characters, length) { | 284 SWITCH(characters, length) { |
| 284 CASE("device-dpi") { | 285 CASE("device-dpi") { |
| 285 return ViewportDescription::ValueDeviceDPI; | 286 return ViewportDescription::ValueDeviceDPI; |
| 286 } | 287 } |
| 287 CASE("low-dpi") { | 288 CASE("low-dpi") { |
| 288 return ViewportDescription::ValueLowDPI; | 289 return ViewportDescription::ValueLowDPI; |
| 289 } | 290 } |
| 290 CASE("medium-dpi") { | 291 CASE("medium-dpi") { |
| 291 return ViewportDescription::ValueMediumDPI; | 292 return ViewportDescription::ValueMediumDPI; |
| 292 } | 293 } |
| 293 CASE("high-dpi") { | 294 CASE("high-dpi") { |
| 294 return ViewportDescription::ValueHighDPI; | 295 return ViewportDescription::ValueHighDPI; |
| 295 } | 296 } |
| 296 } | 297 } |
| 297 | 298 |
| 298 bool ok; | 299 bool ok; |
| 299 float value = parsePositiveNumber(document, keyString, valueString, &ok); | 300 float value = parsePositiveNumber(document, reportWarnings, keyString, value
String, &ok); |
| 300 if (!ok || value < 70 || value > 400) | 301 if (!ok || value < 70 || value > 400) |
| 301 return ViewportDescription::ValueAuto; | 302 return ViewportDescription::ValueAuto; |
| 302 | 303 |
| 303 return value; | 304 return value; |
| 304 } | 305 } |
| 305 | 306 |
| 306 void HTMLMetaElement::processViewportKeyValuePair(Document* document, const Stri
ng& keyString, const String& valueString, bool viewportMetaZeroValuesQuirk, void
* data) | 307 void HTMLMetaElement::processViewportKeyValuePair(Document* document, bool repor
tWarnings, const String& keyString, const String& valueString, bool viewportMeta
ZeroValuesQuirk, void* data) |
| 307 { | 308 { |
| 308 ViewportDescription* description = static_cast<ViewportDescription*>(data); | 309 ViewportDescription* description = static_cast<ViewportDescription*>(data); |
| 309 | 310 |
| 310 unsigned length = keyString.length(); | 311 unsigned length = keyString.length(); |
| 311 | 312 |
| 312 DEFINE_ARRAY_FOR_MATCHING(characters, keyString, 17); | 313 DEFINE_ARRAY_FOR_MATCHING(characters, keyString, 17); |
| 313 SWITCH(characters, length) { | 314 SWITCH(characters, length) { |
| 314 CASE("width") { | 315 CASE("width") { |
| 315 const Length& width = parseViewportValueAsLength(document, keyString
, valueString); | 316 const Length& width = parseViewportValueAsLength(document, reportWar
nings, keyString, valueString); |
| 316 if (width.isAuto()) | 317 if (width.isAuto()) |
| 317 return; | 318 return; |
| 318 description->minWidth = Length(ExtendToZoom); | 319 description->minWidth = Length(ExtendToZoom); |
| 319 description->maxWidth = width; | 320 description->maxWidth = width; |
| 320 return; | 321 return; |
| 321 } | 322 } |
| 322 CASE("height") { | 323 CASE("height") { |
| 323 const Length& height = parseViewportValueAsLength(document, keyStrin
g, valueString); | 324 const Length& height = parseViewportValueAsLength(document, reportWa
rnings, keyString, valueString); |
| 324 if (height.isAuto()) | 325 if (height.isAuto()) |
| 325 return; | 326 return; |
| 326 description->minHeight = Length(ExtendToZoom); | 327 description->minHeight = Length(ExtendToZoom); |
| 327 description->maxHeight = height; | 328 description->maxHeight = height; |
| 328 return; | 329 return; |
| 329 } | 330 } |
| 330 CASE("initial-scale") { | 331 CASE("initial-scale") { |
| 331 description->zoom = parseViewportValueAsZoom(document, keyString, va
lueString, description->zoomIsExplicit, viewportMetaZeroValuesQuirk); | 332 description->zoom = parseViewportValueAsZoom(document, reportWarning
s, keyString, valueString, description->zoomIsExplicit, viewportMetaZeroValuesQu
irk); |
| 332 return; | 333 return; |
| 333 } | 334 } |
| 334 CASE("minimum-scale") { | 335 CASE("minimum-scale") { |
| 335 description->minZoom = parseViewportValueAsZoom(document, keyString,
valueString, description->minZoomIsExplicit, viewportMetaZeroValuesQuirk); | 336 description->minZoom = parseViewportValueAsZoom(document, reportWarn
ings, keyString, valueString, description->minZoomIsExplicit, viewportMetaZeroVa
luesQuirk); |
| 336 return; | 337 return; |
| 337 } | 338 } |
| 338 CASE("maximum-scale") { | 339 CASE("maximum-scale") { |
| 339 description->maxZoom = parseViewportValueAsZoom(document, keyString,
valueString, description->maxZoomIsExplicit, viewportMetaZeroValuesQuirk); | 340 description->maxZoom = parseViewportValueAsZoom(document, reportWarn
ings, keyString, valueString, description->maxZoomIsExplicit, viewportMetaZeroVa
luesQuirk); |
| 340 return; | 341 return; |
| 341 } | 342 } |
| 342 CASE("user-scalable") { | 343 CASE("user-scalable") { |
| 343 description->userZoom = parseViewportValueAsUserZoom(document, keySt
ring, valueString, description->userZoomIsExplicit); | 344 description->userZoom = parseViewportValueAsUserZoom(document, repor
tWarnings, keyString, valueString, description->userZoomIsExplicit); |
| 344 return; | 345 return; |
| 345 } | 346 } |
| 346 CASE("target-densitydpi") { | 347 CASE("target-densitydpi") { |
| 347 description->deprecatedTargetDensityDPI = parseViewportValueAsDPI(do
cument, keyString, valueString); | 348 description->deprecatedTargetDensityDPI = parseViewportValueAsDPI(do
cument, reportWarnings, keyString, valueString); |
| 348 reportViewportWarning(document, TargetDensityDpiUnsupported, String(
), String()); | 349 if (reportWarnings) |
| 350 reportViewportWarning(document, TargetDensityDpiUnsupported, Str
ing(), String()); |
| 349 return; | 351 return; |
| 350 } | 352 } |
| 351 CASE("minimal-ui") { | 353 CASE("minimal-ui") { |
| 352 // Ignore vendor-specific argument. | 354 // Ignore vendor-specific argument. |
| 353 return; | 355 return; |
| 354 } | 356 } |
| 355 CASE("shrink-to-fit") { | 357 CASE("shrink-to-fit") { |
| 356 // Ignore vendor-specific argument. | 358 // Ignore vendor-specific argument. |
| 357 return; | 359 return; |
| 358 } | 360 } |
| 359 } | 361 } |
| 360 reportViewportWarning(document, UnrecognizedViewportArgumentKeyError, keyStr
ing, String()); | 362 if (reportWarnings) |
| 363 reportViewportWarning(document, UnrecognizedViewportArgumentKeyError, ke
yString, String()); |
| 361 } | 364 } |
| 362 | 365 |
| 363 static const char* viewportErrorMessageTemplate(ViewportErrorCode errorCode) | 366 static const char* viewportErrorMessageTemplate(ViewportErrorCode errorCode) |
| 364 { | 367 { |
| 365 static const char* const errors[] = { | 368 static const char* const errors[] = { |
| 366 "The key \"%replacement1\" is not recognized and ignored.", | 369 "The key \"%replacement1\" is not recognized and ignored.", |
| 367 "The value \"%replacement1\" for key \"%replacement2\" is invalid, and h
as been ignored.", | 370 "The value \"%replacement1\" for key \"%replacement2\" is invalid, and h
as been ignored.", |
| 368 "The value \"%replacement1\" for key \"%replacement2\" was truncated to
its numeric prefix.", | 371 "The value \"%replacement1\" for key \"%replacement2\" was truncated to
its numeric prefix.", |
| 369 "The value for key \"maximum-scale\" is out of bounds and the value has
been clamped.", | 372 "The value for key \"maximum-scale\" is out of bounds and the value has
been clamped.", |
| 370 "The key \"target-densitydpi\" is not supported.", | 373 "The key \"target-densitydpi\" is not supported.", |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 { | 517 { |
| 515 return getAttribute(http_equivAttr); | 518 return getAttribute(http_equivAttr); |
| 516 } | 519 } |
| 517 | 520 |
| 518 const AtomicString& HTMLMetaElement::name() const | 521 const AtomicString& HTMLMetaElement::name() const |
| 519 { | 522 { |
| 520 return getNameAttribute(); | 523 return getNameAttribute(); |
| 521 } | 524 } |
| 522 | 525 |
| 523 } | 526 } |
| OLD | NEW |