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

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

Issue 1644773003: Remove BrowserIterator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@host-desktop-1
Patch Set: . Created 4 years, 10 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <set> 10 #include <set>
(...skipping 14 matching lines...) Expand all
25 #include "chrome/browser/defaults.h" 25 #include "chrome/browser/defaults.h"
26 #include "chrome/browser/extensions/tab_helper.h" 26 #include "chrome/browser/extensions/tab_helper.h"
27 #include "chrome/browser/prefs/session_startup_pref.h" 27 #include "chrome/browser/prefs/session_startup_pref.h"
28 #include "chrome/browser/profiles/profile.h" 28 #include "chrome/browser/profiles/profile.h"
29 #include "chrome/browser/profiles/profile_manager.h" 29 #include "chrome/browser/profiles/profile_manager.h"
30 #include "chrome/browser/sessions/session_common_utils.h" 30 #include "chrome/browser/sessions/session_common_utils.h"
31 #include "chrome/browser/sessions/session_data_deleter.h" 31 #include "chrome/browser/sessions/session_data_deleter.h"
32 #include "chrome/browser/sessions/session_restore.h" 32 #include "chrome/browser/sessions/session_restore.h"
33 #include "chrome/browser/sessions/session_service_utils.h" 33 #include "chrome/browser/sessions/session_service_utils.h"
34 #include "chrome/browser/sessions/session_tab_helper.h" 34 #include "chrome/browser/sessions/session_tab_helper.h"
35 #include "chrome/browser/ui/browser_iterator.h"
36 #include "chrome/browser/ui/browser_list.h" 35 #include "chrome/browser/ui/browser_list.h"
37 #include "chrome/browser/ui/browser_tabstrip.h" 36 #include "chrome/browser/ui/browser_tabstrip.h"
38 #include "chrome/browser/ui/browser_window.h" 37 #include "chrome/browser/ui/browser_window.h"
39 #include "chrome/browser/ui/host_desktop.h" 38 #include "chrome/browser/ui/host_desktop.h"
40 #include "chrome/browser/ui/startup/startup_browser_creator.h" 39 #include "chrome/browser/ui/startup/startup_browser_creator.h"
41 #include "chrome/browser/ui/tabs/tab_strip_model.h" 40 #include "chrome/browser/ui/tabs/tab_strip_model.h"
42 #include "components/sessions/content/content_serialized_navigation_builder.h" 41 #include "components/sessions/content/content_serialized_navigation_builder.h"
43 #include "components/sessions/core/session_command.h" 42 #include "components/sessions/core/session_command.h"
44 #include "components/sessions/core/session_constants.h" 43 #include "components/sessions/core/session_constants.h"
45 #include "components/sessions/core/session_types.h" 44 #include "components/sessions/core/session_types.h"
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 831
833 base_session_service_->AppendRebuildCommand( 832 base_session_service_->AppendRebuildCommand(
834 sessions::CreateSetSelectedTabInWindowCommand( 833 sessions::CreateSetSelectedTabInWindowCommand(
835 browser->session_id(), 834 browser->session_id(),
836 browser->tab_strip_model()->active_index())); 835 browser->tab_strip_model()->active_index()));
837 } 836 }
838 837
839 void SessionService::BuildCommandsFromBrowsers( 838 void SessionService::BuildCommandsFromBrowsers(
840 IdToRange* tab_to_available_range, 839 IdToRange* tab_to_available_range,
841 std::set<SessionID::id_type>* windows_to_track) { 840 std::set<SessionID::id_type>* windows_to_track) {
842 for (chrome::BrowserIterator it; !it.done(); it.Next()) { 841 for (auto* browser : *BrowserList::GetInstance()) {
843 Browser* browser = *it;
844 // Make sure the browser has tabs and a window. Browser's destructor 842 // Make sure the browser has tabs and a window. Browser's destructor
845 // removes itself from the BrowserList. When a browser is closed the 843 // removes itself from the BrowserList. When a browser is closed the
846 // destructor is not necessarily run immediately. This means it's possible 844 // destructor is not necessarily run immediately. This means it's possible
847 // for us to get a handle to a browser that is about to be removed. If 845 // for us to get a handle to a browser that is about to be removed. If
848 // the tab count is 0 or the window is NULL, the browser is about to be 846 // the tab count is 0 or the window is NULL, the browser is about to be
849 // deleted, so we ignore it. 847 // deleted, so we ignore it.
850 if (ShouldTrackBrowser(browser) && browser->tab_strip_model()->count() && 848 if (ShouldTrackBrowser(browser) && browser->tab_strip_model()->count() &&
851 browser->window()) { 849 browser->window()) {
852 BuildCommandsForBrowser(browser, 850 BuildCommandsForBrowser(browser,
853 tab_to_available_range, 851 tab_to_available_range,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
903 pending_window_close_ids_.clear(); 901 pending_window_close_ids_.clear();
904 } 902 }
905 903
906 bool SessionService::IsOnlyOneTabLeft() const { 904 bool SessionService::IsOnlyOneTabLeft() const {
907 if (!profile() || profile()->AsTestingProfile()) { 905 if (!profile() || profile()->AsTestingProfile()) {
908 // We're testing, always return false. 906 // We're testing, always return false.
909 return false; 907 return false;
910 } 908 }
911 909
912 int window_count = 0; 910 int window_count = 0;
913 for (chrome::BrowserIterator it; !it.done(); it.Next()) { 911 for (auto* browser : *BrowserList::GetInstance()) {
914 Browser* browser = *it;
915 const SessionID::id_type window_id = browser->session_id().id(); 912 const SessionID::id_type window_id = browser->session_id().id();
916 if (ShouldTrackBrowser(browser) && 913 if (ShouldTrackBrowser(browser) &&
917 window_closing_ids_.find(window_id) == window_closing_ids_.end()) { 914 window_closing_ids_.find(window_id) == window_closing_ids_.end()) {
918 if (++window_count > 1) 915 if (++window_count > 1)
919 return false; 916 return false;
920 // By the time this is invoked the tab has been removed. As such, we use 917 // By the time this is invoked the tab has been removed. As such, we use
921 // > 0 here rather than > 1. 918 // > 0 here rather than > 1.
922 if (browser->tab_strip_model()->count() > 0) 919 if (browser->tab_strip_model()->count() > 0)
923 return false; 920 return false;
924 } 921 }
925 } 922 }
926 return true; 923 return true;
927 } 924 }
928 925
929 bool SessionService::HasOpenTrackableBrowsers( 926 bool SessionService::HasOpenTrackableBrowsers(
930 const SessionID& window_id) const { 927 const SessionID& window_id) const {
931 if (!profile() || profile()->AsTestingProfile()) { 928 if (!profile() || profile()->AsTestingProfile()) {
932 // We're testing, always return true. 929 // We're testing, always return true.
933 return true; 930 return true;
934 } 931 }
935 932
936 for (chrome::BrowserIterator it; !it.done(); it.Next()) { 933 for (auto* browser : *BrowserList::GetInstance()) {
937 Browser* browser = *it;
938 const SessionID::id_type browser_id = browser->session_id().id(); 934 const SessionID::id_type browser_id = browser->session_id().id();
939 if (browser_id != window_id.id() && 935 if (browser_id != window_id.id() &&
940 window_closing_ids_.find(browser_id) == window_closing_ids_.end() && 936 window_closing_ids_.find(browser_id) == window_closing_ids_.end() &&
941 ShouldTrackBrowser(browser)) { 937 ShouldTrackBrowser(browser)) {
942 return true; 938 return true;
943 } 939 }
944 } 940 }
945 return false; 941 return false;
946 } 942 }
947 943
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 // Clear session data if the last window for a profile has been closed and 1099 // Clear session data if the last window for a profile has been closed and
1104 // closing the last window would normally close Chrome, unless background mode 1100 // closing the last window would normally close Chrome, unless background mode
1105 // is active. Tests don't have a background_mode_manager. 1101 // is active. Tests don't have a background_mode_manager.
1106 if (has_open_trackable_browsers_ || 1102 if (has_open_trackable_browsers_ ||
1107 browser_defaults::kBrowserAliveWithNoWindows || 1103 browser_defaults::kBrowserAliveWithNoWindows ||
1108 g_browser_process->background_mode_manager()->IsBackgroundModeActive()) { 1104 g_browser_process->background_mode_manager()->IsBackgroundModeActive()) {
1109 return; 1105 return;
1110 } 1106 }
1111 1107
1112 // Check for any open windows for the current profile that we aren't tracking. 1108 // Check for any open windows for the current profile that we aren't tracking.
1113 for (chrome::BrowserIterator it; !it.done(); it.Next()) { 1109 for (auto* browser : *BrowserList::GetInstance()) {
1114 if ((*it)->profile() == profile()) 1110 if (browser->profile() == profile())
1115 return; 1111 return;
1116 } 1112 }
1117 DeleteSessionOnlyData(profile()); 1113 DeleteSessionOnlyData(profile());
1118 } 1114 }
1119 1115
1120 sessions::BaseSessionService* SessionService::GetBaseSessionServiceForTest() { 1116 sessions::BaseSessionService* SessionService::GetBaseSessionServiceForTest() {
1121 return base_session_service_.get(); 1117 return base_session_service_.get();
1122 } 1118 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698