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 5b2fce11d00b624bd19c5598988e72a718f44c1e..4c12cc73fdacda603f736329dcdb3f3278c3ddf3 100644 |
--- a/content/renderer/browser_plugin/browser_plugin.cc |
+++ b/content/renderer/browser_plugin/browser_plugin.cc |
@@ -42,6 +42,8 @@ using WebKit::WebVector; |
namespace content { |
namespace { |
+ |
+// Adding a new event? Update InitializeEvents as well. |
const char kExitEventName[] = "exit"; |
const char kIsTopLevel[] = "isTopLevel"; |
const char kLoadAbortEventName[] = "loadabort"; |
@@ -49,12 +51,15 @@ const char kLoadCommitEventName[] = "loadcommit"; |
const char kLoadRedirectEventName[] = "loadredirect"; |
const char kLoadStartEventName[] = "loadstart"; |
const char kLoadStopEventName[] = "loadstop"; |
+const char kTitleChangeEventName[] = "titlechange"; |
+ |
const char kNewURL[] = "newUrl"; |
const char kOldURL[] = "oldUrl"; |
const char kPartitionAttribute[] = "partition"; |
const char kPersistPrefix[] = "persist:"; |
const char kProcessId[] = "processId"; |
const char kSrcAttribute[] = "src"; |
+const char kTitle[] = "title"; |
const char kType[] = "type"; |
const char kURL[] = "url"; |
@@ -253,6 +258,7 @@ void BrowserPlugin::InitializeEvents() { |
event_listener_map_[kLoadRedirectEventName] = EventListeners(); |
event_listener_map_[kLoadStartEventName] = EventListeners(); |
event_listener_map_[kLoadStopEventName] = EventListeners(); |
+ event_listener_map_[kTitleChangeEventName] = EventListeners(); |
} |
void BrowserPlugin::RemoveEventListeners() { |
@@ -559,6 +565,24 @@ void BrowserPlugin::LoadRedirect(const GURL& old_url, |
TriggerEvent(kLoadRedirectEventName, &event); |
} |
+void BrowserPlugin::TitleChange(const string16& title) { |
+ if (!HasListeners(kTitleChangeEventName)) |
+ return; |
+ |
+ WebKit::WebElement plugin = container()->element(); |
+ v8::HandleScope handle_scope; |
+ v8::Context::Scope context_scope( |
+ plugin.document().frame()->mainWorldScriptContext()); |
+ |
+ // Construct the titlechanged event object. |
+ v8::Local<v8::Object> event = v8::Object::New(); |
+ event->Set(v8::String::New(kTitle, sizeof(kTitle) - 1), |
+ v8::String::New(title.data(), title.size()), |
+ v8::ReadOnly); |
+ |
+ TriggerEvent(kTitleChangeEventName, &event); |
+} |
+ |
void BrowserPlugin::AdvanceFocus(bool reverse) { |
// We do not have a RenderView when we are testing. |
if (render_view_) |