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

Side by Side Diff: chrome/browser/sessions/session_service.cc

Issue 1319473014: Introduce TabRestoreServiceClient and //chrome implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Response to review Created 5 years, 3 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
OLDNEW
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/sessions/session_service.h ('k') | chrome/browser/sessions/session_service_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698