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

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

Issue 340023: Fix window restore behaviour on Mac. (Closed)
Patch Set: Fix namespace naming Created 11 years, 1 month 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
« no previous file with comments | « chrome/browser/app_controller_mac.mm ('k') | chrome/chrome.gyp » ('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) 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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/app_controller_mac.mm ('k') | chrome/chrome.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698