| 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/logging.h" | 10 #include "base/logging.h" |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 } | 300 } |
| 301 | 301 |
| 302 private: | 302 private: |
| 303 WebContentsImpl* owner_; | 303 WebContentsImpl* owner_; |
| 304 | 304 |
| 305 DISALLOW_COPY_AND_ASSIGN(DestructionObserver); | 305 DISALLOW_COPY_AND_ASSIGN(DestructionObserver); |
| 306 }; | 306 }; |
| 307 | 307 |
| 308 // WebContentsImpl ------------------------------------------------------------- | 308 // WebContentsImpl ------------------------------------------------------------- |
| 309 | 309 |
| 310 WebContentsImpl::PendingNavigationParams::PendingNavigationParams() { |
| 311 } |
| 312 |
| 313 WebContentsImpl::PendingNavigationParams::PendingNavigationParams( |
| 314 const GlobalRequestID& global_request_id) |
| 315 : global_request_id(global_request_id) { |
| 316 } |
| 317 |
| 310 WebContentsImpl::WebContentsImpl( | 318 WebContentsImpl::WebContentsImpl( |
| 311 BrowserContext* browser_context, | 319 BrowserContext* browser_context, |
| 312 WebContentsImpl* opener) | 320 WebContentsImpl* opener) |
| 313 : delegate_(NULL), | 321 : delegate_(NULL), |
| 314 controller_(this, browser_context), | 322 controller_(this, browser_context), |
| 315 render_view_host_delegate_view_(NULL), | 323 render_view_host_delegate_view_(NULL), |
| 316 opener_(opener), | 324 opener_(opener), |
| 317 #if defined(OS_WIN) && defined(USE_AURA) | 325 #if defined(OS_WIN) && defined(USE_AURA) |
| 318 accessible_parent_(NULL), | 326 accessible_parent_(NULL), |
| 319 #endif | 327 #endif |
| (...skipping 2706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3026 view_->CloseTabAfterEventTracking(); | 3034 view_->CloseTabAfterEventTracking(); |
| 3027 return; | 3035 return; |
| 3028 } | 3036 } |
| 3029 #endif | 3037 #endif |
| 3030 | 3038 |
| 3031 // Ignore this if it comes from a RenderViewHost that we aren't showing. | 3039 // Ignore this if it comes from a RenderViewHost that we aren't showing. |
| 3032 if (delegate_ && rvh == GetRenderViewHost()) | 3040 if (delegate_ && rvh == GetRenderViewHost()) |
| 3033 delegate_->CloseContents(this); | 3041 delegate_->CloseContents(this); |
| 3034 } | 3042 } |
| 3035 | 3043 |
| 3044 void WebContentsImpl::OnCrossSiteResponse( |
| 3045 RenderViewHost* pending_render_view_host, |
| 3046 const GlobalRequestID& global_request_id) { |
| 3047 // This should be called when the pending RVH is ready to commit. |
| 3048 DCHECK_EQ(pending_render_view_host, |
| 3049 render_manager_.pending_render_view_host()); |
| 3050 |
| 3051 // Remember the request ID until the unload handler has run. |
| 3052 pending_nav_params_.reset(new PendingNavigationParams(global_request_id)); |
| 3053 |
| 3054 // Run the unload handler of the current page. |
| 3055 render_manager_.SwapOutOldPage(); |
| 3056 } |
| 3057 |
| 3036 void WebContentsImpl::SwappedOut(RenderViewHost* rvh) { | 3058 void WebContentsImpl::SwappedOut(RenderViewHost* rvh) { |
| 3037 if (delegate_ && rvh == GetRenderViewHost()) | 3059 if (rvh != GetRenderViewHost()) { |
| 3060 pending_nav_params_.reset(); |
| 3061 return; |
| 3062 } |
| 3063 |
| 3064 if (delegate_) |
| 3038 delegate_->SwappedOut(this); | 3065 delegate_->SwappedOut(this); |
| 3066 |
| 3067 // Make sure we have a pending navigation from OnCrossSiteResponse above. |
| 3068 // If not (e.g., for data URLs that don't make network requests), just return |
| 3069 // early and ignore. |
| 3070 if (!pending_nav_params_.get()) |
| 3071 return; |
| 3072 |
| 3073 // Now that the unload handler has run, we need to resume the paused response. |
| 3074 if (render_manager_.pending_render_view_host()) { |
| 3075 RenderProcessHostImpl* pending_process = |
| 3076 static_cast<RenderProcessHostImpl*>( |
| 3077 render_manager_.pending_render_view_host()->GetProcess()); |
| 3078 pending_process->ResumeDeferredNavigation( |
| 3079 pending_nav_params_->global_request_id); |
| 3080 } |
| 3081 pending_nav_params_.reset(); |
| 3039 } | 3082 } |
| 3040 | 3083 |
| 3041 void WebContentsImpl::RequestMove(const gfx::Rect& new_bounds) { | 3084 void WebContentsImpl::RequestMove(const gfx::Rect& new_bounds) { |
| 3042 if (delegate_ && delegate_->IsPopupOrPanel(this)) | 3085 if (delegate_ && delegate_->IsPopupOrPanel(this)) |
| 3043 delegate_->MoveContents(this, new_bounds); | 3086 delegate_->MoveContents(this, new_bounds); |
| 3044 } | 3087 } |
| 3045 | 3088 |
| 3046 void WebContentsImpl::DidStartLoading(RenderViewHost* render_view_host) { | 3089 void WebContentsImpl::DidStartLoading(RenderViewHost* render_view_host) { |
| 3047 SetIsLoading(true, NULL); | 3090 SetIsLoading(true, NULL); |
| 3048 | 3091 |
| (...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3628 } | 3671 } |
| 3629 | 3672 |
| 3630 BrowserPluginGuestManager* | 3673 BrowserPluginGuestManager* |
| 3631 WebContentsImpl::GetBrowserPluginGuestManager() const { | 3674 WebContentsImpl::GetBrowserPluginGuestManager() const { |
| 3632 return static_cast<BrowserPluginGuestManager*>( | 3675 return static_cast<BrowserPluginGuestManager*>( |
| 3633 GetBrowserContext()->GetUserData( | 3676 GetBrowserContext()->GetUserData( |
| 3634 browser_plugin::kBrowserPluginGuestManagerKeyName)); | 3677 browser_plugin::kBrowserPluginGuestManagerKeyName)); |
| 3635 } | 3678 } |
| 3636 | 3679 |
| 3637 } // namespace content | 3680 } // namespace content |
| OLD | NEW |