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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 274883002: Move didReceiveTitle and related stuff to RenderFrame. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 849 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 860
861 std::set<GURL> WebContentsImpl::GetSitesInTab() const { 861 std::set<GURL> WebContentsImpl::GetSitesInTab() const {
862 std::set<GURL> sites; 862 std::set<GURL> sites;
863 frame_tree_.ForEach(base::Bind(&CollectSites, 863 frame_tree_.ForEach(base::Bind(&CollectSites,
864 base::Unretained(GetBrowserContext()), 864 base::Unretained(GetBrowserContext()),
865 base::Unretained(&sites))); 865 base::Unretained(&sites)));
866 return sites; 866 return sites;
867 } 867 }
868 868
869 const std::string& WebContentsImpl::GetEncoding() const { 869 const std::string& WebContentsImpl::GetEncoding() const {
870 return encoding_; 870 return canonical_encoding_;
871 } 871 }
872 872
873 bool WebContentsImpl::DisplayedInsecureContent() const { 873 bool WebContentsImpl::DisplayedInsecureContent() const {
874 return displayed_insecure_content_; 874 return displayed_insecure_content_;
875 } 875 }
876 876
877 void WebContentsImpl::IncrementCapturerCount(const gfx::Size& capture_size) { 877 void WebContentsImpl::IncrementCapturerCount(const gfx::Size& capture_size) {
878 DCHECK(!is_being_destroyed_); 878 DCHECK(!is_being_destroyed_);
879 ++capturer_count_; 879 ++capturer_count_;
880 DVLOG(1) << "There are now " << capturer_count_ 880 DVLOG(1) << "There are now " << capturer_count_
(...skipping 1198 matching lines...) Expand 10 before | Expand all | Expand 10 after
2079 bool WebContentsImpl::WillNotifyDisconnection() const { 2079 bool WebContentsImpl::WillNotifyDisconnection() const {
2080 return notify_disconnection_; 2080 return notify_disconnection_;
2081 } 2081 }
2082 2082
2083 void WebContentsImpl::SetOverrideEncoding(const std::string& encoding) { 2083 void WebContentsImpl::SetOverrideEncoding(const std::string& encoding) {
2084 SetEncoding(encoding); 2084 SetEncoding(encoding);
2085 Send(new ViewMsg_SetPageEncoding(GetRoutingID(), encoding)); 2085 Send(new ViewMsg_SetPageEncoding(GetRoutingID(), encoding));
2086 } 2086 }
2087 2087
2088 void WebContentsImpl::ResetOverrideEncoding() { 2088 void WebContentsImpl::ResetOverrideEncoding() {
2089 encoding_.clear(); 2089 canonical_encoding_.clear();
2090 Send(new ViewMsg_ResetPageEncodingToDefault(GetRoutingID())); 2090 Send(new ViewMsg_ResetPageEncodingToDefault(GetRoutingID()));
2091 } 2091 }
2092 2092
2093 RendererPreferences* WebContentsImpl::GetMutableRendererPrefs() { 2093 RendererPreferences* WebContentsImpl::GetMutableRendererPrefs() {
2094 return &renderer_preferences_; 2094 return &renderer_preferences_;
2095 } 2095 }
2096 2096
2097 void WebContentsImpl::Close() { 2097 void WebContentsImpl::Close() {
2098 Close(GetRenderViewHost()); 2098 Close(GetRenderViewHost());
2099 } 2099 }
(...skipping 1224 matching lines...) Expand 10 before | Expand all | Expand 10 after
3324 if (entry_index < 0) 3324 if (entry_index < 0)
3325 return; 3325 return;
3326 NavigationEntry* entry = controller_.GetEntryAtIndex(entry_index); 3326 NavigationEntry* entry = controller_.GetEntryAtIndex(entry_index);
3327 3327
3328 if (page_state == entry->GetPageState()) 3328 if (page_state == entry->GetPageState())
3329 return; // Nothing to update. 3329 return; // Nothing to update.
3330 entry->SetPageState(page_state); 3330 entry->SetPageState(page_state);
3331 controller_.NotifyEntryChanged(entry, entry_index); 3331 controller_.NotifyEntryChanged(entry, entry_index);
3332 } 3332 }
3333 3333
3334 void WebContentsImpl::UpdateTitle(RenderViewHost* rvh,
3335 int32 page_id,
3336 const base::string16& title,
3337 base::i18n::TextDirection title_direction) {
3338 // If we have a title, that's a pretty good indication that we've started
3339 // getting useful data.
3340 SetNotWaitingForResponse();
3341
3342 // Try to find the navigation entry, which might not be the current one.
3343 // For example, it might be from a pending RVH for the pending entry.
3344 NavigationEntryImpl* entry = controller_.GetEntryWithPageID(
3345 rvh->GetSiteInstance(), page_id);
3346
3347 // We can handle title updates when we don't have an entry in
3348 // UpdateTitleForEntry, but only if the update is from the current RVH.
3349 if (!entry && rvh != GetRenderViewHost())
3350 return;
3351
3352 // TODO(evan): make use of title_direction.
3353 // http://code.google.com/p/chromium/issues/detail?id=27094
3354 if (!UpdateTitleForEntry(entry, title))
3355 return;
3356
3357 // Broadcast notifications when the UI should be updated.
3358 if (entry == controller_.GetEntryAtOffset(0))
3359 NotifyNavigationStateChanged(INVALIDATE_TYPE_TITLE);
3360 }
3361
3362 void WebContentsImpl::UpdateEncoding(RenderViewHost* render_view_host,
3363 const std::string& encoding) {
3364 SetEncoding(encoding);
3365 }
3366
3367 void WebContentsImpl::UpdateTargetURL(int32 page_id, const GURL& url) { 3334 void WebContentsImpl::UpdateTargetURL(int32 page_id, const GURL& url) {
3368 if (delegate_) 3335 if (delegate_)
3369 delegate_->UpdateTargetURL(this, page_id, url); 3336 delegate_->UpdateTargetURL(this, page_id, url);
3370 } 3337 }
3371 3338
3372 void WebContentsImpl::Close(RenderViewHost* rvh) { 3339 void WebContentsImpl::Close(RenderViewHost* rvh) {
3373 #if defined(OS_MACOSX) 3340 #if defined(OS_MACOSX)
3374 // The UI may be in an event-tracking loop, such as between the 3341 // The UI may be in an event-tracking loop, such as between the
3375 // mouse-down and mouse-up in text selection or a button click. 3342 // mouse-down and mouse-up in text selection or a button click.
3376 // Defer the close until after tracking is complete, so that we 3343 // Defer the close until after tracking is complete, so that we
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
3475 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 3442 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
3476 DocumentOnLoadCompletedInMainFrame()); 3443 DocumentOnLoadCompletedInMainFrame());
3477 3444
3478 // TODO(avi): Remove. http://crbug.com/170921 3445 // TODO(avi): Remove. http://crbug.com/170921
3479 NotificationService::current()->Notify( 3446 NotificationService::current()->Notify(
3480 NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, 3447 NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME,
3481 Source<WebContents>(this), 3448 Source<WebContents>(this),
3482 NotificationService::NoDetails()); 3449 NotificationService::NoDetails());
3483 } 3450 }
3484 3451
3452 void WebContentsImpl::UpdateTitle(RenderFrameHost* render_frame_host,
3453 int32 page_id,
3454 const base::string16& title,
3455 base::i18n::TextDirection title_direction) {
3456 RenderViewHost* rvh = render_frame_host->GetRenderViewHost();
3457
3458 // If we have a title, that's a pretty good indication that we've started
3459 // getting useful data.
3460 SetNotWaitingForResponse();
3461
3462 // Try to find the navigation entry, which might not be the current one.
3463 // For example, it might be from a pending RVH for the pending entry.
3464 NavigationEntryImpl* entry = controller_.GetEntryWithPageID(
3465 rvh->GetSiteInstance(), page_id);
3466
3467 // We can handle title updates when we don't have an entry in
3468 // UpdateTitleForEntry, but only if the update is from the current RVH.
3469 // TODO(avi): Change to make decisions based on the RenderFrameHost.
3470 if (!entry && rvh != GetRenderViewHost())
3471 return;
3472
3473 // TODO(evan): make use of title_direction.
3474 // http://code.google.com/p/chromium/issues/detail?id=27094
3475 if (!UpdateTitleForEntry(entry, title))
3476 return;
3477
3478 // Broadcast notifications when the UI should be updated.
3479 if (entry == controller_.GetEntryAtOffset(0))
3480 NotifyNavigationStateChanged(INVALIDATE_TYPE_TITLE);
3481 }
3482
3483 void WebContentsImpl::UpdateEncoding(RenderFrameHost* render_frame_host,
3484 const std::string& encoding) {
3485 SetEncoding(encoding);
3486 }
3487
3485 void WebContentsImpl::DocumentAvailableInMainFrame( 3488 void WebContentsImpl::DocumentAvailableInMainFrame(
3486 RenderViewHost* render_view_host) { 3489 RenderViewHost* render_view_host) {
3487 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 3490 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
3488 DocumentAvailableInMainFrame()); 3491 DocumentAvailableInMainFrame());
3489 } 3492 }
3490 void WebContentsImpl::RouteCloseEvent(RenderViewHost* rvh) { 3493 void WebContentsImpl::RouteCloseEvent(RenderViewHost* rvh) {
3491 // Tell the active RenderViewHost to run unload handlers and close, as long 3494 // Tell the active RenderViewHost to run unload handlers and close, as long
3492 // as the request came from a RenderViewHost in the same BrowsingInstance. 3495 // as the request came from a RenderViewHost in the same BrowsingInstance.
3493 // In most cases, we receive this from a swapped out RenderViewHost. 3496 // In most cases, we receive this from a swapped out RenderViewHost.
3494 // It is possible to receive it from one that has just been swapped in, 3497 // It is possible to receive it from one that has just been swapped in,
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
3881 if (rfh) { 3884 if (rfh) {
3882 rfh->JavaScriptDialogClosed(reply_msg, success, user_input, 3885 rfh->JavaScriptDialogClosed(reply_msg, success, user_input,
3883 dialog_was_suppressed); 3886 dialog_was_suppressed);
3884 } else { 3887 } else {
3885 // Don't leak the sync IPC reply if the RFH or process is gone. 3888 // Don't leak the sync IPC reply if the RFH or process is gone.
3886 delete reply_msg; 3889 delete reply_msg;
3887 } 3890 }
3888 } 3891 }
3889 3892
3890 void WebContentsImpl::SetEncoding(const std::string& encoding) { 3893 void WebContentsImpl::SetEncoding(const std::string& encoding) {
3891 encoding_ = GetContentClient()->browser()-> 3894 if (encoding == last_reported_encoding_)
3895 return;
3896 last_reported_encoding_ = encoding;
3897
3898 canonical_encoding_ = GetContentClient()->browser()->
3892 GetCanonicalEncodingNameByAliasName(encoding); 3899 GetCanonicalEncodingNameByAliasName(encoding);
3893 } 3900 }
3894 3901
3895 void WebContentsImpl::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { 3902 void WebContentsImpl::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) {
3896 RenderWidgetHostViewBase* rwh_view = view_->CreateViewForWidget(rvh); 3903 RenderWidgetHostViewBase* rwh_view = view_->CreateViewForWidget(rvh);
3897 // Can be NULL during tests. 3904 // Can be NULL during tests.
3898 if (rwh_view) 3905 if (rwh_view)
3899 rwh_view->SetSize(GetContainerBounds().size()); 3906 rwh_view->SetSize(GetContainerBounds().size());
3900 } 3907 }
3901 3908
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
3955 3962
3956 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { 3963 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) {
3957 if (!delegate_) 3964 if (!delegate_)
3958 return; 3965 return;
3959 const gfx::Size new_size = GetPreferredSize(); 3966 const gfx::Size new_size = GetPreferredSize();
3960 if (new_size != old_size) 3967 if (new_size != old_size)
3961 delegate_->UpdatePreferredSize(this, new_size); 3968 delegate_->UpdatePreferredSize(this, new_size);
3962 } 3969 }
3963 3970
3964 } // namespace content 3971 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/browser/web_contents/web_contents_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698