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

Side by Side Diff: third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp

Issue 2795143004: [selectors4] Implement :focus-within pseudo-class (Closed)
Patch Set: Rebased patch Created 3 years, 8 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 * Copyright (C) 2010, Google Inc. All rights reserved. 2 * Copyright (C) 2010, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 static const char kRuleRecordingEnabled[] = "ruleRecordingEnabled"; 309 static const char kRuleRecordingEnabled[] = "ruleRecordingEnabled";
310 } 310 }
311 311
312 typedef blink::protocol::CSS::Backend::EnableCallback EnableCallback; 312 typedef blink::protocol::CSS::Backend::EnableCallback EnableCallback;
313 313
314 enum ForcePseudoClassFlags { 314 enum ForcePseudoClassFlags {
315 kPseudoNone = 0, 315 kPseudoNone = 0,
316 kPseudoHover = 1 << 0, 316 kPseudoHover = 1 << 0,
317 kPseudoFocus = 1 << 1, 317 kPseudoFocus = 1 << 1,
318 kPseudoActive = 1 << 2, 318 kPseudoActive = 1 << 2,
319 kPseudoVisited = 1 << 3 319 kPseudoVisited = 1 << 3,
320 kPseudoFocusWithin = 1 << 4
320 }; 321 };
321 322
322 static unsigned ComputePseudoClassMask( 323 static unsigned ComputePseudoClassMask(
323 std::unique_ptr<protocol::Array<String>> pseudo_class_array) { 324 std::unique_ptr<protocol::Array<String>> pseudo_class_array) {
324 DEFINE_STATIC_LOCAL(String, active, ("active")); 325 DEFINE_STATIC_LOCAL(String, active, ("active"));
325 DEFINE_STATIC_LOCAL(String, hover, ("hover")); 326 DEFINE_STATIC_LOCAL(String, hover, ("hover"));
326 DEFINE_STATIC_LOCAL(String, focus, ("focus")); 327 DEFINE_STATIC_LOCAL(String, focus, ("focus"));
328 DEFINE_STATIC_LOCAL(String, focusWithin, ("focus-within"));
327 DEFINE_STATIC_LOCAL(String, visited, ("visited")); 329 DEFINE_STATIC_LOCAL(String, visited, ("visited"));
328 if (!pseudo_class_array || !pseudo_class_array->length()) 330 if (!pseudo_class_array || !pseudo_class_array->length())
329 return kPseudoNone; 331 return kPseudoNone;
330 332
331 unsigned result = kPseudoNone; 333 unsigned result = kPseudoNone;
332 for (size_t i = 0; i < pseudo_class_array->length(); ++i) { 334 for (size_t i = 0; i < pseudo_class_array->length(); ++i) {
333 String pseudo_class = pseudo_class_array->get(i); 335 String pseudo_class = pseudo_class_array->get(i);
334 if (pseudo_class == active) 336 if (pseudo_class == active)
335 result |= kPseudoActive; 337 result |= kPseudoActive;
336 else if (pseudo_class == hover) 338 else if (pseudo_class == hover)
337 result |= kPseudoHover; 339 result |= kPseudoHover;
338 else if (pseudo_class == focus) 340 else if (pseudo_class == focus)
339 result |= kPseudoFocus; 341 result |= kPseudoFocus;
342 else if (pseudo_class == focusWithin)
343 result |= kPseudoFocusWithin;
340 else if (pseudo_class == visited) 344 else if (pseudo_class == visited)
341 result |= kPseudoVisited; 345 result |= kPseudoVisited;
342 } 346 }
343 347
344 return result; 348 return result;
345 } 349 }
346 350
347 class InspectorCSSAgent::StyleSheetAction : public InspectorHistory::Action { 351 class InspectorCSSAgent::StyleSheetAction : public InspectorHistory::Action {
348 WTF_MAKE_NONCOPYABLE(StyleSheetAction); 352 WTF_MAKE_NONCOPYABLE(StyleSheetAction);
349 353
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 862
859 bool force = false; 863 bool force = false;
860 unsigned forced_pseudo_state = it->value; 864 unsigned forced_pseudo_state = it->value;
861 switch (pseudo_type) { 865 switch (pseudo_type) {
862 case CSSSelector::kPseudoActive: 866 case CSSSelector::kPseudoActive:
863 force = forced_pseudo_state & kPseudoActive; 867 force = forced_pseudo_state & kPseudoActive;
864 break; 868 break;
865 case CSSSelector::kPseudoFocus: 869 case CSSSelector::kPseudoFocus:
866 force = forced_pseudo_state & kPseudoFocus; 870 force = forced_pseudo_state & kPseudoFocus;
867 break; 871 break;
872 case CSSSelector::kPseudoFocusWithin:
873 force = forced_pseudo_state & kPseudoFocusWithin;
874 break;
868 case CSSSelector::kPseudoHover: 875 case CSSSelector::kPseudoHover:
869 force = forced_pseudo_state & kPseudoHover; 876 force = forced_pseudo_state & kPseudoHover;
870 break; 877 break;
871 case CSSSelector::kPseudoVisited: 878 case CSSSelector::kPseudoVisited:
872 force = forced_pseudo_state & kPseudoVisited; 879 force = forced_pseudo_state & kPseudoVisited;
873 break; 880 break;
874 default: 881 default:
875 break; 882 break;
876 } 883 }
877 if (force) 884 if (force)
(...skipping 1649 matching lines...) Expand 10 before | Expand all | Expand 10 after
2527 visitor->Trace(css_style_sheet_to_inspector_style_sheet_); 2534 visitor->Trace(css_style_sheet_to_inspector_style_sheet_);
2528 visitor->Trace(document_to_css_style_sheets_); 2535 visitor->Trace(document_to_css_style_sheets_);
2529 visitor->Trace(invalidated_documents_); 2536 visitor->Trace(invalidated_documents_);
2530 visitor->Trace(node_to_inspector_style_sheet_); 2537 visitor->Trace(node_to_inspector_style_sheet_);
2531 visitor->Trace(inspector_user_agent_style_sheet_); 2538 visitor->Trace(inspector_user_agent_style_sheet_);
2532 visitor->Trace(tracker_); 2539 visitor->Trace(tracker_);
2533 InspectorBaseAgent::Trace(visitor); 2540 InspectorBaseAgent::Trace(visitor);
2534 } 2541 }
2535 2542
2536 } // namespace blink 2543 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698