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/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/environment.h" | 10 #include "base/environment.h" |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 291 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
292 new NotifyNotDefaultBrowserTask()); | 292 new NotifyNotDefaultBrowserTask()); |
293 } | 293 } |
294 | 294 |
295 | 295 |
296 // SessionCrashedInfoBarDelegate ---------------------------------------------- | 296 // SessionCrashedInfoBarDelegate ---------------------------------------------- |
297 | 297 |
298 // A delegate for the InfoBar shown when the previous session has crashed. | 298 // A delegate for the InfoBar shown when the previous session has crashed. |
299 class SessionCrashedInfoBarDelegate : public ConfirmInfoBarDelegate { | 299 class SessionCrashedInfoBarDelegate : public ConfirmInfoBarDelegate { |
300 public: | 300 public: |
301 SessionCrashedInfoBarDelegate(Browser* browser, TabContents* contents); | 301 SessionCrashedInfoBarDelegate(Profile* profile, TabContents* contents); |
302 | 302 |
303 private: | 303 private: |
304 virtual ~SessionCrashedInfoBarDelegate(); | 304 virtual ~SessionCrashedInfoBarDelegate(); |
305 | 305 |
306 // ConfirmInfoBarDelegate: | 306 // ConfirmInfoBarDelegate: |
307 virtual gfx::Image* GetIcon() const OVERRIDE; | 307 virtual gfx::Image* GetIcon() const OVERRIDE; |
308 virtual string16 GetMessageText() const OVERRIDE; | 308 virtual string16 GetMessageText() const OVERRIDE; |
309 virtual int GetButtons() const OVERRIDE; | 309 virtual int GetButtons() const OVERRIDE; |
310 virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; | 310 virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; |
311 virtual bool Accept() OVERRIDE; | 311 virtual bool Accept() OVERRIDE; |
312 | 312 |
313 Browser* browser_; | |
314 | |
315 // The Profile that we restore sessions from. | 313 // The Profile that we restore sessions from. |
316 Profile* profile_; | 314 Profile* profile_; |
317 | 315 |
318 DISALLOW_COPY_AND_ASSIGN(SessionCrashedInfoBarDelegate); | 316 DISALLOW_COPY_AND_ASSIGN(SessionCrashedInfoBarDelegate); |
319 }; | 317 }; |
320 | 318 |
321 SessionCrashedInfoBarDelegate::SessionCrashedInfoBarDelegate( | 319 SessionCrashedInfoBarDelegate::SessionCrashedInfoBarDelegate( |
322 Browser* browser, | 320 Profile* profile, |
323 TabContents* contents) | 321 TabContents* contents) |
324 : ConfirmInfoBarDelegate(contents), | 322 : ConfirmInfoBarDelegate(contents), |
325 browser_(browser), | 323 profile_(profile) { |
326 profile_(Profile::FromBrowserContext(contents->browser_context())) { | |
327 } | 324 } |
328 | 325 |
329 SessionCrashedInfoBarDelegate::~SessionCrashedInfoBarDelegate() { | 326 SessionCrashedInfoBarDelegate::~SessionCrashedInfoBarDelegate() { |
330 } | 327 } |
331 | 328 |
332 gfx::Image* SessionCrashedInfoBarDelegate::GetIcon() const { | 329 gfx::Image* SessionCrashedInfoBarDelegate::GetIcon() const { |
333 return &ResourceBundle::GetSharedInstance().GetNativeImageNamed( | 330 return &ResourceBundle::GetSharedInstance().GetNativeImageNamed( |
334 IDR_INFOBAR_RESTORE_SESSION); | 331 IDR_INFOBAR_RESTORE_SESSION); |
335 } | 332 } |
336 | 333 |
337 string16 SessionCrashedInfoBarDelegate::GetMessageText() const { | 334 string16 SessionCrashedInfoBarDelegate::GetMessageText() const { |
338 return l10n_util::GetStringUTF16(IDS_SESSION_CRASHED_VIEW_MESSAGE); | 335 return l10n_util::GetStringUTF16(IDS_SESSION_CRASHED_VIEW_MESSAGE); |
339 } | 336 } |
340 | 337 |
341 int SessionCrashedInfoBarDelegate::GetButtons() const { | 338 int SessionCrashedInfoBarDelegate::GetButtons() const { |
342 return BUTTON_OK; | 339 return BUTTON_OK; |
343 } | 340 } |
344 | 341 |
345 string16 SessionCrashedInfoBarDelegate::GetButtonLabel( | 342 string16 SessionCrashedInfoBarDelegate::GetButtonLabel( |
346 InfoBarButton button) const { | 343 InfoBarButton button) const { |
347 DCHECK_EQ(BUTTON_OK, button); | 344 DCHECK_EQ(BUTTON_OK, button); |
348 return l10n_util::GetStringUTF16(IDS_SESSION_CRASHED_VIEW_RESTORE_BUTTON); | 345 return l10n_util::GetStringUTF16(IDS_SESSION_CRASHED_VIEW_RESTORE_BUTTON); |
349 } | 346 } |
350 | 347 |
351 bool SessionCrashedInfoBarDelegate::Accept() { | 348 bool SessionCrashedInfoBarDelegate::Accept() { |
352 uint32 behavior = 0; | 349 uint32 behavior = 0; |
353 if (browser_->tab_count() == 1 && browser_->GetTabContentsAt(0)->GetURL() == | 350 Browser* browser = BrowserList::GetLastActiveWithProfile(profile_); |
| 351 if (browser && browser->tab_count() == 1 |
| 352 && browser->GetTabContentsAt(0)->GetURL() == |
354 GURL(chrome::kChromeUINewTabURL)) { | 353 GURL(chrome::kChromeUINewTabURL)) { |
355 // There is only one tab and its the new tab page, make session restore | 354 // There is only one tab and its the new tab page, make session restore |
356 // clobber it. | 355 // clobber it. |
357 behavior = SessionRestore::CLOBBER_CURRENT_TAB; | 356 behavior = SessionRestore::CLOBBER_CURRENT_TAB; |
358 } | 357 } |
359 SessionRestore::RestoreSession( | 358 SessionRestore::RestoreSession( |
360 profile_, browser_, behavior, std::vector<GURL>()); | 359 profile_, browser, behavior, std::vector<GURL>()); |
361 return true; | 360 return true; |
362 } | 361 } |
363 | 362 |
364 | 363 |
365 // Utility functions ---------------------------------------------------------- | 364 // Utility functions ---------------------------------------------------------- |
366 | 365 |
367 bool IncognitoIsForced(const CommandLine& command_line, | 366 bool IncognitoIsForced(const CommandLine& command_line, |
368 const PrefService* prefs) { | 367 const PrefService* prefs) { |
369 IncognitoModePrefs::Availability incognito_avail = | 368 IncognitoModePrefs::Availability incognito_avail = |
370 IncognitoModePrefs::GetAvailability(prefs); | 369 IncognitoModePrefs::GetAvailability(prefs); |
(...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1078 AddBadFlagsInfoBarIfNecessary(tab_contents); | 1077 AddBadFlagsInfoBarIfNecessary(tab_contents); |
1079 AddDNSCertProvenanceCheckingWarningInfoBarIfNecessary(tab_contents); | 1078 AddDNSCertProvenanceCheckingWarningInfoBarIfNecessary(tab_contents); |
1080 AddObsoleteSystemInfoBarIfNecessary(tab_contents); | 1079 AddObsoleteSystemInfoBarIfNecessary(tab_contents); |
1081 } | 1080 } |
1082 | 1081 |
1083 void BrowserInit::LaunchWithProfile::AddCrashedInfoBarIfNecessary( | 1082 void BrowserInit::LaunchWithProfile::AddCrashedInfoBarIfNecessary( |
1084 Browser* browser, | 1083 Browser* browser, |
1085 TabContentsWrapper* tab) { | 1084 TabContentsWrapper* tab) { |
1086 // Assume that if the user is launching incognito they were previously | 1085 // Assume that if the user is launching incognito they were previously |
1087 // running incognito so that we have nothing to restore from. | 1086 // running incognito so that we have nothing to restore from. |
1088 if (!profile_->DidLastSessionExitCleanly() && | 1087 if (!profile_->DidLastSessionExitCleanly() && !profile_->IsOffTheRecord()) { |
1089 !profile_->IsOffTheRecord()) { | |
1090 // The last session didn't exit cleanly. Show an infobar to the user | 1088 // The last session didn't exit cleanly. Show an infobar to the user |
1091 // so that they can restore if they want. The delegate deletes itself when | 1089 // so that they can restore if they want. The delegate deletes itself when |
1092 // it is closed. | 1090 // it is closed. |
1093 tab->AddInfoBar( | 1091 tab->AddInfoBar( |
1094 new SessionCrashedInfoBarDelegate(browser, tab->tab_contents())); | 1092 new SessionCrashedInfoBarDelegate(profile_, tab->tab_contents())); |
1095 } | 1093 } |
1096 } | 1094 } |
1097 | 1095 |
1098 void BrowserInit::LaunchWithProfile::AddBadFlagsInfoBarIfNecessary( | 1096 void BrowserInit::LaunchWithProfile::AddBadFlagsInfoBarIfNecessary( |
1099 TabContentsWrapper* tab) { | 1097 TabContentsWrapper* tab) { |
1100 // Unsupported flags for which to display a warning that "stability and | 1098 // Unsupported flags for which to display a warning that "stability and |
1101 // security will suffer". | 1099 // security will suffer". |
1102 static const char* kBadFlags[] = { | 1100 static const char* kBadFlags[] = { |
1103 // These imply disabling the sandbox. | 1101 // These imply disabling the sandbox. |
1104 switches::kSingleProcess, | 1102 switches::kSingleProcess, |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1480 return false; | 1478 return false; |
1481 automation->SetExpectedTabCount(expected_tabs); | 1479 automation->SetExpectedTabCount(expected_tabs); |
1482 | 1480 |
1483 AutomationProviderList* list = | 1481 AutomationProviderList* list = |
1484 g_browser_process->InitAutomationProviderList(); | 1482 g_browser_process->InitAutomationProviderList(); |
1485 DCHECK(list); | 1483 DCHECK(list); |
1486 list->AddProvider(automation); | 1484 list->AddProvider(automation); |
1487 | 1485 |
1488 return true; | 1486 return true; |
1489 } | 1487 } |
OLD | NEW |