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

Unified Diff: ui/views/controls/textfield/textfield_model.cc

Issue 2314833002: Remove some uses of stl_util's STLDeleteContainerPointers. (Closed)
Patch Set: remove more Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: ui/views/controls/textfield/textfield_model.cc
diff --git a/ui/views/controls/textfield/textfield_model.cc b/ui/views/controls/textfield/textfield_model.cc
index 5738887b7256d5c84e2aa333472fae50bc42ec25..16f3939a16eb803a8b2b0c59fb89289cc532e4ca 100644
--- a/ui/views/controls/textfield/textfield_model.cc
+++ b/ui/views/controls/textfield/textfield_model.cc
@@ -8,6 +8,7 @@
#include "base/logging.h"
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "base/message_loop/message_loop.h"
#include "base/stl_util.h"
#include "base/strings/string_util.h"
@@ -672,8 +673,8 @@ void TextfieldModel::ConfirmCompositionText() {
composition_range_.start(), composition_range_.length());
// TODO(oshima): current behavior on ChromeOS is a bit weird and not
// sure exactly how this should work. Find out and fix if necessary.
- AddOrMergeEditHistory(
- new InsertEdit(false, composition, composition_range_.start()));
+ AddOrMergeEditHistory(base::MakeUnique<InsertEdit>(
+ false, composition, composition_range_.start()));
render_text_->SetCursorPosition(composition_range_.end());
ClearComposition();
if (delegate_)
@@ -705,7 +706,7 @@ bool TextfieldModel::HasCompositionText() const {
}
void TextfieldModel::ClearEditHistory() {
- base::STLDeleteElements(&edit_history_);
+ edit_history_.clear();
current_edit_ = edit_history_.end();
}
@@ -754,7 +755,6 @@ void TextfieldModel::ClearRedoHistory() {
}
EditHistory::iterator delete_start = current_edit_;
++delete_start;
- base::STLDeleteContainerPointers(delete_start, edit_history_.end());
edit_history_.erase(delete_start, edit_history_.end());
}
@@ -762,11 +762,12 @@ void TextfieldModel::ExecuteAndRecordDelete(gfx::Range range, bool mergeable) {
size_t old_text_start = range.GetMin();
const base::string16 old_text = text().substr(old_text_start, range.length());
bool backward = range.is_reversed();
- Edit* edit = new DeleteEdit(mergeable, old_text, old_text_start, backward);
- bool delete_edit = AddOrMergeEditHistory(edit);
+ std::unique_ptr<Edit> edit_ptr = base::MakeUnique<DeleteEdit>(
+ mergeable, old_text, old_text_start, backward);
+ Edit* edit = edit_ptr.get();
+ std::unique_ptr<Edit> returned_edit =
+ AddOrMergeEditHistory(std::move(edit_ptr));
edit->Redo(this);
Nico 2016/09/08 17:32:00 Getting a raw ptr to a unique_ptr that's moved fro
Avi (use Gerrit) 2016/09/13 14:36:13 This entire code is insane re ownership. I would d
- if (delete_edit)
- delete edit;
}
void TextfieldModel::ExecuteAndRecordReplaceSelection(
@@ -788,38 +789,36 @@ void TextfieldModel::ExecuteAndRecordReplace(MergeType merge_type,
size_t new_text_start) {
size_t old_text_start = render_text_->selection().GetMin();
bool backward = render_text_->selection().is_reversed();
- Edit* edit = new ReplaceEdit(merge_type,
- GetSelectedText(),
- old_cursor_pos,
- old_text_start,
- backward,
- new_cursor_pos,
- new_text,
- new_text_start);
- bool delete_edit = AddOrMergeEditHistory(edit);
+ std::unique_ptr<Edit> edit_ptr = base::MakeUnique<ReplaceEdit>(
+ merge_type, GetSelectedText(), old_cursor_pos, old_text_start, backward,
+ new_cursor_pos, new_text, new_text_start);
+ Edit* edit = edit_ptr.get();
+ std::unique_ptr<Edit> returned_edit =
+ AddOrMergeEditHistory(std::move(edit_ptr));
edit->Redo(this);
Nico 2016/09/08 17:32:00 ditto
- if (delete_edit)
- delete edit;
}
void TextfieldModel::ExecuteAndRecordInsert(const base::string16& new_text,
bool mergeable) {
- Edit* edit = new InsertEdit(mergeable, new_text, GetCursorPosition());
- bool delete_edit = AddOrMergeEditHistory(edit);
+ std::unique_ptr<Edit> edit_ptr =
+ base::MakeUnique<InsertEdit>(mergeable, new_text, GetCursorPosition());
+ Edit* edit = edit_ptr.get();
+ std::unique_ptr<Edit> returned_edit =
+ AddOrMergeEditHistory(std::move(edit_ptr));
edit->Redo(this);
- if (delete_edit)
- delete edit;
}
-bool TextfieldModel::AddOrMergeEditHistory(Edit* edit) {
+std::unique_ptr<internal::Edit> TextfieldModel::AddOrMergeEditHistory(
+ std::unique_ptr<Edit> edit) {
ClearRedoHistory();
- if (current_edit_ != edit_history_.end() && (*current_edit_)->Merge(edit)) {
+ if (current_edit_ != edit_history_.end() &&
+ (*current_edit_)->Merge(edit.get())) {
// If a current edit exists and has been merged with a new edit, don't add
- // to the history, and return true to delete |edit| after redo.
- return true;
+ // to the history, and return the edit so that it is deleted after redo.
+ return edit;
}
- edit_history_.push_back(edit);
+ edit_history_.push_back(std::move(edit));
if (current_edit_ == edit_history_.end()) {
// If there is no redoable edit, this is the 1st edit because RedoHistory
// has been already deleted.
@@ -828,7 +827,7 @@ bool TextfieldModel::AddOrMergeEditHistory(Edit* edit) {
} else {
++current_edit_;
}
- return false;
+ return nullptr;
}
void TextfieldModel::ModifyText(size_t delete_from,
« ui/message_center/notification_list.h ('K') | « ui/views/controls/textfield/textfield_model.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698