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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 100363002: Introduce RenderFrameObserver. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/render_frame_impl.cc
===================================================================
--- content/renderer/render_frame_impl.cc (revision 238191)
+++ content/renderer/render_frame_impl.cc (working copy)
@@ -26,6 +26,7 @@
#include "content/public/renderer/content_renderer_client.h"
#include "content/public/renderer/document_state.h"
#include "content/public/renderer/navigation_state.h"
+#include "content/public/renderer/render_frame_observer.h"
#include "content/renderer/accessibility/renderer_accessibility.h"
#include "content/renderer/browser_plugin/browser_plugin.h"
#include "content/renderer/browser_plugin/browser_plugin_manager.h"
@@ -129,6 +130,8 @@
}
RenderFrameImpl::~RenderFrameImpl() {
+ FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone());
+ FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct());
}
RenderWidget* RenderFrameImpl::GetRenderWidget() {
@@ -423,10 +426,6 @@
#endif // ENABLE_PLUGINS
-int RenderFrameImpl::GetRoutingID() const {
- return routing_id_;
-}
-
bool RenderFrameImpl::Send(IPC::Message* message) {
if (is_detaching_ ||
((is_swapped_out_ || render_view_->is_swapped_out()) &&
@@ -439,6 +438,13 @@
}
bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) {
+ ObserverListBase<RenderFrameObserver>::Iterator it(observers_);
+ RenderFrameObserver* observer;
+ while ((observer = it.GetNext()) != NULL) {
+ if (observer->OnMessageReceived(msg))
+ return true;
+ }
+
// TODO(ajwong): Fill in with message handlers as various components
// are migrated over to understand frames.
return false;
@@ -530,7 +536,7 @@
// Synchronously notify the browser of a child frame creation to get the
// routing_id for the RenderFrame.
int routing_id;
- Send(new FrameHostMsg_CreateChildFrame(GetRoutingID(),
+ Send(new FrameHostMsg_CreateChildFrame(routing_id_,
parent->identifier(),
child_frame_identifier,
UTF16ToUTF8(name),
@@ -563,7 +569,7 @@
if (frame->parent())
parent_frame_id = frame->parent()->identifier();
- Send(new FrameHostMsg_Detach(GetRoutingID(), parent_frame_id,
+ Send(new FrameHostMsg_Detach(routing_id_, parent_frame_id,
frame->identifier()));
// Currently multiple WebCore::Frames can send frameDetached to a single
@@ -1286,4 +1292,13 @@
arb_robustness_status_code));
}
+void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) {
+ observers_.AddObserver(observer);
+}
+
+void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) {
+ observer->RenderFrameGone();
+ observers_.RemoveObserver(observer);
+}
+
} // namespace content
« content/renderer/render_frame_impl.h ('K') | « content/renderer/render_frame_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698