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

Side by Side Diff: third_party/WebKit/Source/core/editing/DOMSelection.cpp

Issue 1509353004: Add UseCounters for Selection methods that take null (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years 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) 2007, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2012 Google Inc. All rights reserved. 3 * Copyright (C) 2012 Google 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 25 matching lines...) Expand all
36 #include "bindings/core/v8/ExceptionStatePlaceholder.h" 36 #include "bindings/core/v8/ExceptionStatePlaceholder.h"
37 #include "core/dom/Document.h" 37 #include "core/dom/Document.h"
38 #include "core/dom/ExceptionCode.h" 38 #include "core/dom/ExceptionCode.h"
39 #include "core/dom/Node.h" 39 #include "core/dom/Node.h"
40 #include "core/dom/Range.h" 40 #include "core/dom/Range.h"
41 #include "core/dom/TreeScope.h" 41 #include "core/dom/TreeScope.h"
42 #include "core/editing/EditingUtilities.h" 42 #include "core/editing/EditingUtilities.h"
43 #include "core/editing/FrameSelection.h" 43 #include "core/editing/FrameSelection.h"
44 #include "core/editing/iterators/TextIterator.h" 44 #include "core/editing/iterators/TextIterator.h"
45 #include "core/frame/LocalFrame.h" 45 #include "core/frame/LocalFrame.h"
46 #include "core/frame/UseCounter.h"
46 #include "core/inspector/ConsoleMessage.h" 47 #include "core/inspector/ConsoleMessage.h"
47 #include "wtf/text/WTFString.h" 48 #include "wtf/text/WTFString.h"
48 49
49 namespace blink { 50 namespace blink {
50 51
51 static Position createPosition(Node* node, int offset) 52 static Position createPosition(Node* node, int offset)
52 { 53 {
53 ASSERT(offset >= 0); 54 ASSERT(offset >= 0);
54 if (!node) 55 if (!node)
55 return Position(); 56 return Position();
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 return 0; 202 return 0;
202 return m_frame->selection().isNone() ? 0 : 1; 203 return m_frame->selection().isNone() ? 0 : 1;
203 } 204 }
204 205
205 void DOMSelection::collapse(Node* node, int offset, ExceptionState& exceptionSta te) 206 void DOMSelection::collapse(Node* node, int offset, ExceptionState& exceptionSta te)
206 { 207 {
207 if (!m_frame) 208 if (!m_frame)
208 return; 209 return;
209 210
210 if (!node) { 211 if (!node) {
212 UseCounter::count(m_frame, UseCounter::SelectionCollapseNull);
211 m_frame->selection().clear(); 213 m_frame->selection().clear();
212 return; 214 return;
213 } 215 }
214 216
215 if (offset < 0) { 217 if (offset < 0) {
216 exceptionState.throwDOMException(IndexSizeError, String::number(offset) + " is not a valid offset."); 218 exceptionState.throwDOMException(IndexSizeError, String::number(offset) + " is not a valid offset.");
217 return; 219 return;
218 } 220 }
219 221
220 if (!isValidForPosition(node)) 222 if (!isValidForPosition(node))
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 if (baseOffset < 0) { 276 if (baseOffset < 0) {
275 exceptionState.throwDOMException(IndexSizeError, String::number(baseOffs et) + " is not a valid base offset."); 277 exceptionState.throwDOMException(IndexSizeError, String::number(baseOffs et) + " is not a valid base offset.");
276 return; 278 return;
277 } 279 }
278 280
279 if (extentOffset < 0) { 281 if (extentOffset < 0) {
280 exceptionState.throwDOMException(IndexSizeError, String::number(extentOf fset) + " is not a valid extent offset."); 282 exceptionState.throwDOMException(IndexSizeError, String::number(extentOf fset) + " is not a valid extent offset.");
281 return; 283 return;
282 } 284 }
283 285
286 if (!baseNode || !extentNode)
287 UseCounter::count(m_frame, UseCounter::SelectionSetBaseAndExtentNull);
288
284 if (!isValidForPosition(baseNode) || !isValidForPosition(extentNode)) 289 if (!isValidForPosition(baseNode) || !isValidForPosition(extentNode))
285 return; 290 return;
286 291
287 VisiblePosition visibleBase = createVisiblePosition(createPosition(baseNode, baseOffset)); 292 VisiblePosition visibleBase = createVisiblePosition(createPosition(baseNode, baseOffset));
288 VisiblePosition visibleExtent = createVisiblePosition(createPosition(extentN ode, extentOffset)); 293 VisiblePosition visibleExtent = createVisiblePosition(createPosition(extentN ode, extentOffset));
289 294
290 m_frame->selection().moveTo(visibleBase, visibleExtent); 295 m_frame->selection().moveTo(visibleBase, visibleExtent);
291 } 296 }
292 297
293 void DOMSelection::modify(const String& alterString, const String& directionStri ng, const String& granularityString) 298 void DOMSelection::modify(const String& alterString, const String& directionStri ng, const String& granularityString)
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 m_treeScope->document().addConsoleMessage(ConsoleMessage::create(JSMessa geSource, ErrorMessageLevel, message)); 567 m_treeScope->document().addConsoleMessage(ConsoleMessage::create(JSMessa geSource, ErrorMessageLevel, message));
563 } 568 }
564 569
565 DEFINE_TRACE(DOMSelection) 570 DEFINE_TRACE(DOMSelection)
566 { 571 {
567 visitor->trace(m_treeScope); 572 visitor->trace(m_treeScope);
568 DOMWindowProperty::trace(visitor); 573 DOMWindowProperty::trace(visitor);
569 } 574 }
570 575
571 } // namespace blink 576 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698