Chromium Code Reviews| Index: content/browser/frame_host/frame_tree_node.cc |
| diff --git a/content/browser/frame_host/frame_tree_node.cc b/content/browser/frame_host/frame_tree_node.cc |
| index cabc819f4322201f2a42b9a5881e457628fcf2f2..5960f2aa0a6815a2db32841344ab4d15eedb60f5 100644 |
| --- a/content/browser/frame_host/frame_tree_node.cc |
| +++ b/content/browser/frame_host/frame_tree_node.cc |
| @@ -166,10 +166,15 @@ bool FrameTreeNode::IsLoading() const { |
| render_manager_.pending_frame_host(); |
| DCHECK(current_frame_host); |
| - // TODO(fdegans): Change the implementation logic for PlzNavigate once |
| - // DidStartLoading and DidStopLoading are properly called. |
| - if (pending_frame_host && pending_frame_host->is_loading()) |
| - return true; |
| + |
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableBrowserSideNavigation)) { |
| + if (navigation_request_) |
| + return true; |
| + } else { |
| + if (pending_frame_host && pending_frame_host->is_loading()) |
| + return true; |
| + } |
| return current_frame_host->is_loading(); |
| } |
| @@ -185,7 +190,17 @@ void FrameTreeNode::SetNavigationRequest( |
| CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( |
| switches::kEnableBrowserSideNavigation)); |
| ResetNavigationRequest(false); |
| - // TODO(clamy): perform the StartLoading logic here. |
| + |
| + // Force the throbber to start to keep it in sync with what is happening in |
| + // the UI. Blink doesn't send throb notifications for JavaScript URLs, so it |
| + // is not done here either. |
| + if (!navigation_request->common_params().url.SchemeIs( |
| + url::kJavaScriptScheme)) { |
| + // TODO(fdegans): Check if this is a same-document navigation and set the |
| + // proper argument. |
| + DidStartLoading(true); |
| + } |
| + |
| navigation_request_ = navigation_request.Pass(); |
| } |
| @@ -196,11 +211,13 @@ void FrameTreeNode::ResetNavigationRequest(bool is_commit) { |
| // cleanup performed since the navigation is still ongoing. If the reset |
|
Charlie Reis
2015/04/28 23:10:04
What navigation tasks are still ongoing after comm
Fabrice (no longer in Chrome)
2015/04/29 09:54:43
Yes it is the loading state. I rephrased the comme
|
| // corresponds to a cancelation, the RenderFrameHostManager should clean up |
| // any speculative RenderFrameHost it created for the navigation. |
| - if (navigation_request_ && !is_commit) { |
| - // TODO(clamy): perform the StopLoading logic. |
| + if (navigation_request_) { |
| + navigation_request_.reset(); |
| + if (is_commit) |
| + return; |
| + DidStopLoading(); |
| render_manager_.CleanUpNavigation(); |
| } |
| - navigation_request_.reset(); |
| } |
| bool FrameTreeNode::has_started_loading() const { |