Index: content/browser/browser_plugin/browser_plugin_guest.cc |
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc |
index 86c3144be0facce626bb6bdd73a4a607d189416c..14fb57fb645725982d57f1b6616fa3dc068fdc8d 100644 |
--- a/content/browser/browser_plugin/browser_plugin_guest.cc |
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc |
@@ -16,6 +16,7 @@ |
#include "content/common/browser_plugin_messages.h" |
#include "content/common/view_messages.h" |
#include "content/port/browser/render_view_host_delegate_view.h" |
+#include "content/public/browser/navigation_entry.h" |
#include "content/public/browser/notification_service.h" |
#include "content/public/browser/notification_types.h" |
#include "content/public/browser/render_process_host.h" |
@@ -63,6 +64,9 @@ BrowserPluginGuest::BrowserPluginGuest(int instance_id, |
notification_registrar_.Add( |
this, content::NOTIFICATION_RESOURCE_RECEIVED_REDIRECT, |
content::Source<content::WebContents>(web_contents)); |
+ notification_registrar_.Add( |
+ this, content::NOTIFICATION_WEB_CONTENTS_TITLE_UPDATED, |
+ content::Source<content::WebContents>(web_contents)); |
} |
BrowserPluginGuest::~BrowserPluginGuest() { |
@@ -102,6 +106,16 @@ void BrowserPluginGuest::Observe(int type, |
is_top_level); |
break; |
} |
+ case NOTIFICATION_WEB_CONTENTS_TITLE_UPDATED: { |
+ DCHECK_EQ(Source<WebContents>(source).ptr(), web_contents()); |
+ std::pair<NavigationEntry*, bool>* title = |
+ Details<std::pair<NavigationEntry*, bool> >(details).ptr(); |
+ if (title->first) { |
+ string16 title_text = title->first->GetTitle(); |
+ TitleChange(title_text); |
+ } |
+ break; |
+ } |
default: |
NOTREACHED() << "Unexpected notification sent."; |
break; |
@@ -437,6 +451,11 @@ void BrowserPluginGuest::LoadRedirect( |
instance_id(), old_url, new_url, is_top_level)); |
} |
+void BrowserPluginGuest::TitleChange(const string16& title) { |
+ SendMessageToEmbedder( |
+ new BrowserPluginMsg_TitleChange(instance_id(), title)); |
+} |
+ |
void BrowserPluginGuest::DidCommitProvisionalLoadForFrame( |
int64 frame_id, |
bool is_main_frame, |
@@ -455,6 +474,11 @@ void BrowserPluginGuest::DidCommitProvisionalLoadForFrame( |
SendMessageToEmbedder( |
new BrowserPluginMsg_LoadCommit(instance_id(), params)); |
RecordAction(UserMetricsAction("BrowserPlugin.Guest.DidNavigate")); |
+ |
+ // Also update title on commit, since the notifications only occur for |
+ // changes to existing titles, not updates due to back/forward or to |
+ // new pages with no titles. |
+ TitleChange(web_contents()->GetTitle()); |
} |
void BrowserPluginGuest::DidStopLoading(RenderViewHost* render_view_host) { |