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 "chrome/browser/sessions/session_service.h" | 5 #include "chrome/browser/sessions/session_service.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 19 matching lines...) Expand all Loading... |
30 #include "chrome/browser/sessions/session_service_utils.h" | 30 #include "chrome/browser/sessions/session_service_utils.h" |
31 #include "chrome/browser/sessions/session_tab_helper.h" | 31 #include "chrome/browser/sessions/session_tab_helper.h" |
32 #include "chrome/browser/ui/browser_iterator.h" | 32 #include "chrome/browser/ui/browser_iterator.h" |
33 #include "chrome/browser/ui/browser_list.h" | 33 #include "chrome/browser/ui/browser_list.h" |
34 #include "chrome/browser/ui/browser_tabstrip.h" | 34 #include "chrome/browser/ui/browser_tabstrip.h" |
35 #include "chrome/browser/ui/browser_window.h" | 35 #include "chrome/browser/ui/browser_window.h" |
36 #include "chrome/browser/ui/host_desktop.h" | 36 #include "chrome/browser/ui/host_desktop.h" |
37 #include "chrome/browser/ui/startup/startup_browser_creator.h" | 37 #include "chrome/browser/ui/startup/startup_browser_creator.h" |
38 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 38 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
39 #include "components/sessions/content/content_serialized_navigation_builder.h" | 39 #include "components/sessions/content/content_serialized_navigation_builder.h" |
| 40 #include "components/sessions/core/session_constants.h" |
40 #include "components/sessions/session_command.h" | 41 #include "components/sessions/session_command.h" |
41 #include "components/sessions/session_types.h" | 42 #include "components/sessions/session_types.h" |
42 #include "content/public/browser/navigation_details.h" | 43 #include "content/public/browser/navigation_details.h" |
43 #include "content/public/browser/navigation_entry.h" | 44 #include "content/public/browser/navigation_entry.h" |
44 #include "content/public/browser/notification_details.h" | 45 #include "content/public/browser/notification_details.h" |
45 #include "content/public/browser/notification_service.h" | 46 #include "content/public/browser/notification_service.h" |
46 #include "content/public/browser/session_storage_namespace.h" | 47 #include "content/public/browser/session_storage_namespace.h" |
47 #include "content/public/browser/web_contents.h" | 48 #include "content/public/browser/web_contents.h" |
48 #include "extensions/common/extension.h" | 49 #include "extensions/common/extension.h" |
49 | 50 |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 const SessionID& tab_id, | 491 const SessionID& tab_id, |
491 base::TimeTicks last_active_time) { | 492 base::TimeTicks last_active_time) { |
492 if (!ShouldTrackChangesToWindow(window_id)) | 493 if (!ShouldTrackChangesToWindow(window_id)) |
493 return; | 494 return; |
494 | 495 |
495 ScheduleCommand( | 496 ScheduleCommand( |
496 sessions::CreateLastActiveTimeCommand(tab_id, last_active_time).Pass()); | 497 sessions::CreateLastActiveTimeCommand(tab_id, last_active_time).Pass()); |
497 } | 498 } |
498 | 499 |
499 base::CancelableTaskTracker::TaskId SessionService::GetLastSession( | 500 base::CancelableTaskTracker::TaskId SessionService::GetLastSession( |
500 const SessionCallback& callback, | 501 const sessions::GetLastSessionCallback& callback, |
501 base::CancelableTaskTracker* tracker) { | 502 base::CancelableTaskTracker* tracker) { |
502 // OnGotSessionCommands maps the SessionCommands to browser state, then run | 503 // OnGotSessionCommands maps the SessionCommands to browser state, then run |
503 // the callback. | 504 // the callback. |
504 return base_session_service_->ScheduleGetLastSessionCommands( | 505 return base_session_service_->ScheduleGetLastSessionCommands( |
505 base::Bind(&SessionService::OnGotSessionCommands, | 506 base::Bind(&SessionService::OnGotSessionCommands, |
506 weak_factory_.GetWeakPtr(), | 507 weak_factory_.GetWeakPtr(), |
507 callback), | 508 callback), |
508 tracker); | 509 tracker); |
509 } | 510 } |
510 | 511 |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 } | 689 } |
689 } | 690 } |
690 | 691 |
691 void SessionService::OnBrowserSetLastActive(Browser* browser) { | 692 void SessionService::OnBrowserSetLastActive(Browser* browser) { |
692 if (ShouldTrackBrowser(browser)) | 693 if (ShouldTrackBrowser(browser)) |
693 ScheduleCommand(sessions::CreateSetActiveWindowCommand( | 694 ScheduleCommand(sessions::CreateSetActiveWindowCommand( |
694 browser->session_id()).Pass()); | 695 browser->session_id()).Pass()); |
695 } | 696 } |
696 | 697 |
697 void SessionService::OnGotSessionCommands( | 698 void SessionService::OnGotSessionCommands( |
698 const SessionCallback& callback, | 699 const sessions::GetLastSessionCallback& callback, |
699 ScopedVector<sessions::SessionCommand> commands) { | 700 ScopedVector<sessions::SessionCommand> commands) { |
700 ScopedVector<sessions::SessionWindow> valid_windows; | 701 ScopedVector<sessions::SessionWindow> valid_windows; |
701 SessionID::id_type active_window_id = 0; | 702 SessionID::id_type active_window_id = 0; |
702 | 703 |
703 sessions::RestoreSessionFromCommands( | 704 sessions::RestoreSessionFromCommands( |
704 commands, &valid_windows.get(), &active_window_id); | 705 commands, &valid_windows.get(), &active_window_id); |
705 RemoveUnusedRestoreWindows(&valid_windows.get()); | 706 RemoveUnusedRestoreWindows(&valid_windows.get()); |
706 | 707 |
707 callback.Run(valid_windows.Pass(), active_window_id); | 708 callback.Run(valid_windows.Pass(), active_window_id); |
708 } | 709 } |
709 | 710 |
710 void SessionService::BuildCommandsForTab(const SessionID& window_id, | 711 void SessionService::BuildCommandsForTab(const SessionID& window_id, |
711 WebContents* tab, | 712 WebContents* tab, |
712 int index_in_window, | 713 int index_in_window, |
713 bool is_pinned, | 714 bool is_pinned, |
714 IdToRange* tab_to_available_range) { | 715 IdToRange* tab_to_available_range) { |
715 DCHECK(tab && window_id.id()); | 716 DCHECK(tab && window_id.id()); |
716 SessionTabHelper* session_tab_helper = SessionTabHelper::FromWebContents(tab); | 717 SessionTabHelper* session_tab_helper = SessionTabHelper::FromWebContents(tab); |
717 const SessionID& session_id(session_tab_helper->session_id()); | 718 const SessionID& session_id(session_tab_helper->session_id()); |
718 base_session_service_->AppendRebuildCommand( | 719 base_session_service_->AppendRebuildCommand( |
719 sessions::CreateSetTabWindowCommand(window_id, session_id)); | 720 sessions::CreateSetTabWindowCommand(window_id, session_id)); |
720 | 721 |
721 const int current_index = tab->GetController().GetCurrentEntryIndex(); | 722 const int current_index = tab->GetController().GetCurrentEntryIndex(); |
722 const int min_index = std::max(current_index - gMaxPersistNavigationCount, 0); | 723 const int min_index = |
723 const int max_index = std::min(current_index + gMaxPersistNavigationCount, | 724 std::max(current_index - sessions::gMaxPersistNavigationCount, 0); |
724 tab->GetController().GetEntryCount()); | 725 const int max_index = |
| 726 std::min(current_index + sessions::gMaxPersistNavigationCount, |
| 727 tab->GetController().GetEntryCount()); |
725 const int pending_index = tab->GetController().GetPendingEntryIndex(); | 728 const int pending_index = tab->GetController().GetPendingEntryIndex(); |
726 if (tab_to_available_range) { | 729 if (tab_to_available_range) { |
727 (*tab_to_available_range)[session_id.id()] = | 730 (*tab_to_available_range)[session_id.id()] = |
728 std::pair<int, int>(min_index, max_index); | 731 std::pair<int, int>(min_index, max_index); |
729 } | 732 } |
730 | 733 |
731 if (is_pinned) { | 734 if (is_pinned) { |
732 base_session_service_->AppendRebuildCommand( | 735 base_session_service_->AppendRebuildCommand( |
733 sessions::CreatePinnedStateCommand(session_id, true)); | 736 sessions::CreatePinnedStateCommand(session_id, true)); |
734 } | 737 } |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | 1109 for (chrome::BrowserIterator it; !it.done(); it.Next()) { |
1107 if ((*it)->profile() == profile()) | 1110 if ((*it)->profile() == profile()) |
1108 return; | 1111 return; |
1109 } | 1112 } |
1110 DeleteSessionOnlyData(profile()); | 1113 DeleteSessionOnlyData(profile()); |
1111 } | 1114 } |
1112 | 1115 |
1113 sessions::BaseSessionService* SessionService::GetBaseSessionServiceForTest() { | 1116 sessions::BaseSessionService* SessionService::GetBaseSessionServiceForTest() { |
1114 return base_session_service_.get(); | 1117 return base_session_service_.get(); |
1115 } | 1118 } |
OLD | NEW |