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

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

Issue 11027065: Browser plugin: Implement titleChanged event. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix for pages with no title 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 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_)
« no previous file with comments | « content/renderer/browser_plugin/browser_plugin.h ('k') | content/renderer/browser_plugin/browser_plugin_manager_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698