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

Unified Diff: content/renderer/history_entry.cc

Issue 2705073003: Remove ScopedVector from content/renderer/. (Closed)
Patch Set: Rebase only Created 3 years, 10 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
« no previous file with comments | « content/renderer/history_entry.h ('k') | content/renderer/history_serialization.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/history_entry.cc
diff --git a/content/renderer/history_entry.cc b/content/renderer/history_entry.cc
index 61bcb3acf9f8470fb2980ab55b949af6489cc0e0..e74299a88f69bc19fa2d74475fe3737fd68eaa6e 100644
--- a/content/renderer/history_entry.cc
+++ b/content/renderer/history_entry.cc
@@ -35,6 +35,9 @@
#include "content/renderer/history_entry.h"
+#include <algorithm>
+
+#include "base/memory/ptr_util.h"
#include "content/renderer/render_frame_impl.h"
#include "content/renderer/render_view_impl.h"
#include "third_party/WebKit/public/web/WebLocalFrame.h"
@@ -46,15 +49,16 @@ namespace content {
HistoryEntry::HistoryNode* HistoryEntry::HistoryNode::AddChild(
const WebHistoryItem& item) {
- children_->push_back(new HistoryNode(entry_, item));
- return children_->back();
+ children_.push_back(base::MakeUnique<HistoryNode>(entry_, item));
+ return children_.back().get();
}
HistoryEntry::HistoryNode* HistoryEntry::HistoryNode::AddChild() {
return AddChild(WebHistoryItem());
}
-HistoryEntry::HistoryNode* HistoryEntry::HistoryNode::CloneAndReplace(
+std::unique_ptr<HistoryEntry::HistoryNode>
+HistoryEntry::HistoryNode::CloneAndReplace(
const base::WeakPtr<HistoryEntry>& new_entry,
const WebHistoryItem& new_item,
bool clone_children_of_target,
@@ -62,7 +66,8 @@ HistoryEntry::HistoryNode* HistoryEntry::HistoryNode::CloneAndReplace(
RenderFrameImpl* current_frame) {
bool is_target_frame = target_frame == current_frame;
const WebHistoryItem& item_for_create = is_target_frame ? new_item : item_;
- HistoryNode* new_history_node = new HistoryNode(new_entry, item_for_create);
+ auto new_history_node =
+ base::MakeUnique<HistoryNode>(new_entry, item_for_create);
// Use the last committed history item for the frame rather than item_, since
// the latter may not accurately reflect which URL is currently committed in
@@ -92,13 +97,10 @@ HistoryEntry::HistoryNode* HistoryEntry::HistoryNode::CloneAndReplace(
entry_->GetHistoryNodeForFrame(child_render_frame);
if (!child_history_node)
continue;
- HistoryNode* new_child_node =
- child_history_node->CloneAndReplace(new_entry,
- new_item,
- clone_children_of_target,
- target_frame,
- child_render_frame);
- new_history_node->children_->push_back(new_child_node);
+
+ new_history_node->children_.push_back(child_history_node->CloneAndReplace(
+ new_entry, new_item, clone_children_of_target, target_frame,
+ child_render_frame));
}
}
return new_history_node;
@@ -116,7 +118,6 @@ HistoryEntry::HistoryNode::HistoryNode(const base::WeakPtr<HistoryEntry>& entry,
: entry_(entry) {
if (!item.isNull())
set_item(item);
- children_.reset(new ScopedVector<HistoryNode>);
}
HistoryEntry::HistoryNode::~HistoryNode() {
@@ -129,8 +130,19 @@ HistoryEntry::HistoryNode::~HistoryNode() {
}
}
+std::vector<HistoryEntry::HistoryNode*> HistoryEntry::HistoryNode::children()
+ const {
+ std::vector<HistoryEntry::HistoryNode*> children(children_.size());
+ std::transform(children_.cbegin(), children_.cend(), children.begin(),
+ [](const std::unique_ptr<HistoryEntry::HistoryNode>& item) {
+ return item.get();
+ });
+
+ return children;
+}
+
void HistoryEntry::HistoryNode::RemoveChildren() {
- children_.reset(new ScopedVector<HistoryNode>);
+ children_.clear();
}
HistoryEntry::HistoryEntry() : weak_ptr_factory_(this) {
@@ -151,10 +163,10 @@ HistoryEntry* HistoryEntry::CloneAndReplace(const WebHistoryItem& new_item,
RenderFrameImpl* target_frame,
RenderViewImpl* render_view) {
HistoryEntry* new_entry = new HistoryEntry();
- new_entry->root_.reset(
+ new_entry->root_ =
root_->CloneAndReplace(new_entry->weak_ptr_factory_.GetWeakPtr(),
new_item, clone_children_of_target, target_frame,
- render_view->GetMainRenderFrame()));
+ render_view->GetMainRenderFrame());
return new_entry;
}
« no previous file with comments | « content/renderer/history_entry.h ('k') | content/renderer/history_serialization.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698