Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: chrome/browser/tab_contents/tab_contents.cc

Issue 1090002: Send session history offset and length parameters in the Navigate message to... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "app/gfx/text_elider.h" 7 #include "app/gfx/text_elider.h"
8 #include "app/l10n_util.h" 8 #include "app/l10n_util.h"
9 #include "app/resource_bundle.h" 9 #include "app/resource_bundle.h"
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 break; // Fall through to rest of function. 197 break; // Fall through to rest of function.
198 } 198 }
199 199
200 if (entry.restore_type() == NavigationEntry::RESTORE_LAST_SESSION && 200 if (entry.restore_type() == NavigationEntry::RESTORE_LAST_SESSION &&
201 profile->DidLastSessionExitCleanly()) 201 profile->DidLastSessionExitCleanly())
202 return ViewMsg_Navigate_Params::RESTORE; 202 return ViewMsg_Navigate_Params::RESTORE;
203 203
204 return ViewMsg_Navigate_Params::NORMAL; 204 return ViewMsg_Navigate_Params::NORMAL;
205 } 205 }
206 206
207 void MakeNavigateParams(Profile* profile, const NavigationEntry& entry, 207 void MakeNavigateParams(const NavigationController& controller,
208 NavigationController::ReloadType reload_type, 208 NavigationController::ReloadType reload_type,
209 ViewMsg_Navigate_Params* params) { 209 ViewMsg_Navigate_Params* params) {
210 const NavigationEntry& entry = *controller.pending_entry();
210 params->page_id = entry.page_id(); 211 params->page_id = entry.page_id();
212 params->pending_history_list_offset = controller.pending_entry_index();
213 params->current_history_list_offset = controller.last_committed_entry_index();
214 params->current_history_list_length = controller.entry_count();
211 params->url = entry.url(); 215 params->url = entry.url();
212 params->referrer = entry.referrer(); 216 params->referrer = entry.referrer();
213 params->transition = entry.transition_type(); 217 params->transition = entry.transition_type();
214 params->state = entry.content_state(); 218 params->state = entry.content_state();
215 params->navigation_type = GetNavigationType(profile, entry, reload_type); 219 params->navigation_type =
220 GetNavigationType(controller.profile(), entry, reload_type);
216 params->request_time = base::Time::Now(); 221 params->request_time = base::Time::Now();
217 } 222 }
218 223
219 } // namespace 224 } // namespace
220 225
221 // ----------------------------------------------------------------------------- 226 // -----------------------------------------------------------------------------
222 227
223 // static 228 // static
224 int TabContents::find_request_id_counter_ = -1; 229 int TabContents::find_request_id_counter_ = -1;
225 230
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 NavigationController::ReloadType reload_type) { 724 NavigationController::ReloadType reload_type) {
720 const NavigationEntry& entry = *controller_.pending_entry(); 725 const NavigationEntry& entry = *controller_.pending_entry();
721 726
722 RenderViewHost* dest_render_view_host = render_manager_.Navigate(entry); 727 RenderViewHost* dest_render_view_host = render_manager_.Navigate(entry);
723 if (!dest_render_view_host) 728 if (!dest_render_view_host)
724 return false; // Unable to create the desired render view host. 729 return false; // Unable to create the desired render view host.
725 730
726 // Tell DevTools agent that it is attached prior to the navigation. 731 // Tell DevTools agent that it is attached prior to the navigation.
727 DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); 732 DevToolsManager* devtools_manager = DevToolsManager::GetInstance();
728 if (devtools_manager) { // NULL in unit tests. 733 if (devtools_manager) { // NULL in unit tests.
729 devtools_manager->OnNavigatingToPendingEntry( 734 devtools_manager->OnNavigatingToPendingEntry(render_view_host(),
730 render_view_host(), 735 dest_render_view_host,
731 dest_render_view_host, 736 entry.url());
732 controller_.pending_entry()->url());
733 } 737 }
734 738
735 // Used for page load time metrics. 739 // Used for page load time metrics.
736 current_load_start_ = base::TimeTicks::Now(); 740 current_load_start_ = base::TimeTicks::Now();
737 741
738 // Navigate in the desired RenderViewHost. 742 // Navigate in the desired RenderViewHost.
739 ViewMsg_Navigate_Params navigate_params; 743 ViewMsg_Navigate_Params navigate_params;
740 MakeNavigateParams(profile(), entry, reload_type, &navigate_params); 744 MakeNavigateParams(controller_, reload_type, &navigate_params);
741 dest_render_view_host->Navigate(navigate_params); 745 dest_render_view_host->Navigate(navigate_params);
742 746
743 if (entry.page_id() == -1) { 747 if (entry.page_id() == -1) {
744 // HACK!! This code suppresses javascript: URLs from being added to 748 // HACK!! This code suppresses javascript: URLs from being added to
745 // session history, which is what we want to do for javascript: URLs that 749 // session history, which is what we want to do for javascript: URLs that
746 // do not generate content. What we really need is a message from the 750 // do not generate content. What we really need is a message from the
747 // renderer telling us that a new page was not created. The same message 751 // renderer telling us that a new page was not created. The same message
748 // could be used for mailto: URLs and the like. 752 // could be used for mailto: URLs and the like.
749 if (entry.url().SchemeIs(chrome::kJavaScriptScheme)) 753 if (entry.url().SchemeIs(chrome::kJavaScriptScheme))
750 return false; 754 return false;
(...skipping 1036 matching lines...) Expand 10 before | Expand all | Expand 10 after
1787 NotificationType::FIND_RESULT_AVAILABLE, 1791 NotificationType::FIND_RESULT_AVAILABLE,
1788 Source<TabContents>(this), 1792 Source<TabContents>(this),
1789 Details<FindNotificationDetails>(&last_search_result_)); 1793 Details<FindNotificationDetails>(&last_search_result_));
1790 } 1794 }
1791 1795
1792 void TabContents::GoToEntryAtOffset(int offset) { 1796 void TabContents::GoToEntryAtOffset(int offset) {
1793 if (!delegate_ || delegate_->OnGoToEntryOffset(offset)) 1797 if (!delegate_ || delegate_->OnGoToEntryOffset(offset))
1794 controller_.GoToOffset(offset); 1798 controller_.GoToOffset(offset);
1795 } 1799 }
1796 1800
1797 void TabContents::GetHistoryListCount(int* back_list_count,
1798 int* forward_list_count) {
1799 int current_index = controller_.last_committed_entry_index();
1800 *back_list_count = current_index;
1801 *forward_list_count = controller_.entry_count() - current_index - 1;
1802 }
1803
1804 void TabContents::OnMissingPluginStatus(int status) { 1801 void TabContents::OnMissingPluginStatus(int status) {
1805 #if defined(OS_WIN) 1802 #if defined(OS_WIN)
1806 // TODO(PORT): pull in when plug-ins work 1803 // TODO(PORT): pull in when plug-ins work
1807 GetPluginInstaller()->OnMissingPluginStatus(status); 1804 GetPluginInstaller()->OnMissingPluginStatus(status);
1808 #endif 1805 #endif
1809 } 1806 }
1810 1807
1811 void TabContents::OnCrashedPlugin(const FilePath& plugin_path) { 1808 void TabContents::OnCrashedPlugin(const FilePath& plugin_path) {
1812 DCHECK(!plugin_path.value().empty()); 1809 DCHECK(!plugin_path.value().empty());
1813 1810
(...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after
2872 } 2869 }
2873 2870
2874 void TabContents::set_encoding(const std::string& encoding) { 2871 void TabContents::set_encoding(const std::string& encoding) {
2875 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); 2872 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding);
2876 } 2873 }
2877 2874
2878 void TabContents::SetAppIcon(const SkBitmap& app_icon) { 2875 void TabContents::SetAppIcon(const SkBitmap& app_icon) {
2879 app_icon_ = app_icon; 2876 app_icon_ = app_icon;
2880 NotifyNavigationStateChanged(INVALIDATE_TITLE); 2877 NotifyNavigationStateChanged(INVALIDATE_TITLE);
2881 } 2878 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698