| 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/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 3374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3385 if (delegate_) | 3385 if (delegate_) |
| 3386 delegate_->ShowRepostFormWarningDialog(this); | 3386 delegate_->ShowRepostFormWarningDialog(this); |
| 3387 } | 3387 } |
| 3388 | 3388 |
| 3389 bool WebContentsImpl::HasAccessedInitialDocument() { | 3389 bool WebContentsImpl::HasAccessedInitialDocument() { |
| 3390 return has_accessed_initial_document_; | 3390 return has_accessed_initial_document_; |
| 3391 } | 3391 } |
| 3392 | 3392 |
| 3393 // Notifies the RenderWidgetHost instance about the fact that the page is | 3393 // Notifies the RenderWidgetHost instance about the fact that the page is |
| 3394 // loading, or done loading. | 3394 // loading, or done loading. |
| 3395 void WebContentsImpl::SetIsLoading(RenderViewHost* render_view_host, | 3395 void WebContentsImpl::SetIsLoading(bool is_loading, |
| 3396 bool is_loading, | |
| 3397 bool to_different_document, | 3396 bool to_different_document, |
| 3398 LoadNotificationDetails* details) { | 3397 LoadNotificationDetails* details) { |
| 3399 if (is_loading == is_loading_) | 3398 if (is_loading == is_loading_) |
| 3400 return; | 3399 return; |
| 3401 | 3400 |
| 3402 if (!is_loading) { | 3401 if (!is_loading) { |
| 3403 load_state_ = net::LoadStateWithParam(net::LOAD_STATE_IDLE, | 3402 load_state_ = net::LoadStateWithParam(net::LOAD_STATE_IDLE, |
| 3404 base::string16()); | 3403 base::string16()); |
| 3405 load_state_host_.clear(); | 3404 load_state_host_.clear(); |
| 3406 upload_size_ = 0; | 3405 upload_size_ = 0; |
| 3407 upload_position_ = 0; | 3406 upload_position_ = 0; |
| 3408 } | 3407 } |
| 3409 | 3408 |
| 3410 GetRenderManager()->SetIsLoading(is_loading); | 3409 GetRenderManager()->SetIsLoading(is_loading); |
| 3411 | 3410 |
| 3412 is_loading_ = is_loading; | 3411 is_loading_ = is_loading; |
| 3413 waiting_for_response_ = is_loading; | 3412 waiting_for_response_ = is_loading; |
| 3414 is_load_to_different_document_ = to_different_document; | 3413 is_load_to_different_document_ = to_different_document; |
| 3415 | 3414 |
| 3416 if (delegate_) | 3415 if (delegate_) |
| 3417 delegate_->LoadingStateChanged(this, to_different_document); | 3416 delegate_->LoadingStateChanged(this, to_different_document); |
| 3418 NotifyNavigationStateChanged(INVALIDATE_TYPE_LOAD); | 3417 NotifyNavigationStateChanged(INVALIDATE_TYPE_LOAD); |
| 3419 | 3418 |
| 3420 std::string url = (details ? details->url.possibly_invalid_spec() : "NULL"); | 3419 std::string url = (details ? details->url.possibly_invalid_spec() : "NULL"); |
| 3421 if (is_loading) { | 3420 if (is_loading) { |
| 3422 TRACE_EVENT_ASYNC_BEGIN1("browser,navigation", "WebContentsImpl Loading", | 3421 TRACE_EVENT_ASYNC_BEGIN1("browser,navigation", "WebContentsImpl Loading", |
| 3423 this, "URL", url); | 3422 this, "URL", url); |
| 3424 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 3423 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidStartLoading()); |
| 3425 DidStartLoading(render_view_host)); | |
| 3426 } else { | 3424 } else { |
| 3427 TRACE_EVENT_ASYNC_END1("browser,navigation", "WebContentsImpl Loading", | 3425 TRACE_EVENT_ASYNC_END1("browser,navigation", "WebContentsImpl Loading", |
| 3428 this, "URL", url); | 3426 this, "URL", url); |
| 3429 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 3427 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidStopLoading()); |
| 3430 DidStopLoading(render_view_host)); | |
| 3431 } | 3428 } |
| 3432 | 3429 |
| 3433 // TODO(avi): Remove. http://crbug.com/170921 | 3430 // TODO(avi): Remove. http://crbug.com/170921 |
| 3434 int type = is_loading ? NOTIFICATION_LOAD_START : NOTIFICATION_LOAD_STOP; | 3431 int type = is_loading ? NOTIFICATION_LOAD_START : NOTIFICATION_LOAD_STOP; |
| 3435 NotificationDetails det = NotificationService::NoDetails(); | 3432 NotificationDetails det = NotificationService::NoDetails(); |
| 3436 if (details) | 3433 if (details) |
| 3437 det = Details<LoadNotificationDetails>(details); | 3434 det = Details<LoadNotificationDetails>(details); |
| 3438 NotificationService::current()->Notify( | 3435 NotificationService::current()->Notify( |
| 3439 type, Source<NavigationController>(&controller_), det); | 3436 type, Source<NavigationController>(&controller_), det); |
| 3440 } | 3437 } |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3828 if (IsFullscreenForCurrentTab()) | 3825 if (IsFullscreenForCurrentTab()) |
| 3829 ExitFullscreenMode(); | 3826 ExitFullscreenMode(); |
| 3830 | 3827 |
| 3831 // Cancel any visible dialogs so they are not left dangling over the sad tab. | 3828 // Cancel any visible dialogs so they are not left dangling over the sad tab. |
| 3832 if (dialog_manager_) | 3829 if (dialog_manager_) |
| 3833 dialog_manager_->CancelActiveAndPendingDialogs(this); | 3830 dialog_manager_->CancelActiveAndPendingDialogs(this); |
| 3834 | 3831 |
| 3835 if (delegate_) | 3832 if (delegate_) |
| 3836 delegate_->HideValidationMessage(this); | 3833 delegate_->HideValidationMessage(this); |
| 3837 | 3834 |
| 3838 SetIsLoading(rvh, false, true, NULL); | 3835 SetIsLoading(false, true, nullptr); |
| 3839 NotifyDisconnected(); | 3836 NotifyDisconnected(); |
| 3840 SetIsCrashed(status, error_code); | 3837 SetIsCrashed(status, error_code); |
| 3841 | 3838 |
| 3842 // Reset the loading progress. TODO(avi): What does it mean to have a | 3839 // Reset the loading progress. TODO(avi): What does it mean to have a |
| 3843 // "renderer crash" when there is more than one renderer process serving a | 3840 // "renderer crash" when there is more than one renderer process serving a |
| 3844 // webpage? Once this function is called at a more granular frame level, we | 3841 // webpage? Once this function is called at a more granular frame level, we |
| 3845 // probably will need to more granularly reset the state here. | 3842 // probably will need to more granularly reset the state here. |
| 3846 ResetLoadProgressState(); | 3843 ResetLoadProgressState(); |
| 3847 | 3844 |
| 3848 FOR_EACH_OBSERVER(WebContentsObserver, | 3845 FOR_EACH_OBSERVER(WebContentsObserver, |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3936 #endif | 3933 #endif |
| 3937 } | 3934 } |
| 3938 | 3935 |
| 3939 void WebContentsImpl::RequestMove(const gfx::Rect& new_bounds) { | 3936 void WebContentsImpl::RequestMove(const gfx::Rect& new_bounds) { |
| 3940 if (delegate_ && delegate_->IsPopupOrPanel(this)) | 3937 if (delegate_ && delegate_->IsPopupOrPanel(this)) |
| 3941 delegate_->MoveContents(this, new_bounds); | 3938 delegate_->MoveContents(this, new_bounds); |
| 3942 } | 3939 } |
| 3943 | 3940 |
| 3944 void WebContentsImpl::DidStartLoading(RenderFrameHost* render_frame_host, | 3941 void WebContentsImpl::DidStartLoading(RenderFrameHost* render_frame_host, |
| 3945 bool to_different_document) { | 3942 bool to_different_document) { |
| 3946 SetIsLoading(render_frame_host->GetRenderViewHost(), true, | 3943 SetIsLoading(true, to_different_document, nullptr); |
| 3947 to_different_document, NULL); | |
| 3948 | 3944 |
| 3949 // Notify accessibility that the user is navigating away from the | 3945 // Notify accessibility that the user is navigating away from the |
| 3950 // current document. | 3946 // current document. |
| 3951 // | 3947 // |
| 3952 // TODO(dmazzoni): do this using a WebContentsObserver. | 3948 // TODO(dmazzoni): do this using a WebContentsObserver. |
| 3953 FrameTreeNode* ftn = static_cast<RenderFrameHostImpl*>(render_frame_host)-> | 3949 FrameTreeNode* ftn = static_cast<RenderFrameHostImpl*>(render_frame_host)-> |
| 3954 frame_tree_node(); | 3950 frame_tree_node(); |
| 3955 BrowserAccessibilityManager* manager = | 3951 BrowserAccessibilityManager* manager = |
| 3956 ftn->current_frame_host()->browser_accessibility_manager(); | 3952 ftn->current_frame_host()->browser_accessibility_manager(); |
| 3957 if (manager) | 3953 if (manager) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 3973 base::TimeTicks::Now() - navigator->GetCurrentLoadStart(); | 3969 base::TimeTicks::Now() - navigator->GetCurrentLoadStart(); |
| 3974 | 3970 |
| 3975 details.reset(new LoadNotificationDetails( | 3971 details.reset(new LoadNotificationDetails( |
| 3976 entry->GetVirtualURL(), | 3972 entry->GetVirtualURL(), |
| 3977 entry->GetTransitionType(), | 3973 entry->GetTransitionType(), |
| 3978 elapsed, | 3974 elapsed, |
| 3979 &controller_, | 3975 &controller_, |
| 3980 controller_.GetCurrentEntryIndex())); | 3976 controller_.GetCurrentEntryIndex())); |
| 3981 } | 3977 } |
| 3982 | 3978 |
| 3983 SetIsLoading(render_frame_host->GetRenderViewHost(), false, true, | 3979 SetIsLoading(false, true, details.get()); |
| 3984 details.get()); | |
| 3985 } | 3980 } |
| 3986 | 3981 |
| 3987 void WebContentsImpl::DidCancelLoading() { | 3982 void WebContentsImpl::DidCancelLoading() { |
| 3988 controller_.DiscardNonCommittedEntries(); | 3983 controller_.DiscardNonCommittedEntries(); |
| 3989 | 3984 |
| 3990 // Update the URL display. | 3985 // Update the URL display. |
| 3991 NotifyNavigationStateChanged(INVALIDATE_TYPE_URL); | 3986 NotifyNavigationStateChanged(INVALIDATE_TYPE_URL); |
| 3992 } | 3987 } |
| 3993 | 3988 |
| 3994 void WebContentsImpl::DidAccessInitialDocument() { | 3989 void WebContentsImpl::DidAccessInitialDocument() { |
| (...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4652 node->render_manager()->ResumeResponseDeferredAtStart(); | 4647 node->render_manager()->ResumeResponseDeferredAtStart(); |
| 4653 } | 4648 } |
| 4654 | 4649 |
| 4655 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { | 4650 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { |
| 4656 force_disable_overscroll_content_ = force_disable; | 4651 force_disable_overscroll_content_ = force_disable; |
| 4657 if (view_) | 4652 if (view_) |
| 4658 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); | 4653 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
| 4659 } | 4654 } |
| 4660 | 4655 |
| 4661 } // namespace content | 4656 } // namespace content |
| OLD | NEW |