| OLD | NEW |
| 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 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 341 render_view_host_delegate_view_(NULL), | 341 render_view_host_delegate_view_(NULL), |
| 342 opener_(opener), | 342 opener_(opener), |
| 343 #if defined(OS_WIN) && defined(USE_AURA) | 343 #if defined(OS_WIN) && defined(USE_AURA) |
| 344 accessible_parent_(NULL), | 344 accessible_parent_(NULL), |
| 345 #endif | 345 #endif |
| 346 frame_tree_(new Navigator(&controller_, this), this, this, this), | 346 frame_tree_(new Navigator(&controller_, this), this, this, this), |
| 347 is_loading_(false), | 347 is_loading_(false), |
| 348 crashed_status_(base::TERMINATION_STATUS_STILL_RUNNING), | 348 crashed_status_(base::TERMINATION_STATUS_STILL_RUNNING), |
| 349 crashed_error_code_(0), | 349 crashed_error_code_(0), |
| 350 waiting_for_response_(false), | 350 waiting_for_response_(false), |
| 351 load_state_(net::LOAD_STATE_IDLE, string16()), | 351 load_state_(net::LOAD_STATE_IDLE, base::string16()), |
| 352 upload_size_(0), | 352 upload_size_(0), |
| 353 upload_position_(0), | 353 upload_position_(0), |
| 354 displayed_insecure_content_(false), | 354 displayed_insecure_content_(false), |
| 355 capturer_count_(0), | 355 capturer_count_(0), |
| 356 should_normally_be_visible_(true), | 356 should_normally_be_visible_(true), |
| 357 is_being_destroyed_(false), | 357 is_being_destroyed_(false), |
| 358 notify_disconnection_(false), | 358 notify_disconnection_(false), |
| 359 dialog_manager_(NULL), | 359 dialog_manager_(NULL), |
| 360 is_showing_before_unload_dialog_(false), | 360 is_showing_before_unload_dialog_(false), |
| 361 closed_by_user_gesture_(false), | 361 closed_by_user_gesture_(false), |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 720 | 720 |
| 721 #if defined(OS_WIN) && defined(USE_AURA) | 721 #if defined(OS_WIN) && defined(USE_AURA) |
| 722 void WebContentsImpl::SetParentNativeViewAccessible( | 722 void WebContentsImpl::SetParentNativeViewAccessible( |
| 723 gfx::NativeViewAccessible accessible_parent) { | 723 gfx::NativeViewAccessible accessible_parent) { |
| 724 accessible_parent_ = accessible_parent; | 724 accessible_parent_ = accessible_parent; |
| 725 if (GetRenderViewHost()) | 725 if (GetRenderViewHost()) |
| 726 GetRenderViewHostImpl()->SetParentNativeViewAccessible(accessible_parent); | 726 GetRenderViewHostImpl()->SetParentNativeViewAccessible(accessible_parent); |
| 727 } | 727 } |
| 728 #endif | 728 #endif |
| 729 | 729 |
| 730 const string16& WebContentsImpl::GetTitle() const { | 730 const base::string16& WebContentsImpl::GetTitle() const { |
| 731 // Transient entries take precedence. They are used for interstitial pages | 731 // Transient entries take precedence. They are used for interstitial pages |
| 732 // that are shown on top of existing pages. | 732 // that are shown on top of existing pages. |
| 733 NavigationEntry* entry = controller_.GetTransientEntry(); | 733 NavigationEntry* entry = controller_.GetTransientEntry(); |
| 734 std::string accept_languages = | 734 std::string accept_languages = |
| 735 GetContentClient()->browser()->GetAcceptLangs( | 735 GetContentClient()->browser()->GetAcceptLangs( |
| 736 GetBrowserContext()); | 736 GetBrowserContext()); |
| 737 if (entry) { | 737 if (entry) { |
| 738 return entry->GetTitleForDisplay(accept_languages); | 738 return entry->GetTitleForDisplay(accept_languages); |
| 739 } | 739 } |
| 740 WebUI* our_web_ui = GetRenderManager()->pending_web_ui() ? | 740 WebUI* our_web_ui = GetRenderManager()->pending_web_ui() ? |
| 741 GetRenderManager()->pending_web_ui() : GetRenderManager()->web_ui(); | 741 GetRenderManager()->pending_web_ui() : GetRenderManager()->web_ui(); |
| 742 if (our_web_ui) { | 742 if (our_web_ui) { |
| 743 // Don't override the title in view source mode. | 743 // Don't override the title in view source mode. |
| 744 entry = controller_.GetVisibleEntry(); | 744 entry = controller_.GetVisibleEntry(); |
| 745 if (!(entry && entry->IsViewSourceMode())) { | 745 if (!(entry && entry->IsViewSourceMode())) { |
| 746 // Give the Web UI the chance to override our title. | 746 // Give the Web UI the chance to override our title. |
| 747 const string16& title = our_web_ui->GetOverriddenTitle(); | 747 const base::string16& title = our_web_ui->GetOverriddenTitle(); |
| 748 if (!title.empty()) | 748 if (!title.empty()) |
| 749 return title; | 749 return title; |
| 750 } | 750 } |
| 751 } | 751 } |
| 752 | 752 |
| 753 // We use the title for the last committed entry rather than a pending | 753 // We use the title for the last committed entry rather than a pending |
| 754 // navigation entry. For example, when the user types in a URL, we want to | 754 // navigation entry. For example, when the user types in a URL, we want to |
| 755 // keep the old page's title until the new load has committed and we get a new | 755 // keep the old page's title until the new load has committed and we get a new |
| 756 // title. | 756 // title. |
| 757 entry = controller_.GetLastCommittedEntry(); | 757 entry = controller_.GetLastCommittedEntry(); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 } | 825 } |
| 826 | 826 |
| 827 bool WebContentsImpl::IsWaitingForResponse() const { | 827 bool WebContentsImpl::IsWaitingForResponse() const { |
| 828 return waiting_for_response_; | 828 return waiting_for_response_; |
| 829 } | 829 } |
| 830 | 830 |
| 831 const net::LoadStateWithParam& WebContentsImpl::GetLoadState() const { | 831 const net::LoadStateWithParam& WebContentsImpl::GetLoadState() const { |
| 832 return load_state_; | 832 return load_state_; |
| 833 } | 833 } |
| 834 | 834 |
| 835 const string16& WebContentsImpl::GetLoadStateHost() const { | 835 const base::string16& WebContentsImpl::GetLoadStateHost() const { |
| 836 return load_state_host_; | 836 return load_state_host_; |
| 837 } | 837 } |
| 838 | 838 |
| 839 uint64 WebContentsImpl::GetUploadSize() const { | 839 uint64 WebContentsImpl::GetUploadSize() const { |
| 840 return upload_size_; | 840 return upload_size_; |
| 841 } | 841 } |
| 842 | 842 |
| 843 uint64 WebContentsImpl::GetUploadPosition() const { | 843 uint64 WebContentsImpl::GetUploadPosition() const { |
| 844 return upload_position_; | 844 return upload_position_; |
| 845 } | 845 } |
| (...skipping 1366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2212 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 2212 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
| 2213 DidFinishLoad(frame_id, validated_url, is_main_frame, | 2213 DidFinishLoad(frame_id, validated_url, is_main_frame, |
| 2214 message_source_)); | 2214 message_source_)); |
| 2215 } | 2215 } |
| 2216 | 2216 |
| 2217 void WebContentsImpl::OnDidFailLoadWithError( | 2217 void WebContentsImpl::OnDidFailLoadWithError( |
| 2218 int64 frame_id, | 2218 int64 frame_id, |
| 2219 const GURL& url, | 2219 const GURL& url, |
| 2220 bool is_main_frame, | 2220 bool is_main_frame, |
| 2221 int error_code, | 2221 int error_code, |
| 2222 const string16& error_description) { | 2222 const base::string16& error_description) { |
| 2223 GURL validated_url(url); | 2223 GURL validated_url(url); |
| 2224 RenderProcessHost* render_process_host = message_source_->GetProcess(); | 2224 RenderProcessHost* render_process_host = message_source_->GetProcess(); |
| 2225 RenderViewHost::FilterURL(render_process_host, false, &validated_url); | 2225 RenderViewHost::FilterURL(render_process_host, false, &validated_url); |
| 2226 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 2226 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
| 2227 DidFailLoad(frame_id, validated_url, is_main_frame, | 2227 DidFailLoad(frame_id, validated_url, is_main_frame, |
| 2228 error_code, error_description, | 2228 error_code, error_description, |
| 2229 message_source_)); | 2229 message_source_)); |
| 2230 } | 2230 } |
| 2231 | 2231 |
| 2232 void WebContentsImpl::OnGoToEntryAtOffset(int offset) { | 2232 void WebContentsImpl::OnGoToEntryAtOffset(int offset) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2273 delegate_->EnumerateDirectory(this, request_id, path); | 2273 delegate_->EnumerateDirectory(this, request_id, path); |
| 2274 } | 2274 } |
| 2275 | 2275 |
| 2276 void WebContentsImpl::OnJSOutOfMemory() { | 2276 void WebContentsImpl::OnJSOutOfMemory() { |
| 2277 if (delegate_) | 2277 if (delegate_) |
| 2278 delegate_->JSOutOfMemory(this); | 2278 delegate_->JSOutOfMemory(this); |
| 2279 } | 2279 } |
| 2280 | 2280 |
| 2281 void WebContentsImpl::OnRegisterProtocolHandler(const std::string& protocol, | 2281 void WebContentsImpl::OnRegisterProtocolHandler(const std::string& protocol, |
| 2282 const GURL& url, | 2282 const GURL& url, |
| 2283 const string16& title, | 2283 const base::string16& title, |
| 2284 bool user_gesture) { | 2284 bool user_gesture) { |
| 2285 if (!delegate_) | 2285 if (!delegate_) |
| 2286 return; | 2286 return; |
| 2287 | 2287 |
| 2288 ChildProcessSecurityPolicyImpl* policy = | 2288 ChildProcessSecurityPolicyImpl* policy = |
| 2289 ChildProcessSecurityPolicyImpl::GetInstance(); | 2289 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 2290 if (policy->IsPseudoScheme(protocol)) | 2290 if (policy->IsPseudoScheme(protocol)) |
| 2291 return; | 2291 return; |
| 2292 | 2292 |
| 2293 delegate_->RegisterProtocolHandler(this, protocol, url, title, user_gesture); | 2293 delegate_->RegisterProtocolHandler(this, protocol, url, title, user_gesture); |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2509 | 2509 |
| 2510 // Notifies the RenderWidgetHost instance about the fact that the page is | 2510 // Notifies the RenderWidgetHost instance about the fact that the page is |
| 2511 // loading, or done loading. | 2511 // loading, or done loading. |
| 2512 void WebContentsImpl::SetIsLoading(RenderViewHost* render_view_host, | 2512 void WebContentsImpl::SetIsLoading(RenderViewHost* render_view_host, |
| 2513 bool is_loading, | 2513 bool is_loading, |
| 2514 LoadNotificationDetails* details) { | 2514 LoadNotificationDetails* details) { |
| 2515 if (is_loading == is_loading_) | 2515 if (is_loading == is_loading_) |
| 2516 return; | 2516 return; |
| 2517 | 2517 |
| 2518 if (!is_loading) { | 2518 if (!is_loading) { |
| 2519 load_state_ = net::LoadStateWithParam(net::LOAD_STATE_IDLE, string16()); | 2519 load_state_ = net::LoadStateWithParam(net::LOAD_STATE_IDLE, |
| 2520 base::string16()); |
| 2520 load_state_host_.clear(); | 2521 load_state_host_.clear(); |
| 2521 upload_size_ = 0; | 2522 upload_size_ = 0; |
| 2522 upload_position_ = 0; | 2523 upload_position_ = 0; |
| 2523 } | 2524 } |
| 2524 | 2525 |
| 2525 GetRenderManager()->SetIsLoading(is_loading); | 2526 GetRenderManager()->SetIsLoading(is_loading); |
| 2526 | 2527 |
| 2527 is_loading_ = is_loading; | 2528 is_loading_ = is_loading; |
| 2528 waiting_for_response_ = is_loading; | 2529 waiting_for_response_ = is_loading; |
| 2529 | 2530 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2611 // the renderer updating next_page_id_). Because of this, we only call this | 2612 // the renderer updating next_page_id_). Because of this, we only call this |
| 2612 // from CreateRenderView and allow that to notify the RenderView for us. | 2613 // from CreateRenderView and allow that to notify the RenderView for us. |
| 2613 int max_restored_page_id = controller_.GetMaxRestoredPageID(); | 2614 int max_restored_page_id = controller_.GetMaxRestoredPageID(); |
| 2614 if (max_restored_page_id > | 2615 if (max_restored_page_id > |
| 2615 GetMaxPageIDForSiteInstance(rvh->GetSiteInstance())) | 2616 GetMaxPageIDForSiteInstance(rvh->GetSiteInstance())) |
| 2616 UpdateMaxPageIDForSiteInstance(rvh->GetSiteInstance(), | 2617 UpdateMaxPageIDForSiteInstance(rvh->GetSiteInstance(), |
| 2617 max_restored_page_id); | 2618 max_restored_page_id); |
| 2618 } | 2619 } |
| 2619 | 2620 |
| 2620 bool WebContentsImpl::UpdateTitleForEntry(NavigationEntryImpl* entry, | 2621 bool WebContentsImpl::UpdateTitleForEntry(NavigationEntryImpl* entry, |
| 2621 const string16& title) { | 2622 const base::string16& title) { |
| 2622 // For file URLs without a title, use the pathname instead. In the case of a | 2623 // For file URLs without a title, use the pathname instead. In the case of a |
| 2623 // synthesized title, we don't want the update to count toward the "one set | 2624 // synthesized title, we don't want the update to count toward the "one set |
| 2624 // per page of the title to history." | 2625 // per page of the title to history." |
| 2625 string16 final_title; | 2626 base::string16 final_title; |
| 2626 bool explicit_set; | 2627 bool explicit_set; |
| 2627 if (entry && entry->GetURL().SchemeIsFile() && title.empty()) { | 2628 if (entry && entry->GetURL().SchemeIsFile() && title.empty()) { |
| 2628 final_title = UTF8ToUTF16(entry->GetURL().ExtractFileName()); | 2629 final_title = UTF8ToUTF16(entry->GetURL().ExtractFileName()); |
| 2629 explicit_set = false; // Don't count synthetic titles toward the set limit. | 2630 explicit_set = false; // Don't count synthetic titles toward the set limit. |
| 2630 } else { | 2631 } else { |
| 2631 TrimWhitespace(title, TRIM_ALL, &final_title); | 2632 TrimWhitespace(title, TRIM_ALL, &final_title); |
| 2632 explicit_set = true; | 2633 explicit_set = true; |
| 2633 } | 2634 } |
| 2634 | 2635 |
| 2635 // If a page is created via window.open and never navigated, | 2636 // If a page is created via window.open and never navigated, |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2968 NavigationEntry* entry = controller_.GetEntryAtIndex(entry_index); | 2969 NavigationEntry* entry = controller_.GetEntryAtIndex(entry_index); |
| 2969 | 2970 |
| 2970 if (page_state == entry->GetPageState()) | 2971 if (page_state == entry->GetPageState()) |
| 2971 return; // Nothing to update. | 2972 return; // Nothing to update. |
| 2972 entry->SetPageState(page_state); | 2973 entry->SetPageState(page_state); |
| 2973 controller_.NotifyEntryChanged(entry, entry_index); | 2974 controller_.NotifyEntryChanged(entry, entry_index); |
| 2974 } | 2975 } |
| 2975 | 2976 |
| 2976 void WebContentsImpl::UpdateTitle(RenderViewHost* rvh, | 2977 void WebContentsImpl::UpdateTitle(RenderViewHost* rvh, |
| 2977 int32 page_id, | 2978 int32 page_id, |
| 2978 const string16& title, | 2979 const base::string16& title, |
| 2979 base::i18n::TextDirection title_direction) { | 2980 base::i18n::TextDirection title_direction) { |
| 2980 // If we have a title, that's a pretty good indication that we've started | 2981 // If we have a title, that's a pretty good indication that we've started |
| 2981 // getting useful data. | 2982 // getting useful data. |
| 2982 SetNotWaitingForResponse(); | 2983 SetNotWaitingForResponse(); |
| 2983 | 2984 |
| 2984 // Try to find the navigation entry, which might not be the current one. | 2985 // Try to find the navigation entry, which might not be the current one. |
| 2985 // For example, it might be from a pending RVH for the pending entry. | 2986 // For example, it might be from a pending RVH for the pending entry. |
| 2986 NavigationEntryImpl* entry = controller_.GetEntryWithPageID( | 2987 NavigationEntryImpl* entry = controller_.GetEntryWithPageID( |
| 2987 rvh->GetSiteInstance(), page_id); | 2988 rvh->GetSiteInstance(), page_id); |
| 2988 | 2989 |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3284 } | 3285 } |
| 3285 | 3286 |
| 3286 // In most cases, we receive this from a swapped out RenderViewHost. | 3287 // In most cases, we receive this from a swapped out RenderViewHost. |
| 3287 // It is possible to receive it from one that has just been swapped in, | 3288 // It is possible to receive it from one that has just been swapped in, |
| 3288 // in which case we might as well deliver the message anyway. | 3289 // in which case we might as well deliver the message anyway. |
| 3289 Send(new ViewMsg_PostMessageEvent(GetRoutingID(), new_params)); | 3290 Send(new ViewMsg_PostMessageEvent(GetRoutingID(), new_params)); |
| 3290 } | 3291 } |
| 3291 | 3292 |
| 3292 void WebContentsImpl::RunJavaScriptMessage( | 3293 void WebContentsImpl::RunJavaScriptMessage( |
| 3293 RenderViewHost* rvh, | 3294 RenderViewHost* rvh, |
| 3294 const string16& message, | 3295 const base::string16& message, |
| 3295 const string16& default_prompt, | 3296 const base::string16& default_prompt, |
| 3296 const GURL& frame_url, | 3297 const GURL& frame_url, |
| 3297 JavaScriptMessageType javascript_message_type, | 3298 JavaScriptMessageType javascript_message_type, |
| 3298 IPC::Message* reply_msg, | 3299 IPC::Message* reply_msg, |
| 3299 bool* did_suppress_message) { | 3300 bool* did_suppress_message) { |
| 3300 // Suppress JavaScript dialogs when requested. Also suppress messages when | 3301 // Suppress JavaScript dialogs when requested. Also suppress messages when |
| 3301 // showing an interstitial as it's shown over the previous page and we don't | 3302 // showing an interstitial as it's shown over the previous page and we don't |
| 3302 // want the hidden page's dialogs to interfere with the interstitial. | 3303 // want the hidden page's dialogs to interfere with the interstitial. |
| 3303 bool suppress_this_message = | 3304 bool suppress_this_message = |
| 3304 static_cast<RenderViewHostImpl*>(rvh)->is_swapped_out() || | 3305 static_cast<RenderViewHostImpl*>(rvh)->is_swapped_out() || |
| 3305 ShowingInterstitialPage() || | 3306 ShowingInterstitialPage() || |
| (...skipping 17 matching lines...) Expand all Loading... |
| 3323 rvh, | 3324 rvh, |
| 3324 reply_msg), | 3325 reply_msg), |
| 3325 &suppress_this_message); | 3326 &suppress_this_message); |
| 3326 } | 3327 } |
| 3327 | 3328 |
| 3328 *did_suppress_message = suppress_this_message; | 3329 *did_suppress_message = suppress_this_message; |
| 3329 | 3330 |
| 3330 if (suppress_this_message) { | 3331 if (suppress_this_message) { |
| 3331 // If we are suppressing messages, just reply as if the user immediately | 3332 // If we are suppressing messages, just reply as if the user immediately |
| 3332 // pressed "Cancel". | 3333 // pressed "Cancel". |
| 3333 OnDialogClosed(rvh, reply_msg, false, string16()); | 3334 OnDialogClosed(rvh, reply_msg, false, base::string16()); |
| 3334 } | 3335 } |
| 3335 | 3336 |
| 3336 // OnDialogClosed (two lines up) may have caused deletion of this object (see | 3337 // OnDialogClosed (two lines up) may have caused deletion of this object (see |
| 3337 // http://crbug.com/288961 ). The only safe thing to do here is return. | 3338 // http://crbug.com/288961 ). The only safe thing to do here is return. |
| 3338 } | 3339 } |
| 3339 | 3340 |
| 3340 void WebContentsImpl::RunBeforeUnloadConfirm(RenderViewHost* rvh, | 3341 void WebContentsImpl::RunBeforeUnloadConfirm(RenderViewHost* rvh, |
| 3341 const string16& message, | 3342 const base::string16& message, |
| 3342 bool is_reload, | 3343 bool is_reload, |
| 3343 IPC::Message* reply_msg) { | 3344 IPC::Message* reply_msg) { |
| 3344 RenderViewHostImpl* rvhi = static_cast<RenderViewHostImpl*>(rvh); | 3345 RenderViewHostImpl* rvhi = static_cast<RenderViewHostImpl*>(rvh); |
| 3345 if (delegate_) | 3346 if (delegate_) |
| 3346 delegate_->WillRunBeforeUnloadConfirm(); | 3347 delegate_->WillRunBeforeUnloadConfirm(); |
| 3347 | 3348 |
| 3348 bool suppress_this_message = | 3349 bool suppress_this_message = |
| 3349 rvhi->is_swapped_out() || | 3350 rvhi->is_swapped_out() || |
| 3350 !delegate_ || | 3351 !delegate_ || |
| 3351 delegate_->ShouldSuppressDialogs() || | 3352 delegate_->ShouldSuppressDialogs() || |
| 3352 !delegate_->GetJavaScriptDialogManager(); | 3353 !delegate_->GetJavaScriptDialogManager(); |
| 3353 if (suppress_this_message) { | 3354 if (suppress_this_message) { |
| 3354 // The reply must be sent to the RVH that sent the request. | 3355 // The reply must be sent to the RVH that sent the request. |
| 3355 rvhi->JavaScriptDialogClosed(reply_msg, true, string16()); | 3356 rvhi->JavaScriptDialogClosed(reply_msg, true, base::string16()); |
| 3356 return; | 3357 return; |
| 3357 } | 3358 } |
| 3358 | 3359 |
| 3359 is_showing_before_unload_dialog_ = true; | 3360 is_showing_before_unload_dialog_ = true; |
| 3360 dialog_manager_ = delegate_->GetJavaScriptDialogManager(); | 3361 dialog_manager_ = delegate_->GetJavaScriptDialogManager(); |
| 3361 dialog_manager_->RunBeforeUnloadDialog( | 3362 dialog_manager_->RunBeforeUnloadDialog( |
| 3362 this, message, is_reload, | 3363 this, message, is_reload, |
| 3363 base::Bind(&WebContentsImpl::OnDialogClosed, base::Unretained(this), rvh, | 3364 base::Bind(&WebContentsImpl::OnDialogClosed, base::Unretained(this), rvh, |
| 3364 reply_msg)); | 3365 reply_msg)); |
| 3365 } | 3366 } |
| 3366 | 3367 |
| 3367 bool WebContentsImpl::AddMessageToConsole(int32 level, | 3368 bool WebContentsImpl::AddMessageToConsole(int32 level, |
| 3368 const string16& message, | 3369 const base::string16& message, |
| 3369 int32 line_no, | 3370 int32 line_no, |
| 3370 const string16& source_id) { | 3371 const base::string16& source_id) { |
| 3371 if (!delegate_) | 3372 if (!delegate_) |
| 3372 return false; | 3373 return false; |
| 3373 return delegate_->AddMessageToConsole(this, level, message, line_no, | 3374 return delegate_->AddMessageToConsole(this, level, message, line_no, |
| 3374 source_id); | 3375 source_id); |
| 3375 } | 3376 } |
| 3376 | 3377 |
| 3377 WebPreferences WebContentsImpl::GetWebkitPrefs() { | 3378 WebPreferences WebContentsImpl::GetWebkitPrefs() { |
| 3378 // We want to base the page config off of the actual URL, rather than the | 3379 // We want to base the page config off of the actual URL, rather than the |
| 3379 // virtual URL. | 3380 // virtual URL. |
| 3380 // TODO(nasko): Investigate how to remove the GetActiveEntry usage here, | 3381 // TODO(nasko): Investigate how to remove the GetActiveEntry usage here, |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3583 // Now that the RenderView has been created, we need to tell it its size. | 3584 // Now that the RenderView has been created, we need to tell it its size. |
| 3584 if (rwh_view) | 3585 if (rwh_view) |
| 3585 rwh_view->SetSize(GetSizeForNewRenderView()); | 3586 rwh_view->SetSize(GetSizeForNewRenderView()); |
| 3586 | 3587 |
| 3587 // Make sure we use the correct starting page_id in the new RenderView. | 3588 // Make sure we use the correct starting page_id in the new RenderView. |
| 3588 UpdateMaxPageIDIfNecessary(render_view_host); | 3589 UpdateMaxPageIDIfNecessary(render_view_host); |
| 3589 int32 max_page_id = | 3590 int32 max_page_id = |
| 3590 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); | 3591 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); |
| 3591 | 3592 |
| 3592 if (!static_cast<RenderViewHostImpl*>( | 3593 if (!static_cast<RenderViewHostImpl*>( |
| 3593 render_view_host)->CreateRenderView(string16(), | 3594 render_view_host)->CreateRenderView(base::string16(), |
| 3594 opener_route_id, | 3595 opener_route_id, |
| 3595 max_page_id)) { | 3596 max_page_id)) { |
| 3596 return false; | 3597 return false; |
| 3597 } | 3598 } |
| 3598 | 3599 |
| 3599 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) | 3600 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) |
| 3600 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on | 3601 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on |
| 3601 // linux. See crbug.com/83941. | 3602 // linux. See crbug.com/83941. |
| 3602 if (rwh_view) { | 3603 if (rwh_view) { |
| 3603 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) | 3604 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) |
| 3604 render_widget_host->WasResized(); | 3605 render_widget_host->WasResized(); |
| 3605 } | 3606 } |
| 3606 #endif | 3607 #endif |
| 3607 | 3608 |
| 3608 return true; | 3609 return true; |
| 3609 } | 3610 } |
| 3610 | 3611 |
| 3611 #if defined(OS_ANDROID) | 3612 #if defined(OS_ANDROID) |
| 3612 bool WebContentsImpl::CreateRenderViewForInitialEmptyDocument() { | 3613 bool WebContentsImpl::CreateRenderViewForInitialEmptyDocument() { |
| 3613 return CreateRenderViewForRenderManager(GetRenderViewHost(), | 3614 return CreateRenderViewForRenderManager(GetRenderViewHost(), |
| 3614 MSG_ROUTING_NONE); | 3615 MSG_ROUTING_NONE); |
| 3615 } | 3616 } |
| 3616 #endif | 3617 #endif |
| 3617 | 3618 |
| 3618 void WebContentsImpl::OnDialogClosed(RenderViewHost* rvh, | 3619 void WebContentsImpl::OnDialogClosed(RenderViewHost* rvh, |
| 3619 IPC::Message* reply_msg, | 3620 IPC::Message* reply_msg, |
| 3620 bool success, | 3621 bool success, |
| 3621 const string16& user_input) { | 3622 const base::string16& user_input) { |
| 3622 if (is_showing_before_unload_dialog_ && !success) { | 3623 if (is_showing_before_unload_dialog_ && !success) { |
| 3623 // If a beforeunload dialog is canceled, we need to stop the throbber from | 3624 // If a beforeunload dialog is canceled, we need to stop the throbber from |
| 3624 // spinning, since we forced it to start spinning in Navigate. | 3625 // spinning, since we forced it to start spinning in Navigate. |
| 3625 DidStopLoading(rvh); | 3626 DidStopLoading(rvh); |
| 3626 controller_.DiscardNonCommittedEntries(); | 3627 controller_.DiscardNonCommittedEntries(); |
| 3627 | 3628 |
| 3628 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 3629 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
| 3629 BeforeUnloadDialogCancelled()); | 3630 BeforeUnloadDialogCancelled()); |
| 3630 } | 3631 } |
| 3631 is_showing_before_unload_dialog_ = false; | 3632 is_showing_before_unload_dialog_ = false; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3700 } | 3701 } |
| 3701 | 3702 |
| 3702 void WebContentsImpl::OnFrameRemoved( | 3703 void WebContentsImpl::OnFrameRemoved( |
| 3703 RenderViewHostImpl* render_view_host, | 3704 RenderViewHostImpl* render_view_host, |
| 3704 int64 frame_id) { | 3705 int64 frame_id) { |
| 3705 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 3706 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
| 3706 FrameDetached(render_view_host, frame_id)); | 3707 FrameDetached(render_view_host, frame_id)); |
| 3707 } | 3708 } |
| 3708 | 3709 |
| 3709 } // namespace content | 3710 } // namespace content |
| OLD | NEW |