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

Unified Diff: chrome/renderer/extensions/event_bindings.cc

Issue 125280: Send port-closed notification when a frame with ports unloads.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/extensions/event_bindings.cc
===================================================================
--- chrome/renderer/extensions/event_bindings.cc (revision 18701)
+++ chrome/renderer/extensions/event_bindings.cc (working copy)
@@ -12,16 +12,17 @@
#include "chrome/renderer/js_only_v8_extensions.h"
#include "chrome/renderer/render_thread.h"
#include "grit/renderer_resources.h"
+#include "webkit/api/public/WebScriptSource.h"
+#include "webkit/glue/webframe.h"
+using WebKit::WebScriptSource;
+using WebKit::WebString;
+
namespace {
// Keep a local cache of RenderThread so that we can mock it out for unit tests.
static RenderThreadBase* render_thread = NULL;
-static RenderThreadBase* GetRenderThread() {
- return render_thread ? render_thread : RenderThread::current();
-}
-
// Keep a list of contexts that have registered themselves with us. This lets
// us know where to dispatch events when we receive them.
typedef std::list< v8::Persistent<v8::Context> > ContextList;
@@ -91,7 +92,7 @@
if (args[0]->IsString()) {
std::string event_name(*v8::String::AsciiValue(args[0]));
if (EventIncrementListenerCount(event_name) == 1) {
- GetRenderThread()->Send(
+ EventBindings::GetRenderThread()->Send(
new ViewHostMsg_ExtensionAddListener(event_name));
}
}
@@ -122,7 +123,7 @@
if (args[0]->IsString()) {
std::string event_name(*v8::String::AsciiValue(args[0]));
if (EventDecrementListenerCount(event_name) == 0) {
- GetRenderThread()->Send(
+ EventBindings::GetRenderThread()->Send(
new ViewHostMsg_ExtensionRemoveListener(event_name));
}
}
@@ -164,6 +165,24 @@
render_thread = thread;
}
+// static
+RenderThreadBase* EventBindings::GetRenderThread() {
+ return render_thread ? render_thread : RenderThread::current();
+}
+
+// static
+void EventBindings::HandleDocumentReady(WebFrame* frame) {
+ frame->ExecuteScript(WebScriptSource(WebString::fromUTF8(
+ "chrome.dispatchOnLoad_();")));
+}
+
+// static
+void EventBindings::HandleDocumentClose(WebFrame* frame) {
+ frame->ExecuteScript(WebScriptSource(WebString::fromUTF8(
+ "chrome.dispatchOnUnload_();")));
+}
+
+// static
void EventBindings::CallFunction(const std::string& function_name,
int argc, v8::Handle<v8::Value>* argv) {
for (ContextList::iterator it = GetRegisteredContexts().begin();
« no previous file with comments | « chrome/renderer/extensions/event_bindings.h ('k') | chrome/renderer/extensions/extension_process_bindings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698