| 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;
|
| }
|
|
|