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

Side by Side Diff: Source/core/html/HTMLMetaElement-in.cpp

Issue 342163003: Uptake http://trac.webkit.org/changeset/169848 (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Easier to understand test case Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/web/tests/ViewportTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 static bool isSeparator(UChar c) 65 static bool isSeparator(UChar c)
66 { 66 {
67 return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '=' || c == ' ,' || c == '\0'; 67 return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '=' || c == ' ,' || c == '\0';
68 } 68 }
69 69
70 void HTMLMetaElement::parseContentAttribute(const String& content, KeyValuePairC allback callback, void* data) 70 void HTMLMetaElement::parseContentAttribute(const String& content, KeyValuePairC allback callback, void* data)
71 { 71 {
72 bool error = false; 72 bool error = false;
73 73
74 // Tread lightly in this code -- it was specifically designed to mimic Win I E's parsing behavior. 74 // Tread lightly in this code -- it was specifically designed to mimic Win I E's parsing behavior.
75 int keyBegin, keyEnd; 75 unsigned keyBegin, keyEnd;
76 int valueBegin, valueEnd; 76 unsigned valueBegin, valueEnd;
77 77
78 int i = 0;
79 int length = content.length();
80 String buffer = content.lower(); 78 String buffer = content.lower();
81 while (i < length) { 79 unsigned length = buffer.length();
80 for (unsigned i = 0; i < length; /* no increment here */) {
82 // skip to first non-separator, but don't skip past the end of the strin g 81 // skip to first non-separator, but don't skip past the end of the strin g
83 while (isSeparator(buffer[i])) { 82 while (isSeparator(buffer[i])) {
84 if (i >= length) 83 if (i >= length)
85 break; 84 break;
86 i++; 85 i++;
87 } 86 }
88 keyBegin = i; 87 keyBegin = i;
89 88
90 // skip to first separator 89 // skip to first separator
91 while (!isSeparator(buffer[i])) { 90 while (!isSeparator(buffer[i])) {
92 error |= isInvalidSeparator(buffer[i]); 91 error |= isInvalidSeparator(buffer[i]);
92 if (i >= length)
93 break;
93 i++; 94 i++;
94 } 95 }
95 keyEnd = i; 96 keyEnd = i;
96 97
97 // skip to first '=', but don't skip past a ',' or the end of the string 98 // skip to first '=', but don't skip past a ',' or the end of the string
98 while (buffer[i] != '=') { 99 while (buffer[i] != '=') {
99 error |= isInvalidSeparator(buffer[i]); 100 error |= isInvalidSeparator(buffer[i]);
100 if (buffer[i] == ',' || i >= length) 101 if (buffer[i] == ',' || i >= length)
101 break; 102 break;
102 i++; 103 i++;
103 } 104 }
104 105
105 // skip to first non-separator, but don't skip past a ',' or the end of the string 106 // skip to first non-separator, but don't skip past a ',' or the end of the string
106 while (isSeparator(buffer[i])) { 107 while (isSeparator(buffer[i])) {
107 if (buffer[i] == ',' || i >= length) 108 if (buffer[i] == ',' || i >= length)
108 break; 109 break;
109 i++; 110 i++;
110 } 111 }
111 valueBegin = i; 112 valueBegin = i;
112 113
113 // skip to first separator 114 // skip to first separator
114 while (!isSeparator(buffer[i])) { 115 while (!isSeparator(buffer[i])) {
115 error |= isInvalidSeparator(buffer[i]); 116 error |= isInvalidSeparator(buffer[i]);
117 if (i >= length)
118 break;
116 i++; 119 i++;
117 } 120 }
118 valueEnd = i; 121 valueEnd = i;
119 122
120 ASSERT_WITH_SECURITY_IMPLICATION(i <= length); 123 ASSERT_WITH_SECURITY_IMPLICATION(i <= length);
121 124
122 String keyString = buffer.substring(keyBegin, keyEnd - keyBegin); 125 String keyString = buffer.substring(keyBegin, keyEnd - keyBegin);
123 String valueString = buffer.substring(valueBegin, valueEnd - valueBegin) ; 126 String valueString = buffer.substring(valueBegin, valueEnd - valueBegin) ;
124 (this->*callback)(keyString, valueString, data); 127 (this->*callback)(keyString, valueString, data);
125 } 128 }
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 { 496 {
494 return getAttribute(http_equivAttr); 497 return getAttribute(http_equivAttr);
495 } 498 }
496 499
497 const AtomicString& HTMLMetaElement::name() const 500 const AtomicString& HTMLMetaElement::name() const
498 { 501 {
499 return getNameAttribute(); 502 return getNameAttribute();
500 } 503 }
501 504
502 } 505 }
OLDNEW
« no previous file with comments | « no previous file | Source/web/tests/ViewportTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698