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

Side by Side Diff: content/browser/frame_host/frame_tree_node.cc

Issue 1015243004: Move load progress tracking logic to the frame tree. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Readding TODO Created 5 years, 9 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/frame_tree_node.h" 5 #include "content/browser/frame_host/frame_tree_node.h"
6 6
7 #include <queue> 7 #include <queue>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 10 matching lines...) Expand all
21 21
22 // This is a global map between frame_tree_node_ids and pointers to 22 // This is a global map between frame_tree_node_ids and pointers to
23 // FrameTreeNodes. 23 // FrameTreeNodes.
24 typedef base::hash_map<int64, FrameTreeNode*> FrameTreeNodeIDMap; 24 typedef base::hash_map<int64, FrameTreeNode*> FrameTreeNodeIDMap;
25 25
26 base::LazyInstance<FrameTreeNodeIDMap> g_frame_tree_node_id_map = 26 base::LazyInstance<FrameTreeNodeIDMap> g_frame_tree_node_id_map =
27 LAZY_INSTANCE_INITIALIZER; 27 LAZY_INSTANCE_INITIALIZER;
28 28
29 } // namespace 29 } // namespace
30 30
31 const double FrameTreeNode::kLoadingProgressNotStarted = 0.0;
32 const double FrameTreeNode::kLoadingProgressMinimum = 0.1;
33 const double FrameTreeNode::kLoadingProgressDone = 1.0;
34
31 int64 FrameTreeNode::next_frame_tree_node_id_ = 1; 35 int64 FrameTreeNode::next_frame_tree_node_id_ = 1;
32 36
33 // static 37 // static
34 FrameTreeNode* FrameTreeNode::GloballyFindByID(int64 frame_tree_node_id) { 38 FrameTreeNode* FrameTreeNode::GloballyFindByID(int64 frame_tree_node_id) {
35 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 39 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
36 FrameTreeNodeIDMap* nodes = g_frame_tree_node_id_map.Pointer(); 40 FrameTreeNodeIDMap* nodes = g_frame_tree_node_id_map.Pointer();
37 FrameTreeNodeIDMap::iterator it = nodes->find(frame_tree_node_id); 41 FrameTreeNodeIDMap::iterator it = nodes->find(frame_tree_node_id);
38 return it == nodes->end() ? nullptr : it->second; 42 return it == nodes->end() ? nullptr : it->second;
39 } 43 }
40 44
41 FrameTreeNode::FrameTreeNode(FrameTree* frame_tree, 45 FrameTreeNode::FrameTreeNode(FrameTree* frame_tree,
42 Navigator* navigator, 46 Navigator* navigator,
43 RenderFrameHostDelegate* render_frame_delegate, 47 RenderFrameHostDelegate* render_frame_delegate,
44 RenderViewHostDelegate* render_view_delegate, 48 RenderViewHostDelegate* render_view_delegate,
45 RenderWidgetHostDelegate* render_widget_delegate, 49 RenderWidgetHostDelegate* render_widget_delegate,
46 RenderFrameHostManager::Delegate* manager_delegate, 50 RenderFrameHostManager::Delegate* manager_delegate,
47 const std::string& name) 51 const std::string& name)
48 : frame_tree_(frame_tree), 52 : frame_tree_(frame_tree),
49 navigator_(navigator), 53 navigator_(navigator),
50 render_manager_(this, 54 render_manager_(this,
51 render_frame_delegate, 55 render_frame_delegate,
52 render_view_delegate, 56 render_view_delegate,
53 render_widget_delegate, 57 render_widget_delegate,
54 manager_delegate), 58 manager_delegate),
55 frame_tree_node_id_(next_frame_tree_node_id_++), 59 frame_tree_node_id_(next_frame_tree_node_id_++),
56 parent_(NULL), 60 parent_(NULL),
57 replication_state_(name), 61 replication_state_(name),
58 effective_sandbox_flags_(SandboxFlags::NONE) { 62 effective_sandbox_flags_(SandboxFlags::NONE),
63 loading_progress_(kLoadingProgressNotStarted) {
59 std::pair<FrameTreeNodeIDMap::iterator, bool> result = 64 std::pair<FrameTreeNodeIDMap::iterator, bool> result =
60 g_frame_tree_node_id_map.Get().insert( 65 g_frame_tree_node_id_map.Get().insert(
61 std::make_pair(frame_tree_node_id_, this)); 66 std::make_pair(frame_tree_node_id_, this));
62 CHECK(result.second); 67 CHECK(result.second);
63 } 68 }
64 69
65 FrameTreeNode::~FrameTreeNode() { 70 FrameTreeNode::~FrameTreeNode() {
66 frame_tree_->FrameRemoved(this); 71 frame_tree_->FrameRemoved(this);
67 72
68 g_frame_tree_node_id_map.Get().erase(frame_tree_node_id_); 73 g_frame_tree_node_id_map.Get().erase(frame_tree_node_id_);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 render_manager_.pending_frame_host(); 152 render_manager_.pending_frame_host();
148 153
149 DCHECK(current_frame_host); 154 DCHECK(current_frame_host);
150 // TODO(fdegans): Change the implementation logic for PlzNavigate once 155 // TODO(fdegans): Change the implementation logic for PlzNavigate once
151 // DidStartLoading and DidStopLoading are properly called. 156 // DidStartLoading and DidStopLoading are properly called.
152 if (pending_frame_host && pending_frame_host->is_loading()) 157 if (pending_frame_host && pending_frame_host->is_loading())
153 return true; 158 return true;
154 return current_frame_host->is_loading(); 159 return current_frame_host->is_loading();
155 } 160 }
156 161
157 double FrameTreeNode::GetLoadingProgress() const {
158 RenderFrameHostImpl* current_frame_host =
159 render_manager_.current_frame_host();
160
161 DCHECK(current_frame_host);
162 return current_frame_host->loading_progress();
163 }
164
165 bool FrameTreeNode::CommitPendingSandboxFlags() { 162 bool FrameTreeNode::CommitPendingSandboxFlags() {
166 bool did_change_flags = 163 bool did_change_flags =
167 effective_sandbox_flags_ != replication_state_.sandbox_flags; 164 effective_sandbox_flags_ != replication_state_.sandbox_flags;
168 effective_sandbox_flags_ = replication_state_.sandbox_flags; 165 effective_sandbox_flags_ = replication_state_.sandbox_flags;
169 return did_change_flags; 166 return did_change_flags;
170 } 167 }
171 168
172 } // namespace content 169 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/frame_tree_node.h ('k') | content/browser/frame_host/render_frame_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698