Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 368 autofill_manager_(), | 368 autofill_manager_(), |
| 369 plugin_installer_(), | 369 plugin_installer_(), |
| 370 bookmark_drag_(NULL), | 370 bookmark_drag_(NULL), |
| 371 ALLOW_THIS_IN_INITIALIZER_LIST(fav_icon_helper_(this)), | 371 ALLOW_THIS_IN_INITIALIZER_LIST(fav_icon_helper_(this)), |
| 372 is_loading_(false), | 372 is_loading_(false), |
| 373 crashed_status_(base::TERMINATION_STATUS_STILL_RUNNING), | 373 crashed_status_(base::TERMINATION_STATUS_STILL_RUNNING), |
| 374 crashed_error_code_(0), | 374 crashed_error_code_(0), |
| 375 waiting_for_response_(false), | 375 waiting_for_response_(false), |
| 376 max_page_id_(-1), | 376 max_page_id_(-1), |
| 377 current_load_start_(), | 377 current_load_start_(), |
| 378 pplt_load_start_(), | |
| 378 load_state_(net::LOAD_STATE_IDLE), | 379 load_state_(net::LOAD_STATE_IDLE), |
| 379 load_state_host_(), | 380 load_state_host_(), |
| 380 upload_size_(0), | 381 upload_size_(0), |
| 381 upload_position_(0), | 382 upload_position_(0), |
| 382 received_page_title_(false), | 383 received_page_title_(false), |
| 383 is_starred_(false), | 384 is_starred_(false), |
| 384 contents_mime_type_(), | 385 contents_mime_type_(), |
| 385 encoding_(), | 386 encoding_(), |
| 386 blocked_contents_(NULL), | 387 blocked_contents_(NULL), |
| 387 all_contents_blocked_(false), | 388 all_contents_blocked_(false), |
| (...skipping 1259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1647 | 1648 |
| 1648 ProvisionalLoadDetails details( | 1649 ProvisionalLoadDetails details( |
| 1649 is_main_frame, | 1650 is_main_frame, |
| 1650 controller_.IsURLInPageNavigation(validated_url), | 1651 controller_.IsURLInPageNavigation(validated_url), |
| 1651 validated_url, std::string(), false, is_error_page, frame_id); | 1652 validated_url, std::string(), false, is_error_page, frame_id); |
| 1652 NotificationService::current()->Notify( | 1653 NotificationService::current()->Notify( |
| 1653 NotificationType::FRAME_PROVISIONAL_LOAD_START, | 1654 NotificationType::FRAME_PROVISIONAL_LOAD_START, |
| 1654 Source<NavigationController>(&controller_), | 1655 Source<NavigationController>(&controller_), |
| 1655 Details<ProvisionalLoadDetails>(&details)); | 1656 Details<ProvisionalLoadDetails>(&details)); |
| 1656 if (is_main_frame) { | 1657 if (is_main_frame) { |
| 1658 // Record the beginning of a new PPLT navigation. | |
|
brettw
2011/01/26 20:16:47
I realized how we can do this just in your compone
| |
| 1659 pplt_load_start_ = base::TimeTicks::Now(); | |
| 1660 | |
| 1657 // If we're displaying a network error page do not reset the content | 1661 // If we're displaying a network error page do not reset the content |
| 1658 // settings delegate's cookies so the user has a chance to modify cookie | 1662 // settings delegate's cookies so the user has a chance to modify cookie |
| 1659 // settings. | 1663 // settings. |
| 1660 if (!is_error_page) | 1664 if (!is_error_page) |
| 1661 content_settings_delegate_->ClearCookieSpecificContentSettings(); | 1665 content_settings_delegate_->ClearCookieSpecificContentSettings(); |
| 1662 content_settings_delegate_->ClearGeolocationContentSettings(); | 1666 content_settings_delegate_->ClearGeolocationContentSettings(); |
| 1663 | 1667 |
| 1664 // Check if the URL we are about to load has been prerendered by any chance, | 1668 // Check if the URL we are about to load has been prerendered by any chance, |
| 1665 // and use it if possible. | 1669 // and use it if possible. |
| 1666 MaybeUsePreloadedPage(url); | 1670 MaybeUsePreloadedPage(url); |
| (...skipping 1140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2807 details.reset(new LoadNotificationDetails( | 2811 details.reset(new LoadNotificationDetails( |
| 2808 entry->virtual_url(), | 2812 entry->virtual_url(), |
| 2809 entry->transition_type(), | 2813 entry->transition_type(), |
| 2810 elapsed, | 2814 elapsed, |
| 2811 &controller_, | 2815 &controller_, |
| 2812 controller_.GetCurrentEntryIndex())); | 2816 controller_.GetCurrentEntryIndex())); |
| 2813 } | 2817 } |
| 2814 | 2818 |
| 2815 SetIsLoading(false, details.get()); | 2819 SetIsLoading(false, details.get()); |
| 2816 | 2820 |
| 2821 // Compute the PPLT metric and report it in a histogram, if needed. | |
| 2822 PrerenderManager* pm = profile()->GetPrerenderManager(); | |
| 2823 if (pm != NULL && !pplt_load_start_.is_null()) | |
| 2824 pm->RecordPerceivedPageLoadTime(base::TimeTicks::Now() - pplt_load_start_); | |
| 2825 | |
| 2826 // Reset the PPLT metric. | |
| 2827 pplt_load_start_ = base::TimeTicks(); | |
| 2828 | |
| 2817 // Notify observers about navigation. | 2829 // Notify observers about navigation. |
| 2818 FOR_EACH_OBSERVER(WebNavigationObserver, web_navigation_observers_, | 2830 FOR_EACH_OBSERVER(WebNavigationObserver, web_navigation_observers_, |
| 2819 DidStopLoading()); | 2831 DidStopLoading()); |
| 2820 } | 2832 } |
| 2821 | 2833 |
| 2822 void TabContents::DidChangeLoadProgress(double progress) { | 2834 void TabContents::DidChangeLoadProgress(double progress) { |
| 2823 if (delegate()) | 2835 if (delegate()) |
| 2824 delegate()->LoadProgressChanged(progress); | 2836 delegate()->LoadProgressChanged(progress); |
| 2825 } | 2837 } |
| 2826 | 2838 |
| (...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3386 } | 3398 } |
| 3387 | 3399 |
| 3388 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { | 3400 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { |
| 3389 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh); | 3401 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh); |
| 3390 rwh_view->SetSize(view()->GetContainerSize()); | 3402 rwh_view->SetSize(view()->GetContainerSize()); |
| 3391 } | 3403 } |
| 3392 | 3404 |
| 3393 bool TabContents::MaybeUsePreloadedPage(const GURL& url) { | 3405 bool TabContents::MaybeUsePreloadedPage(const GURL& url) { |
| 3394 PrerenderManager* pm = profile()->GetPrerenderManager(); | 3406 PrerenderManager* pm = profile()->GetPrerenderManager(); |
| 3395 if (pm != NULL) { | 3407 if (pm != NULL) { |
| 3396 if (pm->MaybeUsePreloadedPage(this, url)) { | 3408 if (pm->MaybeUsePreloadedPage(this, url)) |
| 3397 // TODO(tburkard): If the preloaded page has not finished preloading | |
| 3398 // yet, we should not do this. | |
| 3399 DidStopLoading(); | |
| 3400 return true; | 3409 return true; |
| 3401 } | |
| 3402 } | 3410 } |
| 3403 return false; | 3411 return false; |
| 3404 } | 3412 } |
| OLD | NEW |