| 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 #if defined(OS_CHROMEOS) | 7 #if defined(OS_CHROMEOS) |
| 8 // For GdkScreen | 8 // For GdkScreen |
| 9 #include <gdk/gdk.h> | 9 #include <gdk/gdk.h> |
| 10 #endif // defined(OS_CHROMEOS) | 10 #endif // defined(OS_CHROMEOS) |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 break; // Fall through to rest of function. | 220 break; // Fall through to rest of function. |
| 221 } | 221 } |
| 222 | 222 |
| 223 if (entry.restore_type() == NavigationEntry::RESTORE_LAST_SESSION && | 223 if (entry.restore_type() == NavigationEntry::RESTORE_LAST_SESSION && |
| 224 profile->DidLastSessionExitCleanly()) | 224 profile->DidLastSessionExitCleanly()) |
| 225 return ViewMsg_Navigate_Params::RESTORE; | 225 return ViewMsg_Navigate_Params::RESTORE; |
| 226 | 226 |
| 227 return ViewMsg_Navigate_Params::NORMAL; | 227 return ViewMsg_Navigate_Params::NORMAL; |
| 228 } | 228 } |
| 229 | 229 |
| 230 void MakeNavigateParams(const NavigationController& controller, | 230 void MakeNavigateParams(const NavigationEntry& entry, |
| 231 const NavigationController& controller, |
| 231 NavigationController::ReloadType reload_type, | 232 NavigationController::ReloadType reload_type, |
| 232 ViewMsg_Navigate_Params* params) { | 233 ViewMsg_Navigate_Params* params) { |
| 233 const NavigationEntry& entry = *controller.pending_entry(); | |
| 234 params->page_id = entry.page_id(); | 234 params->page_id = entry.page_id(); |
| 235 params->pending_history_list_offset = controller.pending_entry_index(); | 235 params->pending_history_list_offset = controller.GetIndexOfEntry(&entry); |
| 236 params->current_history_list_offset = controller.last_committed_entry_index(); | 236 params->current_history_list_offset = controller.last_committed_entry_index(); |
| 237 params->current_history_list_length = controller.entry_count(); | 237 params->current_history_list_length = controller.entry_count(); |
| 238 params->url = entry.url(); | 238 params->url = entry.url(); |
| 239 params->referrer = entry.referrer(); | 239 params->referrer = entry.referrer(); |
| 240 params->transition = entry.transition_type(); | 240 params->transition = entry.transition_type(); |
| 241 params->state = entry.content_state(); | 241 params->state = entry.content_state(); |
| 242 params->navigation_type = | 242 params->navigation_type = |
| 243 GetNavigationType(controller.profile(), entry, reload_type); | 243 GetNavigationType(controller.profile(), entry, reload_type); |
| 244 params->request_time = base::Time::Now(); | 244 params->request_time = base::Time::Now(); |
| 245 } | 245 } |
| (...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 842 | 842 |
| 843 void TabContents::OpenURL(const GURL& url, const GURL& referrer, | 843 void TabContents::OpenURL(const GURL& url, const GURL& referrer, |
| 844 WindowOpenDisposition disposition, | 844 WindowOpenDisposition disposition, |
| 845 PageTransition::Type transition) { | 845 PageTransition::Type transition) { |
| 846 if (delegate_) | 846 if (delegate_) |
| 847 delegate_->OpenURLFromTab(this, url, referrer, disposition, transition); | 847 delegate_->OpenURLFromTab(this, url, referrer, disposition, transition); |
| 848 } | 848 } |
| 849 | 849 |
| 850 bool TabContents::NavigateToPendingEntry( | 850 bool TabContents::NavigateToPendingEntry( |
| 851 NavigationController::ReloadType reload_type) { | 851 NavigationController::ReloadType reload_type) { |
| 852 const NavigationEntry& entry = *controller_.pending_entry(); | 852 return NavigateToEntry(*controller_.pending_entry(), reload_type); |
| 853 } |
| 853 | 854 |
| 855 bool TabContents::NavigateToEntry( |
| 856 const NavigationEntry& entry, |
| 857 NavigationController::ReloadType reload_type) { |
| 854 RenderViewHost* dest_render_view_host = render_manager_.Navigate(entry); | 858 RenderViewHost* dest_render_view_host = render_manager_.Navigate(entry); |
| 855 if (!dest_render_view_host) | 859 if (!dest_render_view_host) |
| 856 return false; // Unable to create the desired render view host. | 860 return false; // Unable to create the desired render view host. |
| 857 | 861 |
| 858 if (delegate_ && delegate_->ShouldEnablePreferredSizeNotifications()) { | 862 if (delegate_ && delegate_->ShouldEnablePreferredSizeNotifications()) { |
| 859 dest_render_view_host->EnablePreferredSizeChangedMode( | 863 dest_render_view_host->EnablePreferredSizeChangedMode( |
| 860 kPreferredSizeWidth | kPreferredSizeHeightThisIsSlow); | 864 kPreferredSizeWidth | kPreferredSizeHeightThisIsSlow); |
| 861 } | 865 } |
| 862 | 866 |
| 863 // For security, we should never send non-DOM-UI URLs (other than about:blank) | 867 // For security, we should never send non-DOM-UI URLs (other than about:blank) |
| (...skipping 11 matching lines...) Expand all Loading... |
| 875 devtools_manager->OnNavigatingToPendingEntry(render_view_host(), | 879 devtools_manager->OnNavigatingToPendingEntry(render_view_host(), |
| 876 dest_render_view_host, | 880 dest_render_view_host, |
| 877 entry.url()); | 881 entry.url()); |
| 878 } | 882 } |
| 879 | 883 |
| 880 // Used for page load time metrics. | 884 // Used for page load time metrics. |
| 881 current_load_start_ = base::TimeTicks::Now(); | 885 current_load_start_ = base::TimeTicks::Now(); |
| 882 | 886 |
| 883 // Navigate in the desired RenderViewHost. | 887 // Navigate in the desired RenderViewHost. |
| 884 ViewMsg_Navigate_Params navigate_params; | 888 ViewMsg_Navigate_Params navigate_params; |
| 885 MakeNavigateParams(controller_, reload_type, &navigate_params); | 889 MakeNavigateParams(entry, controller_, reload_type, &navigate_params); |
| 886 dest_render_view_host->Navigate(navigate_params); | 890 dest_render_view_host->Navigate(navigate_params); |
| 887 | 891 |
| 888 if (entry.page_id() == -1) { | 892 if (entry.page_id() == -1) { |
| 889 // HACK!! This code suppresses javascript: URLs from being added to | 893 // HACK!! This code suppresses javascript: URLs from being added to |
| 890 // session history, which is what we want to do for javascript: URLs that | 894 // session history, which is what we want to do for javascript: URLs that |
| 891 // do not generate content. What we really need is a message from the | 895 // do not generate content. What we really need is a message from the |
| 892 // renderer telling us that a new page was not created. The same message | 896 // renderer telling us that a new page was not created. The same message |
| 893 // could be used for mailto: URLs and the like. | 897 // could be used for mailto: URLs and the like. |
| 894 if (entry.url().SchemeIs(chrome::kJavaScriptScheme)) | 898 if (entry.url().SchemeIs(chrome::kJavaScriptScheme)) |
| 895 return false; | 899 return false; |
| (...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1987 last_search_result_ = FindNotificationDetails(request_id, number_of_matches, | 1991 last_search_result_ = FindNotificationDetails(request_id, number_of_matches, |
| 1988 selection, active_match_ordinal, | 1992 selection, active_match_ordinal, |
| 1989 final_update); | 1993 final_update); |
| 1990 NotificationService::current()->Notify( | 1994 NotificationService::current()->Notify( |
| 1991 NotificationType::FIND_RESULT_AVAILABLE, | 1995 NotificationType::FIND_RESULT_AVAILABLE, |
| 1992 Source<TabContents>(this), | 1996 Source<TabContents>(this), |
| 1993 Details<FindNotificationDetails>(&last_search_result_)); | 1997 Details<FindNotificationDetails>(&last_search_result_)); |
| 1994 } | 1998 } |
| 1995 | 1999 |
| 1996 void TabContents::GoToEntryAtOffset(int offset) { | 2000 void TabContents::GoToEntryAtOffset(int offset) { |
| 1997 if (!delegate_ || delegate_->OnGoToEntryOffset(offset)) | 2001 if (!delegate_ || delegate_->OnGoToEntryOffset(offset)) { |
| 1998 controller_.GoToOffset(offset); | 2002 NavigationEntry* entry = controller_.GetEntryAtOffset(offset); |
| 2003 if (!entry) |
| 2004 return; |
| 2005 // Note that we don't call NavigationController::GotToOffset() as we don't |
| 2006 // want to create a pending navigation entry (it might end up lingering |
| 2007 // http://crbug.com/51680). |
| 2008 NavigateToEntry(*entry, NavigationController::NO_RELOAD); |
| 2009 } |
| 1999 } | 2010 } |
| 2000 | 2011 |
| 2001 void TabContents::OnMissingPluginStatus(int status) { | 2012 void TabContents::OnMissingPluginStatus(int status) { |
| 2002 #if defined(OS_WIN) | 2013 #if defined(OS_WIN) |
| 2003 // TODO(PORT): pull in when plug-ins work | 2014 // TODO(PORT): pull in when plug-ins work |
| 2004 GetPluginInstaller()->OnMissingPluginStatus(status); | 2015 GetPluginInstaller()->OnMissingPluginStatus(status); |
| 2005 #endif | 2016 #endif |
| 2006 } | 2017 } |
| 2007 | 2018 |
| 2008 void TabContents::OnCrashedPlugin(const FilePath& plugin_path) { | 2019 void TabContents::OnCrashedPlugin(const FilePath& plugin_path) { |
| (...skipping 1219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3228 AddInfoBar(new SavePasswordInfoBarDelegate(this, form_to_save)); | 3239 AddInfoBar(new SavePasswordInfoBarDelegate(this, form_to_save)); |
| 3229 } | 3240 } |
| 3230 | 3241 |
| 3231 Profile* TabContents::GetProfileForPasswordManager() { | 3242 Profile* TabContents::GetProfileForPasswordManager() { |
| 3232 return profile(); | 3243 return profile(); |
| 3233 } | 3244 } |
| 3234 | 3245 |
| 3235 bool TabContents::DidLastPageLoadEncounterSSLErrors() { | 3246 bool TabContents::DidLastPageLoadEncounterSSLErrors() { |
| 3236 return controller().ssl_manager()->ProcessedSSLErrorFromRequest(); | 3247 return controller().ssl_manager()->ProcessedSSLErrorFromRequest(); |
| 3237 } | 3248 } |
| OLD | NEW |