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

Side by Side Diff: sky/engine/core/css/CSSSelector.cpp

Issue 836383004: Remove all attribute selectors that are not Set or Exact. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: ojan comment. Created 5 years, 11 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
« no previous file with comments | « sky/engine/core/css/CSSSelector.h ('k') | sky/engine/core/css/SelectorChecker.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-2003 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * 1999 Waldo Bastian (bastian@kde.org) 3 * 1999 Waldo Bastian (bastian@kde.org)
4 * 2001 Andreas Schlapbach (schlpbch@iam.unibe.ch) 4 * 2001 Andreas Schlapbach (schlpbch@iam.unibe.ch)
5 * 2001-2003 Dirk Mueller (mueller@kde.org) 5 * 2001-2003 Dirk Mueller (mueller@kde.org)
6 * Copyright (C) 2002, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2002, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2008 David Smith (catfish.man@gmail.com) 7 * Copyright (C) 2008 David Smith (catfish.man@gmail.com)
8 * Copyright (C) 2010 Google Inc. All rights reserved. 8 * Copyright (C) 2010 Google Inc. All rights reserved.
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 } 259 }
260 default: 260 default:
261 break; 261 break;
262 } 262 }
263 } else if (cs->m_match == CSSSelector::PseudoElement) { 263 } else if (cs->m_match == CSSSelector::PseudoElement) {
264 str.appendLiteral("::"); 264 str.appendLiteral("::");
265 str.append(cs->value()); 265 str.append(cs->value());
266 } else if (cs->isAttributeSelector()) { 266 } else if (cs->isAttributeSelector()) {
267 str.append('['); 267 str.append('[');
268 str.append(cs->attribute().localName()); 268 str.append(cs->attribute().localName());
269 switch (cs->m_match) { 269 if (cs->m_match == CSSSelector::Exact)
270 case CSSSelector::Exact: 270 str.append('=');
271 str.append('=');
272 break;
273 case CSSSelector::Set:
274 // set has no operator or value, just the attrName
275 str.append(']');
276 break;
277 case CSSSelector::List:
278 str.appendLiteral("~=");
279 break;
280 case CSSSelector::Hyphen:
281 str.appendLiteral("|=");
282 break;
283 case CSSSelector::Begin:
284 str.appendLiteral("^=");
285 break;
286 case CSSSelector::End:
287 str.appendLiteral("$=");
288 break;
289 case CSSSelector::Contain:
290 str.appendLiteral("*=");
291 break;
292 default:
293 break;
294 }
295 if (cs->m_match != CSSSelector::Set) { 271 if (cs->m_match != CSSSelector::Set) {
296 serializeString(cs->value(), str); 272 serializeString(cs->value(), str);
297 if (cs->attributeMatchType() == CaseInsensitive) 273 if (cs->attributeMatchType() == CaseInsensitive)
298 str.appendLiteral(" i"); 274 str.appendLiteral(" i");
299 str.append(']');
300 } 275 }
276 str.append(']');
301 } 277 }
302 if (!cs->tagHistory()) 278 if (!cs->tagHistory())
303 break; 279 break;
304 cs = cs->tagHistory(); 280 cs = cs->tagHistory();
305 } 281 }
306 282
307 return str.toString() + rightSide; 283 return str.toString() + rightSide;
308 } 284 }
309 285
310 void CSSSelector::setAttribute(const QualifiedName& value, AttributeMatchType ma tchType) 286 void CSSSelector::setAttribute(const QualifiedName& value, AttributeMatchType ma tchType)
(...skipping 16 matching lines...) Expand all
327 } 303 }
328 304
329 static bool validateSubSelector(const CSSSelector* selector) 305 static bool validateSubSelector(const CSSSelector* selector)
330 { 306 {
331 switch (selector->match()) { 307 switch (selector->match()) {
332 case CSSSelector::Tag: 308 case CSSSelector::Tag:
333 case CSSSelector::Id: 309 case CSSSelector::Id:
334 case CSSSelector::Class: 310 case CSSSelector::Class:
335 case CSSSelector::Exact: 311 case CSSSelector::Exact:
336 case CSSSelector::Set: 312 case CSSSelector::Set:
337 case CSSSelector::List:
338 case CSSSelector::Hyphen:
339 case CSSSelector::Contain:
340 case CSSSelector::Begin:
341 case CSSSelector::End:
342 return true; 313 return true;
343 case CSSSelector::PseudoElement: 314 case CSSSelector::PseudoElement:
344 case CSSSelector::Unknown: 315 case CSSSelector::Unknown:
345 return false; 316 return false;
346 case CSSSelector::PseudoClass: 317 case CSSSelector::PseudoClass:
347 break; 318 break;
348 } 319 }
349 320
350 switch (selector->pseudoType()) { 321 switch (selector->pseudoType()) {
351 case CSSSelector::PseudoHost: 322 case CSSSelector::PseudoHost:
(...skipping 28 matching lines...) Expand all
380 , m_attribute(anyName) 351 , m_attribute(anyName)
381 , m_argument(nullAtom) 352 , m_argument(nullAtom)
382 { 353 {
383 } 354 }
384 355
385 CSSSelector::RareData::~RareData() 356 CSSSelector::RareData::~RareData()
386 { 357 {
387 } 358 }
388 359
389 } // namespace blink 360 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/core/css/CSSSelector.h ('k') | sky/engine/core/css/SelectorChecker.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698