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

Side by Side Diff: components/crash/core/browser/crashes_ui_util.cc

Issue 2070993002: List all crashes in chrome://crashes, including those not uploaded (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 6 months 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/crash/core/browser/crashes_ui_util.h" 5 #include "components/crash/core/browser/crashes_ui_util.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/i18n/time_formatting.h" 11 #include "base/i18n/time_formatting.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "components/upload_list/upload_list.h" 14 #include "components/upload_list/upload_list.h"
15 #include "grit/components_chromium_strings.h" 15 #include "grit/components_chromium_strings.h"
16 #include "grit/components_google_chrome_strings.h" 16 #include "grit/components_google_chrome_strings.h"
17 #include "grit/components_strings.h" 17 #include "grit/components_strings.h"
18 18
19 namespace crash { 19 namespace crash {
20 20
21 const CrashesUILocalizedString kCrashesUILocalizedStrings[] = { 21 const CrashesUILocalizedString kCrashesUILocalizedStrings[] = {
22 {"bugLinkText", IDS_CRASH_BUG_LINK_LABEL}, 22 {"bugLinkText", IDS_CRASH_BUG_LINK_LABEL},
23 {"crashCountFormat", IDS_CRASH_CRASH_COUNT_BANNER_FORMAT}, 23 {"crashCountFormat", IDS_CRASH_CRASH_COUNT_BANNER_FORMAT},
24 {"crashHeaderFormat", IDS_CRASH_CRASH_HEADER_FORMAT}, 24 {"crashHeaderFormat", IDS_CRASH_CRASH_HEADER_FORMAT},
25 {"crashHeaderFormatLocalOnly", IDS_CRASH_CRASH_HEADER_FORMAT_LOCAL_ONLY},
25 {"crashTimeFormat", IDS_CRASH_CRASH_TIME_FORMAT}, 26 {"crashTimeFormat", IDS_CRASH_CRASH_TIME_FORMAT},
27 {"crashNotUploaded", IDS_CRASH_CRASH_NOT_UPLOADED},
28 {"crashPending", IDS_CRASH_CRASH_PENDING},
26 {"crashesTitle", IDS_CRASH_TITLE}, 29 {"crashesTitle", IDS_CRASH_TITLE},
27 {"disabledHeader", IDS_CRASH_DISABLED_HEADER}, 30 {"disabledHeader", IDS_CRASH_DISABLED_HEADER},
28 {"disabledMessage", IDS_CRASH_DISABLED_MESSAGE}, 31 {"disabledMessage", IDS_CRASH_DISABLED_MESSAGE},
29 {"noCrashesMessage", IDS_CRASH_NO_CRASHES_MESSAGE}, 32 {"noCrashesMessage", IDS_CRASH_NO_CRASHES_MESSAGE},
30 {"uploadCrashesLinkText", IDS_CRASH_UPLOAD_MESSAGE}, 33 {"uploadCrashesLinkText", IDS_CRASH_UPLOAD_MESSAGE},
31 }; 34 };
32 35
33 const size_t kCrashesUILocalizedStringsCount = 36 const size_t kCrashesUILocalizedStringsCount =
34 arraysize(kCrashesUILocalizedStrings); 37 arraysize(kCrashesUILocalizedStrings);
35 38
36 const char kCrashesUICrashesJS[] = "crashes.js"; 39 const char kCrashesUICrashesJS[] = "crashes.js";
37 const char kCrashesUIRequestCrashList[] = "requestCrashList"; 40 const char kCrashesUIRequestCrashList[] = "requestCrashList";
38 const char kCrashesUIRequestCrashUpload[] = "requestCrashUpload"; 41 const char kCrashesUIRequestCrashUpload[] = "requestCrashUpload";
39 const char kCrashesUIShortProductName[] = "shortProductName"; 42 const char kCrashesUIShortProductName[] = "shortProductName";
40 const char kCrashesUIUpdateCrashList[] = "updateCrashList"; 43 const char kCrashesUIUpdateCrashList[] = "updateCrashList";
41 44
45 std::string UploadInfoStateAsString(UploadList::UploadInfo::State state) {
46 switch (state) {
47 case UploadList::UploadInfo::State::NotUploaded:
48 return "not_uploaded";
49 case UploadList::UploadInfo::State::Pending:
50 return "pending";
51 case UploadList::UploadInfo::State::Uploaded:
52 return "uploaded";
53 }
54
55 NOTREACHED();
56 return "";
57 }
58
42 void UploadListToValue(UploadList* upload_list, base::ListValue* out_value) { 59 void UploadListToValue(UploadList* upload_list, base::ListValue* out_value) {
43 std::vector<UploadList::UploadInfo> crashes; 60 std::vector<UploadList::UploadInfo> crashes;
44 upload_list->GetUploads(50, &crashes); 61 upload_list->GetUploads(50, &crashes);
45 62
46 for (const auto& info : crashes) { 63 for (const auto& info : crashes) {
47 std::unique_ptr<base::DictionaryValue> crash(new base::DictionaryValue()); 64 std::unique_ptr<base::DictionaryValue> crash(new base::DictionaryValue());
48 crash->SetString("id", info.upload_id); 65 crash->SetString("id", info.upload_id);
49 crash->SetString("time", 66 if (info.state == UploadList::UploadInfo::State::Uploaded) {
50 base::TimeFormatFriendlyDateAndTime(info.upload_time)); 67 crash->SetString("time",
68 base::TimeFormatFriendlyDateAndTime(info.upload_time));
69 } else {
70 crash->SetString("time",
71 base::TimeFormatFriendlyDateAndTime(info.capture_time));
72 }
51 crash->SetString("local_id", info.local_id); 73 crash->SetString("local_id", info.local_id);
74 crash->SetString("state", UploadInfoStateAsString(info.state));
52 out_value->Append(std::move(crash)); 75 out_value->Append(std::move(crash));
53 } 76 }
54 } 77 }
55 78
56 } // namespace crash 79 } // namespace crash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698