Index: chrome/browser/ui/browser.cc |
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc |
index 005d66c3356c64a5db4c2b1770eb0e6feea4fd5a..9c6a8f8c358b918793dc2c685745c2a88e653419 100644 |
--- a/chrome/browser/ui/browser.cc |
+++ b/chrome/browser/ui/browser.cc |
@@ -246,6 +246,17 @@ chrome::HostDesktopType kDefaultHostDesktopType = |
chrome::HOST_DESKTOP_TYPE_NATIVE; |
#endif |
+bool ShouldReloadCrashedTab(WebContents* contents) { |
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
+ if (!command_line.HasSwitch(switches::kReloadKilledTabs)) |
+ return false; |
+ |
+ base::TerminationStatus crashed_status = contents->GetCrashedStatus(); |
+ |
+ return crashed_status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION || |
+ crashed_status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED || |
+ crashed_status == base::TERMINATION_STATUS_PROCESS_CRASHED; |
+} |
} // namespace |
@@ -646,13 +657,8 @@ void Browser::OnWindowActivated() { |
// On some platforms we want to automatically reload tabs that are |
// killed when the user selects them. |
WebContents* contents = chrome::GetActiveWebContents(this); |
- if (contents && contents->GetCrashedStatus() == |
- base::TERMINATION_STATUS_PROCESS_WAS_KILLED) { |
- if (CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kReloadKilledTabs)) { |
- chrome::Reload(this, CURRENT_TAB); |
- } |
- } |
+ if (contents && ShouldReloadCrashedTab(contents)) |
+ chrome::Reload(this, CURRENT_TAB); |
} |
//////////////////////////////////////////////////////////////////////////////// |
@@ -1077,17 +1083,13 @@ void Browser::ActiveTabChanged(TabContents* old_contents, |
// On some platforms we want to automatically reload tabs that are |
// killed when the user selects them. |
bool did_reload = false; |
- if (user_gesture && new_contents->web_contents()->GetCrashedStatus() == |
- base::TERMINATION_STATUS_PROCESS_WAS_KILLED) { |
- const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); |
- if (parsed_command_line.HasSwitch(switches::kReloadKilledTabs)) { |
- LOG(WARNING) << "Reloading killed tab at " << index; |
- static int reload_count = 0; |
- UMA_HISTOGRAM_CUSTOM_COUNTS( |
- "Tabs.SadTab.ReloadCount", ++reload_count, 1, 1000, 50); |
- chrome::Reload(this, CURRENT_TAB); |
- did_reload = true; |
- } |
+ if (user_gesture && ShouldReloadCrashedTab(new_contents->web_contents())) { |
+ LOG(WARNING) << "Reloading killed tab at " << index; |
+ static int reload_count = 0; |
+ UMA_HISTOGRAM_CUSTOM_COUNTS( |
+ "Tabs.SadTab.ReloadCount", ++reload_count, 1, 1000, 50); |
+ chrome::Reload(this, CURRENT_TAB); |
+ did_reload = true; |
} |
// Discarded tabs always get reloaded. |