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

Side by Side Diff: chrome/browser/extensions/api/log_private/syslog_parser.cc

Issue 1825913002: [Extensions] Convert APIs to use movable types [7] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 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/extensions/api/log_private/syslog_parser.h" 5 #include "chrome/browser/extensions/api/log_private/syslog_parser.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/memory/linked_ptr.h"
12 #include "base/memory/singleton.h" 11 #include "base/memory/singleton.h"
13 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
14 #include "base/strings/string_split.h" 13 #include "base/strings/string_split.h"
15 #include "base/strings/string_tokenizer.h" 14 #include "base/strings/string_tokenizer.h"
16 #include "base/time/time.h" 15 #include "base/time/time.h"
17 #include "chrome/browser/extensions/api/log_private/filter_handler.h" 16 #include "chrome/browser/extensions/api/log_private/filter_handler.h"
18 #include "chrome/browser/extensions/api/log_private/log_parser.h" 17 #include "chrome/browser/extensions/api/log_private/log_parser.h"
19 #include "chrome/browser/extensions/api/log_private/log_private_api.h" 18 #include "chrome/browser/extensions/api/log_private/log_private_api.h"
20 #include "chrome/common/extensions/api/log_private.h" 19 #include "chrome/common/extensions/api/log_private.h"
21 20
22 namespace extensions { 21 namespace extensions {
23 22
24 namespace { 23 namespace {
25 24
26 const char kProcessInfoDelimiters[] = "[]:"; 25 const char kProcessInfoDelimiters[] = "[]:";
27 26
28 } // namespace 27 } // namespace
29 28
30 SyslogParser::SyslogParser() {} 29 SyslogParser::SyslogParser() {}
31 30
32 SyslogParser::~SyslogParser() {} 31 SyslogParser::~SyslogParser() {}
33 32
34 SyslogParser::Error SyslogParser::ParseEntry( 33 SyslogParser::Error SyslogParser::ParseEntry(
35 const std::string& input, 34 const std::string& input,
36 std::vector<linked_ptr<api::log_private::LogEntry> >* output, 35 std::vector<api::log_private::LogEntry>* output,
37 FilterHandler* filter_handler) const { 36 FilterHandler* filter_handler) const {
38 linked_ptr<api::log_private::LogEntry> entry(new api::log_private::LogEntry); 37 api::log_private::LogEntry entry;
stevenjb 2016/03/29 00:18:49 nit: move closer to where it is used
Devlin 2016/03/29 14:22:39 Done.
39 38
40 base::StringTokenizer tokenizer(input, " "); 39 base::StringTokenizer tokenizer(input, " ");
41 if (!tokenizer.GetNext()) { 40 if (!tokenizer.GetNext()) {
42 LOG(ERROR) 41 LOG(ERROR)
43 << "Error when parsing data. Expect: At least 2 tokens. Actual: 0"; 42 << "Error when parsing data. Expect: At least 2 tokens. Actual: 0";
44 return TOKENIZE_ERROR; 43 return TOKENIZE_ERROR;
45 } 44 }
46 std::string time = tokenizer.token(); 45 std::string time = tokenizer.token();
47 if (ParseTime(time, &(entry->timestamp)) != SyslogParser::SUCCESS) { 46 if (ParseTime(time, &(entry.timestamp)) != SyslogParser::SUCCESS) {
48 return SyslogParser::PARSE_ERROR; 47 return SyslogParser::PARSE_ERROR;
49 } 48 }
50 if (!tokenizer.GetNext()) { 49 if (!tokenizer.GetNext()) {
51 LOG(ERROR) 50 LOG(ERROR)
52 << "Error when parsing data. Expect: At least 2 tokens. Actual: 1"; 51 << "Error when parsing data. Expect: At least 2 tokens. Actual: 1";
53 return TOKENIZE_ERROR; 52 return TOKENIZE_ERROR;
54 } 53 }
55 ParseProcess(tokenizer.token(), entry.get()); 54 ParseProcess(tokenizer.token(), &entry);
56 ParseLevel(input, entry.get()); 55 ParseLevel(input, &entry);
57 entry->full_entry = input; 56 entry.full_entry = input;
58 57
59 if (filter_handler->IsValidLogEntry(*(entry.get()))) { 58 if (filter_handler->IsValidLogEntry(entry)) {
60 output->push_back(entry); 59 output->push_back(std::move(entry));
61 } 60 }
62 61
63 return SyslogParser::SUCCESS; 62 return SyslogParser::SUCCESS;
64 } 63 }
65 64
66 SyslogParser::Error SyslogParser::ParseTime(const std::string& input, 65 SyslogParser::Error SyslogParser::ParseTime(const std::string& input,
67 double* output) const { 66 double* output) const {
68 base::Time parsed_time; 67 base::Time parsed_time;
69 if (!base::Time::FromString(input.c_str(), &parsed_time)) { 68 if (!base::Time::FromString(input.c_str(), &parsed_time)) {
70 LOG(ERROR) << "Error when parsing time"; 69 LOG(ERROR) << "Error when parsing time";
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 } else if (input.find("WARN") != std::string::npos) { 102 } else if (input.find("WARN") != std::string::npos) {
104 entry->level = "warning"; 103 entry->level = "warning";
105 } else if (input.find("INFO") != std::string::npos) { 104 } else if (input.find("INFO") != std::string::npos) {
106 entry->level = "info"; 105 entry->level = "info";
107 } else { 106 } else {
108 entry->level = "unknown"; 107 entry->level = "unknown";
109 } 108 }
110 } 109 }
111 110
112 } // namespace extensions 111 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698