summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornasko@chromium.org <nasko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-07 21:31:57 +0000
committernasko@chromium.org <nasko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-07 21:31:57 +0000
commit1d62cf79f609fba47ef680bf5acc9b453d4229ea (patch)
treea2d5aa01f83591bda380a34181dc11e99278ceb8
parent1d5541509d24eb016f775703fd7d1ed68b6bbe21 (diff)
downloadchromium_src-1d62cf79f609fba47ef680bf5acc9b453d4229ea.zip
chromium_src-1d62cf79f609fba47ef680bf5acc9b453d4229ea.tar.gz
chromium_src-1d62cf79f609fba47ef680bf5acc9b453d4229ea.tar.bz2
Move DidFinishDocumentLoad code from RenderView to RenderFrame.
BUG=304341 R=creis@chromium.org Review URL: https://codereview.chromium.org/156993004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249789 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/web_contents/web_contents_impl.cc25
-rw-r--r--content/browser/web_contents/web_contents_impl.h5
-rw-r--r--content/common/frame_messages.h4
-rw-r--r--content/common/view_messages.h4
-rw-r--r--content/renderer/render_frame_impl.cc14
-rw-r--r--content/renderer/render_view_impl.cc9
6 files changed, 37 insertions, 24 deletions
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index ac301e5..1661fbb 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -428,9 +428,14 @@ bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host,
if (observer->OnMessageReceived(message))
return true;
- // Message handlers should be aware of which RenderViewHost sent the
- // message, which is temporarily stored in render_view_message_source_.
- render_view_message_source_ = render_view_host;
+ // Message handlers should be aware of which
+ // RenderViewHost/RenderFrameHost sent the message, which is temporarily
+ // stored in render_(view|frame)_message_source_.
+ if (render_frame_host)
+ render_frame_message_source_ = render_frame_host;
+ else
+ render_view_message_source_ = render_view_host;
+
bool handled = true;
bool message_is_ok = true;
IPC_BEGIN_MESSAGE_MAP_EX(WebContentsImpl, message, message_is_ok)
@@ -442,7 +447,7 @@ bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host,
OnDidDisplayInsecureContent)
IPC_MESSAGE_HANDLER(ViewHostMsg_DidRunInsecureContent,
OnDidRunInsecureContent)
- IPC_MESSAGE_HANDLER(ViewHostMsg_DocumentLoadedInFrame,
+ IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishDocumentLoad,
OnDocumentLoadedInFrame)
IPC_MESSAGE_HANDLER(ViewHostMsg_DidFinishLoad, OnDidFinishLoad)
IPC_MESSAGE_HANDLER(ViewHostMsg_DidFailLoadWithError,
@@ -491,6 +496,7 @@ bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host,
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP_EX()
render_view_message_source_ = NULL;
+ render_frame_message_source_ = NULL;
if (!message_is_ok) {
RecordAction(base::UserMetricsAction("BadMessageTerminate_RVD"));
@@ -2139,9 +2145,14 @@ void WebContentsImpl::OnDidRunInsecureContent(
}
void WebContentsImpl::OnDocumentLoadedInFrame(int64 frame_id) {
- FOR_EACH_OBSERVER(
- WebContentsObserver, observers_,
- DocumentLoadedInFrame(frame_id, render_view_message_source_));
+ CHECK(render_frame_message_source_);
+ CHECK(!render_view_message_source_);
+ RenderFrameHostImpl* rfh =
+ static_cast<RenderFrameHostImpl*>(render_frame_message_source_);
+
+ FOR_EACH_OBSERVER(WebContentsObserver,
+ observers_,
+ DocumentLoadedInFrame(frame_id, rfh->render_view_host()));
}
void WebContentsImpl::OnDidFinishLoad(
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index cbf3fa9..a25400b 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -1034,10 +1034,11 @@ class CONTENT_EXPORT WebContentsImpl
// member variables that are gone.
NotificationRegistrar registrar_;
- // Used during IPC message dispatching from the RenderView so that the
- // handlers can get a pointer to the RVH through which the message was
+ // Used during IPC message dispatching from the RenderView/RenderFrame so that
+ // the handlers can get a pointer to the RVH through which the message was
// received.
RenderViewHost* render_view_message_source_;
+ RenderFrameHost* render_frame_message_source_;
// All live RenderWidgetHostImpls that are created by this object and may
// outlive it.
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h
index 1016c10..9084385 100644
--- a/content/common/frame_messages.h
+++ b/content/common/frame_messages.h
@@ -164,6 +164,10 @@ IPC_MESSAGE_ROUTED3(FrameHostMsg_DidRedirectProvisionalLoad,
GURL /* source_url*/,
GURL /* target_url */)
+// Notifies the browser that a document has been loaded.
+IPC_MESSAGE_ROUTED1(FrameHostMsg_DidFinishDocumentLoad,
+ int64 /* frame_id */)
+
// Sent to the browser when the renderer detects it is blocked on a pepper
// plugin message for too long. This is also sent when it becomes unhung
// (according to the value of is_hung). The browser can give the user the
diff --git a/content/common/view_messages.h b/content/common/view_messages.h
index 20bec60..b41a0c2 100644
--- a/content/common/view_messages.h
+++ b/content/common/view_messages.h
@@ -1476,10 +1476,6 @@ IPC_MESSAGE_ROUTED2(ViewHostMsg_UpdateState,
int32 /* page_id */,
content::PageState /* state */)
-// Notifies the browser that a document has been loaded in a frame.
-IPC_MESSAGE_ROUTED1(ViewHostMsg_DocumentLoadedInFrame,
- int64 /* frame_id */)
-
// Notifies the browser that a frame finished loading.
IPC_MESSAGE_ROUTED3(ViewHostMsg_DidFinishLoad,
int64 /* frame_id */,
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index a205148..40ea57f 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1113,9 +1113,19 @@ void RenderFrameImpl::didChangeIcon(blink::WebFrame* frame,
}
void RenderFrameImpl::didFinishDocumentLoad(blink::WebFrame* frame) {
- // TODO(nasko): Move implementation here. No state needed, just observers
- // notification in before updating encoding.
+ WebDataSource* ds = frame->dataSource();
+ DocumentState* document_state = DocumentState::FromDataSource(ds);
+ document_state->set_finish_document_load_time(Time::Now());
+
+ Send(
+ new FrameHostMsg_DidFinishDocumentLoad(routing_id_, frame->identifier()));
+
+ // Call back to RenderViewImpl for observers to be notified.
+ // TODO(nasko): Remove once we have RenderFrameObserver for this method.
render_view_->didFinishDocumentLoad(frame);
+
+ // Check whether we have new encoding name.
+ render_view_->UpdateEncoding(frame, frame->view()->pageEncoding().utf8());
}
void RenderFrameImpl::didHandleOnloadEvents(blink::WebFrame* frame) {
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 4d27120..b5073ed 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -3621,17 +3621,8 @@ void RenderViewImpl::didChangeIcon(WebFrame* frame,
}
void RenderViewImpl::didFinishDocumentLoad(WebFrame* frame) {
- WebDataSource* ds = frame->dataSource();
- DocumentState* document_state = DocumentState::FromDataSource(ds);
- document_state->set_finish_document_load_time(Time::Now());
-
- Send(new ViewHostMsg_DocumentLoadedInFrame(routing_id_, frame->identifier()));
-
FOR_EACH_OBSERVER(RenderViewObserver, observers_,
DidFinishDocumentLoad(frame));
-
- // Check whether we have new encoding name.
- UpdateEncoding(frame, frame->view()->pageEncoding().utf8());
}
void RenderViewImpl::didHandleOnloadEvents(WebFrame* frame) {