summaryrefslogtreecommitdiffstats
path: root/chromium/content/renderer/java/java_bridge_dispatcher.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/renderer/java/java_bridge_dispatcher.cc')
-rw-r--r--chromium/content/renderer/java/java_bridge_dispatcher.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/chromium/content/renderer/java/java_bridge_dispatcher.cc b/chromium/content/renderer/java/java_bridge_dispatcher.cc
index f7e435cf2b1..262ea94fbd5 100644
--- a/chromium/content/renderer/java/java_bridge_dispatcher.cc
+++ b/chromium/content/renderer/java/java_bridge_dispatcher.cc
@@ -7,8 +7,8 @@
#include "content/child/child_process.h"
#include "content/child/npapi/npobject_util.h" // For CreateNPVariant()
#include "content/common/java_bridge_messages.h"
+#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_thread.h"
-#include "content/public/renderer/render_view.h"
#include "content/renderer/java/java_bridge_channel.h"
#include "third_party/WebKit/public/web/WebBindings.h"
#include "third_party/WebKit/public/web/WebDocument.h"
@@ -17,8 +17,8 @@
namespace content {
-JavaBridgeDispatcher::JavaBridgeDispatcher(RenderView* render_view)
- : RenderViewObserver(render_view) {
+JavaBridgeDispatcher::JavaBridgeDispatcher(RenderFrame* render_frame)
+ : RenderFrameObserver(render_frame) {
}
void JavaBridgeDispatcher::EnsureChannelIsSetUp() {
@@ -51,16 +51,21 @@ bool JavaBridgeDispatcher::OnMessageReceived(const IPC::Message& msg) {
return handled;
}
-void JavaBridgeDispatcher::DidClearWindowObject(blink::WebFrame* web_frame) {
+void JavaBridgeDispatcher::DidClearWindowObject() {
// Note that we have to (re)bind all objects, as they will have been unbound
// when the window object was cleared.
for (ObjectMap::const_iterator iter = objects_.begin();
- iter != objects_.end(); ++iter) {
+ iter != objects_.end();
+ ++iter) {
+ NPObject* object = NPVARIANT_TO_OBJECT(iter->second);
+ // De-associate from the existing V8 wrapper, so we don't pull any
+ // of the wrapper's custom properties into the context of the page we
+ // have navigated to.
+ blink::WebBindings::dropV8WrapperForObject(object);
// This refs the NPObject. This reference is dropped when either the window
// object is later cleared, or the object is GC'ed. So the object may be
// deleted at any time after OnRemoveNamedObject() is called.
- web_frame->bindToWindowObject(iter->first,
- NPVARIANT_TO_OBJECT(iter->second));
+ render_frame()->GetWebFrame()->bindToWindowObject(iter->first, object);
}
}