OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #include "chrome/browser/sessions/session_service.h" | 7 #include "chrome/browser/sessions/session_service.h" |
8 | 8 |
9 #include <limits> | 9 #include <limits> |
10 | 10 |
(...skipping 11 matching lines...) Expand all Loading... |
22 #include "chrome/browser/sessions/session_backend.h" | 22 #include "chrome/browser/sessions/session_backend.h" |
23 #include "chrome/browser/sessions/session_command.h" | 23 #include "chrome/browser/sessions/session_command.h" |
24 #include "chrome/browser/sessions/session_restore.h" | 24 #include "chrome/browser/sessions/session_restore.h" |
25 #include "chrome/browser/sessions/session_types.h" | 25 #include "chrome/browser/sessions/session_types.h" |
26 #include "chrome/browser/tab_contents/navigation_controller.h" | 26 #include "chrome/browser/tab_contents/navigation_controller.h" |
27 #include "chrome/browser/tab_contents/navigation_entry.h" | 27 #include "chrome/browser/tab_contents/navigation_entry.h" |
28 #include "chrome/browser/tab_contents/tab_contents.h" | 28 #include "chrome/browser/tab_contents/tab_contents.h" |
29 #include "chrome/common/notification_details.h" | 29 #include "chrome/common/notification_details.h" |
30 #include "chrome/common/notification_service.h" | 30 #include "chrome/common/notification_service.h" |
31 | 31 |
| 32 #if defined(OS_MACOSX) |
| 33 #include "chrome/browser/app_controller_cppsafe_mac.h" |
| 34 #endif |
| 35 |
32 using base::Time; | 36 using base::Time; |
33 | 37 |
34 // Identifier for commands written to file. | 38 // Identifier for commands written to file. |
35 static const SessionCommand::id_type kCommandSetTabWindow = 0; | 39 static const SessionCommand::id_type kCommandSetTabWindow = 0; |
36 // kCommandSetWindowBounds is no longer used (it's superseded by | 40 // kCommandSetWindowBounds is no longer used (it's superseded by |
37 // kCommandSetWindowBounds2). I leave it here to document what it was. | 41 // kCommandSetWindowBounds2). I leave it here to document what it was. |
38 // static const SessionCommand::id_type kCommandSetWindowBounds = 1; | 42 // static const SessionCommand::id_type kCommandSetWindowBounds = 1; |
39 static const SessionCommand::id_type kCommandSetTabIndexInWindow = 2; | 43 static const SessionCommand::id_type kCommandSetTabIndexInWindow = 2; |
40 static const SessionCommand::id_type kCommandTabClosed = 3; | 44 static const SessionCommand::id_type kCommandTabClosed = 3; |
41 static const SessionCommand::id_type kCommandWindowClosed = 4; | 45 static const SessionCommand::id_type kCommandWindowClosed = 4; |
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 const NotificationDetails& details) { | 406 const NotificationDetails& details) { |
403 // All of our messages have the NavigationController as the source. | 407 // All of our messages have the NavigationController as the source. |
404 switch (type.value) { | 408 switch (type.value) { |
405 case NotificationType::BROWSER_OPENED: { | 409 case NotificationType::BROWSER_OPENED: { |
406 Browser* browser = Source<Browser>(source).ptr(); | 410 Browser* browser = Source<Browser>(source).ptr(); |
407 if (browser->profile() != profile() || | 411 if (browser->profile() != profile() || |
408 !should_track_changes_for_browser_type(browser->type())) { | 412 !should_track_changes_for_browser_type(browser->type())) { |
409 return; | 413 return; |
410 } | 414 } |
411 | 415 |
412 if (!has_open_trackable_browsers_ && !BrowserInit::InProcessStartup()) { | 416 if (!has_open_trackable_browsers_ && !BrowserInit::InProcessStartup() |
| 417 #if defined(OS_MACOSX) |
| 418 // OSX has a fairly different idea of application lifetime than the |
| 419 // other platforms. We need to check that we aren't opening a window |
| 420 // from the dock or the menubar. |
| 421 && !app_controller_mac::IsOpeningNewWindow() |
| 422 #endif |
| 423 ) { |
413 // We're going from no tabbed browsers to a tabbed browser (and not in | 424 // We're going from no tabbed browsers to a tabbed browser (and not in |
414 // process startup), restore the last session. | 425 // process startup), restore the last session. |
415 if (move_on_new_browser_) { | 426 if (move_on_new_browser_) { |
416 // Make the current session the last. | 427 // Make the current session the last. |
417 MoveCurrentSessionToLastSession(); | 428 MoveCurrentSessionToLastSession(); |
418 move_on_new_browser_ = false; | 429 move_on_new_browser_ = false; |
419 } | 430 } |
420 SessionStartupPref pref = SessionStartupPref::GetStartupPref(profile()); | 431 SessionStartupPref pref = SessionStartupPref::GetStartupPref(profile()); |
421 if (pref.type == SessionStartupPref::LAST) { | 432 if (pref.type == SessionStartupPref::LAST) { |
422 SessionRestore::RestoreSession( | 433 SessionRestore::RestoreSession( |
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1145 browser->profile()->GetOriginalProfile() == profile()) { | 1156 browser->profile()->GetOriginalProfile() == profile()) { |
1146 return true; | 1157 return true; |
1147 } | 1158 } |
1148 } | 1159 } |
1149 return false; | 1160 return false; |
1150 } | 1161 } |
1151 | 1162 |
1152 bool SessionService::ShouldTrackChangesToWindow(const SessionID& window_id) { | 1163 bool SessionService::ShouldTrackChangesToWindow(const SessionID& window_id) { |
1153 return windows_tracking_.find(window_id.id()) != windows_tracking_.end(); | 1164 return windows_tracking_.find(window_id.id()) != windows_tracking_.end(); |
1154 } | 1165 } |
OLD | NEW |