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

Unified Diff: content/renderer/browser_plugin/browser_plugin.cc

Issue 11035067: Add loadCommit and loadStop Event (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add LoadStop and LoadCommit Test Created 8 years, 2 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: content/renderer/browser_plugin/browser_plugin.cc
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
index acdea505531f3c687f84dc5f68770e90ef04c081..613ca172377efed7e2ddbeadbfe7c5e96f3026de 100644
--- a/content/renderer/browser_plugin/browser_plugin.cc
+++ b/content/renderer/browser_plugin/browser_plugin.cc
@@ -47,6 +47,8 @@ const char kIsTopLevel[] = "isTopLevel";
const char kLoadAbortEventName[] = "loadAbort";
const char kLoadRedirectEventName[] = "loadRedirect";
const char kLoadStartEventName[] = "loadStart";
+const char kLoadStopEventName[] = "loadStop";
+const char kLoadCommitEventName[] = "loadCommit";
Charlie Reis 2012/10/08 19:03:39 Please keep these alphabetized.
irobert 2012/10/10 23:55:16 Done.
const char kNavigationEventName[] = "navigation";
Charlie Reis 2012/10/08 19:03:39 We can remove this one now, right?
irobert 2012/10/10 23:55:16 Done.
const char kNewURL[] = "newUrl";
const char kOldURL[] = "oldUrl";
@@ -336,24 +338,56 @@ void BrowserPlugin::GuestCrashed() {
}
}
-void BrowserPlugin::DidNavigate(const GURL& url, int process_id) {
- src_ = url.spec();
+void BrowserPlugin::LoadStop() {
+ if (!HasListeners(kLoadStopEventName))
+ return;
+ EventListeners& listeners = event_listener_map_[kLoadStopEventName];
+ EventListeners::iterator it = listeners.begin();
+
+ v8::Context::Scope context_scope(v8::Context::New());
+ v8::HandleScope handle_scope;
+ // Construct the loadStop event object.
+ v8::Local<v8::Value> event =
+ v8::Local<v8::Object>::New(v8::Object::New());
+ for (; it != listeners.end(); ++it) {
+ // Fire the event listener.
+ container()->element().document().frame()->
+ callFunctionEvenIfScriptDisabled(*it,
+ v8::Object::New(),
+ 1,
+ &event);
+ }
+}
+
+void BrowserPlugin::LoadCommit(
+ const GURL& url,
+ int process_id,
+ bool is_top_level) {
process_id_ = process_id;
- if (!HasListeners(kNavigationEventName))
+ if (!HasListeners(kLoadCommitEventName))
return;
- EventListeners& listeners = event_listener_map_[kNavigationEventName];
+ EventListeners& listeners = event_listener_map_[kLoadCommitEventName];
EventListeners::iterator it = listeners.begin();
+
+ v8::Context::Scope context_scope(v8::Context::New());
Charlie Reis 2012/10/08 19:03:39 Note: We've learned that this approach doesn't wor
irobert 2012/10/10 23:55:16 Done.
+ v8::HandleScope handle_scope;
+ // Construct the loadCommit event object.
+ v8::Local<v8::Value> event =
+ v8::Local<v8::Object>::New(v8::Object::New());
+ v8::Local<v8::Object>::Cast(event)->Set(
+ v8::String::New(kURL, sizeof(kURL) - 1),
+ v8::String::New(url.spec().c_str(), url.spec().size()));
+ v8::Local<v8::Object>::Cast(event)->Set(
+ v8::String::New(kIsTopLevel, sizeof(kIsTopLevel) - 1),
+ v8::Boolean::New(is_top_level));
for (; it != listeners.end(); ++it) {
- v8::Context::Scope context_scope(v8::Context::New());
- v8::HandleScope handle_scope;
- v8::Local<v8::Value> param =
- v8::Local<v8::Value>::New(v8::String::New(src_.c_str()));
+ // Fire the event listener.
container()->element().document().frame()->
callFunctionEvenIfScriptDisabled(*it,
v8::Object::New(),
1,
- &param);
+ &event);
}
}

Powered by Google App Engine
This is Rietveld 408576698