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

Side by Side Diff: extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.cc

Issue 2652903002: Convert MimeHandlerStreamManager to use the new navigation callbacks. (Closed)
Patch Set: nit Created 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "extensions/browser/guest_view/mime_handler_view/mime_handler_stream_ma nager.h" 5 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_stream_ma nager.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/memory/singleton.h" 8 #include "base/memory/singleton.h"
9 #include "components/keyed_service/content/browser_context_dependency_manager.h" 9 #include "components/keyed_service/content/browser_context_dependency_manager.h"
10 #include "components/keyed_service/content/browser_context_keyed_service_factory .h" 10 #include "components/keyed_service/content/browser_context_keyed_service_factory .h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 EmbedderObserver(MimeHandlerStreamManager* stream_manager, 77 EmbedderObserver(MimeHandlerStreamManager* stream_manager,
78 const std::string& view_id, 78 const std::string& view_id,
79 int frame_tree_node_id, 79 int frame_tree_node_id,
80 int render_process_id, 80 int render_process_id,
81 int render_frame_id); 81 int render_frame_id);
82 82
83 private: 83 private:
84 // WebContentsObserver overrides. 84 // WebContentsObserver overrides.
85 void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override; 85 void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override;
86 void RenderProcessGone(base::TerminationStatus status) override; 86 void RenderProcessGone(base::TerminationStatus status) override;
87 void DidStartProvisionalLoadForFrame(
88 content::RenderFrameHost* render_frame_host,
89 const GURL& validated_url,
90 bool is_error_page) override;
91 void WebContentsDestroyed() override; 87 void WebContentsDestroyed() override;
92 void DidStartNavigation( 88 void DidStartNavigation(
93 content::NavigationHandle* navigation_handle) override; 89 content::NavigationHandle* navigation_handle) override;
90 void ReadyToCommitNavigation(
91 content::NavigationHandle* navigation_handle) override;
94 void RenderFrameHostChanged(content::RenderFrameHost* old_host, 92 void RenderFrameHostChanged(content::RenderFrameHost* old_host,
95 content::RenderFrameHost* new_host) override; 93 content::RenderFrameHost* new_host) override;
96 94
97 void AbortStream(); 95 void AbortStream();
98 96
99 bool IsTrackedRenderFrameHost(content::RenderFrameHost* render_frame_host); 97 bool IsTrackedRenderFrameHost(content::RenderFrameHost* render_frame_host);
100 98
101 MimeHandlerStreamManager* const stream_manager_; 99 MimeHandlerStreamManager* const stream_manager_;
102 const std::string view_id_; 100 const std::string view_id_;
103 int frame_tree_node_id_; 101 int frame_tree_node_id_;
104 int render_process_id_; 102 int render_process_id_;
105 int render_frame_id_; 103 int render_frame_id_;
106 // With PlzNavigate we get an initial provisional load notification for the 104 // We get an initial load notification for the URL the mime handler is
107 // URL the mime handler is serving. We don't want to clean up the stream 105 // serving. We don't want to clean up the stream here. This field helps us
108 // here. This field helps us track the first load notification. Defaults 106 // track the first load notification. Defaults to true.
109 // to true.
110 bool initial_load_for_frame_; 107 bool initial_load_for_frame_;
111 // If a RFH is swapped with another RFH, this is set to the new RFH. This 108 // If a RFH is swapped with another RFH, this is set to the new RFH. This
112 // ensures that we don't inadvarently clean up the stream when the old RFH 109 // ensures that we don't inadvarently clean up the stream when the old RFH
113 // dies. 110 // dies.
114 content::RenderFrameHost* new_host_; 111 content::RenderFrameHost* new_host_;
115 }; 112 };
116 113
117 MimeHandlerStreamManager::MimeHandlerStreamManager() 114 MimeHandlerStreamManager::MimeHandlerStreamManager()
118 : extension_registry_observer_(this) { 115 : extension_registry_observer_(this) {
119 } 116 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 if (!IsTrackedRenderFrameHost(render_frame_host)) 195 if (!IsTrackedRenderFrameHost(render_frame_host))
199 return; 196 return;
200 AbortStream(); 197 AbortStream();
201 } 198 }
202 199
203 void MimeHandlerStreamManager::EmbedderObserver::RenderProcessGone( 200 void MimeHandlerStreamManager::EmbedderObserver::RenderProcessGone(
204 base::TerminationStatus status) { 201 base::TerminationStatus status) {
205 AbortStream(); 202 AbortStream();
206 } 203 }
207 204
208 void MimeHandlerStreamManager::EmbedderObserver:: 205 void MimeHandlerStreamManager::EmbedderObserver::ReadyToCommitNavigation(
209 DidStartProvisionalLoadForFrame(content::RenderFrameHost* render_frame_host, 206 content::NavigationHandle* navigation_handle) {
210 const GURL& validated_url, 207 if (navigation_handle->IsSamePage() ||
211 bool is_error_page) { 208 !IsTrackedRenderFrameHost(navigation_handle->GetRenderFrameHost())) {
212 if (!IsTrackedRenderFrameHost(render_frame_host))
213 return; 209 return;
214 // With PlzNavigate we get a provisional load notification for the URL we are 210 }
215 // serving. We don't want to clean up the stream here. 211
216 if (initial_load_for_frame_ && content::IsBrowserSideNavigationEnabled()) { 212 // We get an initial load notification for the URL we are serving. We don't
213 // want to clean up the stream here.
214 if (initial_load_for_frame_) {
217 initial_load_for_frame_ = false; 215 initial_load_for_frame_ = false;
218 return; 216 return;
219 } 217 }
220 AbortStream(); 218 AbortStream();
221 } 219 }
222 220
223 void MimeHandlerStreamManager::EmbedderObserver::DidStartNavigation( 221 void MimeHandlerStreamManager::EmbedderObserver::DidStartNavigation(
224 content::NavigationHandle* navigation_handle) { 222 content::NavigationHandle* navigation_handle) {
225 // If the top level frame is navigating away, clean up the stream. 223 // If the top level frame is navigating away, clean up the stream.
226 if (navigation_handle->IsInMainFrame() && !navigation_handle->IsSamePage()) 224 if (navigation_handle->IsInMainFrame() && !navigation_handle->IsSamePage())
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 if (frame_tree_node_id_ != -1) { 275 if (frame_tree_node_id_ != -1) {
278 return render_frame_host->GetFrameTreeNodeId() == frame_tree_node_id_; 276 return render_frame_host->GetFrameTreeNodeId() == frame_tree_node_id_;
279 } else { 277 } else {
280 DCHECK((render_frame_id_ != -1) && (render_process_id_ != -1)); 278 DCHECK((render_frame_id_ != -1) && (render_process_id_ != -1));
281 return render_frame_host->GetRoutingID() == render_frame_id_ && 279 return render_frame_host->GetRoutingID() == render_frame_id_ &&
282 render_frame_host->GetProcess()->GetID() == render_process_id_; 280 render_frame_host->GetProcess()->GetID() == render_process_id_;
283 } 281 }
284 } 282 }
285 283
286 } // namespace extensions 284 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698