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

Unified Diff: content/browser/frame_host/frame_tree.cc

Issue 1545973002: Remove the is_loading_ field from WebContentsImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compilation error on windows Created 4 years, 11 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: content/browser/frame_host/frame_tree.cc
diff --git a/content/browser/frame_host/frame_tree.cc b/content/browser/frame_host/frame_tree.cc
index b33f9d0bcbcf7301b0a55399ead0c154855cd275..3c3c0f8978156af82455125155746703b63c9173 100644
--- a/content/browser/frame_host/frame_tree.cc
+++ b/content/browser/frame_host/frame_tree.cc
@@ -79,6 +79,44 @@ FrameTree::NodeIterator FrameTree::NodeRange::end() {
FrameTree::NodeRange::NodeRange(FrameTree* tree, FrameTreeNode* node_to_skip)
: tree_(tree), node_to_skip_(node_to_skip) {}
+FrameTree::ConstNodeIterator::~ConstNodeIterator() {}
+
+FrameTree::ConstNodeIterator& FrameTree::ConstNodeIterator::operator++() {
+ for (size_t i = 0; i < current_node_->child_count(); ++i) {
+ const FrameTreeNode* child = current_node_->child_at(i);
+ queue_.push(child);
+ }
+
+ if (!queue_.empty()) {
+ current_node_ = queue_.front();
+ queue_.pop();
+ } else {
+ current_node_ = nullptr;
+ }
+
+ return *this;
+}
+
+bool FrameTree::ConstNodeIterator::operator==(
+ const ConstNodeIterator& rhs) const {
+ return current_node_ == rhs.current_node_;
+}
+
+FrameTree::ConstNodeIterator::ConstNodeIterator(
+ const FrameTreeNode* starting_node)
+ : current_node_(starting_node) {}
+
+FrameTree::ConstNodeIterator FrameTree::ConstNodeRange::begin() {
+ return ConstNodeIterator(tree_->root());
+}
+
+FrameTree::ConstNodeIterator FrameTree::ConstNodeRange::end() {
+ return ConstNodeIterator(nullptr);
+}
+
+FrameTree::ConstNodeRange::ConstNodeRange(const FrameTree* tree)
+ : tree_(tree) {}
+
FrameTree::FrameTree(Navigator* navigator,
RenderFrameHostDelegate* render_frame_delegate,
RenderViewHostDelegate* render_view_delegate,
@@ -155,6 +193,10 @@ FrameTree::NodeRange FrameTree::NodesExcept(FrameTreeNode* node_to_skip) {
return NodeRange(this, node_to_skip);
}
+FrameTree::ConstNodeRange FrameTree::ConstNodes() const {
+ return ConstNodeRange(this);
+}
+
bool FrameTree::AddFrame(
FrameTreeNode* parent,
int process_id,
@@ -424,8 +466,8 @@ void FrameTree::ResetLoadProgress() {
load_progress_ = 0.0;
}
-bool FrameTree::IsLoading() {
- for (FrameTreeNode* node : Nodes()) {
+bool FrameTree::IsLoading() const {
+ for (const FrameTreeNode* node : ConstNodes()) {
if (node->IsLoading())
return true;
}

Powered by Google App Engine
This is Rietveld 408576698