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

Side by Side Diff: chrome/browser/ui/browser_list.h

Issue 7273038: ChromeOs: Call BrowserList::SessionEnding when shutting down via SIGTERM (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 9 years, 5 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_UI_BROWSER_LIST_H_ 5 #ifndef CHROME_BROWSER_UI_BROWSER_LIST_H_
6 #define CHROME_BROWSER_UI_BROWSER_LIST_H_ 6 #define CHROME_BROWSER_UI_BROWSER_LIST_H_
7 #pragma once 7 #pragma once
8 8
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 120
121 // Attempt to exit by closing all browsers. This is equivalent to 121 // Attempt to exit by closing all browsers. This is equivalent to
122 // CloseAllBrowsers() on platforms where the application exits 122 // CloseAllBrowsers() on platforms where the application exits
123 // when no more windows are remaining. On other platforms (the Mac), 123 // when no more windows are remaining. On other platforms (the Mac),
124 // this will additionally exit the application if all browsers are 124 // this will additionally exit the application if all browsers are
125 // successfully closed. 125 // successfully closed.
126 // Note that he exit process may be interrupted by download or 126 // Note that he exit process may be interrupted by download or
127 // unload handler, and the browser may or may not exit. 127 // unload handler, and the browser may or may not exit.
128 static void AttemptExit(); 128 static void AttemptExit();
129 129
130 #if defined(OS_CHROMEOS)
131 // This is equivalent to AttemptUserExit, except that it always set
132 // exit cleanly bit. ChroemOS checks if it can exit without user
133 // interactions, so it will always exit the browser. This is used to
134 // handle SIGTERM on chromeos which is a signal to force shutdown
135 // the chrome.
136 static void ExitCleanly();
137 #endif
138
139 // Closes all browsers. If the session is ending the windows are closed 130 // Closes all browsers. If the session is ending the windows are closed
140 // directly. Otherwise the windows are closed by way of posting a WM_CLOSE 131 // directly. Otherwise the windows are closed by way of posting a WM_CLOSE
141 // message. 132 // message.
142 static void CloseAllBrowsers(); 133 static void CloseAllBrowsers();
143 134
144 // Begins shutdown of the application when the desktop session is ending. 135 // Begins shutdown of the application when the desktop session is
136 // ending. This first calls BrowserProcess::EndSession then force
137 // closes browsers, therefore any crashes after EndSession won't be
138 // included in UMA stats.
145 static void SessionEnding(); 139 static void SessionEnding();
146 140
147 // Returns true if there is at least one Browser with the specified profile. 141 // Returns true if there is at least one Browser with the specified profile.
148 static bool HasBrowserWithProfile(Profile* profile); 142 static bool HasBrowserWithProfile(Profile* profile);
149 143
150 // Tells the BrowserList to keep the application alive after the last Browser 144 // Tells the BrowserList to keep the application alive after the last Browser
151 // closes. This is implemented as a count, so callers should pair their calls 145 // closes. This is implemented as a count, so callers should pair their calls
152 // to StartKeepAlive() with matching calls to EndKeepAlive() when they no 146 // to StartKeepAlive() with matching calls to EndKeepAlive() when they no
153 // longer need to keep the application running. 147 // longer need to keep the application running.
154 static void StartKeepAlive(); 148 static void StartKeepAlive();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 // Send out notifications. 189 // Send out notifications.
196 // For ChromeOS, also request session manager to end the session. 190 // For ChromeOS, also request session manager to end the session.
197 static void NotifyAndTerminate(bool fast_path); 191 static void NotifyAndTerminate(bool fast_path);
198 192
199 // Called once there are no more browsers open and the application is exiting. 193 // Called once there are no more browsers open and the application is exiting.
200 static void AllBrowsersClosedAndAppExiting(); 194 static void AllBrowsersClosedAndAppExiting();
201 195
202 private: 196 private:
203 // Helper method to remove a browser instance from a list of browsers 197 // Helper method to remove a browser instance from a list of browsers
204 static void RemoveBrowserFrom(Browser* browser, BrowserVector* browser_list); 198 static void RemoveBrowserFrom(Browser* browser, BrowserVector* browser_list);
205 static void MarkAsCleanShutdown(); 199 static void MarkAsCleanShutdownInUserProfiles();
206 static void AttemptExitInternal(); 200 static void AttemptExitInternal();
207 201
208 static BrowserVector browsers_; 202 static BrowserVector browsers_;
209 static BrowserVector last_active_browsers_; 203 static BrowserVector last_active_browsers_;
210 static ObserverList<Observer> observers_; 204 static ObserverList<Observer> observers_;
211 205
212 // Counter of calls to StartKeepAlive(). If non-zero, the application will 206 // Counter of calls to StartKeepAlive(). If non-zero, the application will
213 // continue running after the last browser has exited. 207 // continue running after the last browser has exited.
214 static int keep_alive_count_; 208 static int keep_alive_count_;
215 }; 209 };
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 // iterator over the TabContentsWrappers doing background printing. 273 // iterator over the TabContentsWrappers doing background printing.
280 std::set<TabContentsWrapper*>::const_iterator bg_printing_iterator_; 274 std::set<TabContentsWrapper*>::const_iterator bg_printing_iterator_;
281 275
282 // Current TabContents, or NULL if we're at the end of the list. This can 276 // Current TabContents, or NULL if we're at the end of the list. This can
283 // be extracted given the browser iterator and index, but it's nice to cache 277 // be extracted given the browser iterator and index, but it's nice to cache
284 // this since the caller may access the current host many times. 278 // this since the caller may access the current host many times.
285 TabContentsWrapper* cur_; 279 TabContentsWrapper* cur_;
286 }; 280 };
287 281
288 #endif // CHROME_BROWSER_UI_BROWSER_LIST_H_ 282 #endif // CHROME_BROWSER_UI_BROWSER_LIST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698