Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/sad_tab.h" | 5 #include "chrome/browser/ui/sad_tab.h" |
| 6 | 6 |
| 7 #include "base/metrics/histogram_macros.h" | 7 #include "base/metrics/histogram_macros.h" |
| 8 #include "chrome/browser/net/referrer.h" | 8 #include "chrome/browser/net/referrer.h" |
| 9 #include "chrome/browser/ui/browser_finder.h" | 9 #include "chrome/browser/ui/browser_finder.h" |
| 10 #include "chrome/browser/ui/chrome_pages.h" | 10 #include "chrome/browser/ui/chrome_pages.h" |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 88 #endif | 88 #endif |
| 89 case base::TERMINATION_STATUS_LAUNCH_FAILED: | 89 case base::TERMINATION_STATUS_LAUNCH_FAILED: |
| 90 case base::TERMINATION_STATUS_MAX_ENUM: | 90 case base::TERMINATION_STATUS_MAX_ENUM: |
| 91 return false; | 91 return false; |
| 92 } | 92 } |
| 93 NOTREACHED(); | 93 NOTREACHED(); |
| 94 return false; | 94 return false; |
| 95 } | 95 } |
| 96 | 96 |
| 97 int SadTab::GetTitle() { | 97 int SadTab::GetTitle() { |
| 98 return IDS_SAD_TAB_TITLE; | 98 if (!show_feedback_button_) |
| 99 return IDS_SAD_TAB_TITLE; | |
| 100 switch (kind_) { | |
| 101 #if defined(OS_CHROMEOS) | |
| 102 case chrome::SAD_TAB_KIND_KILLED_BY_OOM: | |
| 103 return IDS_SAD_TAB_RELOAD_TITLE; | |
| 104 #endif | |
| 105 case chrome::SAD_TAB_KIND_OOM: | |
| 106 return IDS_SAD_TAB_OOM_TITLE; | |
| 107 case chrome::SAD_TAB_KIND_CRASHED: | |
| 108 case chrome::SAD_TAB_KIND_KILLED: | |
| 109 return IDS_SAD_TAB_RELOAD_TITLE; | |
| 110 } | |
| 99 } | 111 } |
| 100 | 112 |
| 101 int SadTab::GetMessage() { | 113 int SadTab::GetMessage() { |
| 102 switch (kind_) { | 114 switch (kind_) { |
| 103 #if defined(OS_CHROMEOS) | 115 #if defined(OS_CHROMEOS) |
| 104 case chrome::SAD_TAB_KIND_KILLED_BY_OOM: | 116 case chrome::SAD_TAB_KIND_KILLED_BY_OOM: |
| 105 return IDS_KILLED_TAB_BY_OOM_MESSAGE; | 117 return IDS_KILLED_TAB_BY_OOM_MESSAGE; |
| 106 #endif | 118 #endif |
| 107 case chrome::SAD_TAB_KIND_OOM: | 119 case chrome::SAD_TAB_KIND_OOM: |
| 108 return IDS_SAD_TAB_OOM_MESSAGE; | 120 if (show_feedback_button_) |
| 121 return other_tabs_open_ ? IDS_SAD_TAB_OOM_MESSAGE_TABS | |
| 122 : IDS_SAD_TAB_OOM_MESSAGE_NOTABS; | |
| 123 else | |
|
sky
2017/05/14 13:46:16
chromium style guide says no else after return.
Will Harris
2017/05/17 18:25:19
Done.
| |
| 124 return IDS_SAD_TAB_MESSAGE; | |
| 109 case chrome::SAD_TAB_KIND_CRASHED: | 125 case chrome::SAD_TAB_KIND_CRASHED: |
| 110 case chrome::SAD_TAB_KIND_KILLED: | 126 case chrome::SAD_TAB_KIND_KILLED: |
| 111 return IDS_SAD_TAB_MESSAGE; | 127 return show_feedback_button_ ? IDS_SAD_TAB_RELOAD_TRY |
| 128 : IDS_SAD_TAB_MESSAGE; | |
| 112 } | 129 } |
| 113 NOTREACHED(); | 130 NOTREACHED(); |
| 114 return 0; | 131 return 0; |
| 115 } | 132 } |
| 116 | 133 |
| 117 int SadTab::GetButtonTitle() { | 134 int SadTab::GetButtonTitle() { |
| 118 return show_feedback_button_ ? IDS_CRASHED_TAB_FEEDBACK_LINK | 135 return show_feedback_button_ ? IDS_CRASHED_TAB_FEEDBACK_LINK |
| 119 : IDS_SAD_TAB_RELOAD_LABEL; | 136 : IDS_SAD_TAB_RELOAD_LABEL; |
| 120 } | 137 } |
| 121 | 138 |
| 122 int SadTab::GetHelpLinkTitle() { | 139 int SadTab::GetHelpLinkTitle() { |
| 123 return IDS_SAD_TAB_LEARN_MORE_LINK; | 140 return IDS_SAD_TAB_LEARN_MORE_LINK; |
| 124 } | 141 } |
| 125 | 142 |
| 126 const char* SadTab::GetHelpLinkURL() { | 143 const char* SadTab::GetHelpLinkURL() { |
| 127 return show_feedback_button_ ? chrome::kCrashReasonFeedbackDisplayedURL | 144 return show_feedback_button_ ? chrome::kCrashReasonFeedbackDisplayedURL |
| 128 : chrome::kCrashReasonURL; | 145 : chrome::kCrashReasonURL; |
| 129 } | 146 } |
| 130 | 147 |
| 148 int SadTab::GetBulletText(size_t bullet_id) { | |
| 149 // Note: on macOS, Linux and ChromeOS, the first bullet is either one of | |
| 150 // IDS_SAD_TAB_RELOAD_CLOSE_TABS or IDS_SAD_TAB_RELOAD_CLOSE_NOTABS followed | |
| 151 // by one of these suggestions. | |
| 152 const int kBulletIds[] = {IDS_SAD_TAB_RELOAD_INCOGNITO, | |
| 153 IDS_SAD_TAB_RELOAD_RESTART_BROWSER, | |
| 154 IDS_SAD_TAB_RELOAD_RESTART_DEVICE}; | |
| 155 | |
| 156 if (!show_feedback_button_) | |
| 157 return 0; | |
| 158 switch (kind_) { | |
| 159 #if defined(OS_CHROMEOS) | |
| 160 case chrome::SAD_TAB_KIND_KILLED_BY_OOM: | |
| 161 return 0; | |
| 162 #endif | |
| 163 case chrome::SAD_TAB_KIND_OOM: | |
| 164 return 0; | |
| 165 case chrome::SAD_TAB_KIND_CRASHED: | |
| 166 case chrome::SAD_TAB_KIND_KILLED: | |
| 167 #if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) | |
| 168 if (bullet_id == 0) | |
| 169 return other_tabs_open_ ? IDS_SAD_TAB_RELOAD_CLOSE_TABS | |
| 170 : IDS_SAD_TAB_RELOAD_CLOSE_NOTABS; | |
| 171 bullet_id--; | |
| 172 #endif | |
| 173 if (bullet_id > 2) | |
| 174 return 0; | |
| 175 return kBulletIds[bullet_id]; | |
| 176 } | |
| 177 NOTREACHED(); | |
| 178 return 0; | |
| 179 } | |
| 180 | |
| 131 void SadTab::RecordFirstPaint() { | 181 void SadTab::RecordFirstPaint() { |
| 132 DCHECK(!recorded_paint_); | 182 DCHECK(!recorded_paint_); |
| 133 recorded_paint_ = true; | 183 recorded_paint_ = true; |
| 134 | 184 |
| 135 switch (kind_) { | 185 switch (kind_) { |
| 136 case chrome::SAD_TAB_KIND_CRASHED: | 186 case chrome::SAD_TAB_KIND_CRASHED: |
| 137 UMA_SAD_TAB_COUNTER("Tabs.SadTab.CrashDisplayed"); | 187 UMA_SAD_TAB_COUNTER("Tabs.SadTab.CrashDisplayed"); |
| 138 break; | 188 break; |
| 139 case chrome::SAD_TAB_KIND_OOM: | 189 case chrome::SAD_TAB_KIND_OOM: |
| 140 UMA_SAD_TAB_COUNTER("Tabs.SadTab.OomDisplayed"); | 190 UMA_SAD_TAB_COUNTER("Tabs.SadTab.OomDisplayed"); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 177 ui::PAGE_TRANSITION_LINK, false); | 227 ui::PAGE_TRANSITION_LINK, false); |
| 178 web_contents_->OpenURL(params); | 228 web_contents_->OpenURL(params); |
| 179 break; | 229 break; |
| 180 } | 230 } |
| 181 } | 231 } |
| 182 | 232 |
| 183 SadTab::SadTab(content::WebContents* web_contents, SadTabKind kind) | 233 SadTab::SadTab(content::WebContents* web_contents, SadTabKind kind) |
| 184 : web_contents_(web_contents), | 234 : web_contents_(web_contents), |
| 185 kind_(kind), | 235 kind_(kind), |
| 186 show_feedback_button_(ShouldShowFeedbackButton()), | 236 show_feedback_button_(ShouldShowFeedbackButton()), |
| 187 recorded_paint_(false) { | 237 recorded_paint_(false), |
| 238 other_tabs_open_(true) { | |
| 188 switch (kind) { | 239 switch (kind) { |
| 189 case chrome::SAD_TAB_KIND_CRASHED: | 240 case chrome::SAD_TAB_KIND_CRASHED: |
| 190 UMA_SAD_TAB_COUNTER("Tabs.SadTab.CrashCreated"); | 241 UMA_SAD_TAB_COUNTER("Tabs.SadTab.CrashCreated"); |
| 191 break; | 242 break; |
| 192 case chrome::SAD_TAB_KIND_OOM: | 243 case chrome::SAD_TAB_KIND_OOM: |
| 193 UMA_SAD_TAB_COUNTER("Tabs.SadTab.OomCreated"); | 244 UMA_SAD_TAB_COUNTER("Tabs.SadTab.OomCreated"); |
| 194 break; | 245 break; |
| 195 #if defined(OS_CHROMEOS) | 246 #if defined(OS_CHROMEOS) |
| 196 case chrome::SAD_TAB_KIND_KILLED_BY_OOM: | 247 case chrome::SAD_TAB_KIND_KILLED_BY_OOM: |
| 197 UMA_SAD_TAB_COUNTER("Tabs.SadTab.KillCreated.OOM"); | 248 UMA_SAD_TAB_COUNTER("Tabs.SadTab.KillCreated.OOM"); |
| 198 { | 249 { |
| 199 const std::string spec = web_contents->GetURL().GetOrigin().spec(); | 250 const std::string spec = web_contents->GetURL().GetOrigin().spec(); |
| 200 memory::OomMemoryDetails::Log( | 251 memory::OomMemoryDetails::Log( |
| 201 "Tab OOM-Killed Memory details: " + spec + ", ", base::Closure()); | 252 "Tab OOM-Killed Memory details: " + spec + ", ", base::Closure()); |
| 202 } | 253 } |
| 203 #endif | 254 #endif |
| 204 // Fall through | 255 // Fall through |
| 205 case chrome::SAD_TAB_KIND_KILLED: | 256 case chrome::SAD_TAB_KIND_KILLED: |
| 206 UMA_SAD_TAB_COUNTER("Tabs.SadTab.KillCreated"); | 257 UMA_SAD_TAB_COUNTER("Tabs.SadTab.KillCreated"); |
| 207 LOG(WARNING) << "Tab Killed: " | 258 LOG(WARNING) << "Tab Killed: " |
| 208 << web_contents->GetURL().GetOrigin().spec(); | 259 << web_contents->GetURL().GetOrigin().spec(); |
| 209 break; | 260 break; |
| 210 } | 261 } |
| 211 } | 262 } |
| 212 | 263 |
| 213 } // namespace chrome | 264 } // namespace chrome |
| OLD | NEW |