| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2013 Apple Inc. All rights reserved. | 3 * Copyright (C) 2013 Apple Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 936 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 unsigned Internals::activeMarkerCountForNode(Node* node) { | 947 unsigned Internals::activeMarkerCountForNode(Node* node) { |
| 948 DCHECK(node); | 948 DCHECK(node); |
| 949 | 949 |
| 950 // Only TextMatch markers can be active. | 950 // Only TextMatch markers can be active. |
| 951 DocumentMarker::MarkerType markerType = DocumentMarker::TextMatch; | 951 DocumentMarker::MarkerType markerType = DocumentMarker::TextMatch; |
| 952 DocumentMarkerVector markers = | 952 DocumentMarkerVector markers = |
| 953 node->document().markers().markersFor(node, markerType); | 953 node->document().markers().markersFor(node, markerType); |
| 954 | 954 |
| 955 unsigned activeMarkerCount = 0; | 955 unsigned activeMarkerCount = 0; |
| 956 for (const auto& marker : markers) { | 956 for (const auto& marker : markers) { |
| 957 if (marker->activeMatch()) | 957 if (marker->activeMatch() == DocumentMarker::MatchStatus::Active) |
| 958 activeMarkerCount++; | 958 activeMarkerCount++; |
| 959 } | 959 } |
| 960 | 960 |
| 961 return activeMarkerCount; | 961 return activeMarkerCount; |
| 962 } | 962 } |
| 963 | 963 |
| 964 DocumentMarker* Internals::markerAt(Node* node, | 964 DocumentMarker* Internals::markerAt(Node* node, |
| 965 const String& markerType, | 965 const String& markerType, |
| 966 unsigned index, | 966 unsigned index, |
| 967 ExceptionState& exceptionState) { | 967 ExceptionState& exceptionState) { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 997 String Internals::markerDescriptionForNode(Node* node, | 997 String Internals::markerDescriptionForNode(Node* node, |
| 998 const String& markerType, | 998 const String& markerType, |
| 999 unsigned index, | 999 unsigned index, |
| 1000 ExceptionState& exceptionState) { | 1000 ExceptionState& exceptionState) { |
| 1001 DocumentMarker* marker = markerAt(node, markerType, index, exceptionState); | 1001 DocumentMarker* marker = markerAt(node, markerType, index, exceptionState); |
| 1002 if (!marker) | 1002 if (!marker) |
| 1003 return String(); | 1003 return String(); |
| 1004 return marker->description(); | 1004 return marker->description(); |
| 1005 } | 1005 } |
| 1006 | 1006 |
| 1007 void Internals::addTextMatchMarker(const Range* range, bool isActive) { | 1007 static WTF::Optional<DocumentMarker::MatchStatus> matchStatusFrom( |
| 1008 const String& matchStatus) { |
| 1009 if (equalIgnoringCase(matchStatus, "Active")) |
| 1010 return DocumentMarker::MatchStatus::Active; |
| 1011 if (equalIgnoringCase(matchStatus, "Inactive")) |
| 1012 return DocumentMarker::MatchStatus::Inactive; |
| 1013 return WTF::nullopt; |
| 1014 } |
| 1015 |
| 1016 void Internals::addTextMatchMarker(const Range* range, |
| 1017 const String& matchStatus, |
| 1018 ExceptionState& exceptionState) { |
| 1008 DCHECK(range); | 1019 DCHECK(range); |
| 1009 if (!range->ownerDocument().view()) | 1020 if (!range->ownerDocument().view()) |
| 1010 return; | 1021 return; |
| 1011 | 1022 |
| 1023 WTF::Optional<DocumentMarker::MatchStatus> matchStatusEnum = |
| 1024 matchStatusFrom(matchStatus); |
| 1025 if (!matchStatusEnum) { |
| 1026 exceptionState.throwDOMException( |
| 1027 SyntaxError, |
| 1028 "The match status provided ('" + matchStatus + "') is invalid."); |
| 1029 return; |
| 1030 } |
| 1031 |
| 1012 range->ownerDocument().updateStyleAndLayoutIgnorePendingStylesheets(); | 1032 range->ownerDocument().updateStyleAndLayoutIgnorePendingStylesheets(); |
| 1013 range->ownerDocument().markers().addTextMatchMarker(EphemeralRange(range), | 1033 range->ownerDocument().markers().addTextMatchMarker(EphemeralRange(range), |
| 1014 isActive); | 1034 matchStatusEnum.value()); |
| 1015 | 1035 |
| 1016 // This simulates what the production code does after | 1036 // This simulates what the production code does after |
| 1017 // DocumentMarkerController::addTextMatchMarker(). | 1037 // DocumentMarkerController::addTextMatchMarker(). |
| 1018 range->ownerDocument().view()->invalidatePaintForTickmarks(); | 1038 range->ownerDocument().view()->invalidatePaintForTickmarks(); |
| 1019 } | 1039 } |
| 1020 | 1040 |
| 1021 static bool parseColor(const String& value, | 1041 static bool parseColor(const String& value, |
| 1022 Color& color, | 1042 Color& color, |
| 1023 ExceptionState& exceptionState, | 1043 ExceptionState& exceptionState, |
| 1024 String errorMessage) { | 1044 String errorMessage) { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1045 "Invalid background color.")) { | 1065 "Invalid background color.")) { |
| 1046 range->ownerDocument().markers().addCompositionMarker( | 1066 range->ownerDocument().markers().addCompositionMarker( |
| 1047 range->startPosition(), range->endPosition(), underlineColor, thick, | 1067 range->startPosition(), range->endPosition(), underlineColor, thick, |
| 1048 backgroundColor); | 1068 backgroundColor); |
| 1049 } | 1069 } |
| 1050 } | 1070 } |
| 1051 | 1071 |
| 1052 void Internals::setMarkersActive(Node* node, | 1072 void Internals::setMarkersActive(Node* node, |
| 1053 unsigned startOffset, | 1073 unsigned startOffset, |
| 1054 unsigned endOffset, | 1074 unsigned endOffset, |
| 1055 bool active) { | 1075 bool isActive) { |
| 1056 DCHECK(node); | 1076 DCHECK(node); |
| 1057 node->document().markers().setMarkersActive(node, startOffset, endOffset, | 1077 node->document().markers().setMarkersActive( |
| 1058 active); | 1078 node, startOffset, endOffset, |
| 1079 isActive ? DocumentMarker::MatchStatus::Active |
| 1080 : DocumentMarker::MatchStatus::Inactive); |
| 1059 } | 1081 } |
| 1060 | 1082 |
| 1061 void Internals::setMarkedTextMatchesAreHighlighted(Document* document, | 1083 void Internals::setMarkedTextMatchesAreHighlighted(Document* document, |
| 1062 bool highlight) { | 1084 bool highlight) { |
| 1063 if (!document || !document->frame()) | 1085 if (!document || !document->frame()) |
| 1064 return; | 1086 return; |
| 1065 | 1087 |
| 1066 document->frame()->editor().setMarkedTextMatchesAreHighlighted(highlight); | 1088 document->frame()->editor().setMarkedTextMatchesAreHighlighted(highlight); |
| 1067 } | 1089 } |
| 1068 | 1090 |
| (...skipping 2151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3220 | 3242 |
| 3221 void Internals::crash() { | 3243 void Internals::crash() { |
| 3222 CHECK(false) << "Intentional crash"; | 3244 CHECK(false) << "Intentional crash"; |
| 3223 } | 3245 } |
| 3224 | 3246 |
| 3225 void Internals::setIsLowEndDevice(bool isLowEndDevice) { | 3247 void Internals::setIsLowEndDevice(bool isLowEndDevice) { |
| 3226 MemoryCoordinator::setIsLowEndDeviceForTesting(isLowEndDevice); | 3248 MemoryCoordinator::setIsLowEndDeviceForTesting(isLowEndDevice); |
| 3227 } | 3249 } |
| 3228 | 3250 |
| 3229 } // namespace blink | 3251 } // namespace blink |
| OLD | NEW |