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

Side by Side Diff: Source/core/html/HTMLTextFormControlElement.cpp

Issue 1229133004: Add SelectionMode enum for setRangeText() in HTMLInputElement and HTMLTextAreaElement (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix for failing tests Created 5 years, 5 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 | « Source/core/html/HTMLTextAreaElement.idl ('k') | no next file » | 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 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 String newValue = value(); 201 String newValue = value();
202 if (shouldDispatchFormControlChangeEvent(m_textAsOfLastFormControlChangeEven t, newValue)) { 202 if (shouldDispatchFormControlChangeEvent(m_textAsOfLastFormControlChangeEven t, newValue)) {
203 setTextAsOfLastFormControlChangeEvent(newValue); 203 setTextAsOfLastFormControlChangeEvent(newValue);
204 dispatchChangeEvent(); 204 dispatchChangeEvent();
205 } 205 }
206 setChangedSinceLastFormControlChangeEvent(false); 206 setChangedSinceLastFormControlChangeEvent(false);
207 } 207 }
208 208
209 void HTMLTextFormControlElement::setRangeText(const String& replacement, Excepti onState& exceptionState) 209 void HTMLTextFormControlElement::setRangeText(const String& replacement, Excepti onState& exceptionState)
210 { 210 {
211 setRangeText(replacement, selectionStart(), selectionEnd(), String(), except ionState); 211 setRangeText(replacement, selectionStart(), selectionEnd(), "preserve", exce ptionState);
212 } 212 }
213 213
214 void HTMLTextFormControlElement::setRangeText(const String& replacement, unsigne d start, unsigned end, const String& selectionMode, ExceptionState& exceptionSta te) 214 void HTMLTextFormControlElement::setRangeText(const String& replacement, unsigne d start, unsigned end, const String& selectionMode, ExceptionState& exceptionSta te)
215 { 215 {
216 if (start > end) { 216 if (start > end) {
217 exceptionState.throwDOMException(IndexSizeError, "The provided start val ue (" + String::number(start) + ") is larger than the provided end value (" + St ring::number(end) + ")."); 217 exceptionState.throwDOMException(IndexSizeError, "The provided start val ue (" + String::number(start) + ") is larger than the provided end value (" + St ring::number(end) + ").");
218 return; 218 return;
219 } 219 }
220 if (hasOpenShadowRoot()) 220 if (hasOpenShadowRoot())
221 return; 221 return;
(...skipping 13 matching lines...) Expand all
235 text.insert(replacement, start); 235 text.insert(replacement, start);
236 236
237 setInnerEditorValue(text); 237 setInnerEditorValue(text);
238 238
239 // FIXME: What should happen to the value (as in value()) if there's no layo utObject? 239 // FIXME: What should happen to the value (as in value()) if there's no layo utObject?
240 if (!layoutObject()) 240 if (!layoutObject())
241 return; 241 return;
242 242
243 subtreeHasChanged(); 243 subtreeHasChanged();
244 244
245 if (equalIgnoringCase(selectionMode, "select")) { 245 if (selectionMode == "select") {
246 newSelectionStart = start; 246 newSelectionStart = start;
247 newSelectionEnd = start + replacementLength; 247 newSelectionEnd = start + replacementLength;
248 } else if (equalIgnoringCase(selectionMode, "start")) { 248 } else if (selectionMode == "start") {
249 newSelectionStart = newSelectionEnd = start; 249 newSelectionStart = newSelectionEnd = start;
250 } else if (equalIgnoringCase(selectionMode, "end")) { 250 } else if (selectionMode == "end") {
251 newSelectionStart = newSelectionEnd = start + replacementLength; 251 newSelectionStart = newSelectionEnd = start + replacementLength;
252 } else { 252 } else {
253 // Default is "preserve". 253 ASSERT(selectionMode == "preserve");
254 long delta = replacementLength - (end - start); 254 long delta = replacementLength - (end - start);
255 255
256 if (newSelectionStart > end) 256 if (newSelectionStart > end)
257 newSelectionStart += delta; 257 newSelectionStart += delta;
258 else if (newSelectionStart > start) 258 else if (newSelectionStart > start)
259 newSelectionStart = start; 259 newSelectionStart = start;
260 260
261 if (newSelectionEnd > end) 261 if (newSelectionEnd > end)
262 newSelectionEnd += delta; 262 newSelectionEnd += delta;
263 else if (newSelectionEnd > start) 263 else if (newSelectionEnd > start)
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after
1009 } 1009 }
1010 1010
1011 void HTMLTextFormControlElement::copyNonAttributePropertiesFromElement(const Ele ment& source) 1011 void HTMLTextFormControlElement::copyNonAttributePropertiesFromElement(const Ele ment& source)
1012 { 1012 {
1013 const HTMLTextFormControlElement& sourceElement = static_cast<const HTMLText FormControlElement&>(source); 1013 const HTMLTextFormControlElement& sourceElement = static_cast<const HTMLText FormControlElement&>(source);
1014 m_lastChangeWasUserEdit = sourceElement.m_lastChangeWasUserEdit; 1014 m_lastChangeWasUserEdit = sourceElement.m_lastChangeWasUserEdit;
1015 HTMLFormControlElement::copyNonAttributePropertiesFromElement(source); 1015 HTMLFormControlElement::copyNonAttributePropertiesFromElement(source);
1016 } 1016 }
1017 1017
1018 } // namespace blink 1018 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/html/HTMLTextAreaElement.idl ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698