Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index 19fadd63ba4d64bcecb821b11ed12b6c14a17639..574915c9b8f88977ad03396100012b937147ba5c 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -867,7 +867,7 @@ std::set<GURL> WebContentsImpl::GetSitesInTab() const { |
} |
const std::string& WebContentsImpl::GetEncoding() const { |
- return encoding_; |
+ return canonical_encoding_; |
} |
bool WebContentsImpl::DisplayedInsecureContent() const { |
@@ -2086,7 +2086,7 @@ void WebContentsImpl::SetOverrideEncoding(const std::string& encoding) { |
} |
void WebContentsImpl::ResetOverrideEncoding() { |
- encoding_.clear(); |
+ canonical_encoding_.clear(); |
Send(new ViewMsg_ResetPageEncodingToDefault(GetRoutingID())); |
} |
@@ -3331,39 +3331,6 @@ void WebContentsImpl::UpdateState(RenderViewHost* rvh, |
controller_.NotifyEntryChanged(entry, entry_index); |
} |
-void WebContentsImpl::UpdateTitle(RenderViewHost* rvh, |
- int32 page_id, |
- const base::string16& title, |
- base::i18n::TextDirection title_direction) { |
- // If we have a title, that's a pretty good indication that we've started |
- // getting useful data. |
- SetNotWaitingForResponse(); |
- |
- // Try to find the navigation entry, which might not be the current one. |
- // For example, it might be from a pending RVH for the pending entry. |
- NavigationEntryImpl* entry = controller_.GetEntryWithPageID( |
- rvh->GetSiteInstance(), page_id); |
- |
- // We can handle title updates when we don't have an entry in |
- // UpdateTitleForEntry, but only if the update is from the current RVH. |
- if (!entry && rvh != GetRenderViewHost()) |
- return; |
- |
- // TODO(evan): make use of title_direction. |
- // http://code.google.com/p/chromium/issues/detail?id=27094 |
- if (!UpdateTitleForEntry(entry, title)) |
- return; |
- |
- // Broadcast notifications when the UI should be updated. |
- if (entry == controller_.GetEntryAtOffset(0)) |
- NotifyNavigationStateChanged(INVALIDATE_TYPE_TITLE); |
-} |
- |
-void WebContentsImpl::UpdateEncoding(RenderViewHost* render_view_host, |
- const std::string& encoding) { |
- SetEncoding(encoding); |
-} |
- |
void WebContentsImpl::UpdateTargetURL(int32 page_id, const GURL& url) { |
if (delegate_) |
delegate_->UpdateTargetURL(this, page_id, url); |
@@ -3482,6 +3449,42 @@ void WebContentsImpl::DocumentOnLoadCompleted( |
NotificationService::NoDetails()); |
} |
+void WebContentsImpl::UpdateTitle(RenderFrameHost* render_frame_host, |
+ int32 page_id, |
+ const base::string16& title, |
+ base::i18n::TextDirection title_direction) { |
+ RenderViewHost* rvh = render_frame_host->GetRenderViewHost(); |
+ |
+ // If we have a title, that's a pretty good indication that we've started |
+ // getting useful data. |
+ SetNotWaitingForResponse(); |
+ |
+ // Try to find the navigation entry, which might not be the current one. |
+ // For example, it might be from a pending RVH for the pending entry. |
+ NavigationEntryImpl* entry = controller_.GetEntryWithPageID( |
+ rvh->GetSiteInstance(), page_id); |
+ |
+ // We can handle title updates when we don't have an entry in |
+ // UpdateTitleForEntry, but only if the update is from the current RVH. |
+ // TODO(avi): Change to make decisions based on the RenderFrameHost. |
+ if (!entry && rvh != GetRenderViewHost()) |
+ return; |
+ |
+ // TODO(evan): make use of title_direction. |
+ // http://code.google.com/p/chromium/issues/detail?id=27094 |
+ if (!UpdateTitleForEntry(entry, title)) |
+ return; |
+ |
+ // Broadcast notifications when the UI should be updated. |
+ if (entry == controller_.GetEntryAtOffset(0)) |
+ NotifyNavigationStateChanged(INVALIDATE_TYPE_TITLE); |
+} |
+ |
+void WebContentsImpl::UpdateEncoding(RenderFrameHost* render_frame_host, |
+ const std::string& encoding) { |
+ SetEncoding(encoding); |
+} |
+ |
void WebContentsImpl::DocumentAvailableInMainFrame( |
RenderViewHost* render_view_host) { |
FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
@@ -3888,7 +3891,11 @@ void WebContentsImpl::OnDialogClosed(int render_process_id, |
} |
void WebContentsImpl::SetEncoding(const std::string& encoding) { |
- encoding_ = GetContentClient()->browser()-> |
+ if (encoding == last_reported_encoding_) |
+ return; |
+ last_reported_encoding_ = encoding; |
+ |
+ canonical_encoding_ = GetContentClient()->browser()-> |
GetCanonicalEncodingNameByAliasName(encoding); |
} |