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

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

Issue 9359022: Aura: Support hovering restore & close buttons for full screen apps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix browser_test Created 8 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sessions/session_restore.cc ('k') | chrome/browser/sessions/session_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_SESSIONS_SESSION_SERVICE_H_ 5 #ifndef CHROME_BROWSER_SESSIONS_SESSION_SERVICE_H_
6 #define CHROME_BROWSER_SESSIONS_SESSION_SERVICE_H_ 6 #define CHROME_BROWSER_SESSIONS_SESSION_SERVICE_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 // SessionService itself maintains a set of SessionCommands that allow 48 // SessionService itself maintains a set of SessionCommands that allow
49 // SessionService to rebuild the open state of the browser (as 49 // SessionService to rebuild the open state of the browser (as
50 // SessionWindow, SessionTab and TabNavigation). The commands are periodically 50 // SessionWindow, SessionTab and TabNavigation). The commands are periodically
51 // flushed to SessionBackend and written to a file. Every so often 51 // flushed to SessionBackend and written to a file. Every so often
52 // SessionService rebuilds the contents of the file from the open state 52 // SessionService rebuilds the contents of the file from the open state
53 // of the browser. 53 // of the browser.
54 class SessionService : public BaseSessionService, 54 class SessionService : public BaseSessionService,
55 public content::NotificationObserver { 55 public content::NotificationObserver {
56 friend class SessionServiceTestHelper; 56 friend class SessionServiceTestHelper;
57 public: 57 public:
58 // Used to distinguish an application window from a normal one.
59 enum AppType {
60 TYPE_APP,
61 TYPE_NORMAL
62 };
63
58 // Creates a SessionService for the specified profile. 64 // Creates a SessionService for the specified profile.
59 explicit SessionService(Profile* profile); 65 explicit SessionService(Profile* profile);
60 // For testing. 66 // For testing.
61 explicit SessionService(const FilePath& save_path); 67 explicit SessionService(const FilePath& save_path);
62 68
63 virtual ~SessionService(); 69 virtual ~SessionService();
64 70
65 // Returns true if a new window opening should really be treated like the 71 // Returns true if a new window opening should really be treated like the
66 // start of a session (with potential session restore, startup URLs, etc.). 72 // start of a session (with potential session restore, startup URLs, etc.).
67 // In particular, this is true if there are no tabbed browsers running 73 // In particular, this is true if there are no tabbed browsers running
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 120
115 // Notification the window is about to close. 121 // Notification the window is about to close.
116 void WindowClosing(const SessionID& window_id); 122 void WindowClosing(const SessionID& window_id);
117 123
118 // Notification a window has finished closing. 124 // Notification a window has finished closing.
119 void WindowClosed(const SessionID& window_id); 125 void WindowClosed(const SessionID& window_id);
120 126
121 // Sets the type of window. In order for the contents of a window to be 127 // Sets the type of window. In order for the contents of a window to be
122 // tracked SetWindowType must be invoked with a type we track 128 // tracked SetWindowType must be invoked with a type we track
123 // (should_track_changes_for_browser_type returns true). 129 // (should_track_changes_for_browser_type returns true).
124 void SetWindowType(const SessionID& window_id, Browser::Type type); 130 void SetWindowType(const SessionID& window_id,
131 Browser::Type type,
132 AppType app_type);
133
134 // Sets the application name of the specified window.
135 void SetWindowAppName(const SessionID& window_id,
136 const std::string& app_name);
125 137
126 // Invoked when the NavigationController has removed entries from the back of 138 // Invoked when the NavigationController has removed entries from the back of
127 // the list. |count| gives the number of entries in the navigation controller. 139 // the list. |count| gives the number of entries in the navigation controller.
128 void TabNavigationPathPrunedFromBack(const SessionID& window_id, 140 void TabNavigationPathPrunedFromBack(const SessionID& window_id,
129 const SessionID& tab_id, 141 const SessionID& tab_id,
130 int count); 142 int count);
131 143
132 // Invoked when the NavigationController has removed entries from the front of 144 // Invoked when the NavigationController has removed entries from the front of
133 // the list. |count| gives the number of entries that were removed. 145 // the list. |count| gives the number of entries that were removed.
134 void TabNavigationPathPrunedFromFront(const SessionID& window_id, 146 void TabNavigationPathPrunedFromFront(const SessionID& window_id,
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 // Returns true if there are open trackable browser windows whose ids do 367 // Returns true if there are open trackable browser windows whose ids do
356 // match |window_id| with our profile. A trackable window is a window from 368 // match |window_id| with our profile. A trackable window is a window from
357 // which |should_track_changes_for_browser_type| returns true. See 369 // which |should_track_changes_for_browser_type| returns true. See
358 // |should_track_changes_for_browser_type| for details. 370 // |should_track_changes_for_browser_type| for details.
359 bool HasOpenTrackableBrowsers(const SessionID& window_id); 371 bool HasOpenTrackableBrowsers(const SessionID& window_id);
360 372
361 // Returns true if changes to tabs in the specified window should be tracked. 373 // Returns true if changes to tabs in the specified window should be tracked.
362 bool ShouldTrackChangesToWindow(const SessionID& window_id); 374 bool ShouldTrackChangesToWindow(const SessionID& window_id);
363 375
364 // Returns true if we track changes to the specified browser type. 376 // Returns true if we track changes to the specified browser type.
365 static bool should_track_changes_for_browser_type(Browser::Type type); 377 static bool should_track_changes_for_browser_type(
378 Browser::Type type,
379 AppType app_type);
366 380
367 // Returns true if we should record a window close as pending. 381 // Returns true if we should record a window close as pending.
368 // |has_open_trackable_browsers_| must be up-to-date before calling this. 382 // |has_open_trackable_browsers_| must be up-to-date before calling this.
369 bool should_record_close_as_pending() const { 383 bool should_record_close_as_pending() const {
370 // When this is called, the browser window being closed is still open, hence 384 // When this is called, the browser window being closed is still open, hence
371 // still in the browser list. If there is a browser window other than the 385 // still in the browser list. If there is a browser window other than the
372 // one being closed but no trackable windows, then the others must be App 386 // one being closed but no trackable windows, then the others must be App
373 // windows or similar. In this case, we record the close as pending. 387 // windows or similar. In this case, we record the close as pending.
374 return !has_open_trackable_browsers_ && 388 return !has_open_trackable_browsers_ &&
375 (!browser_defaults::kBrowserAliveWithNoWindows || 389 (!browser_defaults::kBrowserAliveWithNoWindows ||
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 459
446 // Constants used in calculating histogram data. 460 // Constants used in calculating histogram data.
447 const base::TimeDelta save_delay_in_millis_; 461 const base::TimeDelta save_delay_in_millis_;
448 const base::TimeDelta save_delay_in_mins_; 462 const base::TimeDelta save_delay_in_mins_;
449 const base::TimeDelta save_delay_in_hrs_; 463 const base::TimeDelta save_delay_in_hrs_;
450 464
451 DISALLOW_COPY_AND_ASSIGN(SessionService); 465 DISALLOW_COPY_AND_ASSIGN(SessionService);
452 }; 466 };
453 467
454 #endif // CHROME_BROWSER_SESSIONS_SESSION_SERVICE_H_ 468 #endif // CHROME_BROWSER_SESSIONS_SESSION_SERVICE_H_
OLDNEW
« no previous file with comments | « chrome/browser/sessions/session_restore.cc ('k') | chrome/browser/sessions/session_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698