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

Side by Side Diff: Source/core/editing/PlainTextRange.cpp

Issue 430843002: Use tighter typing in editing: PlainTextRange / ReplaceNodeWithSpanCommand (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 6 years, 4 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 | « Source/core/editing/PlainTextRange.h ('k') | Source/core/editing/ReplaceNodeWithSpanCommand.h » ('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) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved. 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved.
3 * Copyright (C) 2005 Alexey Proskuryakov. 3 * Copyright (C) 2005 Alexey Proskuryakov.
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 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 if (!startRangeFound) 152 if (!startRangeFound)
153 return nullptr; 153 return nullptr;
154 154
155 if (length() && end() > docTextPosition) { // end() is out of bounds 155 if (length() && end() > docTextPosition) { // end() is out of bounds
156 resultRange->setEnd(textRunRange->endContainer(), textRunRange->endOffse t(), IGNORE_EXCEPTION); 156 resultRange->setEnd(textRunRange->endContainer(), textRunRange->endOffse t(), IGNORE_EXCEPTION);
157 } 157 }
158 158
159 return resultRange.release(); 159 return resultRange.release();
160 } 160 }
161 161
162 PlainTextRange PlainTextRange::create(const Node& scope, const Range& range) 162 PlainTextRange PlainTextRange::create(const ContainerNode& scope, const Range& r ange)
163 { 163 {
164 if (!range.startContainer()) 164 if (!range.startContainer())
165 return PlainTextRange(); 165 return PlainTextRange();
166 166
167 // The critical assumption is that this only gets called with ranges that 167 // The critical assumption is that this only gets called with ranges that
168 // concentrate on a given area containing the selection root. This is done 168 // concentrate on a given area containing the selection root. This is done
169 // because of text fields and textareas. The DOM for those is not 169 // because of text fields and textareas. The DOM for those is not
170 // directly in the document DOM, so ensure that the range does not cross a 170 // directly in the document DOM, so ensure that the range does not cross a
171 // boundary of one of those. 171 // boundary of one of those.
172 if (range.startContainer() != &scope && !range.startContainer()->isDescendan tOf(&scope)) 172 if (range.startContainer() != &scope && !range.startContainer()->isDescendan tOf(&scope))
173 return PlainTextRange(); 173 return PlainTextRange();
174 if (range.endContainer() != scope && !range.endContainer()->isDescendantOf(& scope)) 174 if (range.endContainer() != scope && !range.endContainer()->isDescendantOf(& scope))
175 return PlainTextRange(); 175 return PlainTextRange();
176 176
177 RefPtrWillBeRawPtr<Range> testRange = Range::create(scope.document(), const_ cast<Node*>(&scope), 0, range.startContainer(), range.startOffset()); 177 RefPtrWillBeRawPtr<Range> testRange = Range::create(scope.document(), const_ cast<ContainerNode*>(&scope), 0, range.startContainer(), range.startOffset());
178 ASSERT(testRange->startContainer() == &scope); 178 ASSERT(testRange->startContainer() == &scope);
179 size_t start = TextIterator::rangeLength(testRange.get()); 179 size_t start = TextIterator::rangeLength(testRange.get());
180 180
181 testRange->setEnd(range.endContainer(), range.endOffset(), IGNORE_EXCEPTION) ; 181 testRange->setEnd(range.endContainer(), range.endOffset(), IGNORE_EXCEPTION) ;
182 ASSERT(testRange->startContainer() == &scope); 182 ASSERT(testRange->startContainer() == &scope);
183 size_t end = TextIterator::rangeLength(testRange.get()); 183 size_t end = TextIterator::rangeLength(testRange.get());
184 184
185 return PlainTextRange(start, end); 185 return PlainTextRange(start, end);
186 } 186 }
187 187
188 } 188 }
OLDNEW
« no previous file with comments | « Source/core/editing/PlainTextRange.h ('k') | Source/core/editing/ReplaceNodeWithSpanCommand.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698