| OLD | NEW |
| 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 #include "chrome/browser/ui/browser_init.h" | 5 #include "chrome/browser/ui/browser_init.h" |
| 6 | 6 |
| 7 #include <algorithm> // For max(). | 7 #include <algorithm> // For max(). |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 bool SessionCrashedInfoBarDelegate::Accept() { | 368 bool SessionCrashedInfoBarDelegate::Accept() { |
| 369 uint32 behavior = 0; | 369 uint32 behavior = 0; |
| 370 Browser* browser = BrowserList::GetLastActiveWithProfile(profile_); | 370 Browser* browser = BrowserList::GetLastActiveWithProfile(profile_); |
| 371 if (browser && browser->tab_count() == 1 | 371 if (browser && browser->tab_count() == 1 |
| 372 && browser->GetTabContentsAt(0)->GetURL() == | 372 && browser->GetTabContentsAt(0)->GetURL() == |
| 373 GURL(chrome::kChromeUINewTabURL)) { | 373 GURL(chrome::kChromeUINewTabURL)) { |
| 374 // There is only one tab and its the new tab page, make session restore | 374 // There is only one tab and its the new tab page, make session restore |
| 375 // clobber it. | 375 // clobber it. |
| 376 behavior = SessionRestore::CLOBBER_CURRENT_TAB; | 376 behavior = SessionRestore::CLOBBER_CURRENT_TAB; |
| 377 } | 377 } |
| 378 behavior |= SessionRestore::RESTORE_SESSION_STATE; |
| 378 SessionRestore::RestoreSession( | 379 SessionRestore::RestoreSession( |
| 379 profile_, browser, behavior, std::vector<GURL>()); | 380 profile_, browser, behavior, std::vector<GURL>()); |
| 380 return true; | 381 return true; |
| 381 } | 382 } |
| 382 | 383 |
| 383 | 384 |
| 384 // Utility functions ---------------------------------------------------------- | 385 // Utility functions ---------------------------------------------------------- |
| 385 | 386 |
| 386 bool IncognitoIsForced(const CommandLine& command_line, | 387 bool IncognitoIsForced(const CommandLine& command_line, |
| 387 const PrefService* prefs) { | 388 const PrefService* prefs) { |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 944 !command_line_.HasSwitch(switches::kRestoreLastSession)) { | 945 !command_line_.HasSwitch(switches::kRestoreLastSession)) { |
| 945 // The last session crashed. It's possible automatically loading the | 946 // The last session crashed. It's possible automatically loading the |
| 946 // page will trigger another crash, locking the user out of chrome. | 947 // page will trigger another crash, locking the user out of chrome. |
| 947 // To avoid this, don't restore on startup but instead show the crashed | 948 // To avoid this, don't restore on startup but instead show the crashed |
| 948 // infobar. | 949 // infobar. |
| 949 return false; | 950 return false; |
| 950 } | 951 } |
| 951 | 952 |
| 952 uint32 restore_behavior = SessionRestore::SYNCHRONOUS | | 953 uint32 restore_behavior = SessionRestore::SYNCHRONOUS | |
| 953 SessionRestore::ALWAYS_CREATE_TABBED_BROWSER; | 954 SessionRestore::ALWAYS_CREATE_TABBED_BROWSER; |
| 955 |
| 956 if (!profile_->DidLastSessionExitCleanly() || |
| 957 CommandLine::ForCurrentProcess()->HasSwitch( |
| 958 switches::kRestoreLastSession)) { |
| 959 // Crash or auto-update. Restore the session state. |
| 960 restore_behavior |= SessionRestore::RESTORE_SESSION_STATE; |
| 961 } |
| 962 |
| 954 #if defined(OS_MACOSX) | 963 #if defined(OS_MACOSX) |
| 955 // On Mac, when restoring a session with no windows, suppress the creation | 964 // On Mac, when restoring a session with no windows, suppress the creation |
| 956 // of a new window in the case where the system is launching Chrome via a | 965 // of a new window in the case where the system is launching Chrome via a |
| 957 // login item or Lion's resume feature. | 966 // login item or Lion's resume feature. |
| 958 if (base::mac::WasLaunchedAsLoginOrResumeItem()) { | 967 if (base::mac::WasLaunchedAsLoginOrResumeItem()) { |
| 959 restore_behavior = restore_behavior & | 968 restore_behavior = restore_behavior & |
| 960 ~SessionRestore::ALWAYS_CREATE_TABBED_BROWSER; | 969 ~SessionRestore::ALWAYS_CREATE_TABBED_BROWSER; |
| 961 } | 970 } |
| 962 #endif | 971 #endif |
| 963 | 972 |
| (...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1553 if (!automation->InitializeChannel(channel_id)) | 1562 if (!automation->InitializeChannel(channel_id)) |
| 1554 return false; | 1563 return false; |
| 1555 automation->SetExpectedTabCount(expected_tabs); | 1564 automation->SetExpectedTabCount(expected_tabs); |
| 1556 | 1565 |
| 1557 AutomationProviderList* list = g_browser_process->GetAutomationProviderList(); | 1566 AutomationProviderList* list = g_browser_process->GetAutomationProviderList(); |
| 1558 DCHECK(list); | 1567 DCHECK(list); |
| 1559 list->AddProvider(automation); | 1568 list->AddProvider(automation); |
| 1560 | 1569 |
| 1561 return true; | 1570 return true; |
| 1562 } | 1571 } |
| OLD | NEW |