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

Side by Side Diff: content/browser/frame_host/render_frame_host_impl.h

Issue 925623002: Refactor the loading tracking logic in WebContentsImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments 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 #ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 5 #ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
6 #define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 6 #define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
7 7
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 // The RenderFrameHost will have a new RenderWidgetHost created and 87 // The RenderFrameHost will have a new RenderWidgetHost created and
88 // attached to it. This is used when the RenderFrameHost is in a different 88 // attached to it. This is used when the RenderFrameHost is in a different
89 // process from its parent frame. 89 // process from its parent frame.
90 CREATE_RF_NEEDS_RENDER_WIDGET_HOST = 1 << 3 90 CREATE_RF_NEEDS_RENDER_WIDGET_HOST = 1 << 3
91 }; 91 };
92 92
93 class CONTENT_EXPORT RenderFrameHostImpl 93 class CONTENT_EXPORT RenderFrameHostImpl
94 : public RenderFrameHost, 94 : public RenderFrameHost,
95 public BrowserAccessibilityDelegate { 95 public BrowserAccessibilityDelegate {
96 public: 96 public:
97 // These values indicate the loading progress status. The minimum progress
98 // value matches what Blink's ProgressTracker has traditionally used for a
99 // minimum progress value.
100 // TODO(fdegans): Move these values to the implementation when the relevant
101 // IPCs are moved from WebContentsImpl to RFHI.
102 static const double kLoadingProgressNotStarted;
103 static const double kLoadingProgressMinimum;
104 static const double kLoadingProgressDone;
105
97 // Keeps track of the state of the RenderFrameHostImpl, particularly with 106 // Keeps track of the state of the RenderFrameHostImpl, particularly with
98 // respect to swap out. 107 // respect to swap out.
99 enum RenderFrameHostImplState { 108 enum RenderFrameHostImplState {
100 // The standard state for a RFH handling the communication with an active 109 // The standard state for a RFH handling the communication with an active
101 // RenderFrame. 110 // RenderFrame.
102 STATE_DEFAULT = 0, 111 STATE_DEFAULT = 0,
103 // The RFH has not received the SwapOutACK yet, but the new page has 112 // The RFH has not received the SwapOutACK yet, but the new page has
104 // committed in a different RFH. Upon reception of the SwapOutACK, the RFH 113 // committed in a different RFH. Upon reception of the SwapOutACK, the RFH
105 // will either enter STATE_SWAPPED_OUT (if it is a main frame and there are 114 // will either enter STATE_SWAPPED_OUT (if it is a main frame and there are
106 // other active frames in its SiteInstance) or it will be deleted. 115 // other active frames in its SiteInstance) or it will be deleted.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 205
197 int routing_id() const { return routing_id_; } 206 int routing_id() const { return routing_id_; }
198 void OnCreateChildFrame(int new_routing_id, 207 void OnCreateChildFrame(int new_routing_id,
199 const std::string& frame_name, 208 const std::string& frame_name,
200 SandboxFlags sandbox_flags); 209 SandboxFlags sandbox_flags);
201 210
202 RenderViewHostImpl* render_view_host() { return render_view_host_; } 211 RenderViewHostImpl* render_view_host() { return render_view_host_; }
203 RenderFrameHostDelegate* delegate() { return delegate_; } 212 RenderFrameHostDelegate* delegate() { return delegate_; }
204 FrameTreeNode* frame_tree_node() { return frame_tree_node_; } 213 FrameTreeNode* frame_tree_node() { return frame_tree_node_; }
205 214
215 // Sets this RenderFrameHost loading state.
216 void set_is_loading(bool is_loading) {
217 is_loading_ = is_loading;
218 }
219
220 // Returns this RenderFrameHost loading state. This method is only to be used
Charlie Reis 2015/03/05 04:46:18 nit: RenderFrameHost's nit: used by (Same in load
Fabrice (no longer in Chrome) 2015/03/05 12:37:43 Done.
221 // in FrameTreeNode. The proper way to check whether a frame is loading is to
222 // call FrameTreeNode::IsLoading.
223 bool is_loading() const { return is_loading_; }
224
225 // Sets this RenderFrameHost loading progress (from 0 to 1).
Charlie Reis 2015/03/05 04:46:18 nit: RenderFrameHost's
Fabrice (no longer in Chrome) 2015/03/05 12:37:43 Done.
226 void set_loading_progress(double loading_progress) {
227 loading_progress_ = loading_progress;
228 }
229
230 // Returns this RenderFrameHost loading progress. This is only to be used in
231 // FrameTreeNode. The proper way to check a frame loading progress is to call
232 // FrameTreeNode::GetLoadingProgress.
233 double loading_progress() const { return loading_progress_; }
234
206 // This returns the RenderFrameHost's owned RenderWidgetHost if it has one, 235 // This returns the RenderFrameHost's owned RenderWidgetHost if it has one,
207 // or else it returns nullptr. 236 // or else it returns nullptr.
208 // If the RenderFrameHost is the page's main frame, this returns instead a 237 // If the RenderFrameHost is the page's main frame, this returns instead a
209 // pointer to the RenderViewHost (which inherits RenderWidgetHost). 238 // pointer to the RenderViewHost (which inherits RenderWidgetHost).
210 RenderWidgetHostImpl* GetRenderWidgetHost(); 239 RenderWidgetHostImpl* GetRenderWidgetHost();
211 240
212 // This returns the RenderWidgetHostView that can be used to control 241 // This returns the RenderWidgetHostView that can be used to control
213 // focus and visibility for this frame. 242 // focus and visibility for this frame.
214 RenderWidgetHostView* GetView(); 243 RenderWidgetHostView* GetView();
215 244
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 bool is_waiting_for_beforeunload_ack_; 686 bool is_waiting_for_beforeunload_ack_;
658 687
659 // Valid only when is_waiting_for_beforeunload_ack_ or 688 // Valid only when is_waiting_for_beforeunload_ack_ or
660 // IsWaitingForUnloadACK is true. This tells us if the unload request 689 // IsWaitingForUnloadACK is true. This tells us if the unload request
661 // is for closing the entire tab ( = false), or only this RenderFrameHost in 690 // is for closing the entire tab ( = false), or only this RenderFrameHost in
662 // the case of a navigation ( = true). Currently only cross-site navigations 691 // the case of a navigation ( = true). Currently only cross-site navigations
663 // require a beforeUnload/unload ACK. 692 // require a beforeUnload/unload ACK.
664 // PlzNavigate: all navigations require a beforeUnload ACK. 693 // PlzNavigate: all navigations require a beforeUnload ACK.
665 bool unload_ack_is_for_navigation_; 694 bool unload_ack_is_for_navigation_;
666 695
696 // Indicates whether this RenderFrameHost is in the process of loading a
697 // document or not.
698 bool is_loading_;
699
700 // Used to represent this RenderFrameHost loading progress (from 0 to 1).
Charlie Reis 2015/03/05 04:46:18 nit: RenderFrameHost's
Fabrice (no longer in Chrome) 2015/03/05 12:37:43 Done.
701 double loading_progress_;
702
667 // Used to swap out or shut down this RFH when the unload event is taking too 703 // Used to swap out or shut down this RFH when the unload event is taking too
668 // long to execute, depending on the number of active frames in the 704 // long to execute, depending on the number of active frames in the
669 // SiteInstance. 705 // SiteInstance.
670 scoped_ptr<TimeoutMonitor> swapout_event_monitor_timeout_; 706 scoped_ptr<TimeoutMonitor> swapout_event_monitor_timeout_;
671 707
672 scoped_ptr<ServiceRegistryImpl> service_registry_; 708 scoped_ptr<ServiceRegistryImpl> service_registry_;
673 709
674 #if defined(OS_ANDROID) 710 #if defined(OS_ANDROID)
675 scoped_ptr<ServiceRegistryAndroid> service_registry_android_; 711 scoped_ptr<ServiceRegistryAndroid> service_registry_android_;
676 #endif 712 #endif
(...skipping 27 matching lines...) Expand all
704 740
705 // NOTE: This must be the last member. 741 // NOTE: This must be the last member.
706 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_; 742 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_;
707 743
708 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl); 744 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl);
709 }; 745 };
710 746
711 } // namespace content 747 } // namespace content
712 748
713 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 749 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698