| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/tab_contents/tab_contents.h" | 5 #include "chrome/browser/tab_contents/tab_contents.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 | 8 |
| 9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
| 10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 registrar_(), | 327 registrar_(), |
| 328 ALLOW_THIS_IN_INITIALIZER_LIST(printing_( | 328 ALLOW_THIS_IN_INITIALIZER_LIST(printing_( |
| 329 new printing::PrintViewManager(*this))), | 329 new printing::PrintViewManager(*this))), |
| 330 save_package_(), | 330 save_package_(), |
| 331 autocomplete_history_manager_(), | 331 autocomplete_history_manager_(), |
| 332 autofill_manager_(), | 332 autofill_manager_(), |
| 333 plugin_installer_(), | 333 plugin_installer_(), |
| 334 bookmark_drag_(NULL), | 334 bookmark_drag_(NULL), |
| 335 ALLOW_THIS_IN_INITIALIZER_LIST(fav_icon_helper_(this)), | 335 ALLOW_THIS_IN_INITIALIZER_LIST(fav_icon_helper_(this)), |
| 336 is_loading_(false), | 336 is_loading_(false), |
| 337 is_crashed_(false), | 337 crashed_status_(base::TERMINATION_STATUS_STILL_RUNNING), |
| 338 crashed_error_code_(0), |
| 338 waiting_for_response_(false), | 339 waiting_for_response_(false), |
| 339 max_page_id_(-1), | 340 max_page_id_(-1), |
| 340 current_load_start_(), | 341 current_load_start_(), |
| 341 load_state_(net::LOAD_STATE_IDLE), | 342 load_state_(net::LOAD_STATE_IDLE), |
| 342 load_state_host_(), | 343 load_state_host_(), |
| 343 upload_size_(0), | 344 upload_size_(0), |
| 344 upload_position_(0), | 345 upload_position_(0), |
| 345 received_page_title_(false), | 346 received_page_title_(false), |
| 346 is_starred_(false), | 347 is_starred_(false), |
| 347 contents_mime_type_(), | 348 contents_mime_type_(), |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 758 } | 759 } |
| 759 | 760 |
| 760 void TabContents::AddNavigationObserver(WebNavigationObserver* observer) { | 761 void TabContents::AddNavigationObserver(WebNavigationObserver* observer) { |
| 761 web_navigation_observers_.AddObserver(observer); | 762 web_navigation_observers_.AddObserver(observer); |
| 762 } | 763 } |
| 763 | 764 |
| 764 void TabContents::RemoveNavigationObserver(WebNavigationObserver* observer) { | 765 void TabContents::RemoveNavigationObserver(WebNavigationObserver* observer) { |
| 765 web_navigation_observers_.RemoveObserver(observer); | 766 web_navigation_observers_.RemoveObserver(observer); |
| 766 } | 767 } |
| 767 | 768 |
| 768 void TabContents::SetIsCrashed(bool state) { | 769 void TabContents::SetIsCrashed(base::TerminationStatus status, int error_code) { |
| 769 if (state == is_crashed_) | 770 if (status == crashed_status_) |
| 770 return; | 771 return; |
| 771 | 772 |
| 772 is_crashed_ = state; | 773 crashed_status_ = status; |
| 774 crashed_error_code_ = error_code; |
| 773 NotifyNavigationStateChanged(INVALIDATE_TAB); | 775 NotifyNavigationStateChanged(INVALIDATE_TAB); |
| 774 } | 776 } |
| 775 | 777 |
| 776 void TabContents::PageActionStateChanged() { | 778 void TabContents::PageActionStateChanged() { |
| 777 NotifyNavigationStateChanged(TabContents::INVALIDATE_PAGE_ACTIONS); | 779 NotifyNavigationStateChanged(TabContents::INVALIDATE_PAGE_ACTIONS); |
| 778 } | 780 } |
| 779 | 781 |
| 780 void TabContents::NotifyNavigationStateChanged(unsigned changed_flags) { | 782 void TabContents::NotifyNavigationStateChanged(unsigned changed_flags) { |
| 781 if (delegate_) | 783 if (delegate_) |
| 782 delegate_->NavigationStateChanged(this, changed_flags); | 784 delegate_->NavigationStateChanged(this, changed_flags); |
| (...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2388 | 2390 |
| 2389 void TabContents::RenderViewReady(RenderViewHost* rvh) { | 2391 void TabContents::RenderViewReady(RenderViewHost* rvh) { |
| 2390 if (rvh != render_view_host()) { | 2392 if (rvh != render_view_host()) { |
| 2391 // Don't notify the world, since this came from a renderer in the | 2393 // Don't notify the world, since this came from a renderer in the |
| 2392 // background. | 2394 // background. |
| 2393 return; | 2395 return; |
| 2394 } | 2396 } |
| 2395 | 2397 |
| 2396 NotifyConnected(); | 2398 NotifyConnected(); |
| 2397 bool was_crashed = is_crashed(); | 2399 bool was_crashed = is_crashed(); |
| 2398 SetIsCrashed(false); | 2400 SetIsCrashed(base::TERMINATION_STATUS_STILL_RUNNING, 0); |
| 2399 | 2401 |
| 2400 // Restore the focus to the tab (otherwise the focus will be on the top | 2402 // Restore the focus to the tab (otherwise the focus will be on the top |
| 2401 // window). | 2403 // window). |
| 2402 if (was_crashed && !FocusLocationBarByDefault() && | 2404 if (was_crashed && !FocusLocationBarByDefault() && |
| 2403 (!delegate_ || delegate_->ShouldFocusPageAfterCrash())) { | 2405 (!delegate_ || delegate_->ShouldFocusPageAfterCrash())) { |
| 2404 Focus(); | 2406 Focus(); |
| 2405 } | 2407 } |
| 2406 } | 2408 } |
| 2407 | 2409 |
| 2408 void TabContents::RenderViewGone(RenderViewHost* rvh) { | 2410 void TabContents::RenderViewGone(RenderViewHost* rvh, |
| 2411 base::TerminationStatus status, |
| 2412 int error_code) { |
| 2409 // Ask the print preview if this renderer was valuable. | 2413 // Ask the print preview if this renderer was valuable. |
| 2410 if (!printing_->OnRenderViewGone(rvh)) | 2414 if (!printing_->OnRenderViewGone(rvh)) |
| 2411 return; | 2415 return; |
| 2412 if (rvh != render_view_host()) { | 2416 if (rvh != render_view_host()) { |
| 2413 // The pending page's RenderViewHost is gone. | 2417 // The pending page's RenderViewHost is gone. |
| 2414 return; | 2418 return; |
| 2415 } | 2419 } |
| 2416 | 2420 |
| 2417 SetIsLoading(false, NULL); | 2421 SetIsLoading(false, NULL); |
| 2418 NotifyDisconnected(); | 2422 NotifyDisconnected(); |
| 2419 SetIsCrashed(true); | 2423 SetIsCrashed(status, error_code); |
| 2420 | 2424 |
| 2421 // Remove all infobars. | 2425 // Remove all infobars. |
| 2422 for (int i = infobar_delegate_count() - 1; i >=0 ; --i) | 2426 for (int i = infobar_delegate_count() - 1; i >=0 ; --i) |
| 2423 RemoveInfoBar(GetInfoBarDelegateAt(i)); | 2427 RemoveInfoBar(GetInfoBarDelegateAt(i)); |
| 2424 | 2428 |
| 2425 // Tell the view that we've crashed so it can prepare the sad tab page. | 2429 // Tell the view that we've crashed so it can prepare the sad tab page. |
| 2426 // Only do this if we're not in browser shutdown, so that TabContents | 2430 // Only do this if we're not in browser shutdown, so that TabContents |
| 2427 // objects that are not in a browser (e.g., HTML dialogs) and thus are | 2431 // objects that are not in a browser (e.g., HTML dialogs) and thus are |
| 2428 // visible do not flash a sad tab page. | 2432 // visible do not flash a sad tab page. |
| 2429 if (browser_shutdown::GetShutdownType() == browser_shutdown::NOT_VALID) | 2433 if (browser_shutdown::GetShutdownType() == browser_shutdown::NOT_VALID) |
| (...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3028 delegate()->BeforeUnloadFired(this, proceed, proceed_to_fire_unload); | 3032 delegate()->BeforeUnloadFired(this, proceed, proceed_to_fire_unload); |
| 3029 } | 3033 } |
| 3030 | 3034 |
| 3031 void TabContents::DidStartLoadingFromRenderManager( | 3035 void TabContents::DidStartLoadingFromRenderManager( |
| 3032 RenderViewHost* render_view_host) { | 3036 RenderViewHost* render_view_host) { |
| 3033 DidStartLoading(); | 3037 DidStartLoading(); |
| 3034 } | 3038 } |
| 3035 | 3039 |
| 3036 void TabContents::RenderViewGoneFromRenderManager( | 3040 void TabContents::RenderViewGoneFromRenderManager( |
| 3037 RenderViewHost* render_view_host) { | 3041 RenderViewHost* render_view_host) { |
| 3038 RenderViewGone(render_view_host); | 3042 DCHECK(crashed_status_ != base::TERMINATION_STATUS_STILL_RUNNING); |
| 3043 RenderViewGone(render_view_host, crashed_status_, crashed_error_code_); |
| 3039 } | 3044 } |
| 3040 | 3045 |
| 3041 void TabContents::UpdateRenderViewSizeForRenderManager() { | 3046 void TabContents::UpdateRenderViewSizeForRenderManager() { |
| 3042 // TODO(brettw) this is a hack. See TabContentsView::SizeContents. | 3047 // TODO(brettw) this is a hack. See TabContentsView::SizeContents. |
| 3043 gfx::Size size = view_->GetContainerSize(); | 3048 gfx::Size size = view_->GetContainerSize(); |
| 3044 // 0x0 isn't a valid window size (minimal window size is 1x1) but it may be | 3049 // 0x0 isn't a valid window size (minimal window size is 1x1) but it may be |
| 3045 // here during container initialization and normal window size will be set | 3050 // here during container initialization and normal window size will be set |
| 3046 // later. In case of tab duplication this resizing to 0x0 prevents setting | 3051 // later. In case of tab duplication this resizing to 0x0 prevents setting |
| 3047 // normal size later so just ignore it. | 3052 // normal size later so just ignore it. |
| 3048 if (!size.IsEmpty()) | 3053 if (!size.IsEmpty()) |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3236 } | 3241 } |
| 3237 | 3242 |
| 3238 void TabContents::set_encoding(const std::string& encoding) { | 3243 void TabContents::set_encoding(const std::string& encoding) { |
| 3239 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); | 3244 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); |
| 3240 } | 3245 } |
| 3241 | 3246 |
| 3242 void TabContents::SetAppIcon(const SkBitmap& app_icon) { | 3247 void TabContents::SetAppIcon(const SkBitmap& app_icon) { |
| 3243 app_icon_ = app_icon; | 3248 app_icon_ = app_icon; |
| 3244 NotifyNavigationStateChanged(INVALIDATE_TITLE); | 3249 NotifyNavigationStateChanged(INVALIDATE_TITLE); |
| 3245 } | 3250 } |
| OLD | NEW |