Index: content/browser/frame_host/navigation_handle_impl.cc |
diff --git a/content/browser/frame_host/navigation_handle_impl.cc b/content/browser/frame_host/navigation_handle_impl.cc |
index b0f6efe4efab876abe3faade52850886b9d2f0b9..05d7027eaed3abd615ab2f04091c19758d8a19ff 100644 |
--- a/content/browser/frame_host/navigation_handle_impl.cc |
+++ b/content/browser/frame_host/navigation_handle_impl.cc |
@@ -14,6 +14,7 @@ |
#include "content/browser/frame_host/frame_tree_node.h" |
#include "content/browser/frame_host/navigator.h" |
#include "content/browser/frame_host/navigator_delegate.h" |
+#include "content/browser/frame_host/render_frame_host_manager.h" |
#include "content/browser/service_worker/service_worker_context_wrapper.h" |
#include "content/browser/service_worker/service_worker_navigation_handle.h" |
#include "content/common/frame_messages.h" |
@@ -91,6 +92,15 @@ NavigationHandleImpl::NavigationHandleImpl( |
weak_factory_(this) { |
DCHECK(!navigation_start.is_null()); |
redirect_chain_.push_back(url); |
+ |
+ RenderFrameHostImpl* creator_frame = |
+ frame_tree_node_->render_manager()->current_frame_host(); |
alexmos
2016/10/12 23:13:28
nit: This can be shortened to frame_tree_node_->cu
jam
2016/10/13 00:14:46
Done.
|
+ // TODO(jam): do we need to handle the case where there's no initial frame |
+ // host? Revisit as more code uses this site instance which would expose |
+ // missing cases. |
+ if (creator_frame) |
+ creator_site_instance_ = creator_frame->GetSiteInstance(); |
+ |
GetDelegate()->DidStartNavigation(this); |
if (IsInMainFrame()) { |
@@ -128,6 +138,10 @@ const GURL& NavigationHandleImpl::GetURL() { |
return url_; |
} |
+SiteInstance* NavigationHandleImpl::GetCreatorSiteInstance() { |
+ return creator_site_instance_.get(); |
+} |
+ |
bool NavigationHandleImpl::IsInMainFrame() { |
return frame_tree_node_->IsMainFrame(); |
} |